SVN-Revision: 19110master
parent
a0a6ab8181
commit
1d109f9eb2
@ -1,69 +0,0 @@ |
|||||||
--- a/net/mac80211/iface.c
|
|
||||||
+++ b/net/mac80211/iface.c
|
|
||||||
@@ -329,7 +329,7 @@ static int ieee80211_open(struct net_dev
|
|
||||||
if (sdata->vif.type == NL80211_IFTYPE_STATION)
|
|
||||||
ieee80211_queue_work(&local->hw, &sdata->u.mgd.work);
|
|
||||||
|
|
||||||
- netif_start_queue(dev);
|
|
||||||
+ netif_tx_start_all_queues(dev);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
err_del_interface:
|
|
||||||
@@ -357,7 +357,7 @@ static int ieee80211_stop(struct net_dev
|
|
||||||
/*
|
|
||||||
* Stop TX on this interface first.
|
|
||||||
*/
|
|
||||||
- netif_stop_queue(dev);
|
|
||||||
+ netif_tx_stop_all_queues(dev);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Purge work for this interface.
|
|
||||||
--- a/net/mac80211/mlme.c
|
|
||||||
+++ b/net/mac80211/mlme.c
|
|
||||||
@@ -723,7 +723,7 @@ static void ieee80211_set_associated(str
|
|
||||||
ieee80211_recalc_smps(local, sdata);
|
|
||||||
mutex_unlock(&local->iflist_mtx);
|
|
||||||
|
|
||||||
- netif_start_queue(sdata->dev);
|
|
||||||
+ netif_tx_start_all_queues(sdata->dev);
|
|
||||||
netif_carrier_on(sdata->dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -759,7 +759,7 @@ static void ieee80211_set_disassoc(struc
|
|
||||||
* time -- we don't want the scan code to enable queues.
|
|
||||||
*/
|
|
||||||
|
|
||||||
- netif_stop_queue(sdata->dev);
|
|
||||||
+ netif_tx_stop_all_queues(sdata->dev);
|
|
||||||
netif_carrier_off(sdata->dev);
|
|
||||||
|
|
||||||
rcu_read_lock();
|
|
||||||
--- a/net/mac80211/offchannel.c
|
|
||||||
+++ b/net/mac80211/offchannel.c
|
|
||||||
@@ -113,7 +113,7 @@ void ieee80211_offchannel_stop_beaconing
|
|
||||||
*/
|
|
||||||
if (sdata->vif.type != NL80211_IFTYPE_STATION &&
|
|
||||||
sdata->vif.type != NL80211_IFTYPE_MONITOR)
|
|
||||||
- netif_stop_queue(sdata->dev);
|
|
||||||
+ netif_tx_stop_all_queues(sdata->dev);
|
|
||||||
}
|
|
||||||
mutex_unlock(&local->iflist_mtx);
|
|
||||||
}
|
|
||||||
@@ -131,7 +131,7 @@ void ieee80211_offchannel_stop_station(s
|
|
||||||
continue;
|
|
||||||
|
|
||||||
if (sdata->vif.type == NL80211_IFTYPE_STATION) {
|
|
||||||
- netif_stop_queue(sdata->dev);
|
|
||||||
+ netif_tx_stop_all_queues(sdata->dev);
|
|
||||||
if (sdata->u.mgd.associated)
|
|
||||||
ieee80211_offchannel_ps_enable(sdata);
|
|
||||||
}
|
|
||||||
@@ -153,7 +153,7 @@ void ieee80211_offchannel_return(struct
|
|
||||||
if (sdata->vif.type == NL80211_IFTYPE_STATION) {
|
|
||||||
if (sdata->u.mgd.associated)
|
|
||||||
ieee80211_offchannel_ps_disable(sdata);
|
|
||||||
- netif_wake_queue(sdata->dev);
|
|
||||||
+ netif_tx_wake_all_queues(sdata->dev);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* re-enable beaconing */
|
|
@ -1,26 +0,0 @@ |
|||||||
--- a/net/mac80211/mlme.c
|
|
||||||
+++ b/net/mac80211/mlme.c
|
|
||||||
@@ -1451,7 +1451,9 @@ static void ieee80211_sta_rx_queued_mgmt
|
|
||||||
rma = ieee80211_rx_mgmt_disassoc(sdata, mgmt, skb->len);
|
|
||||||
break;
|
|
||||||
case IEEE80211_STYPE_ACTION:
|
|
||||||
- /* XXX: differentiate, can only happen for CSA now! */
|
|
||||||
+ if (mgmt->u.action.category != WLAN_CATEGORY_SPECTRUM_MGMT)
|
|
||||||
+ break;
|
|
||||||
+
|
|
||||||
ieee80211_sta_process_chanswitch(sdata,
|
|
||||||
&mgmt->u.action.u.chan_switch.sw_elem,
|
|
||||||
(void *)ifmgd->associated->priv);
|
|
||||||
--- a/net/mac80211/rx.c
|
|
||||||
+++ b/net/mac80211/rx.c
|
|
||||||
@@ -1934,6 +1934,10 @@ ieee80211_rx_h_action(struct ieee80211_r
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
+ /* do not process rejected action frames */
|
|
||||||
+ if (mgmt->u.action.category & 0x80)
|
|
||||||
+ return RX_DROP_MONITOR;
|
|
||||||
+
|
|
||||||
return RX_CONTINUE;
|
|
||||||
}
|
|
||||||
|
|
@ -1,15 +0,0 @@ |
|||||||
--- a/net/mac80211/iface.c
|
|
||||||
+++ b/net/mac80211/iface.c
|
|
||||||
@@ -690,10 +690,10 @@ static u16 ieee80211_monitor_select_queu
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
if (skb->len < 4 ||
|
|
||||||
- skb->len < rtap->it_len + 2 /* frame control */)
|
|
||||||
+ skb->len < le16_to_cpu(rtap->it_len) + 2 /* frame control */)
|
|
||||||
return 0; /* doesn't matter, frame will be dropped */
|
|
||||||
|
|
||||||
- hdr = (void *)((u8 *)skb->data + rtap->it_len);
|
|
||||||
+ hdr = (void *)((u8 *)skb->data + le16_to_cpu(rtap->it_len));
|
|
||||||
|
|
||||||
if (!ieee80211_is_data(hdr->frame_control)) {
|
|
||||||
skb->priority = 7;
|
|
@ -1,26 +0,0 @@ |
|||||||
--- a/net/mac80211/iface.c
|
|
||||||
+++ b/net/mac80211/iface.c
|
|
||||||
@@ -685,6 +685,7 @@ static u16 ieee80211_monitor_select_queu
|
|
||||||
struct ieee80211_local *local = sdata->local;
|
|
||||||
struct ieee80211_hdr *hdr;
|
|
||||||
struct ieee80211_radiotap_header *rtap = (void *)skb->data;
|
|
||||||
+ u8 *p;
|
|
||||||
|
|
||||||
if (local->hw.queues < 4)
|
|
||||||
return 0;
|
|
||||||
@@ -695,11 +696,14 @@ static u16 ieee80211_monitor_select_queu
|
|
||||||
|
|
||||||
hdr = (void *)((u8 *)skb->data + le16_to_cpu(rtap->it_len));
|
|
||||||
|
|
||||||
- if (!ieee80211_is_data(hdr->frame_control)) {
|
|
||||||
+ if (!ieee80211_is_data_qos(hdr->frame_control)) {
|
|
||||||
skb->priority = 7;
|
|
||||||
return ieee802_1d_to_ac[skb->priority];
|
|
||||||
}
|
|
||||||
|
|
||||||
+ p = ieee80211_get_qos_ctl(hdr);
|
|
||||||
+ skb->priority = *p & IEEE80211_QOS_CTL_TAG1D_MASK;
|
|
||||||
+
|
|
||||||
return ieee80211_downgrade_queue(local, skb);
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in new issue