--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1621,6 +1621,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1623,6 +1623,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 */
-@@ -1629,6 +1630,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1631,6 +1632,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
-@@ -1663,6 +1663,7 @@ static int nl80211_dump_wiphy(struct sk_
+@@ -1664,6 +1664,7 @@ static int nl80211_dump_wiphy(struct sk_
cb->nlh->nlmsg_seq,
NLM_F_MULTI, state);
if (ret < 0) {
/*
* If sending the wiphy data didn't fit (ENOBUFS
* or EMSGSIZE returned), this SKB is still
-@@ -1683,6 +1684,7 @@ static int nl80211_dump_wiphy(struct sk_
+@@ -1684,6 +1685,7 @@ static int nl80211_dump_wiphy(struct sk_
rtnl_unlock();
return 1;
}
--- a/include/net/cfg80211.h
+++ b/include/net/cfg80211.h
-@@ -2790,6 +2790,9 @@ struct wiphy_coalesce_support {
+@@ -2792,6 +2792,9 @@ struct wiphy_coalesce_support {
struct wiphy {
/* assign these fields before you register the wiphy */
--- a/drivers/net/wireless/iwlwifi/pcie/trans.c
+++ b/drivers/net/wireless/iwlwifi/pcie/trans.c
-@@ -912,12 +912,21 @@ void iwl_trans_pcie_free(struct iwl_tran
+@@ -909,12 +909,21 @@ void iwl_trans_pcie_free(struct iwl_tran
{
struct iwl_trans_pcie *trans_pcie = IWL_TRANS_GET_PCIE_TRANS(trans);
iwl_pcie_free_ict(trans);
pci_disable_msi(trans_pcie->pci_dev);
-@@ -1612,9 +1621,16 @@ struct iwl_trans *iwl_trans_pcie_alloc(s
+@@ -1609,9 +1618,16 @@ struct iwl_trans *iwl_trans_pcie_alloc(s
if (iwl_pcie_alloc_ict(trans))
goto out_free_cmd_pool;
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -6065,15 +6065,27 @@ static void wlcore_nvs_cb(const struct f
+@@ -6064,15 +6064,27 @@ static void wlcore_nvs_cb(const struct f
wl->platform_quirks = pdata->platform_quirks;
wl->if_ops = pdev_data->if_ops;
if (ret < 0) {
wl1271_error("request_irq() failed: %d", ret);
goto out_free_nvs;
-@@ -6119,7 +6131,11 @@ out_unreg:
+@@ -6118,7 +6130,11 @@ out_unreg:
wl1271_unregister_hw(wl);
out_irq:
out_free_nvs:
kfree(wl->nvs);
-@@ -6165,7 +6181,12 @@ int wlcore_remove(struct platform_device
+@@ -6164,7 +6180,12 @@ int wlcore_remove(struct platform_device
disable_irq_wake(wl->irq);
}
wl1271_unregister_hw(wl);
device_initialize(&rdev->wiphy.dev);
rdev->wiphy.dev.class = &ieee80211_class;
rdev->wiphy.dev.platform_data = rdev;
-@@ -846,6 +842,15 @@ static int cfg80211_netdev_notifier_call
+@@ -852,6 +848,15 @@ static int cfg80211_netdev_notifier_call
}
wdev->netdev = dev;
#ifdef CONFIG_CFG80211_WEXT
--- a/drivers/bcma/host_pci.c
+++ b/drivers/bcma/host_pci.c
-@@ -260,6 +260,9 @@ static int bcma_host_pci_resume(struct d
+@@ -259,6 +259,9 @@ static int bcma_host_pci_resume(struct d
return bcma_bus_resume(bus);
}
static SIMPLE_DEV_PM_OPS(bcma_pm_ops, bcma_host_pci_suspend,
bcma_host_pci_resume);
#define BCMA_PM_OPS (&bcma_pm_ops)
-@@ -290,7 +293,12 @@ static struct pci_driver bcma_pci_bridge
+@@ -289,7 +292,12 @@ static struct pci_driver bcma_pci_bridge
.id_table = bcma_pci_bridge_tbl,
.probe = bcma_host_pci_probe,
.remove = bcma_host_pci_remove,
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -838,6 +838,9 @@ static int ath_pci_resume(struct device
+@@ -883,6 +883,9 @@ static int ath_pci_resume(struct device
return 0;
}
static SIMPLE_DEV_PM_OPS(ath9k_pm_ops, ath_pci_suspend, ath_pci_resume);
#define ATH9K_PM_OPS (&ath9k_pm_ops)
-@@ -856,7 +859,12 @@ static struct pci_driver ath_pci_driver
+@@ -901,7 +904,12 @@ static struct pci_driver ath_pci_driver
.id_table = ath_pci_id_table,
.probe = ath_pci_probe,
.remove = ath_pci_remove,
--- a/drivers/net/wireless/iwlegacy/3945-mac.c
+++ b/drivers/net/wireless/iwlegacy/3945-mac.c
-@@ -3908,7 +3908,12 @@ static struct pci_driver il3945_driver =
+@@ -3907,7 +3907,12 @@ static struct pci_driver il3945_driver =
.id_table = il3945_hw_card_ids,
.probe = il3945_pci_probe,
.remove = il3945_pci_remove,
--- a/drivers/net/wireless/iwlwifi/pcie/drv.c
+++ b/drivers/net/wireless/iwlwifi/pcie/drv.c
-@@ -446,6 +446,9 @@ static int iwl_pci_resume(struct device
+@@ -467,6 +467,9 @@ static int iwl_pci_resume(struct device
return 0;
}
static SIMPLE_DEV_PM_OPS(iwl_dev_pm_ops, iwl_pci_suspend, iwl_pci_resume);
#define IWL_PM_OPS (&iwl_dev_pm_ops)
-@@ -461,7 +464,12 @@ static struct pci_driver iwl_pci_driver
+@@ -482,7 +485,12 @@ static struct pci_driver iwl_pci_driver
.id_table = iwl_hw_card_ids,
.probe = iwl_pci_probe,
.remove = iwl_pci_remove,
--- a/drivers/net/wireless/libertas/if_spi.c
+++ b/drivers/net/wireless/libertas/if_spi.c
-@@ -1245,6 +1245,7 @@ static int libertas_spi_remove(struct sp
+@@ -1244,6 +1244,7 @@ static int libertas_spi_remove(struct sp
return 0;
}
static int if_spi_suspend(struct device *dev)
{
struct spi_device *spi = to_spi_device(dev);
-@@ -1278,6 +1279,7 @@ static const struct dev_pm_ops if_spi_pm
+@@ -1277,6 +1278,7 @@ static const struct dev_pm_ops if_spi_pm
.suspend = if_spi_suspend,
.resume = if_spi_resume,
};
static struct spi_driver libertas_spi_driver = {
.probe = if_spi_probe,
-@@ -1285,7 +1287,9 @@ static struct spi_driver libertas_spi_dr
+@@ -1284,7 +1286,9 @@ static struct spi_driver libertas_spi_dr
.driver = {
.name = "libertas_spi",
.owner = THIS_MODULE,
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -2024,6 +2024,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -2049,6 +2049,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
goto fail_rcu;
}
if (unlikely(!multicast && skb->sk &&
skb_shinfo(skb)->tx_flags & SKBTX_WIFI_STATUS)) {
struct sk_buff *orig_skb = skb;
-@@ -2052,6 +2053,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
+@@ -2077,6 +2078,7 @@ netdev_tx_t ieee80211_subif_start_xmit(s
skb = orig_skb;
}
}
--- a/net/bluetooth/l2cap_sock.c
+++ b/net/bluetooth/l2cap_sock.c
-@@ -639,8 +639,13 @@ static int l2cap_sock_setsockopt_old(str
+@@ -723,8 +723,13 @@ static int l2cap_sock_setsockopt_old(str
return err;
}
{
struct sock *sk = sock->sk;
struct l2cap_chan *chan = l2cap_pi(sk)->chan;
-@@ -1379,8 +1384,12 @@ static struct sock *l2cap_sock_alloc(str
+@@ -1521,8 +1526,12 @@ static struct sock *l2cap_sock_alloc(str
return sk;
}
{
struct sock *sk;
-@@ -1392,7 +1401,11 @@ static int l2cap_sock_create(struct net
+@@ -1534,7 +1543,11 @@ static int l2cap_sock_create(struct net
sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
return -ESOCKTNOSUPPORT;
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1746,6 +1746,7 @@ void ieee80211_sdata_stop(struct ieee802
+@@ -1750,6 +1750,7 @@ void ieee80211_sdata_stop(struct ieee802
* 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;
-@@ -1782,6 +1783,22 @@ void ieee80211_remove_interfaces(struct
+@@ -1786,6 +1787,22 @@ void ieee80211_remove_interfaces(struct
kfree(sdata);
}
}
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -1507,6 +1507,10 @@ void ieee80211_xmit(struct ieee80211_sub
+@@ -1510,6 +1510,10 @@ void ieee80211_xmit(struct ieee80211_sub
}
}
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -3039,11 +3039,20 @@ struct wl1271_filter_params {
+@@ -3038,11 +3038,20 @@ struct wl1271_filter_params {
u8 mc_list[ACX_MC_ADDRESS_GROUP_MAX][ETH_ALEN];
};
fp = kzalloc(sizeof(*fp), GFP_ATOMIC);
if (!fp) {
-@@ -3052,16 +3061,40 @@ static u64 wl1271_op_prepare_multicast(s
+@@ -3051,16 +3060,40 @@ static u64 wl1271_op_prepare_multicast(s
}
/* update multicast filtering parameters */
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -2719,14 +2719,24 @@ struct ieee80211_ops {
+@@ -2759,14 +2759,24 @@ struct ieee80211_ops {
void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
u64 (*prepare_multicast)(struct ieee80211_hw *hw,
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -980,7 +980,12 @@ struct ieee80211_local {
+@@ -1003,7 +1003,12 @@ struct ieee80211_local {
struct work_struct reconfig_filter;
/* aggregated multicast list */
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -807,8 +807,13 @@ static void ieee80211_do_stop(struct iee
+@@ -810,8 +810,13 @@ static void ieee80211_do_stop(struct iee
if (sdata->dev) {
netif_addr_lock_bh(sdata->dev);
spin_lock_bh(&local->filter_lock);
spin_unlock_bh(&local->filter_lock);
netif_addr_unlock_bh(sdata->dev);
}
-@@ -1022,10 +1027,20 @@ static void ieee80211_set_multicast_list
+@@ -1027,10 +1032,20 @@ static void ieee80211_set_multicast_list
if (sdata->vif.type != NL80211_IFTYPE_MONITOR &&
sdata->vif.type != NL80211_IFTYPE_AP_VLAN &&
sdata->vif.type != NL80211_IFTYPE_AP)
int retry = 0;
while (atomic_read(&sdiodev->suspend) && retry++ != 30)
wait_event_timeout(*wq, false, HZ/100);
-@@ -417,7 +417,7 @@ static void brcmf_ops_sdio_remove(struct
+@@ -432,7 +432,7 @@ static void brcmf_ops_sdio_remove(struct
brcmf_dbg(SDIO, "Exit\n");
}
static int brcmf_sdio_suspend(struct device *dev)
{
mmc_pm_flag_t sdio_flags;
-@@ -467,7 +467,7 @@ static struct sdio_driver brcmf_sdmmc_dr
+@@ -482,7 +482,7 @@ static struct sdio_driver brcmf_sdmmc_dr
.remove = brcmf_ops_sdio_remove,
.name = BRCMFMAC_SDIO_PDATA_NAME,
.id_table = brcmf_sdmmc_ids,
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -2362,7 +2362,7 @@ static int nl80211_valid_4addr(struct cf
+@@ -2363,7 +2363,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
-@@ -1142,6 +1142,10 @@ static void __exit ieee80211_exit(void)
+@@ -1199,6 +1199,10 @@ static void __exit ieee80211_exit(void)
rc80211_minstrel_ht_exit();
rc80211_minstrel_exit();
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -5943,7 +5943,9 @@ static int nl80211_dump_scan(struct sk_b
+@@ -5959,7 +5959,9 @@ static int nl80211_dump_scan(struct sk_b
spin_lock_bh(&rdev->bss_lock);
cfg80211_bss_expire(rdev);
--- a/drivers/net/wireless/ath/wcn36xx/main.c
+++ b/drivers/net/wireless/ath/wcn36xx/main.c
-@@ -999,6 +999,7 @@ static int wcn36xx_remove(struct platfor
+@@ -1000,6 +1000,7 @@ static int wcn36xx_remove(struct platfor
return 0;
}
static const struct platform_device_id wcn36xx_platform_id_table[] = {
{
.name = "wcn36xx",
-@@ -1007,6 +1008,7 @@ static const struct platform_device_id w
+@@ -1008,6 +1009,7 @@ static const struct platform_device_id w
{}
};
MODULE_DEVICE_TABLE(platform, wcn36xx_platform_id_table);
static struct platform_driver wcn36xx_driver = {
.probe = wcn36xx_probe,
-@@ -1015,7 +1017,9 @@ static struct platform_driver wcn36xx_dr
+@@ -1016,7 +1018,9 @@ static struct platform_driver wcn36xx_dr
.name = "wcn36xx",
.owner = THIS_MODULE,
},
--- a/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
+++ b/drivers/net/wireless/rtlwifi/rtl8192cu/sw.c
-@@ -387,7 +387,9 @@ static struct usb_driver rtl8192cu_drive
+@@ -397,7 +397,9 @@ static struct usb_driver rtl8192cu_drive
#ifdef CONFIG_AUTOSUSPEND
.supports_autosuspend = 1,
#endif
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -8079,7 +8079,7 @@ static int nl80211_parse_wowlan_tcp(stru
+@@ -8095,7 +8095,7 @@ static int nl80211_parse_wowlan_tcp(stru
port = nla_get_u16(tb[NL80211_WOWLAN_TCP_SRC_PORT]);
else
port = 0;
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -1122,6 +1122,9 @@ struct ieee80211_local {
+@@ -1150,6 +1150,9 @@ struct ieee80211_local {
u32 dot11TransmittedFrameCount;
#ifdef CONFIG_MAC80211_LEDS
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -2105,7 +2105,7 @@ out:
+@@ -2112,7 +2112,7 @@ out:
}
/* Generic Netlink operations array */
[NL80211_MCGRP_CONFIG] = { .name = "config", },
[NL80211_MCGRP_SCAN] = { .name = "scan", },
[NL80211_MCGRP_REGULATORY] = { .name = "regulatory", },
-@@ -8874,7 +8874,7 @@ static int nl80211_crit_protocol_stop(st
+@@ -8890,7 +8890,7 @@ static int nl80211_crit_protocol_stop(st
#define NL80211_FLAG_NEED_WDEV_UP (NL80211_FLAG_NEED_WDEV |\
NL80211_FLAG_CHECK_NETDEV_UP)
struct genl_info *info)
{
struct cfg80211_registered_device *rdev;
-@@ -8943,7 +8943,7 @@ static int nl80211_pre_doit(const struct
+@@ -8959,7 +8959,7 @@ static int nl80211_pre_doit(const struct
return 0;
}
struct genl_info *info)
{
if (info->user_ptr[1]) {
-@@ -8960,7 +8960,7 @@ static void nl80211_post_doit(const stru
+@@ -8976,7 +8976,7 @@ static void nl80211_post_doit(const stru
rtnl_unlock();
}