net->watchdog_timeo = TX_TIMEOUT_JIFFIES;
net->ethtool_ops = &usbnet_ethtool_ops;
---- a/drivers/net/wireless/rndis_wlan.c 2009-09-02 14:08:52.418110490 -0700
-+++ b/drivers/net/wireless/rndis_wlan.c 2009-09-02 14:08:52.930092180 -0700
-@@ -2670,6 +2670,7 @@
+--- a/drivers/net/wireless/rndis_wlan.c 2009-12-28 17:39:01.000000000 -0800
++++ b/drivers/net/wireless/rndis_wlan.c 2009-12-28 17:39:02.000000000 -0800
+@@ -2682,6 +2682,7 @@ static int bcm4320b_early_init(struct us
return 0;
}
/* same as rndis_netdev_ops but with local multicast handler */
static const struct net_device_ops rndis_wlan_netdev_ops = {
.ndo_open = usbnet_open,
-@@ -2680,6 +2681,7 @@
+@@ -2692,6 +2693,7 @@ static const struct net_device_ops rndis
.ndo_validate_addr = eth_validate_addr,
.ndo_set_multicast_list = rndis_wlan_set_multicast_list,
};
static int rndis_wlan_bind(struct usbnet *usbdev, struct usb_interface *intf)
{
-@@ -2727,7 +2729,11 @@
+@@ -2739,7 +2741,11 @@ static int rndis_wlan_bind(struct usbnet
* rndis_host wants to avoid all OID as much as possible
* so do promisc/multicast handling in rndis_wlan.
*/
tmp = RNDIS_PACKET_TYPE_DIRECTED | RNDIS_PACKET_TYPE_BROADCAST;
retval = rndis_set_oid(usbdev, OID_GEN_CURRENT_PACKET_FILTER, &tmp,
---- a/net/mac80211/iface.c 2009-12-10 08:41:38.000000000 -0800
-+++ b/net/mac80211/iface.c 2009-12-10 08:41:39.000000000 -0800
-@@ -644,6 +644,7 @@
+--- a/net/mac80211/iface.c 2009-12-28 17:44:09.000000000 -0800
++++ b/net/mac80211/iface.c 2009-12-28 17:44:10.000000000 -0800
+@@ -660,6 +660,7 @@ static void ieee80211_teardown_sdata(str
WARN_ON(flushed);
}
static const struct net_device_ops ieee80211_dataif_ops = {
.ndo_open = ieee80211_open,
.ndo_stop = ieee80211_stop,
-@@ -663,11 +664,23 @@
+@@ -679,11 +680,23 @@ static const struct net_device_ops ieee8
.ndo_change_mtu = ieee80211_change_mtu,
.ndo_set_mac_address = eth_mac_addr,
};
dev->destructor = free_netdev;
}
-@@ -682,7 +694,12 @@
+@@ -698,7 +711,12 @@ static void ieee80211_setup_sdata(struct
/* and set some type-dependent values */
sdata->vif.type = type;
sdata->wdev.iftype = type;
/* only monitor differs */
-@@ -705,7 +721,11 @@
+@@ -721,7 +739,11 @@ 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;
-@@ -774,6 +794,8 @@
+@@ -790,6 +812,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 */
-@@ -782,6 +804,7 @@
+@@ -798,6 +822,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)
-@@ -821,6 +844,10 @@
+@@ -839,6 +864,10 @@ int ieee80211_if_add(struct ieee80211_lo
if (ret)
goto fail;
ieee->dev = dev;
---- a/drivers/net/wireless/libertas/main.c 2009-11-02 08:04:43.000000000 -0800
-+++ b/drivers/net/wireless/libertas/main.c 2009-11-02 08:04:44.000000000 -0800
-@@ -911,6 +911,7 @@
+--- a/drivers/net/wireless/libertas/main.c 2009-12-28 17:45:01.000000000 -0800
++++ b/drivers/net/wireless/libertas/main.c 2009-12-28 17:45:02.000000000 -0800
+@@ -898,6 +898,7 @@ static void lbs_free_adapter(struct lbs_
lbs_deb_leave(LBS_DEB_MAIN);
}
static const struct net_device_ops lbs_netdev_ops = {
.ndo_open = lbs_dev_open,
.ndo_stop = lbs_eth_stop,
-@@ -921,6 +922,7 @@
+@@ -908,6 +909,7 @@ static const struct net_device_ops lbs_n
.ndo_change_mtu = eth_change_mtu,
.ndo_validate_addr = eth_validate_addr,
};
/**
* @brief This function adds the card. it will probe the
-@@ -966,7 +968,16 @@
+@@ -953,7 +955,16 @@ struct lbs_private *lbs_add_card(void *c
wdev->netdev = dev;
priv->dev = dev;
dev->watchdog_timeo = 5 * HZ;
dev->ethtool_ops = &lbs_ethtool_ops;
#ifdef WIRELESS_EXT
-@@ -1262,11 +1273,13 @@
+@@ -1259,11 +1270,13 @@ out:
lbs_deb_leave(LBS_DEB_MAIN);
}
static int lbs_add_rtap(struct lbs_private *priv)
{
-@@ -1287,7 +1300,13 @@
+@@ -1284,7 +1297,13 @@ static int lbs_add_rtap(struct lbs_priva
memcpy(rtap_dev->dev_addr, priv->current_addr, ETH_ALEN);
rtap_dev->type = ARPHRD_IEEE80211_RADIOTAP;
rtap_dev->ml_priv = priv;
SET_NETDEV_DEV(rtap_dev, priv->dev->dev.parent);
---- a/drivers/net/wireless/libertas/mesh.c
-+++ b/drivers/net/wireless/libertas/mesh.c
-@@ -318,6 +318,7 @@
+--- a/drivers/net/wireless/libertas/mesh.c 2009-12-28 17:47:21.000000000 -0800
++++ b/drivers/net/wireless/libertas/mesh.c 2009-12-28 17:47:21.000000000 -0800
+@@ -331,6 +331,7 @@ static int lbs_mesh_dev_open(struct net_
return ret;
}
static const struct net_device_ops mesh_netdev_ops = {
.ndo_open = lbs_mesh_dev_open,
.ndo_stop = lbs_mesh_stop,
-@@ -325,6 +326,7 @@
+@@ -338,6 +339,7 @@ static const struct net_device_ops mesh_
.ndo_set_mac_address = lbs_set_mac_address,
.ndo_set_multicast_list = lbs_set_multicast_list,
};
/**
* @brief This function adds mshX interface
-@@ -349,7 +351,15 @@
+@@ -362,7 +364,15 @@ int lbs_add_mesh(struct lbs_private *pri
mesh_dev->ml_priv = priv;
priv->mesh_dev = mesh_dev;
#define LBS_DEB_ENTER 0x00000001
#define LBS_DEB_LEAVE 0x00000002
---- a/drivers/net/wireless/mac80211_hwsim.c 2009-08-18 16:18:52.829350750 -0700
-+++ b/drivers/net/wireless/mac80211_hwsim.c 2009-08-18 16:18:52.977352457 -0700
-@@ -872,16 +872,22 @@
+--- a/drivers/net/wireless/mac80211_hwsim.c 2009-12-28 17:48:02.000000000 -0800
++++ b/drivers/net/wireless/mac80211_hwsim.c 2009-12-28 17:48:02.000000000 -0800
+@@ -943,16 +943,22 @@ static struct device_driver mac80211_hws
.name = "mac80211_hwsim"
};
#include <linux/workqueue.h>
#include <net/genetlink.h>
#include <net/cfg80211.h>
---- a/drivers/net/wireless/ath/ath9k/hw.c 2009-12-10 08:43:21.000000000 -0800
-+++ b/drivers/net/wireless/ath/ath9k/hw.c 2009-12-10 08:43:22.000000000 -0800
-@@ -3260,7 +3260,7 @@
+--- a/drivers/net/wireless/ath/ath9k/hw.c 2009-12-28 17:49:28.000000000 -0800
++++ b/drivers/net/wireless/ath/ath9k/hw.c 2009-12-28 17:49:28.000000000 -0800
+@@ -3230,7 +3230,7 @@ int ath9k_hw_fill_cap_info(struct ath_hw
pCap->hw_caps |= ATH9K_HW_CAP_ENHANCEDPM;
iwlagn-$(CONFIG_IWL5000) += iwl-5000.o
iwlagn-$(CONFIG_IWL5000) += iwl-6000.o
iwlagn-$(CONFIG_IWL5000) += iwl-1000.o
---- a/drivers/net/wireless/iwlwifi/iwl-agn.c 2009-12-10 08:47:49.000000000 -0800
-+++ b/drivers/net/wireless/iwlwifi/iwl-agn.c 2009-12-10 08:47:51.000000000 -0800
-@@ -3590,10 +3590,10 @@ static void __devexit iwl_pci_remove(str
+--- a/drivers/net/wireless/iwlwifi/iwl-agn.c 2009-12-28 17:50:16.000000000 -0800
++++ b/drivers/net/wireless/iwlwifi/iwl-agn.c 2009-12-28 17:50:16.000000000 -0800
+@@ -3767,10 +3767,10 @@ static void __devexit iwl_pci_remove(str
/* Hardware specific file defines the PCI IDs table for that hardware module */
static struct pci_device_id iwl_hw_card_ids[] = {
[1] http://lxr.linux.no/#linux+v2.6.31/include/trace/define_trace.h
---- a/drivers/net/wireless/iwlwifi/iwl-devtrace.h
-+++ b/drivers/net/wireless/iwlwifi/iwl-devtrace.h
+--- a/drivers/net/wireless/iwlwifi/iwl-devtrace.h 2009-12-28 17:50:51.000000000 -0800
++++ b/drivers/net/wireless/iwlwifi/iwl-devtrace.h 2009-12-28 17:50:52.000000000 -0800
@@ -1,7 +1,9 @@
#if !defined(__IWLWIFI_DEVICE_TRACE) || defined(TRACE_HEADER_MULTI_READ)
#define __IWLWIFI_DEVICE_TRACE
#include "iwl-dev.h"
#if !defined(CONFIG_IWLWIFI_DEVICE_TRACING) || defined(__CHECKER__)
-@@ -194,4 +196,6 @@ TRACE_EVENT(iwlwifi_dev_ucode_event,
+@@ -238,4 +240,6 @@ TRACE_EVENT(iwlwifi_dev_ucode_event,
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE iwl-devtrace
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,30))
#include <trace/define_trace.h>
+#endif
---- a/net/mac80211/driver-trace.h 2009-08-18 16:19:34.574352433 -0700
-+++ b/net/mac80211/driver-trace.h 2009-08-18 16:19:35.694367614 -0700
+--- a/net/mac80211/driver-trace.h 2009-12-28 17:52:08.000000000 -0800
++++ b/net/mac80211/driver-trace.h 2009-12-28 17:52:09.000000000 -0800
@@ -1,7 +1,9 @@
#if !defined(__MAC80211_DRIVER_TRACE) || defined(TRACE_HEADER_MULTI_READ)
#define __MAC80211_DRIVER_TRACE
#include <net/mac80211.h>
#include "ieee80211_i.h"
-@@ -694,4 +696,6 @@ TRACE_EVENT(drv_ampdu_action,
+@@ -696,4 +698,6 @@ TRACE_EVENT(drv_ampdu_action,
#define TRACE_INCLUDE_PATH .
#undef TRACE_INCLUDE_FILE
#define TRACE_INCLUDE_FILE driver-trace
In kernel < 2.6.32 libipw also exports ieee80211_rx.
To avoid conflicts with the other export we rename our.
---- a/net/mac80211/rx.c 2009-12-11 13:32:17.000000000 -0800
-+++ b/net/mac80211/rx.c 2009-12-11 13:32:18.000000000 -0800
-@@ -2536,7 +2536,12 @@
+--- a/net/mac80211/rx.c 2009-12-28 17:52:50.000000000 -0800
++++ b/net/mac80211/rx.c 2009-12-28 17:52:51.000000000 -0800
+@@ -2465,7 +2465,12 @@ void ieee80211_rx(struct ieee80211_hw *h
drop:
kfree_skb(skb);
}
}
module_init(hidp_init);
---- a/net/bluetooth/l2cap.c 2009-12-10 09:47:08.000000000 -0800
-+++ b/net/bluetooth/l2cap.c 2009-12-10 09:47:10.000000000 -0800
-@@ -1762,7 +1762,11 @@ static int l2cap_sock_setsockopt_old(str
- return err;
- }
-
-+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
- static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
-+#else
-+static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
-+#endif
- {
- struct sock *sk = sock->sk;
- struct bt_security sec;
--- a/net/bluetooth/rfcomm/sock.c 2009-12-10 09:48:33.000000000 -0800
+++ b/net/bluetooth/rfcomm/sock.c 2009-12-10 09:48:37.000000000 -0800
@@ -767,7 +767,11 @@ static int rfcomm_sock_setsockopt_old(st
{
struct sock *sk;
-diff -Nur orig_bt/net/bluetooth/l2cap.c mod_bt/net/bluetooth/l2cap.c
---- orig_bt/net/bluetooth/l2cap.c 2009-12-15 16:40:20.000000000 +0530
-+++ mod_bt/net/bluetooth/l2cap.c 2009-12-15 16:46:56.000000000 +0530
-@@ -822,8 +822,12 @@
- return sk;
+--- a/net/bluetooth/l2cap.c 2009-12-28 17:53:34.000000000 -0800
++++ b/net/bluetooth/l2cap.c 2009-12-28 17:53:36.000000000 -0800
+@@ -822,8 +822,12 @@ static struct sock *l2cap_sock_alloc(str
+ return sk;
}
-
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32))
static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol,
- int kern)
+ int kern)
+#else
+static int l2cap_sock_create(struct net *net, struct socket *sock, int protocol)
+#endif
{
- struct sock *sk;
-
-@@ -835,7 +839,11 @@
- sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
- return -ESOCKTNOSUPPORT;
-
+ struct sock *sk;
+
+@@ -835,7 +839,11 @@ static int l2cap_sock_create(struct net
+ sock->type != SOCK_DGRAM && sock->type != SOCK_RAW)
+ return -ESOCKTNOSUPPORT;
+
+#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,32))
- if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
+ if (sock->type == SOCK_RAW && !kern && !capable(CAP_NET_RAW))
+#else
+ if (sock->type == SOCK_RAW && !capable(CAP_NET_RAW))
+#endif
- return -EPERM;
-
- sock->ops = &l2cap_sock_ops;
+ return -EPERM;
+
+ sock->ops = &l2cap_sock_ops;
+@@ -1763,7 +1771,11 @@ static int l2cap_sock_setsockopt_old(str
+ return err;
+ }
+
++#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,6,31))
+ static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, unsigned int optlen)
++#else
++static int l2cap_sock_setsockopt(struct socket *sock, int level, int optname, char __user *optval, int optlen)
++#endif
+ {
+ struct sock *sk = sock->sk;
+ struct bt_security sec;
diff -Nur orig_bt/net/bluetooth/rfcomm/sock.c mod_bt/net/bluetooth/rfcomm/sock.c
--- orig_bt/net/bluetooth/rfcomm/sock.c 2009-12-15 16:42:14.000000000 +0530
+++ mod_bt/net/bluetooth/rfcomm/sock.c 2009-12-15 16:49:07.000000000 +0530
Reviewed-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
---- a/net/mac80211/iface.c 2009-12-10 23:06:21.000000000 -0800
-+++ b/net/mac80211/iface.c 2009-12-10 23:09:50.000000000 -0800
-@@ -884,6 +884,7 @@ void ieee80211_if_remove(struct ieee8021
+--- a/net/mac80211/iface.c 2009-12-28 17:55:57.000000000 -0800
++++ b/net/mac80211/iface.c 2009-12-28 17:55:58.000000000 -0800
+@@ -904,6 +904,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;
-@@ -900,6 +901,22 @@ void ieee80211_remove_interfaces(struct
+@@ -920,6 +921,22 @@ void ieee80211_remove_interfaces(struct
mutex_unlock(&local->iflist_mtx);
unregister_netdevice_many(&unreg_list);
}