if (unlikely(retval < 0)) {
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
-@@ -1331,7 +1331,7 @@ usbnet_probe (struct usb_interface *udev
+@@ -1322,7 +1322,7 @@ usbnet_probe (struct usb_interface *udev
net->features |= NETIF_F_HIGHDMA;
#endif
retval = rndis_set_oid(usbdev, OID_GEN_CURRENT_PACKET_FILTER, &tmp,
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -697,7 +697,12 @@ static const struct net_device_ops ieee8
+@@ -699,7 +699,12 @@ static const struct net_device_ops ieee8
static void ieee80211_if_setup(struct net_device *dev)
{
ether_setup(dev);
dev->destructor = free_netdev;
}
-@@ -842,7 +847,7 @@ static void ieee80211_setup_sdata(struct
+@@ -844,7 +849,7 @@ static void ieee80211_setup_sdata(struct
/* and set some type-dependent values */
sdata->vif.type = type;
sdata->wdev.iftype = type;
/* only monitor differs */
-@@ -868,7 +873,7 @@ static void ieee80211_setup_sdata(struct
+@@ -870,7 +875,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;
-@@ -1049,6 +1054,8 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1051,6 +1056,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 */
-@@ -1057,6 +1064,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1059,6 +1066,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)
-@@ -1105,6 +1113,10 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -1107,6 +1115,10 @@ int ieee80211_if_add(struct ieee80211_lo
if (ret)
goto fail;
wdev->netdev = ndev;
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
-@@ -836,7 +836,7 @@ struct lbs_private *lbs_add_card(void *c
+@@ -823,7 +823,7 @@ struct lbs_private *lbs_add_card(void *c
wdev->netdev = dev;
priv->dev = dev;
#define LBS_DEB_LEAVE 0x00000002
--- a/drivers/net/wireless/mac80211_hwsim.c
+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -1088,7 +1088,7 @@ static const struct net_device_ops hwsim
+@@ -1080,7 +1080,7 @@ static const struct net_device_ops hwsim
static void hwsim_mon_setup(struct net_device *dev)
{
priv->keys[index].key = kzalloc(key_len, GFP_ATOMIC);
--- a/net/wireless/scan.c
+++ b/net/wireless/scan.c
-@@ -427,9 +427,14 @@ cfg80211_bss_update(struct cfg80211_regi
+@@ -432,9 +432,14 @@ cfg80211_bss_update(struct cfg80211_regi
size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
size_t ielen = res->pub.len_proberesp_ies;
memcpy(found->pub.proberesp_ies,
res->pub.proberesp_ies, ielen);
found->pub.len_proberesp_ies = ielen;
-@@ -460,9 +465,14 @@ cfg80211_bss_update(struct cfg80211_regi
+@@ -465,9 +470,14 @@ cfg80211_bss_update(struct cfg80211_regi
size_t used = dev->wiphy.bss_priv_size + sizeof(*res);
size_t ielen = res->pub.len_beacon_ies;
#include <net/cfg80211.h>
--- a/drivers/net/wireless/ath/ath9k/hw.c
+++ b/drivers/net/wireless/ath/ath9k/hw.c
-@@ -2193,7 +2193,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw
+@@ -2194,7 +2194,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw
pCap->hw_caps |= ATH9K_HW_CAP_ENHANCEDPM;
};
/* internal helper: get rdev and dev */
-@@ -4374,7 +4376,9 @@ static int nl80211_wiphy_netns(struct sk
+@@ -4376,7 +4378,9 @@ static int nl80211_wiphy_netns(struct sk
err = cfg80211_switch_netns(rdev, net);
out_put_net:
rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
rdev->rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
-@@ -684,8 +688,10 @@ static int cfg80211_netdev_notifier_call
+@@ -686,8 +690,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")) {
-@@ -829,6 +835,7 @@ static struct notifier_block cfg80211_ne
+@@ -831,6 +837,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;
-@@ -846,14 +853,17 @@ static void __net_exit cfg80211_pernet_e
+@@ -848,14 +855,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)
-@@ -888,8 +898,10 @@ out_fail_nl80211:
+@@ -890,8 +900,10 @@ out_fail_nl80211:
out_fail_notifier:
wiphy_sysfs_exit();
out_fail_sysfs:
return err;
}
subsys_initcall(cfg80211_init);
-@@ -901,7 +913,9 @@ static void __exit cfg80211_exit(void)
+@@ -903,7 +915,9 @@ static void __exit cfg80211_exit(void)
unregister_netdevice_notifier(&cfg80211_netdev_notifier);
wiphy_sysfs_exit();
regulatory_exit();
iwlagn-$(CONFIG_IWL5000) += iwl-1000.o
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -4218,10 +4218,10 @@ static void __devexit iwl_pci_remove(str
+@@ -4248,10 +4248,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) = {
device_initialize(&rdev->wiphy.dev);
rdev->wiphy.dev.class = &ieee80211_class;
rdev->wiphy.dev.platform_data = rdev;
-@@ -702,6 +698,8 @@ static int cfg80211_netdev_notifier_call
+@@ -704,6 +700,8 @@ static int cfg80211_netdev_notifier_call
wdev->sme_state = CFG80211_SME_IDLE;
mutex_unlock(&rdev->devlist_mtx);
#ifdef CONFIG_CFG80211_WEXT
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -645,9 +645,11 @@ static void wdev_cleanup_work(struct wor
+@@ -647,9 +647,11 @@ static void wdev_cleanup_work(struct wor
dev_put(wdev->netdev);
}
{
--- a/drivers/net/usb/usbnet.c
+++ b/drivers/net/usb/usbnet.c
-@@ -1254,13 +1254,17 @@ static const struct net_device_ops usbne
+@@ -1245,13 +1245,17 @@ static const struct net_device_ops usbne
// precondition: never called in_interrupt
#include <asm/system.h>
--- a/net/bluetooth/hci_sock.c
+++ b/net/bluetooth/hci_sock.c
-@@ -563,7 +563,11 @@ drop:
+@@ -561,7 +561,11 @@ drop:
goto done;
}
{
struct hci_ufilter uf = { .opcode = 0 };
struct sock *sk = sock->sk;
-@@ -718,8 +722,12 @@ static struct proto hci_sk_proto = {
+@@ -716,8 +720,12 @@ static struct proto hci_sk_proto = {
.obj_size = sizeof(struct hci_pinfo)
};
--- a/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
-@@ -955,8 +955,12 @@ static struct sock *l2cap_sock_alloc(str
+@@ -957,8 +957,12 @@ static struct sock *l2cap_sock_alloc(str
return sk;
}
{
struct sock *sk;
-@@ -968,7 +972,11 @@ static int l2cap_sock_create(struct net
+@@ -970,7 +974,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;
-@@ -2025,7 +2033,11 @@ static int l2cap_sock_setsockopt_old(str
+@@ -2027,7 +2035,11 @@ static int l2cap_sock_setsockopt_old(str
return err;
}
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -1153,6 +1153,7 @@ void ieee80211_if_remove(struct ieee8021
+@@ -1155,6 +1155,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;
-@@ -1169,6 +1170,22 @@ void ieee80211_remove_interfaces(struct
+@@ -1171,6 +1172,22 @@ void ieee80211_remove_interfaces(struct
mutex_unlock(&local->iflist_mtx);
unregister_netdevice_many(&unreg_list);
}
--- a/drivers/net/wireless/libertas/dev.h
+++ b/drivers/net/wireless/libertas/dev.h
-@@ -126,7 +126,11 @@ struct lbs_private {
+@@ -120,7 +120,11 @@ struct lbs_private {
u32 resp_len[2];
/* Events sent from hardware to driver */
struct task_struct *main_thread;
--- a/drivers/net/wireless/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
-@@ -758,8 +758,14 @@ static int lbs_init_adapter(struct lbs_p
+@@ -745,8 +745,14 @@ static int lbs_init_adapter(struct lbs_p
priv->resp_len[0] = priv->resp_len[1] = 0;
/* Create the event FIFO */
lbs_pr_err("Out of memory allocating event FIFO buffer\n");
goto out;
}
-@@ -775,7 +781,12 @@ static void lbs_free_adapter(struct lbs_
+@@ -762,7 +768,12 @@ static void lbs_free_adapter(struct lbs_
lbs_deb_enter(LBS_DEB_MAIN);
lbs_free_cmd_buffer(priv);
--- a/net/mac80211/tx.c
+++ b/net/mac80211/tx.c
-@@ -1604,6 +1604,10 @@ static void ieee80211_xmit(struct ieee80
+@@ -1597,6 +1597,10 @@ static void ieee80211_xmit(struct ieee80
return;
}
ieee80211_set_qos_hdr(local, skb);
ieee80211_tx(sdata, skb, false);
rcu_read_unlock();
-@@ -2073,8 +2077,15 @@ void ieee80211_tx_pending(unsigned long
+@@ -2068,8 +2072,15 @@ void ieee80211_tx_pending(unsigned long
if (skb_queue_empty(&local->pending[i]))
list_for_each_entry_rcu(sdata, &local->interfaces, list)
--- a/drivers/bluetooth/bluecard_cs.c
+++ b/drivers/bluetooth/bluecard_cs.c
-@@ -869,6 +869,12 @@ static int bluecard_probe(struct pcmcia_
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
- link->io.NumPorts1 = 8;
+@@ -865,6 +865,12 @@ static int bluecard_probe(struct pcmcia_
+ info->p_dev = link;
+ link->priv = info;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
link->conf.Attributes = CONF_ENABLE_IRQ;
link->conf.IntType = INT_MEMORY_AND_IO;
-@@ -904,9 +910,15 @@ static int bluecard_config(struct pcmcia
+@@ -902,9 +908,15 @@ static int bluecard_config(struct pcmcia
if (i != 0)
goto failed;
if (i != 0)
--- a/drivers/bluetooth/bt3c_cs.c
+++ b/drivers/bluetooth/bt3c_cs.c
-@@ -661,6 +661,12 @@ static int bt3c_probe(struct pcmcia_devi
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
- link->io.NumPorts1 = 8;
+@@ -660,6 +660,12 @@ static int bt3c_probe(struct pcmcia_devi
+ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
+ link->resource[0]->end = 8;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
link->conf.Attributes = CONF_ENABLE_IRQ;
link->conf.IntType = INT_MEMORY_AND_IO;
-@@ -739,9 +745,15 @@ static int bt3c_config(struct pcmcia_dev
+@@ -738,9 +744,15 @@ static int bt3c_config(struct pcmcia_dev
goto failed;
found_port:
if (i != 0)
--- a/drivers/bluetooth/btuart_cs.c
+++ b/drivers/bluetooth/btuart_cs.c
-@@ -590,6 +590,12 @@ static int btuart_probe(struct pcmcia_de
- link->io.Attributes1 = IO_DATA_PATH_WIDTH_8;
- link->io.NumPorts1 = 8;
+@@ -589,6 +589,12 @@ static int btuart_probe(struct pcmcia_de
+ link->resource[0]->flags |= IO_DATA_PATH_WIDTH_8;
+ link->resource[0]->end = 8;
+#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,35))
+ link->irq.Attributes = IRQ_TYPE_DYNAMIC_SHARING;
link->conf.Attributes = CONF_ENABLE_IRQ;
link->conf.IntType = INT_MEMORY_AND_IO;
-@@ -668,9 +674,15 @@ static int btuart_config(struct pcmcia_d
+@@ -667,9 +673,15 @@ static int btuart_config(struct pcmcia_d
goto failed;
found_port:
if (i != 0)
--- a/drivers/net/wireless/b43/pcmcia.c
+++ b/drivers/net/wireless/b43/pcmcia.c
-@@ -98,7 +98,14 @@ static int __devinit b43_pcmcia_probe(st
+@@ -89,7 +89,14 @@ static int __devinit b43_pcmcia_probe(st
if (res != 0)
goto err_disable;
}
--- a/drivers/ssb/main.c
+++ b/drivers/ssb/main.c
-@@ -491,7 +491,11 @@ static int ssb_devices_register(struct s
+@@ -490,7 +490,11 @@ static int ssb_devices_register(struct s
break;
case SSB_BUSTYPE_PCMCIA:
#ifdef CONFIG_SSB_PCMCIAHOST
}
--- a/drivers/net/wireless/adm8211.c
+++ b/drivers/net/wireless/adm8211.c
-@@ -1318,19 +1318,37 @@ static void adm8211_bss_info_changed(str
+@@ -1317,19 +1317,37 @@ static void adm8211_bss_info_changed(str
}
static u64 adm8211_prepare_multicast(struct ieee80211_hw *hw,
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
-@@ -1620,17 +1620,35 @@ out:
+@@ -1608,17 +1608,35 @@ out:
return err;
}
static void ath5k_configure_filter(struct ieee80211_hw *hw,
unsigned int changed_flags,
unsigned int *new_flags,
-@@ -3139,20 +3143,42 @@ unlock:
+@@ -3148,20 +3152,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));
-@@ -3161,6 +3187,9 @@ static u64 ath5k_prepare_multicast(struc
+@@ -3170,6 +3196,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/libertas/main.c
+++ b/drivers/net/wireless/libertas/main.c
-@@ -247,18 +247,34 @@ static int lbs_add_mcast_addrs(struct cm
+@@ -242,18 +242,34 @@ static int lbs_add_mcast_addrs(struct cm
netif_addr_lock_bh(dev);
cnt = netdev_mc_count(dev);
netdev_for_each_mc_addr(ha, dev) {
}
--- a/drivers/net/wireless/mwl8k.c
+++ b/drivers/net/wireless/mwl8k.c
-@@ -1937,15 +1937,21 @@ struct mwl8k_cmd_mac_multicast_adr {
+@@ -1938,15 +1938,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;
-@@ -1966,13 +1972,27 @@ __mwl8k_cmd_mac_multicast_adr(struct iee
+@@ -1967,13 +1973,27 @@ __mwl8k_cmd_mac_multicast_adr(struct iee
if (allmulti) {
cmd->action |= cpu_to_le16(MWL8K_ENABLE_RX_ALL_MULTICAST);
} else if (mc_count) {
}
}
-@@ -3551,7 +3571,11 @@ mwl8k_bss_info_changed(struct ieee80211_
+@@ -3550,7 +3570,11 @@ mwl8k_bss_info_changed(struct ieee80211_
}
static u64 mwl8k_prepare_multicast(struct ieee80211_hw *hw,
{
struct mwl8k_cmd_pkt *cmd;
-@@ -3562,7 +3586,11 @@ static u64 mwl8k_prepare_multicast(struc
+@@ -3561,7 +3585,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;
}
-@@ -3685,7 +3713,11 @@ static void mwl8k_configure_filter(struc
+@@ -3683,7 +3711,11 @@ static void mwl8k_configure_filter(struc
*/
if (*total_flags & FIF_ALLMULTI) {
kfree(cmd);
--- a/drivers/net/wireless/rtl818x/rtl8180_dev.c
+++ b/drivers/net/wireless/rtl818x/rtl8180_dev.c
-@@ -803,10 +803,19 @@ static void rtl8180_bss_info_changed(str
+@@ -810,10 +810,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
-@@ -1194,9 +1194,17 @@ static void rtl8187_bss_info_changed(str
+@@ -1193,9 +1193,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
-@@ -1320,11 +1320,20 @@ struct wl1271_filter_params {
+@@ -1325,11 +1325,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))
-@@ -1337,16 +1346,40 @@ static u64 wl1271_op_prepare_multicast(s
+@@ -1342,16 +1351,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
-@@ -1695,7 +1695,11 @@ struct ieee80211_ops {
+@@ -1702,7 +1702,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
-@@ -668,7 +668,12 @@ struct ieee80211_local {
+@@ -666,7 +666,12 @@ struct ieee80211_local {
struct work_struct recalc_smps;
/* aggregated multicast list */
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -390,7 +390,12 @@ static int ieee80211_stop(struct net_dev
+@@ -392,7 +392,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);
-@@ -570,7 +575,12 @@ static void ieee80211_set_multicast_list
+@@ -572,7 +577,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 */
-@@ -448,9 +452,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
+@@ -451,9 +455,11 @@ struct ieee80211_hw *ieee80211_alloc_hw(
local->uapsd_max_sp_len = IEEE80211_DEFAULT_MAX_SP_LEN;
INIT_LIST_HEAD(&local->interfaces);
found->vif.bss_conf.beacon_int);
--- a/net/mac80211/scan.c
+++ b/net/mac80211/scan.c
-@@ -510,7 +510,11 @@ static int ieee80211_scan_state_decision
+@@ -514,7 +514,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/net/bluetooth/l2cap.c
+++ b/net/bluetooth/l2cap.c
-@@ -4349,8 +4349,12 @@ static inline int l2cap_data_channel(str
+@@ -4351,8 +4351,12 @@ static inline int l2cap_data_channel(str
if (!sock_owned_by_user(sk)) {
l2cap_ertm_data_rcv(sk, skb);
} else {