diff options
author | David S. Miller <davem@davemloft.net> | 2012-05-22 16:07:23 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2012-05-22 16:07:23 -0400 |
commit | c3719a1ef52eb1aadf77b7557cc9ca08124d8818 (patch) | |
tree | 9fc3737751948a71cde8f8ff64d1ca4cb0f44932 /drivers/net/wireless/ti/wlcore/rx.c | |
parent | 35c579070a349cfe54f9e09a47df2c5b68d58469 (diff) | |
parent | a0d0d1685f9763ab26a394df3ab84026b39a06a7 (diff) | |
download | linux-c3719a1ef52eb1aadf77b7557cc9ca08124d8818.tar.gz linux-c3719a1ef52eb1aadf77b7557cc9ca08124d8818.tar.bz2 linux-c3719a1ef52eb1aadf77b7557cc9ca08124d8818.zip |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless
John says:
--------------------
I apologize for not having sent this sooner. FWIW, I was in a car
somewhere between Illinois and North Carolina for most of the day
Sunday and Monday... :-)
This is (obviously) the last non-fix pull request for wireless bits
intended for 3.5. It includes AP support for mwifiex, a variety of HCI
and other updates for NFC, some brcmfmac and brcmsmac refactoring,
a large batch of ssb and bcma updates, a batch of ath6kl updates,
some cfg80211 and mac80211 updates/refactoring from Johannes Berg,
a rather large collection of Bluetooth updates by way of Gustavo,
and a variety of other bits here and there.
--------------------
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/ti/wlcore/rx.c')
-rw-r--r-- | drivers/net/wireless/ti/wlcore/rx.c | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/drivers/net/wireless/ti/wlcore/rx.c b/drivers/net/wireless/ti/wlcore/rx.c index 89bd9385e90b..1f1d9488dfb6 100644 --- a/drivers/net/wireless/ti/wlcore/rx.c +++ b/drivers/net/wireless/ti/wlcore/rx.c @@ -278,3 +278,39 @@ void wl12xx_rx(struct wl1271 *wl, struct wl_fw_status *status) wl12xx_rearm_rx_streaming(wl, active_hlids); } + +int wl1271_rx_filter_enable(struct wl1271 *wl, + int index, bool enable, + struct wl12xx_rx_filter *filter) +{ + int ret; + + if (wl->rx_filter_enabled[index] == enable) { + wl1271_warning("Request to enable an already " + "enabled rx filter %d", index); + return 0; + } + + ret = wl1271_acx_set_rx_filter(wl, index, enable, filter); + + if (ret) { + wl1271_error("Failed to %s rx data filter %d (err=%d)", + enable ? "enable" : "disable", index, ret); + return ret; + } + + wl->rx_filter_enabled[index] = enable; + + return 0; +} + +void wl1271_rx_filter_clear_all(struct wl1271 *wl) +{ + int i; + + for (i = 0; i < WL1271_MAX_RX_FILTERS; i++) { + if (!wl->rx_filter_enabled[i]) + continue; + wl1271_rx_filter_enable(wl, i, 0, NULL); + } +} |