diff options
author | Eliad Peller <eliad@wizery.com> | 2011-05-02 12:42:30 +0800 |
---|---|---|
committer | Andy Green <andy.green@linaro.org> | 2011-05-02 12:42:30 +0800 |
commit | 7612b5b3d9e40d189612d89257603cd9bb3cb37e (patch) | |
tree | ef8ccd2b95f7533a7109308901f89f1de14d3f8b /drivers | |
parent | 59a81df491fd123de8b5d3a3d3a327d2fcf69cb4 (diff) |
wl12xx: set the actual tid instead of the ac
When passing a tx frame, the driver incorrectly set desc->tid
with the ac instead of the actual tid.
It has some serious implications when using 802.11n + QoS,
as the fw starts a BlockAck with the wrong tid (which finally
cause beacon loss and disconnection / some fw crash)
Fix it by using the actual tid stored in skb->priority.
Reported-by: Shahar Levi <shahar_levi@ti.com>
Signed-off-by: Eliad Peller <eliad@wizery.com>
Reviewed-by: Juuso Oikarinen <juuso.oikarinen@nokia.com>
Signed-off-by: Luciano Coelho <coelho@ti.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/wl12xx/tx.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/wl12xx/tx.c b/drivers/net/wireless/wl12xx/tx.c index 109878c3246..f3031cdd173 100644 --- a/drivers/net/wireless/wl12xx/tx.c +++ b/drivers/net/wireless/wl12xx/tx.c @@ -221,9 +221,9 @@ static void wl1271_tx_fill_hdr(struct wl1271 *wl, struct sk_buff *skb, else desc->life_time = cpu_to_le16(TX_HW_AP_MODE_PKT_LIFETIME_TU); - /* queue (we use same identifiers for tid's and ac's */ + /* queue */ ac = wl1271_tx_get_queue(skb_get_queue_mapping(skb)); - desc->tid = ac; + desc->tid = skb->priority; if (skb->pkt_type == TX_PKT_TYPE_DUMMY_REQ) { /* |