aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/rt2x00
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-08-17 10:16:53 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-20 11:35:58 -0400
commit3ac64beecd27400d12cc7afb4108eef26c499f6a (patch)
treeda0220085f68e30fe61ba9b8833dc6311d6dc25e /drivers/net/wireless/rt2x00
parentea416a793d2b611f22b42ba094fd2e5bd30fff43 (diff)
mac80211: allow configure_filter callback to sleep
Over time, a whole bunch of drivers have come up with their own scheme to delay the configure_filter operation to a workqueue. To be able to simplify things, allow configure_filter to sleep, and add a new prepare_multicast callback that drivers that need the multicast address list implement. This new callback must be atomic, but most drivers either don't care or just calculate a hash which can be done atomically and then uploaded to the hardware non-atomically. A cursory look suggests that at76c50x-usb, ar9170, mwl8k (which is actually very broken now), rt2x00, wl1251, wl1271 and zd1211 should make use of this new capability. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00')
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00.h2
-rw-r--r--drivers/net/wireless/rt2x00/rt2x00mac.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00.h b/drivers/net/wireless/rt2x00/rt2x00.h
index 99e89596cef6..39d7d9baafdd 100644
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
@@ -978,7 +978,7 @@ int rt2x00mac_config(struct ieee80211_hw *hw, u32 changed);
978void rt2x00mac_configure_filter(struct ieee80211_hw *hw, 978void rt2x00mac_configure_filter(struct ieee80211_hw *hw,
979 unsigned int changed_flags, 979 unsigned int changed_flags,
980 unsigned int *total_flags, 980 unsigned int *total_flags,
981 int mc_count, struct dev_addr_list *mc_list); 981 u64 multicast);
982int rt2x00mac_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta, 982int rt2x00mac_set_tim(struct ieee80211_hw *hw, struct ieee80211_sta *sta,
983 bool set); 983 bool set);
984#ifdef CONFIG_RT2X00_LIB_CRYPTO 984#ifdef CONFIG_RT2X00_LIB_CRYPTO
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c
index cb7b6d459331..602f12699718 100644
--- a/drivers/net/wireless/rt2x00/rt2x00mac.c
+++ b/drivers/net/wireless/rt2x00/rt2x00mac.c
@@ -379,7 +379,7 @@ EXPORT_SYMBOL_GPL(rt2x00mac_config);
379void rt2x00mac_configure_filter(struct ieee80211_hw *hw, 379void rt2x00mac_configure_filter(struct ieee80211_hw *hw,
380 unsigned int changed_flags, 380 unsigned int changed_flags,
381 unsigned int *total_flags, 381 unsigned int *total_flags,
382 int mc_count, struct dev_addr_list *mc_list) 382 u64 multicast)
383{ 383{
384 struct rt2x00_dev *rt2x00dev = hw->priv; 384 struct rt2x00_dev *rt2x00dev = hw->priv;
385 385