diff options
author | Pontus Fuchs <pontus.fuchs@gmail.com> | 2012-01-31 17:54:40 +0200 |
---|---|---|
committer | Luciano Coelho <coelho@ti.com> | 2012-02-15 08:38:32 +0200 |
commit | d2e2d769e3d328ba7cbf08e8ed85e3f817915843 (patch) | |
tree | 006023507efb2ebd2b1de9beaaf8a580197fc808 /drivers/net/wireless/wl12xx/tx.c | |
parent | d18da7fcca449f09c91a209b4f5006959c5a7656 (diff) |
wl12xx: Set IEEE80211_TX_RC_MCS on MCS rates on TX complete.
IEEE80211_TX_RC_MCS was not set correctly leading to incorrect link
speed calculation.
Signed-off-by: Pontus Fuchs <pontus.fuchs@gmail.com>
Signed-off-by: Ido Reis <idor@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers/net/wireless/wl12xx/tx.c')
-rw-r--r-- | drivers/net/wireless/wl12xx/tx.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/wireless/wl12xx/tx.c b/drivers/net/wireless/wl12xx/tx.c index 2bf43b86a3f..f95112f6769 100644 --- a/drivers/net/wireless/wl12xx/tx.c +++ b/drivers/net/wireless/wl12xx/tx.c @@ -764,6 +764,14 @@ out: mutex_unlock(&wl->mutex); } +static u8 wl1271_tx_get_rate_flags(u8 rate_class_index) +{ + if (rate_class_index >= CONF_HW_RXTX_RATE_MCS_MIN && + rate_class_index <= CONF_HW_RXTX_RATE_MCS_MAX) + return IEEE80211_TX_RC_MCS; + return 0; +} + static void wl1271_tx_complete_packet(struct wl1271 *wl, struct wl1271_tx_hw_res_descr *result) { @@ -773,6 +781,7 @@ static void wl1271_tx_complete_packet(struct wl1271 *wl, struct sk_buff *skb; int id = result->id; int rate = -1; + u8 rate_flags = 0; u8 retries = 0; /* check for id legality */ @@ -799,6 +808,7 @@ static void wl1271_tx_complete_packet(struct wl1271 *wl, info->flags |= IEEE80211_TX_STAT_ACK; rate = wl1271_rate_to_idx(result->rate_class_index, wlvif->band); + rate_flags = wl1271_tx_get_rate_flags(result->rate_class_index); retries = result->ack_failures; } else if (result->status == TX_RETRY_EXCEEDED) { wl->stats.excessive_retries++; @@ -807,7 +817,7 @@ static void wl1271_tx_complete_packet(struct wl1271 *wl, info->status.rates[0].idx = rate; info->status.rates[0].count = retries; - info->status.rates[0].flags = 0; + info->status.rates[0].flags = rate_flags; info->status.ack_signal = -1; wl->stats.retry_count += result->ack_failures; |