diff options
author | Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com> | 2011-05-17 17:17:57 +0200 |
---|---|---|
committer | Philippe LANGLAIS <philippe.langlais@stericsson.com> | 2011-05-23 08:34:17 +0200 |
commit | ea46b1c727697ac60318bfe1d38695ced0554a3d (patch) | |
tree | 38adef65fbaeb7a5404d6c3e188658c0d9c79c67 | |
parent | b934b4f6a4f0fabb6292340ebe5d0101a4015eb6 (diff) |
wlan: cw1200: Reenable filtering.
Filtering is enabled again (was broken in earlier firmware).
Added support for FIF_PROBE_REQ for management frames.
New WSM API wsm_set_bssid_filtering is used.
Signed-off-by: Dmitry Tarnyagin <dmitry.tarnyagin@stericsson.com>
Change-Id: Id8a44424a8ae2b0ba7d4082a096c88344e7a1a78
Reviewed-on: http://gerrit.lud.stericsson.com/gerrit/23605
Reviewed-by: Philippe LANGLAIS <philippe.langlais@stericsson.com>
-rw-r--r-- | drivers/staging/cw1200/sta.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/staging/cw1200/sta.c b/drivers/staging/cw1200/sta.c index 4cdcd4a43a6..540439863dd 100644 --- a/drivers/staging/cw1200/sta.c +++ b/drivers/staging/cw1200/sta.c @@ -326,11 +326,11 @@ void cw1200_configure_filter(struct ieee80211_hw *dev, unsigned int *total_flags, u64 multicast) { -#if 0 struct cw1200_common *priv = dev->priv; struct wsm_rx_filter filter = { .promiscuous = (*total_flags & FIF_PROMISC_IN_BSS) ? 1 : 0, - .bssid = (*total_flags & FIF_OTHER_BSS) ? 1 : 0, + .bssid = (*total_flags & (FIF_OTHER_BSS | FIF_PROBE_REQ)) ? + 1 : 0, .fcs = (*total_flags & FIF_FCSFAIL) ? 1 : 0, }; struct wsm_beacon_filter_control bf_control = { @@ -339,18 +339,16 @@ void cw1200_configure_filter(struct ieee80211_hw *dev, (FIF_BCN_PRBRESP_PROMISC | FIF_PROMISC_IN_BSS)) ? 1 : 0, }; -#endif *total_flags &= FIF_PROMISC_IN_BSS | FIF_OTHER_BSS | FIF_FCSFAIL | - FIF_BCN_PRBRESP_PROMISC; + FIF_BCN_PRBRESP_PROMISC | + FIF_PROBE_REQ; -#if 0 - /* FIXME: FW behaves strange if promiscuous mode is enabled. */ WARN_ON(wsm_set_rx_filter(priv, &filter)); WARN_ON(wsm_beacon_filter_control(priv, &bf_control)); -#endif + WARN_ON(wsm_set_bssid_filtering(priv, !filter.bssid)); } int cw1200_conf_tx(struct ieee80211_hw *dev, u16 queue, @@ -596,6 +594,8 @@ static int __cw1200_flush(struct cw1200_common *priv, bool drop) if (!ret) ret = -ETIMEDOUT; break; + } else { + ret = 0; } wsm_lock_tx(priv); |