static u16 ieee80211_monitor_select_queue(struct net_device *dev,
struct sk_buff *skb)
-@@ -703,6 +705,7 @@ static u16 ieee80211_monitor_select_queu
+@@ -706,6 +708,7 @@ static u16 ieee80211_monitor_select_queu
return ieee80211_downgrade_queue(local, skb);
}
static const struct net_device_ops ieee80211_monitorif_ops = {
.ndo_open = ieee80211_open,
.ndo_stop = ieee80211_stop,
-@@ -713,14 +716,28 @@ static const struct net_device_ops ieee8
+@@ -716,14 +719,28 @@ static const struct net_device_ops ieee8
.ndo_set_mac_address = eth_mac_addr,
.ndo_select_queue = ieee80211_monitor_select_queue,
};
/*
* Helper function to initialise an interface to a specific type.
*/
-@@ -732,7 +749,11 @@ static void ieee80211_setup_sdata(struct
+@@ -735,7 +752,11 @@ static void ieee80211_setup_sdata(struct
/* and set some type-dependent values */
sdata->vif.type = type;
sdata->wdev.iftype = type;
/* only monitor differs */
-@@ -755,7 +776,13 @@ static void ieee80211_setup_sdata(struct
+@@ -758,7 +779,13 @@ 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;
-@@ -824,6 +851,8 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -827,6 +854,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 */
-@@ -832,6 +861,7 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -835,6 +864,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)
-@@ -873,6 +903,10 @@ int ieee80211_if_add(struct ieee80211_lo
+@@ -880,6 +910,10 @@ int ieee80211_if_add(struct ieee80211_lo
if (ret)
goto fail;
};
/* internal helper: get rdev and dev */
---- a/net/wireless/nl80211.c 2010-01-13 11:07:31.000000000 -0800
-+++ b/net/wireless/nl80211.c 2010-01-13 11:16:23.000000000 -0800
-@@ -4187,7 +4187,9 @@ static int nl80211_wiphy_netns(struct sk
+@@ -4206,7 +4208,9 @@ static int nl80211_wiphy_netns(struct sk
err = cfg80211_switch_netns(rdev, net);
out_put_net:
out:
cfg80211_unlock_rdev(rdev);
out_rtnl:
---- a/net/wireless/core.c 2010-01-13 11:07:31.000000000 -0800
-+++ b/net/wireless/core.c 2010-01-13 11:20:29.000000000 -0800
+--- a/net/wireless/core.c
++++ b/net/wireless/core.c
@@ -228,6 +228,7 @@ int cfg80211_dev_rename(struct cfg80211_
return 0;
}
rdev->rfkill_ops.set_block = cfg80211_rfkill_set_block;
rdev->rfkill = rfkill_alloc(dev_name(&rdev->wiphy.dev),
-@@ -673,8 +677,10 @@ static int cfg80211_netdev_notifier_call
+@@ -672,8 +676,10 @@ static int cfg80211_netdev_notifier_call
mutex_lock(&rdev->devlist_mtx);
list_add(&wdev->list, &rdev->netdev_list);
rdev->devlist_generation++;
if (sysfs_create_link(&dev->dev.kobj, &rdev->wiphy.dev.kobj,
"phy80211")) {
-@@ -810,6 +816,7 @@ static struct notifier_block cfg80211_ne
+@@ -805,6 +811,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;
-@@ -827,14 +834,17 @@ static void __net_exit cfg80211_pernet_e
+@@ -822,14 +829,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)
-@@ -869,8 +879,10 @@ out_fail_nl80211:
+@@ -864,8 +874,10 @@ out_fail_nl80211:
out_fail_notifier:
wiphy_sysfs_exit();
out_fail_sysfs:
return err;
}
subsys_initcall(cfg80211_init);
-@@ -882,7 +894,9 @@ static void cfg80211_exit(void)
+@@ -877,7 +889,9 @@ static void cfg80211_exit(void)
unregister_netdevice_notifier(&cfg80211_netdev_notifier);
wiphy_sysfs_exit();
regulatory_exit();
destroy_workqueue(cfg80211_wq);
}
module_exit(cfg80211_exit);
---- a/net/wireless/wext-core.c 2010-01-13 11:07:31.000000000 -0800
-+++ b/net/wireless/wext-core.c 2010-01-13 11:16:23.000000000 -0800
+--- a/net/wireless/wext-core.c
++++ b/net/wireless/wext-core.c
@@ -399,7 +399,11 @@ static void wireless_nlevent_process(uns
{
struct sk_buff *skb;
}
static DECLARE_TASKLET(wireless_nlevent_tasklet, wireless_nlevent_process, 0);
---- a/net/wireless/wext-proc.c 2010-01-13 11:21:38.000000000 -0800
-+++ b/net/wireless/wext-proc.c 2010-01-13 11:22:30.000000000 -0800
+--- a/net/wireless/wext-proc.c
++++ b/net/wireless/wext-proc.c
@@ -98,7 +98,11 @@ static void *wireless_dev_seq_start(stru
return SEQ_START_TOKEN;
/**
* DOC: Key handling basics
-
-Every kernel release there are a few changes to headers
-made. Some code gets shifted around between headers or
-new headers are defined. This patch deals with such
-cases.
-
-This file also deals with enhancements with new kernel headers
-which older kernels would conflict with.
-
---- a/net/mac80211/main.c 2010-01-05 21:54:51.000000000 -0800
-+++ b/net/mac80211/main.c 2010-01-05 21:55:21.000000000 -0800
-@@ -22,7 +22,9 @@
+--- a/net/mac80211/main.c
++++ b/net/mac80211/main.c
+@@ -20,7 +20,9 @@
#include <linux/rtnetlink.h>
#include <linux/bitmap.h>
#include <linux/pm_qos_params.h>
#include <net/cfg80211.h>
#include "ieee80211_i.h"
---- a/net/mac80211/cfg.c 2010-01-05 21:59:44.000000000 -0800
-+++ b/net/mac80211/cfg.c 2010-01-05 22:00:16.000000000 -0800
+--- a/net/mac80211/cfg.c
++++ b/net/mac80211/cfg.c
@@ -9,7 +9,9 @@
#include <linux/ieee80211.h>
#include <linux/nl80211.h>
#include <linux/rcupdate.h>
#include <net/cfg80211.h>
#include "ieee80211_i.h"
---- a/net/mac80211/tx.c 2010-01-05 22:01:11.000000000 -0800
-+++ b/net/mac80211/tx.c 2010-01-05 22:01:28.000000000 -0800
+--- a/net/mac80211/tx.c
++++ b/net/mac80211/tx.c
@@ -18,7 +18,9 @@
#include <linux/etherdevice.h>
#include <linux/bitmap.h>
#include <net/ieee80211_radiotap.h>
#include <net/cfg80211.h>
#include <net/mac80211.h>
---- a/net/mac80211/util.c 2010-01-05 22:02:59.000000000 -0800
-+++ b/net/mac80211/util.c 2010-01-05 22:03:30.000000000 -0800
-@@ -21,7 +21,9 @@
- #include <linux/wireless.h>
+--- a/net/mac80211/util.c
++++ b/net/mac80211/util.c
+@@ -20,7 +20,9 @@
+ #include <linux/if_arp.h>
#include <linux/bitmap.h>
#include <linux/crc32.h>
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,24))
#include <net/cfg80211.h>
#include <net/rtnetlink.h>
---- a/net/wireless/nl80211.c 2010-01-13 11:31:54.000000000 -0800
-+++ b/net/wireless/nl80211.c 2010-01-13 11:32:18.000000000 -0800
+--- a/net/wireless/nl80211.c
++++ b/net/wireless/nl80211.c
@@ -14,7 +14,9 @@
#include <linux/rtnetlink.h>
#include <linux/netlink.h>
iwlagn-$(CONFIG_IWL5000) += iwl-1000.o
--- a/drivers/net/wireless/iwlwifi/iwl-agn.c
+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c
-@@ -3767,10 +3767,10 @@ static void __devexit iwl_pci_remove(str
+@@ -3770,10 +3770,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/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -683,6 +683,10 @@ static int cfg80211_netdev_notifier_call
+@@ -690,6 +690,10 @@ static int cfg80211_netdev_notifier_call
wdev->sme_state = CFG80211_SME_IDLE;
mutex_unlock(&rdev->devlist_mtx);
#ifdef CONFIG_CFG80211_WEXT
#include <net/mac80211.h>
#include "ieee80211_i.h"
-@@ -717,4 +719,6 @@ TRACE_EVENT(drv_flush,
+@@ -740,4 +742,6 @@ TRACE_EVENT(drv_flush,
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE driver-trace
--- a/net/wireless/core.c
+++ b/net/wireless/core.c
-@@ -635,9 +635,11 @@ static void wdev_cleanup_work(struct wor
+@@ -640,9 +640,11 @@ static void wdev_cleanup_work(struct wor
dev_put(wdev->netdev);
}
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
-@@ -2476,7 +2476,12 @@ void ieee80211_rx(struct ieee80211_hw *h
+@@ -2488,7 +2488,12 @@ void ieee80211_rx(struct ieee80211_hw *h
drop:
kfree_skb(skb);
}
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
-@@ -943,6 +943,7 @@ void ieee80211_if_remove(struct ieee8021
+@@ -950,6 +950,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;
-@@ -959,6 +960,22 @@ void ieee80211_remove_interfaces(struct
+@@ -966,6 +967,22 @@ void ieee80211_remove_interfaces(struct
mutex_unlock(&local->iflist_mtx);
unregister_netdevice_many(&unreg_list);
}
the struct pci_dev, to help with that we use the compat-2.6.24.c supplied
compat_is_pcie() when needed.
---- a/drivers/net/wireless/ath/ath9k/pci.c 2010-01-13 10:48:29.000000000 -0800
-+++ b/drivers/net/wireless/ath/ath9k/pci.c 2010-01-13 10:49:52.000000000 -0800
+--- a/drivers/net/wireless/ath/ath9k/pci.c
++++ b/drivers/net/wireless/ath/ath9k/pci.c
@@ -88,7 +88,11 @@ static void ath_pci_bt_coex_prep(struct
struct pci_dev *pdev = to_pci_dev(sc->dev);
u8 aspm;