+#endif /* (LINUX_VERSION_CODE >= KERNEL_VERSION(3,4,0)) */
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
-@@ -357,8 +357,10 @@ static const struct file_operations rade
+@@ -358,8 +358,10 @@ static const struct file_operations rade
static struct drm_driver kms_driver = {
.driver_features =
DRIVER_USE_AGP | DRIVER_USE_MTRR | DRIVER_PCI_DMA | DRIVER_SG |
.dev_priv_size = 0,
.load = radeon_driver_load_kms,
.firstopen = radeon_driver_firstopen_kms,
-@@ -393,10 +395,12 @@ static struct drm_driver kms_driver = {
+@@ -394,10 +396,12 @@ static struct drm_driver kms_driver = {
.dumb_destroy = radeon_mode_dumb_destroy,
.fops = &radeon_driver_kms_fops,
static void i915_gem_object_flush_gtt_write_domain(struct drm_i915_gem_object *obj);
static void i915_gem_object_flush_cpu_write_domain(struct drm_i915_gem_object *obj);
-@@ -3793,8 +3795,10 @@ void i915_gem_free_object(struct drm_gem
+@@ -3787,8 +3789,10 @@ void i915_gem_free_object(struct drm_gem
BUG_ON(obj->pages);
CFLAGS_radeon_trace_points.o := -I$(src)
--- a/drivers/gpu/drm/radeon/radeon_drv.c
+++ b/drivers/gpu/drm/radeon/radeon_drv.c
-@@ -229,7 +229,7 @@ static struct pci_device_id pciidlist[]
+@@ -230,7 +230,7 @@ static struct pci_device_id pciidlist[]
radeon_PCI_IDS
};
MODULE_DEVICE_TABLE(pci, pciidlist);
#endif
-@@ -443,7 +443,7 @@ static int __init radeon_init(void)
+@@ -444,7 +444,7 @@ static int __init radeon_init(void)
#endif
/* if enabled by default */
if (radeon_modeset == -1) {
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -3926,9 +3926,14 @@ i915_gem_init_hw(struct drm_device *dev)
+@@ -3920,9 +3920,14 @@ i915_gem_init_hw(struct drm_device *dev)
drm_i915_private_t *dev_priv = dev->dev_private;
int ret;
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
-@@ -1639,7 +1639,14 @@ i915_gem_object_truncate(struct drm_i915
+@@ -1645,7 +1645,14 @@ i915_gem_object_truncate(struct drm_i915
* backing pages, *now*.
*/
inode = obj->base.filp->f_path.dentry->d_inode;
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1606,7 +1606,7 @@ static const struct net_device_ops hwsim
+@@ -1628,7 +1628,7 @@ static const struct net_device_ops hwsim
static void hwsim_mon_setup(struct net_device *dev)
{
atl1e_set_ethtool_ops(netdev);
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2416,7 +2416,7 @@ static int atl1c_init_netdev(struct net_
+@@ -2415,7 +2415,7 @@ static int atl1c_init_netdev(struct net_
SET_NETDEV_DEV(netdev, &pdev->dev);
pci_set_drvdata(pdev, netdev);
strncpy(netdev->name, pci_name(pdev), sizeof(netdev->name) - 1);
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1053,7 +1053,7 @@ static void ieee80211_if_setup(struct ne
+@@ -1047,7 +1047,7 @@ static void ieee80211_if_setup(struct ne
{
ether_setup(dev);
dev->priv_flags &= ~IFF_TX_SKB_SHARING;
dev->destructor = free_netdev;
}
-@@ -1216,7 +1216,7 @@ static void ieee80211_setup_sdata(struct
+@@ -1210,7 +1210,7 @@ static void ieee80211_setup_sdata(struct
/* only monitor/p2p-device differ */
if (sdata->dev) {
sdata->dev->type = ARPHRD_ETHER;
}
-@@ -1251,7 +1251,7 @@ static void ieee80211_setup_sdata(struct
+@@ -1248,7 +1248,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
-@@ -1054,6 +1054,11 @@ static void ieee80211_if_setup(struct ne
+@@ -1048,6 +1048,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
-@@ -1538,6 +1538,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1548,6 +1548,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 */
-@@ -1546,6 +1547,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1556,6 +1557,7 @@ int ieee80211_if_add(struct ieee80211_lo
- ETH_HLEN /* ethernet hard_header_len */
+ IEEE80211_ENCRYPT_HEADROOM;
ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1930,10 +1930,10 @@ static int hwsim_register_received_nl(st
+@@ -1952,10 +1952,10 @@ static int hwsim_register_received_nl(st
if (info == NULL)
goto out;
return 0;
out:
-@@ -1970,7 +1970,7 @@ static int mac80211_hwsim_netlink_notify
+@@ -1992,7 +1992,7 @@ static int mac80211_hwsim_netlink_notify
if (state != NETLINK_URELEASE)
return NOTIFY_DONE;
rdev, dev, mac_addr, &sinfo) < 0) {
nlmsg_free(msg);
return -ENOBUFS;
-@@ -3534,7 +3534,7 @@ static int nl80211_dump_mpath(struct sk_
+@@ -3552,7 +3552,7 @@ static int nl80211_dump_mpath(struct sk_
if (err)
goto out_err;
cb->nlh->nlmsg_seq, NLM_F_MULTI,
netdev, dst, next_hop,
&pinfo) < 0)
-@@ -3583,7 +3583,7 @@ static int nl80211_get_mpath(struct sk_b
+@@ -3601,7 +3601,7 @@ static int nl80211_get_mpath(struct sk_b
if (!msg)
return -ENOMEM;
dev, dst, next_hop, &pinfo) < 0) {
nlmsg_free(msg);
return -ENOBUFS;
-@@ -3851,7 +3851,7 @@ static int nl80211_get_mesh_config(struc
+@@ -3865,7 +3865,7 @@ static int nl80211_get_mesh_config(struc
msg = nlmsg_new(NLMSG_DEFAULT_SIZE, GFP_KERNEL);
if (!msg)
return -ENOMEM;
NL80211_CMD_GET_MESH_CONFIG);
if (!hdr)
goto out;
-@@ -4169,7 +4169,7 @@ static int nl80211_get_reg(struct sk_buf
+@@ -4184,7 +4184,7 @@ static int nl80211_get_reg(struct sk_buf
goto out;
}
NL80211_CMD_GET_REG);
if (!hdr)
goto put_failure;
-@@ -4814,7 +4814,7 @@ static int nl80211_send_bss(struct sk_bu
+@@ -4822,7 +4822,7 @@ static int nl80211_send_bss(struct sk_bu
ASSERT_WDEV_LOCK(wdev);
NL80211_CMD_NEW_SCAN_RESULTS);
if (!hdr)
return -1;
-@@ -5041,7 +5041,7 @@ static int nl80211_dump_survey(struct sk
+@@ -5049,7 +5049,7 @@ static int nl80211_dump_survey(struct sk
}
if (nl80211_send_survey(skb,
cb->nlh->nlmsg_seq, NLM_F_MULTI,
netdev,
&survey) < 0)
-@@ -5687,7 +5687,7 @@ static int nl80211_testmode_dump(struct
+@@ -5695,7 +5695,7 @@ static int nl80211_testmode_dump(struct
}
while (1) {
cb->nlh->nlmsg_seq, NLM_F_MULTI,
NL80211_CMD_TESTMODE);
struct nlattr *tmdata;
-@@ -5766,7 +5766,7 @@ struct sk_buff *cfg80211_testmode_alloc_
+@@ -5774,7 +5774,7 @@ struct sk_buff *cfg80211_testmode_alloc_
return NULL;
return __cfg80211_testmode_alloc_skb(rdev, approxlen,
rdev->testmode_info->snd_seq,
GFP_KERNEL);
}
-@@ -6099,7 +6099,7 @@ static int nl80211_remain_on_channel(str
+@@ -6107,7 +6107,7 @@ static int nl80211_remain_on_channel(str
if (!msg)
return -ENOMEM;
NL80211_CMD_REMAIN_ON_CHANNEL);
if (IS_ERR(hdr)) {
-@@ -6318,7 +6318,7 @@ static int nl80211_register_mgmt(struct
+@@ -6326,7 +6326,7 @@ static int nl80211_register_mgmt(struct
if (!rdev->ops->mgmt_tx)
return -EOPNOTSUPP;
nla_data(info->attrs[NL80211_ATTR_FRAME_MATCH]),
nla_len(info->attrs[NL80211_ATTR_FRAME_MATCH]));
}
-@@ -6388,7 +6388,7 @@ static int nl80211_tx_mgmt(struct sk_buf
+@@ -6396,7 +6396,7 @@ static int nl80211_tx_mgmt(struct sk_buf
if (!msg)
return -ENOMEM;
NL80211_CMD_FRAME);
if (IS_ERR(hdr)) {
-@@ -6503,7 +6503,7 @@ static int nl80211_get_power_save(struct
+@@ -6511,7 +6511,7 @@ static int nl80211_get_power_save(struct
if (!msg)
return -ENOMEM;
NL80211_CMD_GET_POWER_SAVE);
if (!hdr) {
err = -ENOBUFS;
-@@ -6693,7 +6693,7 @@ static int nl80211_get_wowlan(struct sk_
+@@ -6701,7 +6701,7 @@ static int nl80211_get_wowlan(struct sk_
if (!msg)
return -ENOMEM;
NL80211_CMD_GET_WOWLAN);
if (!hdr)
goto nla_put_failure;
-@@ -6970,7 +6970,7 @@ static int nl80211_register_unexpected_f
+@@ -6978,7 +6978,7 @@ static int nl80211_register_unexpected_f
if (wdev->ap_unexpected_nlportid)
return -EBUSY;
return 0;
}
-@@ -7000,7 +7000,7 @@ static int nl80211_probe_client(struct s
+@@ -7008,7 +7008,7 @@ static int nl80211_probe_client(struct s
if (!msg)
return -ENOMEM;
NL80211_CMD_PROBE_CLIENT);
if (IS_ERR(hdr)) {
-@@ -7044,13 +7044,13 @@ static int nl80211_register_beacons(stru
+@@ -7052,13 +7052,13 @@ static int nl80211_register_beacons(stru
/* First, check if already registered. */
spin_lock_bh(&rdev->beacon_registrations_lock);
list_for_each_entry(reg, &rdev->beacon_registrations, list) {
list_add(&nreg->list, &rdev->beacon_registrations);
spin_unlock_bh(&rdev->beacon_registrations_lock);
-@@ -9178,12 +9178,12 @@ static int nl80211_netlink_notify(struct
+@@ -9186,12 +9186,12 @@ static int nl80211_netlink_notify(struct
list_for_each_entry_rcu(rdev, &cfg80211_rdev_list, list) {
list_for_each_entry_rcu(wdev, &rdev->wdev_list, list)
obj-$(CONFIG_RFKILL_GPIO) += rfkill-gpio.o
--- a/net/rfkill/input.c
+++ b/net/rfkill/input.c
-@@ -232,7 +232,7 @@ static int rfkill_connect(struct input_h
+@@ -230,7 +230,7 @@ static int rfkill_connect(struct input_h
handle->dev = dev;
handle->handler = handler;
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -5950,7 +5950,9 @@ static int nl80211_wiphy_netns(struct sk
+@@ -5958,7 +5958,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
-@@ -168,6 +168,7 @@ int cfg80211_dev_rename(struct cfg80211_
+@@ -160,6 +160,7 @@ int cfg80211_dev_rename(struct cfg80211_
return 0;
}
int cfg80211_switch_netns(struct cfg80211_registered_device *rdev,
struct net *net)
{
-@@ -212,6 +213,7 @@ int cfg80211_switch_netns(struct cfg8021
+@@ -204,6 +205,7 @@ int cfg80211_switch_netns(struct cfg8021
return 0;
}
static void cfg80211_rfkill_poll(struct rfkill *rfkill, void *data)
{
-@@ -344,7 +346,9 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -336,7 +338,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),
-@@ -843,8 +847,10 @@ static int cfg80211_netdev_notifier_call
+@@ -835,8 +839,10 @@ static int cfg80211_netdev_notifier_call
wdev->identifier = ++rdev->wdev_id;
list_add_rcu(&wdev->list, &rdev->wdev_list);
rdev->devlist_generation++;
if (sysfs_create_link(&dev->dev.kobj, &rdev->wiphy.dev.kobj,
"phy80211")) {
-@@ -1035,6 +1041,7 @@ static struct notifier_block cfg80211_ne
+@@ -1027,6 +1033,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;
-@@ -1052,14 +1059,17 @@ static void __net_exit cfg80211_pernet_e
+@@ -1044,14 +1051,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)
-@@ -1094,8 +1104,10 @@ out_fail_nl80211:
+@@ -1086,8 +1096,10 @@ out_fail_nl80211:
out_fail_notifier:
wiphy_sysfs_exit();
out_fail_sysfs:
return err;
}
subsys_initcall(cfg80211_init);
-@@ -1107,7 +1119,9 @@ static void __exit cfg80211_exit(void)
+@@ -1099,7 +1111,9 @@ static void __exit cfg80211_exit(void)
unregister_netdevice_notifier(&cfg80211_netdev_notifier);
wiphy_sysfs_exit();
regulatory_exit();
--- a/drivers/net/wireless/p54/p54usb.c
+++ b/drivers/net/wireless/p54/p54usb.c
-@@ -1139,7 +1139,9 @@ static struct usb_driver p54u_driver = {
+@@ -1143,7 +1143,9 @@ static struct usb_driver p54u_driver = {
.resume = p54u_resume,
.reset_resume = p54u_resume,
#endif /* CONFIG_PM */
ath9k-$(CONFIG_ATH9K_DEBUGFS) += debug.o
--- a/drivers/net/wireless/ath/ath9k/init.c
+++ b/drivers/net/wireless/ath/ath9k/init.c
-@@ -817,7 +817,7 @@ void ath9k_set_hw_capab(struct ath_softc
+@@ -804,7 +804,7 @@ void ath9k_set_hw_capab(struct ath_softc
sc->ant_rx = hw->wiphy->available_antennas_rx;
sc->ant_tx = hw->wiphy->available_antennas_tx;
u8 addr_mask[ETH_ALEN];
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -290,6 +290,17 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -282,6 +282,17 @@ struct wiphy *wiphy_new(const struct cfg
struct cfg80211_registered_device *rdev;
int alloc_size;
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
-@@ -4212,8 +4212,13 @@ redo:
+@@ -4240,8 +4240,13 @@ redo:
if (b43_bus_host_is_sdio(dev->dev)) {
b43_sdio_free_irq(dev);
} else {
}
mutex_lock(&wl->mutex);
dev = wl->current_dev;
-@@ -4259,9 +4264,17 @@ static int b43_wireless_core_start(struc
+@@ -4287,9 +4292,17 @@ static int b43_wireless_core_start(struc
goto out;
}
} else {
if (err) {
b43err(dev->wl, "Cannot request IRQ-%d\n",
dev->dev->irq);
-@@ -5084,6 +5097,10 @@ static int b43_setup_bands(struct b43_wl
+@@ -5112,6 +5125,10 @@ static int b43_setup_bands(struct b43_wl
static void b43_wireless_core_detach(struct b43_wldev *dev)
{
b43_release_firmware(dev);
--- a/drivers/net/wireless/b43/b43.h
+++ b/drivers/net/wireless/b43/b43.h
-@@ -859,6 +859,9 @@ struct b43_wldev {
+@@ -864,6 +864,9 @@ struct b43_wldev {
unsigned int tx_count;
unsigned int rx_count;
#endif
/* Data structure for the WLAN parts (802.11 cores) of the b43 chip. */
--- a/drivers/net/wireless/ti/wlcore/main.c
+++ b/drivers/net/wireless/ti/wlcore/main.c
-@@ -5568,14 +5568,25 @@ static void wlcore_nvs_cb(const struct f
+@@ -5570,14 +5570,25 @@ static void wlcore_nvs_cb(const struct f
wl->set_power = pdata->set_power;
wl->if_ops = pdata->ops;
if (ret < 0) {
wl1271_error("request_irq() failed: %d", ret);
goto out_free_nvs;
-@@ -5650,7 +5661,11 @@ out_unreg:
+@@ -5652,7 +5663,11 @@ out_unreg:
wl1271_unregister_hw(wl);
out_irq:
out_free_nvs:
kfree(wl->nvs);
-@@ -5696,7 +5711,12 @@ int wlcore_remove(struct platform_device
+@@ -5698,7 +5713,12 @@ int wlcore_remove(struct platform_device
disable_irq_wake(wl->irq);
}
wl1271_unregister_hw(wl);
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -345,10 +345,6 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -337,10 +337,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;
-@@ -871,6 +867,15 @@ static int cfg80211_netdev_notifier_call
+@@ -863,6 +859,15 @@ static int cfg80211_netdev_notifier_call
wdev->sme_state = CFG80211_SME_IDLE;
mutex_unlock(&rdev->devlist_mtx);
#ifdef CONFIG_CFG80211_WEXT
int __init bcma_host_pci_init(void)
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2690,6 +2690,9 @@ static const struct pci_error_handlers a
+@@ -2689,6 +2689,9 @@ static const struct pci_error_handlers a
.resume = atl1c_io_resume,
};
static SIMPLE_DEV_PM_OPS(atl1c_pm_ops, atl1c_suspend, atl1c_resume);
static struct pci_driver atl1c_driver = {
-@@ -2699,7 +2702,12 @@ static struct pci_driver atl1c_driver =
+@@ -2698,7 +2701,12 @@ static struct pci_driver atl1c_driver =
.remove = atl1c_remove,
.shutdown = atl1c_shutdown,
.err_handler = &atl1c_err_handler,
module_pci_driver(ath5k_pci_driver);
--- a/drivers/net/wireless/ath/ath9k/pci.c
+++ b/drivers/net/wireless/ath/ath9k/pci.c
-@@ -333,6 +333,9 @@ static int ath_pci_resume(struct device
+@@ -310,6 +310,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)
-@@ -351,7 +354,12 @@ static struct pci_driver ath_pci_driver
+@@ -328,7 +331,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/iwlegacy/3945-mac.c
+++ b/drivers/net/wireless/iwlegacy/3945-mac.c
-@@ -3885,7 +3885,12 @@ static struct pci_driver il3945_driver =
+@@ -3889,7 +3889,12 @@ static struct pci_driver il3945_driver =
.id_table = il3945_hw_card_ids,
.probe = il3945_pci_probe,
.remove = il3945_pci_remove,
static int __init
--- a/drivers/net/wireless/iwlegacy/4965-mac.c
+++ b/drivers/net/wireless/iwlegacy/4965-mac.c
-@@ -6773,7 +6773,12 @@ static struct pci_driver il4965_driver =
+@@ -6776,7 +6776,12 @@ static struct pci_driver il4965_driver =
.id_table = il4965_hw_card_ids,
.probe = il4965_pci_probe,
.remove = il4965_pci_remove,
static int __init
--- a/drivers/net/wireless/iwlegacy/common.c
+++ b/drivers/net/wireless/iwlegacy/common.c
-@@ -4906,8 +4906,17 @@ il_pci_resume(struct device *device)
+@@ -4942,8 +4942,17 @@ il_pci_resume(struct device *device)
return 0;
}
--- a/drivers/net/wireless/iwlegacy/common.h
+++ b/drivers/net/wireless/iwlegacy/common.h
-@@ -1835,7 +1835,14 @@ __le32 il_add_beacon_time(struct il_priv
+@@ -1836,7 +1836,14 @@ __le32 il_add_beacon_time(struct il_priv
u32 beacon_interval);
#ifdef CONFIG_PM
module_pci_driver(rtl8723ae_driver);
--- a/drivers/net/wireless/p54/p54pci.c
+++ b/drivers/net/wireless/p54/p54pci.c
-@@ -681,6 +681,9 @@ static int p54p_resume(struct device *de
+@@ -684,6 +684,9 @@ static int p54p_resume(struct device *de
return pci_set_power_state(pdev, PCI_D0);
}
static SIMPLE_DEV_PM_OPS(p54pci_pm_ops, p54p_suspend, p54p_resume);
#define P54P_PM_OPS (&p54pci_pm_ops)
-@@ -693,7 +696,12 @@ static struct pci_driver p54p_driver = {
+@@ -696,7 +699,12 @@ static struct pci_driver p54p_driver = {
.id_table = p54p_table,
.probe = p54p_probe,
.remove = p54p_remove,
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -803,9 +803,11 @@ void cfg80211_unregister_wdev(struct wir
+@@ -795,9 +795,11 @@ void cfg80211_unregister_wdev(struct wir
}
EXPORT_SYMBOL(cfg80211_unregister_wdev);
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -3244,7 +3244,12 @@ void ieee80211_rx(struct ieee80211_hw *h
+@@ -3273,7 +3273,12 @@ void ieee80211_rx(struct ieee80211_hw *h
drop:
kfree_skb(skb);
}
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1658,6 +1658,7 @@ void ieee80211_sdata_stop(struct ieee802
+@@ -1672,6 +1672,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;
-@@ -1685,6 +1686,22 @@ void ieee80211_remove_interfaces(struct
+@@ -1699,6 +1700,22 @@ void ieee80211_remove_interfaces(struct
kfree(sdata);
}
}
}
--- a/drivers/net/ethernet/atheros/atlx/atlx.c
+++ b/drivers/net/ethernet/atheros/atlx/atlx.c
-@@ -150,7 +150,11 @@ static void atlx_set_multi(struct net_de
+@@ -149,7 +149,11 @@ static void atlx_set_multi(struct net_de
/* compute mc addresses' hash value ,and put it into hash table */
netdev_for_each_mc_addr(ha, netdev) {
return ((u64)(mfilt[1]) << 32) | mfilt[0];
--- a/drivers/net/wireless/ath/carl9170/main.c
+++ b/drivers/net/wireless/ath/carl9170/main.c
-@@ -898,17 +898,35 @@ out:
+@@ -967,17 +967,35 @@ out:
return err;
}
p += sprintf(p, "num_tx_bytes = %lu\n", priv->stats.tx_bytes);
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
-@@ -2574,15 +2574,21 @@ struct mwl8k_cmd_mac_multicast_adr {
+@@ -2612,15 +2612,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;
-@@ -2603,13 +2609,27 @@ __mwl8k_cmd_mac_multicast_adr(struct iee
+@@ -2641,13 +2647,27 @@ __mwl8k_cmd_mac_multicast_adr(struct iee
if (allmulti) {
cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST);
} else if (mc_count) {
}
}
-@@ -4836,7 +4856,11 @@ mwl8k_bss_info_changed(struct ieee80211_
+@@ -4901,7 +4921,11 @@ mwl8k_bss_info_changed(struct ieee80211_
}
static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw,
{
struct mwl8k_cmd_pkt *cmd;
-@@ -4847,7 +4871,11 @@ static u64 mwl8k_prepare_multicast(struc
+@@ -4912,7 +4936,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;
}
-@@ -4969,7 +4997,11 @@ static void mwl8k_configure_filter(struc
+@@ -5034,7 +5062,11 @@ static void mwl8k_configure_filter(struc
*/
if (*total_flags & FIF_ALLMULTI) {
kfree(cmd);
return hash.low | ((u64)hash.high << 32);
--- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_linux.c
-@@ -95,7 +95,11 @@ static void _brcmf_set_multicast_list(st
+@@ -93,7 +93,11 @@ static void _brcmf_set_multicast_list(st
netdev_for_each_mc_addr(ha, ndev) {
if (!cnt)
break;
}
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -2504,7 +2504,11 @@ struct ieee80211_ops {
+@@ -2516,7 +2516,11 @@ struct ieee80211_ops {
void (*stop_ap)(struct ieee80211_hw *hw, struct ieee80211_vif *vif);
u64 (*prepare_multicast)(struct ieee80211_hw *hw,
}
--- a/net/mac80211/driver-ops.h
+++ b/net/mac80211/driver-ops.h
-@@ -216,14 +216,28 @@ static inline void drv_bss_info_changed(
+@@ -224,14 +224,28 @@ static inline void drv_bss_info_changed(
}
static inline u64 drv_prepare_multicast(struct ieee80211_local *local,
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -927,7 +927,12 @@ struct ieee80211_local {
+@@ -939,7 +939,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
+@@ -804,8 +804,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);
-@@ -965,7 +970,12 @@ static void ieee80211_set_multicast_list
+@@ -960,7 +965,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 */
-@@ -645,9 +649,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
+@@ -581,9 +585,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
-@@ -73,7 +73,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;
-@@ -82,7 +82,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);
-@@ -548,7 +548,7 @@ static void brcmf_ops_sdio_remove(struct
+@@ -546,7 +546,7 @@ static void brcmf_ops_sdio_remove(struct
brcmf_dbg(TRACE, "Exit\n");
}
static int brcmf_sdio_suspend(struct device *dev)
{
mmc_pm_flag_t sdio_flags;
-@@ -598,7 +598,7 @@ static struct sdio_driver brcmf_sdmmc_dr
+@@ -596,7 +596,7 @@ static struct sdio_driver brcmf_sdmmc_dr
.remove = brcmf_ops_sdio_remove,
.name = "brcmfmac",
.id_table = brcmf_sdmmc_ids,
--- a/net/wireless/sysfs.c
+++ b/net/wireless/sysfs.c
-@@ -122,12 +122,14 @@ static int wiphy_resume(struct device *d
+@@ -120,12 +120,14 @@ static int wiphy_resume(struct device *d
return ret;
}
struct class ieee80211_class = {
.name = "ieee80211",
-@@ -139,8 +141,10 @@ struct class ieee80211_class = {
- #endif
+@@ -135,8 +137,10 @@ struct class ieee80211_class = {
+ .dev_uevent = wiphy_uevent,
.suspend = wiphy_suspend,
.resume = wiphy_resume,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,35))
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
-@@ -1197,6 +1197,10 @@ static void __exit ieee80211_exit(void)
+@@ -1133,6 +1133,10 @@ static void __exit ieee80211_exit(void)
rc80211_minstrel_ht_exit();
rc80211_minstrel_exit();
void atl1c_set_ethtool_ops(struct net_device *netdev)
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -492,6 +492,7 @@ static void atl1c_set_rxbufsize(struct a
+@@ -491,6 +491,7 @@ static void atl1c_set_rxbufsize(struct a
roundup(mtu + ETH_HLEN + ETH_FCS_LEN + VLAN_HLEN, 8) : AT_RX_BUF_SIZE;
}
static netdev_features_t atl1c_fix_features(struct net_device *netdev,
netdev_features_t features)
{
-@@ -520,6 +521,7 @@ static int atl1c_set_features(struct net
+@@ -519,6 +520,7 @@ static int atl1c_set_features(struct net
return 0;
}
/**
* atl1c_change_mtu - Change the Maximum Transfer Unit
-@@ -552,8 +554,19 @@ static int atl1c_change_mtu(struct net_d
+@@ -551,8 +553,19 @@ static int atl1c_change_mtu(struct net_d
netdev->mtu = new_mtu;
adapter->hw.max_frame_size = new_mtu;
atl1c_set_rxbufsize(adapter, netdev);
atl1c_up(adapter);
clear_bit(__AT_RESETTING, &adapter->flags);
}
-@@ -2405,8 +2418,10 @@ static const struct net_device_ops atl1c
+@@ -2404,8 +2417,10 @@ static const struct net_device_ops atl1c
.ndo_set_mac_address = atl1c_set_mac_addr,
.ndo_set_rx_mode = atl1c_set_multi,
.ndo_change_mtu = atl1c_change_mtu,
.ndo_do_ioctl = atl1c_ioctl,
.ndo_tx_timeout = atl1c_tx_timeout,
.ndo_get_stats = atl1c_get_stats,
-@@ -2425,6 +2440,7 @@ static int atl1c_init_netdev(struct net_
+@@ -2424,6 +2439,7 @@ static int atl1c_init_netdev(struct net_
atl1c_set_ethtool_ops(netdev);
/* TODO: add when ready */
netdev->hw_features = NETIF_F_SG |
NETIF_F_HW_CSUM |
NETIF_F_HW_VLAN_RX |
-@@ -2432,6 +2448,14 @@ static int atl1c_init_netdev(struct net_
+@@ -2431,6 +2447,14 @@ static int atl1c_init_netdev(struct net_
NETIF_F_TSO6;
netdev->features = netdev->hw_features |
NETIF_F_HW_VLAN_TX;
static void atl2_set_ethtool_ops(struct net_device *netdev)
--- a/drivers/net/ethernet/atheros/atlx/atlx.c
+++ b/drivers/net/ethernet/atheros/atlx/atlx.c
-@@ -255,6 +255,7 @@ static void atlx_restore_vlan(struct atl
+@@ -254,6 +254,7 @@ static void atlx_restore_vlan(struct atl
atlx_vlan_mode(adapter->netdev, adapter->netdev->features);
}
static netdev_features_t atlx_fix_features(struct net_device *netdev,
netdev_features_t features)
{
-@@ -280,5 +281,6 @@ static int atlx_set_features(struct net_
+@@ -279,5 +280,6 @@ static int atlx_set_features(struct net_
return 0;
}
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -4919,7 +4919,9 @@ static int nl80211_dump_scan(struct sk_b
+@@ -4927,7 +4927,9 @@ static int nl80211_dump_scan(struct sk_b
spin_lock_bh(&rdev->bss_lock);
cfg80211_bss_expire(rdev);
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
-@@ -3424,11 +3424,11 @@ static void b43_op_tx(struct ieee80211_h
+@@ -3452,11 +3452,11 @@ static void b43_op_tx(struct ieee80211_h
}
B43_WARN_ON(skb_shinfo(skb)->nr_frags);
--- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
+++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c
-@@ -2568,7 +2570,9 @@ static int atl1c_probe(struct pci_dev *p
+@@ -2567,7 +2567,9 @@ static int atl1c_probe(struct pci_dev *p
}
if (atl1c_read_mac_addr(&adapter->hw)) {
/* got a random MAC address, set NET_ADDR_RANDOM to netdev */
module_usb_driver(carl9170_driver);
--- a/drivers/net/wireless/brcm80211/brcmfmac/usb.c
+++ b/drivers/net/wireless/brcm80211/brcmfmac/usb.c
-@@ -1507,7 +1507,9 @@ static struct usb_driver brcmf_usbdrvr =
+@@ -1505,7 +1505,9 @@ static struct usb_driver brcmf_usbdrvr =
.resume = brcmf_usb_resume,
.reset_resume = brcmf_usb_reset_resume,
.supports_autosuspend = 1,
module_usb_driver(orinoco_driver);
--- a/drivers/net/wireless/p54/p54usb.c
+++ b/drivers/net/wireless/p54/p54usb.c
-@@ -1142,7 +1142,9 @@ static struct usb_driver p54u_driver = {
+@@ -1146,7 +1146,9 @@ static struct usb_driver p54u_driver = {
#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,27))
.soft_unbind = 1,
#endif
module_usb_driver(rt2500usb_driver);
--- a/drivers/net/wireless/rt2x00/rt2800usb.c
+++ b/drivers/net/wireless/rt2x00/rt2800usb.c
-@@ -1285,7 +1285,9 @@ static struct usb_driver rt2800usb_drive
+@@ -1289,7 +1289,9 @@ static struct usb_driver rt2800usb_drive
.suspend = rt2x00usb_suspend,
.resume = rt2x00usb_resume,
.reset_resume = rt2x00usb_resume,