Hi, On Thu, 2010-04-22 at 18:28 +0200, ext Luis R. Rodriguez wrote: > On Thu, Apr 22, 2010 at 12:27 AM, Juuso Oikarinen > <juuso.oikarinen@xxxxxxxxx> wrote: > > The sta->last_tx_rate is traditionally updated just before transmitting a > > frame based on information from the rate control algorithm. However, for > > hardware drivers with IEEE80211_HW_HAS_RATE_CONTROL this is not performed, > > as the rate control algorithm is not executed, and because the used rate is > > not known before the frame has actually been transmitted. > > > > This causes atleast a fixed 1Mb/s to be reported to user space. A few other > > instances of code also rely on this information. > > > > Fix this by setting the sta->last_tx_rate in tx_status handling. There, look > > for last rates entry set by the driver, and use that as value for > > sta->last_tx_rate. > > > > Signed-off-by: Juuso Oikarinen <juuso.oikarinen@xxxxxxxxx> > > But the actual rate used is not known, or is it? In those cases would > it not be better to inform userspace that the information is not > available? The point here is to set the last_tx_rate with the actual used rate, as reported by the hardware (and reported to mac80211 by the driver.) In case of hardware rate control, mac80211 sets the skb's info->status.rates array to rates indexes "-1". The driver sets the rate actually used to transmit the frame into the same array before calling tx_status, along with retry etc info, and mac80211 then uses this info to update the sta->last_tx_rate. So by all means, the actual rate is getting set. Opposite to host rate-control, the sta->last_tx_rate field is just updated right after transmitting the frame, instead of just before. -Juuso > Luis -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html