summaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/ath/wil6210/main.c
diff options
context:
space:
mode:
authorVladimir Kondratiev <qca_vkondrat@qca.qualcomm.com>2014-02-27 16:20:44 +0200
committerJohn W. Linville <linville@tuxdriver.com>2014-02-28 14:33:30 -0500
commitb4490f423c0e61b77461be6557c62e533b8c60e3 (patch)
treec8e9c97285e48817737b4ac5c22afb7d16092f80 /drivers/net/wireless/ath/wil6210/main.c
parent3df2cd361871eb4636c8ce9cf97e6899c90c588c (diff)
wil6210: Block ACK
When running multiple connections, hardware can't do BACK reordering and it should be done on the host. Model after mac80211's implementation. Drop RCU for now; to be re-added when BACK will be stabilized BACK handshaking is not implemented yet in the hardware, pretend it was done to support the way FW operating Signed-off-by: Vladimir Kondratiev <qca_vkondrat@qca.qualcomm.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath/wil6210/main.c')
-rw-r--r--drivers/net/wireless/ath/wil6210/main.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/drivers/net/wireless/ath/wil6210/main.c b/drivers/net/wireless/ath/wil6210/main.c
index f68481de0ad..38906f1bc76 100644
--- a/drivers/net/wireless/ath/wil6210/main.c
+++ b/drivers/net/wireless/ath/wil6210/main.c
@@ -18,6 +18,7 @@
#include <linux/if_arp.h>
#include "wil6210.h"
+#include "txrx.h"
/*
* Due to a hardware issue,
@@ -54,11 +55,20 @@ void wil_memcpy_toio_32(volatile void __iomem *dst, const void *src,
static void _wil6210_disconnect(struct wil6210_priv *wil, void *bssid)
{
- uint i;
+ uint i, cid;
struct net_device *ndev = wil_to_ndev(wil);
wil_dbg_misc(wil, "%s()\n", __func__);
+ for (cid = 0; cid < WIL6210_MAX_CID; cid++) {
+ struct wil_sta_info *sta = &wil->sta[cid];
+ for (i = 0; i < WIL_STA_TID_NUM; i++) {
+ struct wil_tid_ampdu_rx *r = sta->tid_rx[i];
+ sta->tid_rx[i] = NULL;
+ wil_tid_ampdu_rx_free(wil, r);
+ }
+ }
+
wil_link_off(wil);
if (test_bit(wil_status_fwconnected, &wil->status)) {
clear_bit(wil_status_fwconnected, &wil->status);