retval = rndis_set_oid(usbdev, OID_GEN_CURRENT_PACKET_FILTER, &tmp,
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -699,7 +699,12 @@ static const struct net_device_ops ieee8
+@@ -707,7 +707,12 @@ static const struct net_device_ops ieee8
static void ieee80211_if_setup(struct net_device *dev)
{
ether_setup(dev);
dev->destructor = free_netdev;
}
-@@ -844,7 +849,7 @@ static void ieee80211_setup_sdata(struct
+@@ -852,7 +857,7 @@ static void ieee80211_setup_sdata(struct
/* and set some type-dependent values */
sdata->vif.type = type;
sdata->wdev.iftype = type;
/* only monitor differs */
-@@ -870,7 +875,7 @@ static void ieee80211_setup_sdata(struct
+@@ -878,7 +883,7 @@ static void ieee80211_setup_sdata(struct
break;
case NL80211_IFTYPE_MONITOR:
sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
sdata->u.mntr_flags = MONITOR_FLAG_CONTROL |
MONITOR_FLAG_OTHER_BSS;
break;
-@@ -1051,6 +1056,8 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1059,6 +1064,8 @@ 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 */
-@@ -1059,6 +1066,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1067,6 +1074,7 @@ int ieee80211_if_add(struct ieee80211_lo
- ETH_HLEN /* ethernet hard_header_len */
+ IEEE80211_ENCRYPT_HEADROOM;
ndev->needed_tailroom = IEEE80211_ENCRYPT_TAILROOM;
ret = dev_alloc_name(ndev, ndev->name);
if (ret < 0)
-@@ -1107,6 +1115,10 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1115,6 +1123,10 @@ int ieee80211_if_add(struct ieee80211_lo
if (ret)
goto fail;
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -6126,7 +6126,7 @@ static struct net_device *ipw2100_alloc_
+@@ -6118,7 +6118,7 @@ static struct net_device *ipw2100_alloc_
priv->ieee->perfect_rssi = -20;
priv->ieee->worst_rssi = -85;
#define LBS_DEB_LEAVE 0x00000002
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1080,7 +1080,7 @@ static const struct net_device_ops hwsim
+@@ -1082,7 +1082,7 @@ static const struct net_device_ops hwsim
static void hwsim_mon_setup(struct net_device *dev)
{
};
/* internal helper: get rdev and dev */
-@@ -4376,7 +4378,9 @@ static int nl80211_wiphy_netns(struct sk
+@@ -4441,7 +4443,9 @@ static int nl80211_wiphy_netns(struct sk
err = cfg80211_switch_netns(rdev, net);
out_put_net:
int cfg80211_switch_netns(struct cfg80211_registered_device *rdev,
struct net *net)
{
-@@ -259,6 +260,7 @@ int cfg80211_switch_netns(struct cfg8021
+@@ -264,6 +265,7 @@ int cfg80211_switch_netns(struct cfg8021
- return err;
+ return 0;
}
+#endif
static void cfg80211_rfkill_poll(struct rfkill *rfkill, void *data)
{
-@@ -371,7 +373,9 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -376,7 +378,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),
-@@ -686,8 +690,10 @@ static int cfg80211_netdev_notifier_call
+@@ -691,8 +695,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")) {
-@@ -831,6 +837,7 @@ static struct notifier_block cfg80211_ne
+@@ -836,6 +842,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;
-@@ -848,14 +855,17 @@ static void __net_exit cfg80211_pernet_e
+@@ -853,14 +860,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)
-@@ -890,8 +900,10 @@ out_fail_nl80211:
+@@ -895,8 +905,10 @@ out_fail_nl80211:
out_fail_notifier:
wiphy_sysfs_exit();
out_fail_sysfs:
return err;
}
subsys_initcall(cfg80211_init);
-@@ -903,7 +915,9 @@ static void __exit cfg80211_exit(void)
+@@ -908,7 +920,9 @@ static void __exit cfg80211_exit(void)
unregister_netdevice_notifier(&cfg80211_netdev_notifier);
wiphy_sysfs_exit();
regulatory_exit();
static int __init p54u_init(void)
--- a/drivers/net/wireless/ath/ath9k/hif_usb.c
+++ b/drivers/net/wireless/ath/ath9k/hif_usb.c
-@@ -1039,7 +1039,9 @@ static struct usb_driver ath9k_hif_usb_d
+@@ -1040,7 +1040,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/iwlwifi/Makefile
+++ b/drivers/net/wireless/iwlwifi/Makefile
-@@ -14,7 +14,7 @@ iwlagn-objs += iwl-agn-ucode.o iwl-agn-
- iwlagn-objs += iwl-agn-lib.o iwl-agn-rx.o iwl-agn-calib.o
+@@ -15,7 +15,7 @@ iwlagn-objs += iwl-agn-lib.o iwl-agn-rx
+ iwlagn-objs += iwl-agn-tt.o
iwlagn-$(CONFIG_IWLWIFI_DEBUGFS) += iwl-agn-debugfs.o
-iwlagn-$(CONFIG_IWL4965) += iwl-4965.o
iwlagn-$(CONFIG_IWL5000) += iwl-1000.o
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -4205,10 +4205,10 @@ static void __devexit iwl_pci_remove(str
+@@ -4339,10 +4339,10 @@ static void __devexit iwl_pci_remove(str
/* Hardware specific file defines the PCI IDs table for that hardware module */
static DEFINE_PCI_DEVICE_TABLE(iwl_hw_card_ids) = {
--- a/drivers/net/wireless/b43/main.c
+++ b/drivers/net/wireless/b43/main.c
-@@ -3917,8 +3917,13 @@ redo:
+@@ -3922,8 +3922,13 @@ redo:
if (dev->dev->bus->bustype == SSB_BUSTYPE_SDIO) {
b43_sdio_free_irq(dev);
} else {
}
mutex_lock(&wl->mutex);
dev = wl->current_dev;
-@@ -3958,9 +3963,17 @@ static int b43_wireless_core_start(struc
+@@ -3963,9 +3968,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;
-@@ -4682,6 +4695,10 @@ static int b43_setup_bands(struct b43_wl
+@@ -4694,6 +4707,10 @@ static int b43_setup_bands(struct b43_wl
static void b43_wireless_core_detach(struct b43_wldev *dev)
{
/* Data structure for the WLAN parts (802.11 cores) of the b43 chip. */
--- a/drivers/net/wireless/rt2x00/rt2x00.h
+++ b/drivers/net/wireless/rt2x00/rt2x00.h
-@@ -882,6 +882,9 @@ struct rt2x00_dev {
+@@ -885,6 +885,9 @@ struct rt2x00_dev {
* and interrupt thread routine.
*/
u32 irqvalue[2];
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -361,10 +361,6 @@ struct wiphy *wiphy_new(const struct cfg
+@@ -366,10 +366,6 @@ struct wiphy *wiphy_new(const struct cfg
INIT_LIST_HEAD(&rdev->bss_list);
INIT_WORK(&rdev->scan_done_wk, __cfg80211_scan_done);
device_initialize(&rdev->wiphy.dev);
rdev->wiphy.dev.class = &ieee80211_class;
rdev->wiphy.dev.platform_data = rdev;
-@@ -704,6 +700,8 @@ static int cfg80211_netdev_notifier_call
+@@ -709,6 +705,8 @@ static int cfg80211_netdev_notifier_call
wdev->sme_state = CFG80211_SME_IDLE;
mutex_unlock(&rdev->devlist_mtx);
#ifdef CONFIG_CFG80211_WEXT
--- a/drivers/net/wireless/ipw2x00/ipw2100.c
+++ b/drivers/net/wireless/ipw2x00/ipw2100.c
-@@ -6129,7 +6129,11 @@ static struct net_device *ipw2100_alloc_
+@@ -6121,7 +6121,11 @@ static struct net_device *ipw2100_alloc_
netdev_attach_ops(dev, &ipw2100_netdev_ops);
dev->ethtool_ops = &ipw2100_ethtool_ops;
dev->wireless_handlers = &ipw2100_wx_handler_def;
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -647,9 +647,11 @@ static void wdev_cleanup_work(struct wor
+@@ -652,9 +652,11 @@ static void wdev_cleanup_work(struct wor
dev_put(wdev->netdev);
}
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -2666,7 +2666,12 @@ void ieee80211_rx(struct ieee80211_hw *h
+@@ -2823,7 +2823,12 @@ void ieee80211_rx(struct ieee80211_hw *h
drop:
kfree_skb(skb);
}
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1155,6 +1155,7 @@ void ieee80211_if_remove(struct ieee8021
+@@ -1163,6 +1163,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;
-@@ -1171,6 +1172,22 @@ void ieee80211_remove_interfaces(struct
+@@ -1179,6 +1180,22 @@ void ieee80211_remove_interfaces(struct
mutex_unlock(&local->iflist_mtx);
unregister_netdevice_many(&unreg_list);
}
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -1597,6 +1597,10 @@ static void ieee80211_xmit(struct ieee80
+@@ -1599,6 +1599,10 @@ static void ieee80211_xmit(struct ieee80
return;
}
ieee80211_set_qos_hdr(local, skb);
ieee80211_tx(sdata, skb, false);
rcu_read_unlock();
-@@ -2068,8 +2072,15 @@ void ieee80211_tx_pending(unsigned long
+@@ -2070,8 +2074,15 @@ void ieee80211_tx_pending(unsigned long
if (skb_queue_empty(&local->pending[i]))
list_for_each_entry_rcu(sdata, &local->interfaces, list)
res = pcmcia_request_configuration(dev, &dev->conf);
--- a/drivers/net/wireless/libertas/if_cs.c
+++ b/drivers/net/wireless/libertas/if_cs.c
-@@ -776,7 +776,11 @@ static void if_cs_release(struct pcmcia_
+@@ -774,7 +774,11 @@ static void if_cs_release(struct pcmcia_
lbs_deb_enter(LBS_DEB_CS);
pcmcia_disable_device(p_dev);
if (card->iobase)
ioport_unmap(card->iobase);
-@@ -801,9 +805,15 @@ static int if_cs_ioprobe(struct pcmcia_d
+@@ -799,9 +803,15 @@ static int if_cs_ioprobe(struct pcmcia_d
unsigned int vcc,
void *priv_data)
{
/* Do we need to allocate an interrupt? */
p_dev->conf.Attributes |= CONF_ENABLE_IRQ;
-@@ -815,7 +825,11 @@ static int if_cs_ioprobe(struct pcmcia_d
+@@ -813,7 +823,11 @@ static int if_cs_ioprobe(struct pcmcia_d
}
/* This reserves IO space but doesn't actually enable it */
p_dev->conf.Attributes = 0;
p_dev->conf.IntType = INT_MEMORY_AND_IO;
-@@ -849,12 +868,26 @@ static int if_cs_probe(struct pcmcia_dev
+@@ -848,12 +867,26 @@ static int if_cs_probe(struct pcmcia_dev
* a handler to the interrupt, unless the 'Handler' member of
* the irq structure is initialized.
*/
if (!card->iobase) {
lbs_pr_err("error in ioport_map\n");
ret = -EIO;
-@@ -873,7 +906,17 @@ static int if_cs_probe(struct pcmcia_dev
+@@ -872,7 +905,17 @@ static int if_cs_probe(struct pcmcia_dev
}
/* Finally, report what we've done */
/*
* Most of the libertas cards can do unaligned register access, but some
-@@ -929,7 +972,11 @@ static int if_cs_probe(struct pcmcia_dev
+@@ -941,7 +984,11 @@ static int if_cs_probe(struct pcmcia_dev
priv->fw_ready = 1;
/* Now actually get the IRQ */
return mc_filter[0] | ((u64)(mc_filter[1]) << 32);
--- a/drivers/net/wireless/ath/ar9170/main.c
+++ b/drivers/net/wireless/ath/ar9170/main.c
-@@ -1608,17 +1608,35 @@ out:
+@@ -1607,17 +1607,35 @@ out:
return err;
}
static void ath5k_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *new_flags,
-@@ -3169,20 +3173,42 @@ unlock:
+@@ -3163,20 +3167,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));
-@@ -3191,6 +3217,9 @@ static u64 ath5k_prepare_multicast(struc
+@@ -3185,6 +3211,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]); */
--- a/drivers/net/wireless/rtl818x/rtl8180_dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c
-@@ -812,10 +812,19 @@ static void rtl8180_bss_info_changed(str
+@@ -822,10 +822,19 @@ static void rtl8180_bss_info_changed(str
}
}
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
-@@ -1193,9 +1193,17 @@ static void rtl8187_bss_info_changed(str
+@@ -1192,9 +1192,17 @@ static void rtl8187_bss_info_changed(str
}
static u64 rtl8187_prepare_multicast(struct ieee80211_hw *dev,
return hash.low | ((u64)hash.high << 32);
--- a/include/net/mac80211.h
+++ b/include/net/mac80211.h
-@@ -1702,7 +1702,11 @@ struct ieee80211_ops {
+@@ -1701,7 +1701,11 @@ struct ieee80211_ops {
struct ieee80211_bss_conf *info,
u32 changed);
u64 (*prepare_multicast)(struct ieee80211_hw *hw,
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
-@@ -666,7 +666,12 @@ struct ieee80211_local {
+@@ -672,7 +672,12 @@ struct ieee80211_local {
struct work_struct recalc_smps;
/* aggregated multicast list */
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -392,7 +392,12 @@ static int ieee80211_stop(struct net_dev
+@@ -396,7 +396,12 @@ static int ieee80211_stop(struct net_dev
netif_addr_lock_bh(dev);
spin_lock_bh(&local->filter_lock);
spin_unlock_bh(&local->filter_lock);
netif_addr_unlock_bh(dev);
-@@ -572,7 +577,12 @@ static void ieee80211_set_multicast_list
+@@ -580,7 +585,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 */
-@@ -451,9 +455,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
+@@ -515,9 +519,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
local->uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN;
INIT_LIST_HEAD(&local->interfaces);
+#endif
mutex_init(&local->iflist_mtx);
- mutex_init(&local->scan_mtx);
+ mutex_init(&local->mtx);
--- a/drivers/net/wireless/libertas/if_sdio.c
+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -1025,6 +1025,7 @@ static int if_sdio_probe(struct sdio_fun
+@@ -982,6 +982,7 @@ static int if_sdio_probe(struct sdio_fun
if (ret)
goto disable;
/* For 1-bit transfers to the 8686 model, we need to enable the
* interrupt flag in the CCCR register. Set the MMC_QUIRK_LENIENT_FN0
* bit to allow access to non-vendor registers. */
-@@ -1043,6 +1044,7 @@ static int if_sdio_probe(struct sdio_fun
+@@ -1000,6 +1001,7 @@ static int if_sdio_probe(struct sdio_fun
if (ret)
goto release_int;
}
/* We have to signal any supplicant if we are disassociating */
if (associated)
-@@ -6669,8 +6686,16 @@ static int __init ipw2100_init(void)
+@@ -6661,8 +6678,16 @@ static int __init ipw2100_init(void)
printk(KERN_INFO DRV_NAME ": %s, %s\n", DRV_DESCRIPTION, DRV_VERSION);
printk(KERN_INFO DRV_NAME ": %s\n", DRV_COPYRIGHT);
ret = pci_register_driver(&ipw2100_pci_driver);
if (ret)
-@@ -6697,7 +6722,13 @@ static void __exit ipw2100_exit(void)
+@@ -6689,7 +6714,13 @@ static void __exit ipw2100_exit(void)
&driver_attr_debug_level);
#endif
pci_unregister_driver(&ipw2100_pci_driver);
found->vif.bss_conf.beacon_int);
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
-@@ -500,7 +500,11 @@ static int ieee80211_scan_state_decision
+@@ -502,7 +502,11 @@ static int ieee80211_scan_state_decision
bad_latency = time_after(jiffies +
ieee80211_scan_get_channel_time(next_chan),
local->leave_oper_channel_time +
--- a/drivers/net/wireless/libertas/if_sdio.c
+++ b/drivers/net/wireless/libertas/if_sdio.c
-@@ -1212,6 +1212,7 @@ static void if_sdio_remove(struct sdio_f
+@@ -1161,6 +1161,7 @@ static void if_sdio_remove(struct sdio_f
lbs_deb_leave(LBS_DEB_SDIO);
}
static int if_sdio_suspend(struct device *dev)
{
struct sdio_func *func = dev_to_sdio_func(dev);
-@@ -1266,15 +1267,18 @@ static const struct dev_pm_ops if_sdio_p
+@@ -1215,15 +1216,18 @@ static const struct dev_pm_ops if_sdio_p
.suspend = if_sdio_suspend,
.resume = if_sdio_resume,
};
--- a/net/wireless/nl80211.c
+++ b/net/wireless/nl80211.c
-@@ -1140,7 +1140,7 @@ static int nl80211_valid_4addr(struct cf
+@@ -1190,7 +1190,7 @@ static int nl80211_valid_4addr(struct cf
enum nl80211_iftype iftype)
{
if (!use_4addr) {
+#include <linux/compat-2.6.h>
- /*
+ /**