if (unlikely(retval < 0)) {
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
-@@ -1404,7 +1404,7 @@ usbnet_probe (struct usb_interface *udev
+@@ -1409,7 +1409,7 @@ usbnet_probe (struct usb_interface *udev
net->features |= NETIF_F_HIGHDMA;
#endif
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1295,7 +1295,7 @@ static const struct net_device_ops hwsim
+@@ -1294,7 +1294,7 @@ static const struct net_device_ops hwsim
static void hwsim_mon_setup(struct net_device *dev)
{
dev->tx_queue_len = 0;
--- a/drivers/net/wireless/mwifiex/main.c
+++ b/drivers/net/wireless/mwifiex/main.c
-@@ -635,7 +635,7 @@ static const struct net_device_ops mwifi
+@@ -636,7 +636,7 @@ static const struct net_device_ops mwifi
void mwifiex_init_priv_params(struct mwifiex_private *priv,
struct net_device *dev)
{
strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -826,7 +826,7 @@ static void ieee80211_if_setup(struct ne
+@@ -821,7 +821,7 @@ static void ieee80211_if_setup(struct ne
{
ether_setup(dev);
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
dev->destructor = free_netdev;
}
-@@ -973,7 +973,7 @@ static void ieee80211_setup_sdata(struct
+@@ -968,7 +968,7 @@ static void ieee80211_setup_sdata(struct
/* and set some type-dependent values */
sdata->vif.type = type;
sdata->vif.p2p = false;
sdata->wdev.iftype = type;
sdata->control_port_protocol = cpu_to_be16(ETH_P_PAE);
-@@ -1014,7 +1014,7 @@ static void ieee80211_setup_sdata(struct
+@@ -1009,7 +1009,7 @@ static void ieee80211_setup_sdata(struct
break;
case NL80211_IFTYPE_MONITOR:
sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
* For RX we handle drivers that zero-pad to end-of-packet.
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -827,6 +827,11 @@ static void ieee80211_if_setup(struct ne
+@@ -822,6 +822,11 @@ static void ieee80211_if_setup(struct ne
ether_setup(dev);
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
netdev_attach_ops(dev, &ieee80211_dataif_ops);
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1293,6 +1293,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1288,6 +1288,7 @@ int ieee80211_if_add(struct ieee80211_lo
return -ENOMEM;
dev_net_set(ndev, wiphy_net(local->hw.wiphy));
ndev->needed_headroom = local->tx_headroom +
4*6 /* four MAC addresses */
+ 2 + 2 + 2 + 2 /* ctl, dur, seq, qos */
-@@ -1301,6 +1302,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1296,6 +1297,7 @@ int ieee80211_if_add(struct ieee80211_lo
- ETH_HLEN /* ethernet hard_header_len */
+ IEEE80211_ENCRYPT_HEADROOM;
ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -5415,7 +5415,9 @@ static int nl80211_wiphy_netns(struct sk
+@@ -5565,7 +5565,9 @@ static int nl80211_wiphy_netns(struct sk
if (!net_eq(wiphy_net(&rdev->wiphy), net))
err = cfg80211_switch_netns(rdev, net);
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -230,6 +230,7 @@ int cfg80211_dev_rename(struct cfg80211_
+@@ -167,6 +167,7 @@ int cfg80211_dev_rename(struct cfg80211_
return 0;
}
int cfg80211_switch_netns(struct cfg80211_registered_device *rdev,
struct net *net)
{
-@@ -270,6 +271,7 @@ int cfg80211_switch_netns(struct cfg8021
+@@ -207,6 +208,7 @@ int cfg80211_switch_netns(struct cfg8021
return 0;
}
static void cfg80211_rfkill_poll(struct rfkill *rfkill, void *data)
{
-@@ -384,7 +386,9 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -321,7 +323,9 @@ struct wiphy *wiphy_new(const struct cfg
rdev->wiphy.flags |= WIPHY_FLAG_PS_ON_BY_DEFAULT;
#endif
rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
rdev->rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
-@@ -812,8 +816,10 @@ static int cfg80211_netdev_notifier_call
+@@ -749,8 +753,10 @@ static int cfg80211_netdev_notifier_call
mutex_lock(&rdev->devlist_mtx);
list_add_rcu(&wdev->list, &rdev->netdev_list);
rdev->devlist_generation++;
if (sysfs_create_link(&dev->dev.kobj, &rdev->wiphy.dev.kobj,
"phy80211")) {
-@@ -993,6 +999,7 @@ static struct notifier_block cfg80211_ne
+@@ -930,6 +936,7 @@ static struct notifier_block cfg80211_ne
.notifier_call = cfg80211_netdev_notifier_call,
};
static void __net_exit cfg80211_pernet_exit(struct net *net)
{
struct cfg80211_registered_device *rdev;
-@@ -1010,14 +1017,17 @@ static void __net_exit cfg80211_pernet_e
+@@ -947,14 +954,17 @@ static void __net_exit cfg80211_pernet_e
static struct pernet_operations cfg80211_pernet_ops = {
.exit = cfg80211_pernet_exit,
};
err = wiphy_sysfs_init();
if (err)
-@@ -1052,8 +1062,10 @@ out_fail_nl80211:
+@@ -989,8 +999,10 @@ out_fail_nl80211:
out_fail_notifier:
wiphy_sysfs_exit();
out_fail_sysfs:
return err;
}
subsys_initcall(cfg80211_init);
-@@ -1065,7 +1077,9 @@ static void __exit cfg80211_exit(void)
+@@ -1002,7 +1014,9 @@ static void __exit cfg80211_exit(void)
unregister_netdevice_notifier(&cfg80211_netdev_notifier);
wiphy_sysfs_exit();
regulatory_exit();
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
-@@ -2057,6 +2057,9 @@ struct wiphy_wowlan_support {
+@@ -2111,6 +2111,9 @@ struct wiphy_wowlan_support {
struct wiphy {
/* assign these fields before you register the wiphy */
u8 addr_mask[ETH_ALEN];
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -332,6 +332,17 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -269,6 +269,17 @@ struct wiphy *wiphy_new(const struct cfg
struct cfg80211_registered_device *rdev;
int alloc_size;
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -385,10 +385,6 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -322,10 +322,6 @@ struct wiphy *wiphy_new(const struct cfg
INIT_LIST_HEAD(&rdev->bss_list);
INIT_WORK(&rdev->scan_done_wk, __cfg80211_scan_done);
INIT_WORK(&rdev->sched_scan_results_wk, __cfg80211_sched_scan_results);
device_initialize(&rdev->wiphy.dev);
rdev->wiphy.dev.class = &ieee80211_class;
rdev->wiphy.dev.platform_data = rdev;
-@@ -840,6 +836,15 @@ static int cfg80211_netdev_notifier_call
+@@ -777,6 +773,15 @@ static int cfg80211_netdev_notifier_call
wdev->sme_state = CFG80211_SME_IDLE;
mutex_unlock(&rdev->devlist_mtx);
#ifdef CONFIG_CFG80211_WEXT
/* add global spin lock to solve the problem that
--- a/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192se/sw.c
-@@ -433,21 +433,22 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use
+@@ -432,21 +432,22 @@ MODULE_PARM_DESC(swlps, "Set to 1 to use
MODULE_PARM_DESC(fwlps, "Set to 1 to use FW control power save (default 1)\n");
MODULE_PARM_DESC(debug, "Set debug level (0-5) (default 0)");
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -1973,6 +1973,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -1958,6 +1958,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
goto fail;
}
if (unlikely(!multicast && skb->sk &&
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)) {
struct sk_buff *orig_skb = skb;
-@@ -2011,6 +2012,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -1996,6 +1997,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
skb = orig_skb;
}
}
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -783,9 +783,11 @@ static void wdev_cleanup_work(struct wor
+@@ -720,9 +720,11 @@ static void wdev_cleanup_work(struct wor
dev_put(wdev->netdev);
}
{
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
-@@ -1321,13 +1321,17 @@ static const struct net_device_ops usbne
+@@ -1326,13 +1326,17 @@ static const struct net_device_ops usbne
// precondition: never called in_interrupt
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -3099,7 +3099,12 @@ void ieee80211_rx(struct ieee80211_hw *h
+@@ -3087,7 +3087,12 @@ void ieee80211_rx(struct ieee80211_hw *h
drop:
kfree_skb(skb);
}
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1395,6 +1395,7 @@ void ieee80211_if_remove(struct ieee8021
+@@ -1390,6 +1390,7 @@ void ieee80211_if_remove(struct ieee8021
* Remove all interfaces, may only be called at hardware unregistration
* time because it doesn't do RCU-safe list removals.
*/
void ieee80211_remove_interfaces(struct ieee80211_local *local)
{
struct ieee80211_sub_if_data *sdata, *tmp;
-@@ -1414,6 +1415,22 @@ void ieee80211_remove_interfaces(struct
+@@ -1409,6 +1410,22 @@ void ieee80211_remove_interfaces(struct
unregister_netdevice_many(&unreg_list);
list_del(&unreg_list);
}
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -1493,6 +1493,10 @@ void ieee80211_xmit(struct ieee80211_sub
+@@ -1478,6 +1478,10 @@ void ieee80211_xmit(struct ieee80211_sub
return;
}
static void rtl8187_configure_filter(struct ieee80211_hw *dev,
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -2612,11 +2612,20 @@ struct wl1271_filter_params {
+@@ -2760,11 +2760,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))
-@@ -2629,16 +2638,40 @@ static u64 wl1271_op_prepare_multicast(s
+@@ -2777,16 +2786,40 @@ static u64 wl1271_op_prepare_multicast(s
}
/* update multicast filtering parameters */
}
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -2280,7 +2280,11 @@ struct ieee80211_ops {
+@@ -2283,7 +2283,11 @@ struct ieee80211_ops {
u32 changed);
u64 (*prepare_multicast)(struct ieee80211_hw *hw,
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -852,7 +852,12 @@ struct ieee80211_local {
+@@ -860,7 +860,12 @@ struct ieee80211_local {
struct work_struct recalc_smps;
/* aggregated multicast list */
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -567,8 +567,13 @@ static void ieee80211_do_stop(struct iee
+@@ -562,8 +562,13 @@ static void ieee80211_do_stop(struct iee
netif_addr_lock_bh(sdata->dev);
spin_lock_bh(&local->filter_lock);
spin_unlock_bh(&local->filter_lock);
netif_addr_unlock_bh(sdata->dev);
-@@ -742,7 +747,12 @@ static void ieee80211_set_multicast_list
+@@ -737,7 +742,12 @@ static void ieee80211_set_multicast_list
sdata->flags ^= IEEE80211_SDATA_PROMISC;
}
spin_lock_bh(&local->filter_lock);
spin_unlock_bh(&local->filter_lock);
/* be a bit nasty */
-@@ -603,9 +607,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
+@@ -612,9 +616,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
wiphy->ht_capa_mod_mask = &mac80211_ht_capa_mod_mask;
INIT_LIST_HEAD(&local->interfaces);
--- a/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/bcmsdh_sdmmc.c
-@@ -69,7 +69,7 @@ static bool
+@@ -71,7 +71,7 @@ static bool
brcmf_pm_resume_error(struct brcmf_sdio_dev *sdiodev)
{
bool is_err = false;
is_err = atomic_read(&sdiodev->suspend);
#endif
return is_err;
-@@ -78,7 +78,7 @@ brcmf_pm_resume_error(struct brcmf_sdio_
+@@ -80,7 +80,7 @@ brcmf_pm_resume_error(struct brcmf_sdio_
static void
brcmf_pm_resume_wait(struct brcmf_sdio_dev *sdiodev, wait_queue_head_t *wq)
{
int retry = 0;
while (atomic_read(&sdiodev->suspend) && retry++ != 30)
wait_event_timeout(*wq, false, HZ/100);
-@@ -563,7 +563,7 @@ static void brcmf_ops_sdio_remove(struct
+@@ -565,7 +565,7 @@ static void brcmf_ops_sdio_remove(struct
}
}
static int brcmf_sdio_suspend(struct device *dev)
{
mmc_pm_flag_t sdio_flags;
-@@ -613,7 +613,7 @@ static struct sdio_driver brcmf_sdmmc_dr
+@@ -615,7 +615,7 @@ static struct sdio_driver brcmf_sdmmc_dr
.remove = brcmf_ops_sdio_remove,
.name = "brcmfmac",
.id_table = brcmf_sdmmc_ids,
ntype == NL80211_IFTYPE_P2P_CLIENT))
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -1707,7 +1707,7 @@ static int nl80211_valid_4addr(struct cf
+@@ -1797,7 +1797,7 @@ static int nl80211_valid_4addr(struct cf
enum nl80211_iftype iftype)
{
if (!use_4addr) {
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -1109,6 +1109,10 @@ static void __exit ieee80211_exit(void)
+@@ -1118,6 +1118,10 @@ static void __exit ieee80211_exit(void)
rc80211_minstrel_ht_exit();
rc80211_minstrel_exit();
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -4413,7 +4413,9 @@ static int nl80211_dump_scan(struct sk_b
+@@ -4566,7 +4566,9 @@ static int nl80211_dump_scan(struct sk_b
spin_lock_bh(&rdev->bss_lock);
cfg80211_bss_expire(rdev);
--- a/drivers/net/wireless/ti/wl12xx/main.c
+++ b/drivers/net/wireless/ti/wl12xx/main.c
-@@ -1499,16 +1499,20 @@ static int __devinit wl12xx_probe(struct
+@@ -1663,16 +1663,20 @@ static int __devinit wl12xx_probe(struct
return wlcore_probe(wl, pdev);
}
--- a/drivers/net/wireless/mwifiex/init.c
+++ b/drivers/net/wireless/mwifiex/init.c
-@@ -354,8 +354,10 @@ void mwifiex_set_trans_start(struct net_
+@@ -355,8 +355,10 @@ void mwifiex_set_trans_start(struct net_
{
int i;
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
-@@ -906,7 +906,9 @@ static const struct ethtool_ops usbnet_e
+@@ -908,7 +908,9 @@ static const struct ethtool_ops usbnet_e
.get_drvinfo = usbnet_get_drvinfo,
.get_msglevel = usbnet_get_msglevel,
.set_msglevel = usbnet_set_msglevel,
trace_mac80211_info(&vaf);
va_end(args);
}
-@@ -33,10 +37,16 @@ void __sdata_dbg(bool print, const char *fmt, ...)
+@@ -33,10 +37,16 @@ void __sdata_dbg(bool print, const char
va_list args;
va_start(args, fmt);
trace_mac80211_err(&vaf);
va_end(args);
}
-@@ -64,10 +78,16 @@ void __wiphy_dbg(struct wiphy *wiphy, bool print, const char *fmt, ...)
+@@ -64,10 +78,16 @@ void __wiphy_dbg(struct wiphy *wiphy, bo
va_list args;
va_start(args, fmt);
module_usb_driver(rtl8187_driver);
--- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-@@ -373,7 +373,9 @@ static struct usb_driver rtl8192cu_drive
+@@ -376,7 +376,9 @@ static struct usb_driver rtl8192cu_drive
#ifdef CONFIG_AUTOSUSPEND
.supports_autosuspend = 1,
#endif