--- a/drivers/net/wireless/p54/p54usb.c
+++ b/drivers/net/wireless/p54/p54usb.c
-@@ -1055,7 +1055,9 @@ static struct usb_driver p54u_driver = {
+@@ -1056,7 +1056,9 @@ static struct usb_driver p54u_driver = {
.resume = p54u_resume,
.reset_resume = p54u_resume,
#endif /* CONFIG_PM */
static void ath5k_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *new_flags,
-@@ -3104,20 +3108,42 @@ unlock:
+@@ -3139,20 +3143,42 @@ unlock:
}
static u64 ath5k_prepare_multicast(struct ieee80211_hw *hw,
pos ^= (val >> 18) ^ (val >> 12) ^ (val >> 6) ^ val;
pos &= 0x3f;
mfilt[pos / 32] |= (1 << (pos % 32));
-@@ -3126,6 +3152,9 @@ static u64 ath5k_prepare_multicast(struc
+@@ -3161,6 +3187,9 @@ static u64 ath5k_prepare_multicast(struc
* neet to inform below to not reset the mcast */
/* ath5k_hw_set_mcast_filterindex(ah,
* ha->addr[5]); */
return (u64)(unsigned long)fp;
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
-@@ -948,17 +948,34 @@ static void set_rx_filter_handler(struct
+@@ -949,17 +949,34 @@ static void set_rx_filter_handler(struct
}
static u64 zd_op_prepare_multicast(struct ieee80211_hw *hw,
return hash.low | ((u64)hash.high << 32);
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -1689,7 +1689,11 @@ struct ieee80211_ops {
+@@ -1686,7 +1686,11 @@ struct ieee80211_ops {
struct ieee80211_bss_conf *info,
u32 changed);
u64 (*prepare_multicast)(struct ieee80211_hw *hw,