summaryrefslogtreecommitdiff
path: root/drivers/net/wireless/ti/wl1251/main.c
diff options
context:
space:
mode:
authorGrazvydas Ignotas <notasas@gmail.com>2012-06-16 19:31:49 (GMT)
committerJohn W. Linville <linville@tuxdriver.com>2012-06-20 19:14:44 (GMT)
commita2d2bb8675fe9dc127d802b6be6517a0932e65b7 (patch)
tree2537203bf6c9d9155541076d5a0f591920b93e73 /drivers/net/wireless/ti/wl1251/main.c
parent7e05bedca084faa073c2e64bbcd6407dbaff3151 (diff)
downloadlinux-fsl-qoriq-a2d2bb8675fe9dc127d802b6be6517a0932e65b7.tar.xz
wl1251: fix filtering support
This driver has a hack in cmd.c which effectively disables all filtering. This seems to be triggering a firmware bug where it stops reporting any rx packets after random time on some routers, which is eliminated (or at least appears much more rarely) when filtering is on. I have found that only BSSID filter needs to be disabled for association to work, so disable only that instead of all filtering. Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ti/wl1251/main.c')
-rw-r--r--drivers/net/wireless/ti/wl1251/main.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/ti/wl1251/main.c b/drivers/net/wireless/ti/wl1251/main.c
index ff60a7a..6094e3f 100644
--- a/drivers/net/wireless/ti/wl1251/main.c
+++ b/drivers/net/wireless/ti/wl1251/main.c
@@ -334,6 +334,12 @@ static int wl1251_join(struct wl1251 *wl, u8 bss_type, u8 channel,
if (ret < 0)
goto out;
+ /*
+ * Join command applies filters, and if we are not associated,
+ * BSSID filter must be disabled for association to work.
+ */
+ if (is_zero_ether_addr(wl->bssid))
+ wl->rx_config &= ~CFG_BSSID_FILTER_EN;
ret = wl1251_cmd_join(wl, bss_type, channel, beacon_interval,
dtim_period);