diff options
author | Eliad Peller <eliad@wizery.com> | 2014-07-11 00:01:28 (GMT) |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2014-07-15 19:59:53 (GMT) |
commit | 601d6c4e701133ae23dd1b9507bf9d3a4172e586 (patch) | |
tree | 6b457cfcadbd535d2b8dde4bf3d24e04a5b255d4 | |
parent | 30a003588898924964dfa537670f35aac7cd9629 (diff) | |
download | linux-601d6c4e701133ae23dd1b9507bf9d3a4172e586.tar.xz |
wl18xx: fix last tx rate calculation
The last tx rate calculation didn't take into account
the different indices of 11a and 11g rates tables.
Add the required alignment (count only from the first
11a rate in case of 11a)
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | drivers/net/wireless/ti/wl18xx/tx.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/drivers/net/wireless/ti/wl18xx/tx.c b/drivers/net/wireless/ti/wl18xx/tx.c index be1ebd5..3406ffb 100644 --- a/drivers/net/wireless/ti/wl18xx/tx.c +++ b/drivers/net/wireless/ti/wl18xx/tx.c @@ -30,7 +30,7 @@ static void wl18xx_get_last_tx_rate(struct wl1271 *wl, struct ieee80211_vif *vif, - struct ieee80211_tx_rate *rate) + u8 band, struct ieee80211_tx_rate *rate) { u8 fw_rate = wl->fw_status->counters.tx_last_rate; @@ -43,6 +43,8 @@ void wl18xx_get_last_tx_rate(struct wl1271 *wl, struct ieee80211_vif *vif, if (fw_rate <= CONF_HW_RATE_INDEX_54MBPS) { rate->idx = fw_rate; + if (band == IEEE80211_BAND_5GHZ) + rate->idx -= CONF_HW_RATE_INDEX_6MBPS; rate->flags = 0; } else { rate->flags = IEEE80211_TX_RC_MCS; @@ -102,7 +104,8 @@ static void wl18xx_tx_complete_packet(struct wl1271 *wl, u8 tx_stat_byte) * first pass info->control.vif while it's valid, and then fill out * the info->status structures */ - wl18xx_get_last_tx_rate(wl, info->control.vif, &info->status.rates[0]); + wl18xx_get_last_tx_rate(wl, info->control.vif, + info->band, &info->status.rates[0]); info->status.rates[0].count = 1; /* no data about retries */ info->status.ack_signal = -1; |