--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
-@@ -3137,7 +3137,7 @@ static int rndis_wlan_bind(struct usbnet
+@@ -3294,7 +3294,7 @@ static int rndis_wlan_bind(struct usbnet
* rndis_host wants to avoid all OID as much as possible
* so do promisc/multicast handling in rndis_wlan.
*/
#define LBS_DEB_LEAVE 0x00000002
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1100,7 +1100,7 @@ static const struct net_device_ops hwsim
+@@ -1103,7 +1103,7 @@ static const struct net_device_ops hwsim
static void hwsim_mon_setup(struct net_device *dev)
{
+obj-$(CONFIG_RFKILL_BACKPORT) += rfkill_backport.o
--- a/net/rfkill/input.c
+++ b/net/rfkill/input.c
-@@ -232,7 +236,7 @@ static int rfkill_connect(struct input_h
+@@ -232,7 +232,7 @@ static int rfkill_connect(struct input_h
handle->dev = dev;
handle->handler = handler;
error = input_register_handle(handle);
--- a/net/rfkill/core.c
+++ b/net/rfkill/core.c
-@@ -819,7 +819,7 @@ static int rfkill_resume(struct device *
+@@ -805,7 +805,7 @@ static int rfkill_resume(struct device *
}
static struct class rfkill_class = {
.dev_release = rfkill_release,
.dev_attrs = rfkill_dev_attrs,
.dev_uevent = rfkill_dev_uevent,
-
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -3904,7 +3904,9 @@ static int nl80211_wiphy_netns(struct sk
+@@ -3941,7 +3941,9 @@ static int nl80211_wiphy_netns(struct sk
if (!net_eq(wiphy_net(&rdev->wiphy), net))
err = cfg80211_switch_netns(rdev, net);
static int __init p54u_init(void)
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
-@@ -1065,7 +1065,9 @@ static struct usb_driver ath9k_hif_usb_d
+@@ -1074,7 +1074,9 @@ static struct usb_driver ath9k_hif_usb_d
.reset_resume = ath9k_hif_usb_resume,
#endif
.id_table = ath9k_hif_usb_ids,
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
-@@ -3922,8 +3922,13 @@ redo:
+@@ -3946,8 +3946,13 @@ redo:
if (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) {
b43_sdio_free_irq(dev);
} else {
}
mutex_lock(&wl->mutex);
dev = wl->current_dev;
-@@ -3963,9 +3968,17 @@ static int b43_wireless_core_start(struc
+@@ -3987,9 +3992,17 @@ static int b43_wireless_core_start(struc
goto out;
}
} else {
if (err) {
b43err(dev->wl, "Cannot request IRQ-%d\n", dev->dev->irq);
goto out;
-@@ -4694,6 +4707,10 @@ static int b43_setup_bands(struct b43_wl
+@@ -4718,6 +4731,10 @@ static int b43_setup_bands(struct b43_wl
static void b43_wireless_core_detach(struct b43_wldev *dev)
{
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
-@@ -3732,6 +3732,34 @@ static int ath5k_pci_resume(struct devic
+@@ -3758,6 +3758,34 @@ static int ath5k_pci_resume(struct devic
return 0;
}
static SIMPLE_DEV_PM_OPS(ath5k_pm_ops, ath5k_pci_suspend, ath5k_pci_resume);
#define ATH5K_PM_OPS (&ath5k_pm_ops)
#else
-@@ -3743,7 +3771,12 @@ static struct pci_driver ath5k_pci_drive
+@@ -3769,7 +3797,12 @@ static struct pci_driver ath5k_pci_drive
.id_table = ath5k_pci_id_table,
.probe = ath5k_pci_probe,
.remove = __devexit_p(ath5k_pci_remove),
/*
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -284,14 +284,36 @@ static int ath_pci_resume(struct device
+@@ -300,14 +300,36 @@ static int ath_pci_resume(struct device
return 0;
}
#define ATH9K_PM_OPS (&ath9k_pm_ops)
-@@ -309,7 +331,12 @@ static struct pci_driver ath_pci_driver
+@@ -325,7 +347,12 @@ static struct pci_driver ath_pci_driver
.id_table = ath_pci_id_table,
.probe = ath_pci_probe,
.remove = ath_pci_remove,
int ath_pci_init(void)
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -4534,7 +4534,12 @@ static struct pci_driver iwl_driver = {
+@@ -4496,7 +4496,12 @@ static struct pci_driver iwl_driver = {
.id_table = iwl_hw_card_ids,
.probe = iwl_pci_probe,
.remove = __devexit_p(iwl_pci_remove),
static int __init iwl_init(void)
--- a/drivers/net/wireless/iwlwifi/iwl-core.c
+++ b/drivers/net/wireless/iwlwifi/iwl-core.c
-@@ -2188,14 +2188,42 @@ int iwl_pci_resume(struct device *device
+@@ -2094,14 +2094,42 @@ int iwl_pci_resume(struct device *device
}
EXPORT_SYMBOL(iwl_pci_resume);
#endif /* CONFIG_PM */
--- a/drivers/net/wireless/iwlwifi/iwl-core.h
+++ b/drivers/net/wireless/iwlwifi/iwl-core.h
-@@ -615,7 +615,12 @@ __le32 iwl_add_beacon_time(struct iwl_pr
+@@ -624,7 +624,12 @@ __le32 iwl_add_beacon_time(struct iwl_pr
#ifdef CONFIG_PM
int iwl_pci_suspend(struct device *device);
int iwl_pci_resume(struct device *device);
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
-@@ -4279,7 +4279,12 @@ static struct pci_driver iwl3945_driver
+@@ -4272,7 +4272,12 @@ static struct pci_driver iwl3945_driver
.id_table = iwl3945_hw_card_ids,
.probe = iwl3945_pci_probe,
.remove = __devexit_p(iwl3945_pci_remove),
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -2883,7 +2883,12 @@ void ieee80211_rx(struct ieee80211_hw *h
+@@ -2882,7 +2882,12 @@ void ieee80211_rx(struct ieee80211_hw *h
drop:
kfree_skb(skb);
}
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
-@@ -957,8 +957,12 @@ static struct sock *l2cap_sock_alloc(str
+@@ -965,8 +965,12 @@ static struct sock *l2cap_sock_alloc(str
return sk;
}
{
struct sock *sk;
-@@ -970,7 +974,11 @@ static int l2cap_sock_create(struct net
+@@ -978,7 +982,11 @@ static int l2cap_sock_create(struct net
sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
return -ESOCKTNOSUPPORT;
return -EPERM;
sock->ops = &l2cap_sock_ops;
-@@ -2042,7 +2050,11 @@ static int l2cap_sock_setsockopt_old(str
+@@ -2050,7 +2058,11 @@ static int l2cap_sock_setsockopt_old(str
return err;
}
* Tasklet for processing tx status reports (rt2800pci).
--- a/drivers/net/wireless/rt2x00/rt2x00dev.c
+++ b/drivers/net/wireless/rt2x00/rt2x00dev.c
-@@ -827,10 +827,16 @@ static int rt2x00lib_probe_hw(struct rt2
+@@ -824,10 +824,16 @@ static int rt2x00lib_probe_hw(struct rt2
* queues gets reported before we've got a chance to handle
* them) 24*4=384 tx status reports need to be cached.
*/
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -80,7 +80,11 @@ static void ath_pci_bt_coex_prep(struct
+@@ -96,7 +96,11 @@ static void ath_pci_bt_coex_prep(struct
struct pci_dev *pdev = to_pci_dev(sc->dev);
u8 aspm;
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -1624,6 +1624,10 @@ static void ieee80211_xmit(struct ieee80
+@@ -1632,6 +1632,10 @@ static void ieee80211_xmit(struct ieee80
return;
}
ieee80211_set_qos_hdr(local, skb);
ieee80211_tx(sdata, skb, false);
rcu_read_unlock();
-@@ -2096,7 +2100,14 @@ void ieee80211_tx_pending(unsigned long
+@@ -2104,7 +2108,14 @@ void ieee80211_tx_pending(unsigned long
if (skb_queue_empty(&local->pending[i]))
list_for_each_entry_rcu(sdata, &local->interfaces, list)
}
--- a/drivers/net/wireless/ath/ath5k/base.c
+++ b/drivers/net/wireless/ath/ath5k/base.c
-@@ -2973,20 +2973,42 @@ unlock:
+@@ -2967,20 +2967,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));
-@@ -2995,6 +3017,9 @@ static u64 ath5k_prepare_multicast(struc
+@@ -2989,6 +3011,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)(mfilt[1]) << 32) | mfilt[0];
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
-@@ -824,17 +824,35 @@ out:
+@@ -840,17 +840,35 @@ out:
return err;
}
}
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
-@@ -1938,15 +1938,21 @@ struct mwl8k_cmd_mac_multicast_adr {
+@@ -2005,15 +2005,21 @@ struct mwl8k_cmd_mac_multicast_adr {
static struct mwl8k_cmd_pkt *
__mwl8k_cmd_mac_multicast_adr(struct ieee80211_hw *hw, int allmulti,
if (allmulti || mc_count > priv->num_mcaddrs) {
allmulti = 1;
-@@ -1967,13 +1973,27 @@ __mwl8k_cmd_mac_multicast_adr(struct iee
+@@ -2034,13 +2040,27 @@ __mwl8k_cmd_mac_multicast_adr(struct iee
if (allmulti) {
cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST);
} else if (mc_count) {
}
}
-@@ -3550,7 +3570,11 @@ mwl8k_bss_info_changed(struct ieee80211_
+@@ -3699,7 +3719,11 @@ mwl8k_bss_info_changed(struct ieee80211_
}
static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw,
{
struct mwl8k_cmd_pkt *cmd;
-@@ -3561,7 +3585,11 @@ static u64 mwl8k_prepare_multicast(struc
+@@ -3710,7 +3734,11 @@ static u64 mwl8k_prepare_multicast(struc
* we'll end up throwing this packet away and creating a new
* one in mwl8k_configure_filter().
*/
return (unsigned long)cmd;
}
-@@ -3683,7 +3711,11 @@ static void mwl8k_configure_filter(struc
+@@ -3832,7 +3860,11 @@ static void mwl8k_configure_filter(struc
*/
if (*total_flags & FIF_ALLMULTI) {
kfree(cmd);
size_t fw_name_len, u32 *hw_ver);
--- a/drivers/net/wireless/rndis_wlan.c
+++ b/drivers/net/wireless/rndis_wlan.c
-@@ -1588,7 +1588,11 @@ static void set_multicast_list(struct us
+@@ -1606,7 +1606,11 @@ static void set_multicast_list(struct us
netdev_for_each_mc_addr(ha, usbdev->net)
memcpy(mc_addrs + i++ * ETH_ALEN,
static void rtl8180_configure_filter(struct ieee80211_hw *dev,
--- a/drivers/net/wireless/rtl818x/rtl8187_dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8187_dev.c
-@@ -1192,9 +1192,17 @@ static void rtl8187_bss_info_changed(str
+@@ -1194,9 +1194,17 @@ static void rtl8187_bss_info_changed(str
}
static u64 rtl8187_prepare_multicast(struct ieee80211_hw *dev,
static void rtl8187_configure_filter(struct ieee80211_hw *dev,
--- a/drivers/net/wireless/wl12xx/wl1271_main.c
+++ b/drivers/net/wireless/wl12xx/wl1271_main.c
-@@ -1410,11 +1410,20 @@ struct wl1271_filter_params {
+@@ -1460,11 +1460,20 @@ struct wl1271_filter_params {
u8 mc_list[ACX_MC_ADDRESS_GROUP_MAX][ETH_ALEN];
};
struct wl1271 *wl = hw->priv;
if (unlikely(wl->state == WL1271_STATE_OFF))
-@@ -1427,16 +1436,40 @@ static u64 wl1271_op_prepare_multicast(s
+@@ -1477,16 +1486,40 @@ static u64 wl1271_op_prepare_multicast(s
}
/* update multicast filtering parameters */
return hash.low | ((u64)hash.high << 32);
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -1742,7 +1742,11 @@ struct ieee80211_ops {
+@@ -1763,7 +1763,11 @@ struct ieee80211_ops {
struct ieee80211_bss_conf *info,
u32 changed);
u64 (*prepare_multicast)(struct ieee80211_hw *hw,
int (*program_end)(struct hermes *hw);
--- a/drivers/net/wireless/orinoco/orinoco_usb.c
+++ b/drivers/net/wireless/orinoco/orinoco_usb.c
-@@ -1549,7 +1549,7 @@ static const struct hermes_ops ezusb_ops
+@@ -1548,7 +1548,7 @@ static const struct hermes_ops ezusb_ops
.read_ltv = ezusb_read_ltv,
.write_ltv = ezusb_write_ltv,
.bap_pread = ezusb_bap_pread,
ntype == NL80211_IFTYPE_P2P_CLIENT))
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -1247,7 +1247,7 @@ static int nl80211_valid_4addr(struct cf
+@@ -1278,7 +1278,7 @@ static int nl80211_valid_4addr(struct cf
enum nl80211_iftype iftype)
{
if (!use_4addr) {
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
-@@ -4385,8 +4385,12 @@ static inline int l2cap_data_channel(str
+@@ -4419,8 +4419,12 @@ static inline int l2cap_data_channel(str
if (!sock_owned_by_user(sk)) {
l2cap_ertm_data_rcv(sk, skb);
} else {