diff options
author | Grazvydas Ignotas <notasas@gmail.com> | 2012-06-16 22:31:49 +0300 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-06-20 15:14:44 -0400 |
commit | a2d2bb8675fe9dc127d802b6be6517a0932e65b7 (patch) | |
tree | 2537203bf6c9d9155541076d5a0f591920b93e73 /drivers/net/wireless/ti/wl1251/main.c | |
parent | 7e05bedca084faa073c2e64bbcd6407dbaff3151 (diff) | |
download | talos-op-linux-a2d2bb8675fe9dc127d802b6be6517a0932e65b7.tar.gz talos-op-linux-a2d2bb8675fe9dc127d802b6be6517a0932e65b7.zip |
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.c | 6 |
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 ff60a7a341be..6094e3f9e2f8 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); |