rtap_dev->ml_priv = priv;
SET_NETDEV_DEV(rtap_dev, priv->dev->dev.parent);
---- a/drivers/net/wireless/mac80211_hwsim.c
-+++ b/drivers/net/wireless/mac80211_hwsim.c
-@@ -739,16 +739,22 @@ static struct device_driver mac80211_hwsim_driver = {
+--- a/drivers/net/wireless/mac80211_hwsim.c 2009-04-28 15:35:05.000000000 -0700
++++ b/drivers/net/wireless/mac80211_hwsim.c 2009-04-28 15:35:06.000000000 -0700
+@@ -732,16 +732,22 @@
.name = "mac80211_hwsim"
};
dev->destructor = free_netdev;
ether_setup(dev);
dev->tx_queue_len = 0;
---- a/drivers/net/wireless/rndis_wlan.c
-+++ b/drivers/net/wireless/rndis_wlan.c
-@@ -2342,6 +2342,7 @@ static int bcm4320_early_init(struct usbnet *usbdev)
+--- a/drivers/net/wireless/rndis_wlan.c 2009-04-28 15:35:05.000000000 -0700
++++ b/drivers/net/wireless/rndis_wlan.c 2009-04-28 15:35:06.000000000 -0700
+@@ -2342,6 +2342,7 @@
return 0;
}
/* same as rndis_netdev_ops but with local multicast handler */
static const struct net_device_ops rndis_wext_netdev_ops = {
.ndo_open = usbnet_open,
-@@ -2352,6 +2353,7 @@ static const struct net_device_ops rndis_wext_netdev_ops = {
+@@ -2352,6 +2353,7 @@
.ndo_validate_addr = eth_validate_addr,
.ndo_set_multicast_list = rndis_wext_set_multicast_list,
};
static int rndis_wext_bind(struct usbnet *usbdev, struct usb_interface *intf)
-@@ -2396,7 +2398,11 @@ static int rndis_wext_bind(struct usbnet *usbdev, struct usb_interface *intf)
+@@ -2402,7 +2404,11 @@
* rndis_host wants to avoid all OID as much as possible
* so do promisc/multicast handling in rndis_wext.
*/
/*
---- a/net/mac80211/iface.c
-+++ b/net/mac80211/iface.c
-@@ -669,6 +669,7 @@ static void ieee80211_teardown_sdata(struct net_device *dev)
+--- a/net/mac80211/iface.c 2009-04-28 15:34:50.000000000 -0700
++++ b/net/mac80211/iface.c 2009-04-28 15:35:06.000000000 -0700
+@@ -667,6 +667,7 @@
WARN_ON(flushed);
}
static const struct net_device_ops ieee80211_dataif_ops = {
.ndo_open = ieee80211_open,
.ndo_stop = ieee80211_stop,
-@@ -688,11 +689,22 @@ static const struct net_device_ops ieee80211_monitorif_ops = {
+@@ -686,11 +687,22 @@
.ndo_change_mtu = ieee80211_change_mtu,
.ndo_set_mac_address = eth_mac_addr,
};
dev->wireless_handlers = &ieee80211_iw_handler_def;
dev->destructor = free_netdev;
}
-@@ -708,7 +720,11 @@ static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
+@@ -706,7 +718,11 @@
/* and set some type-dependent values */
sdata->vif.type = type;
sdata->wdev.iftype = type;
/* only monitor differs */
-@@ -731,7 +747,11 @@ static void ieee80211_setup_sdata(struct ieee80211_sub_if_data *sdata,
+@@ -729,7 +745,11 @@
break;
case NL80211_IFTYPE_MONITOR:
sdata->dev->type = ARPHRD_IEEE80211_RADIOTAP;
sdata->u.mntr_flags = MONITOR_FLAG_CONTROL |
MONITOR_FLAG_OTHER_BSS;
break;
-@@ -838,6 +858,10 @@ int ieee80211_if_add(struct ieee80211_local *local, const char *name,
+@@ -836,6 +856,10 @@
if (ret)
goto fail;
if (ieee80211_vif_is_mesh(&sdata->vif) &&
params && params->mesh_id_len)
ieee80211_sdata_set_mesh_id(sdata,
---- a/net/mac80211/main.c
-+++ b/net/mac80211/main.c
-@@ -483,6 +483,7 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local,
+--- a/net/mac80211/main.c 2009-04-28 15:34:50.000000000 -0700
++++ b/net/mac80211/main.c 2009-04-28 15:35:06.000000000 -0700
+@@ -467,6 +467,7 @@
return;
}
if (!test_sta_flags(sta, WLAN_STA_PS) && !skb->requeue) {
/* Software retry the packet once */
skb->requeue = 1;
-@@ -490,6 +491,7 @@ static void ieee80211_handle_filtered_frame(struct ieee80211_local *local,
+@@ -474,6 +475,7 @@
dev_queue_xmit(skb);
return;
}
#ifdef CONFIG_MAC80211_VERBOSE_DEBUG
if (net_ratelimit())
-@@ -820,6 +822,7 @@ struct ieee80211_hw *ieee80211_alloc_hw(size_t priv_data_len,
+@@ -805,6 +807,7 @@
}
EXPORT_SYMBOL(ieee80211_alloc_hw);
static const struct net_device_ops ieee80211_master_ops = {
.ndo_start_xmit = ieee80211_master_start_xmit,
.ndo_open = ieee80211_master_open,
-@@ -827,12 +830,22 @@ static const struct net_device_ops ieee80211_master_ops = {
+@@ -812,12 +815,22 @@
.ndo_set_multicast_list = ieee80211_master_set_multicast_list,
.ndo_select_queue = ieee80211_select_queue,
};
return ops;
}
---- a/net/mac80211/rx.c
-+++ b/net/mac80211/rx.c
-@@ -806,12 +806,17 @@ static int ap_sta_ps_end(struct sta_info *sta)
+--- a/net/mac80211/rx.c 2009-04-28 15:34:51.000000000 -0700
++++ b/net/mac80211/rx.c 2009-04-28 15:35:06.000000000 -0700
+@@ -803,12 +803,17 @@
/* Send all buffered frames to the station */
while ((skb = skb_dequeue(&sta->tx_filtered)) != NULL) {
sent++;
#ifdef CONFIG_MAC80211_VERBOSE_PS_DEBUG
printk(KERN_DEBUG "%s: STA %pM aid %d send PS frame "
-@@ -820,6 +825,9 @@ static int ap_sta_ps_end(struct sta_info *sta)
+@@ -817,6 +822,9 @@
#endif /* CONFIG_MAC80211_VERBOSE_PS_DEBUG */
skb->requeue = 1;
dev_queue_xmit(skb);
/* must be last because of priv member */
struct cfg80211_bss pub;
---- a/net/wireless/scan.c
-+++ b/net/wireless/scan.c
-@@ -58,10 +58,12 @@ static void bss_release(struct kref *ref)
+--- a/net/wireless/scan.c 2009-04-28 15:34:48.000000000 -0700
++++ b/net/wireless/scan.c 2009-04-28 15:35:06.000000000 -0700
+@@ -58,10 +58,12 @@
bss = container_of(ref, struct cfg80211_internal_bss, ref);
if (bss->pub.free_priv)
bss->pub.free_priv(&bss->pub);
kfree(bss);
}
-@@ -364,13 +366,26 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
+@@ -364,13 +366,26 @@
found = rb_find_bss(dev, res);
/* overwrite IEs */
if (overwrite) {
-@@ -399,6 +414,7 @@ cfg80211_bss_update(struct cfg80211_registered_device *dev,
+@@ -397,6 +412,7 @@
}
}