mirror of https://github.com/hak5/openwrt.git
mac80211: merge some further fixes to the queue stop patch
SVN-Revision: 19056lede-17.01
parent
d2ff313775
commit
23f08317be
|
@ -15,6 +15,24 @@
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DOC: Interface list locking
|
* DOC: Interface list locking
|
||||||
|
@@ -314,7 +316,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:
|
||||||
|
@@ -343,7 +345,7 @@ static int ieee80211_stop(struct net_dev
|
||||||
|
/*
|
||||||
|
* Stop TX on this interface first.
|
||||||
|
*/
|
||||||
|
- netif_stop_queue(dev);
|
||||||
|
+ netif_tx_stop_all_queues(dev);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Now delete all active aggregation sessions.
|
||||||
@@ -644,6 +646,37 @@ static void ieee80211_teardown_sdata(str
|
@@ -644,6 +646,37 @@ static void ieee80211_teardown_sdata(str
|
||||||
WARN_ON(flushed);
|
WARN_ON(flushed);
|
||||||
}
|
}
|
||||||
|
@ -57,7 +75,7 @@
|
||||||
.ndo_set_multicast_list = ieee80211_set_multicast_list,
|
.ndo_set_multicast_list = ieee80211_set_multicast_list,
|
||||||
.ndo_change_mtu = ieee80211_change_mtu,
|
.ndo_change_mtu = ieee80211_change_mtu,
|
||||||
.ndo_set_mac_address = eth_mac_addr,
|
.ndo_set_mac_address = eth_mac_addr,
|
||||||
+ .ndo_select_queue = ieee80211_monitor_select_queue,
|
+ .ndo_select_queue = ieee80211_netdev_select_queue,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct net_device_ops ieee80211_monitorif_ops = {
|
static const struct net_device_ops ieee80211_monitorif_ops = {
|
||||||
|
@ -237,7 +255,7 @@
|
||||||
- if (0 /* injected */) {
|
- if (0 /* injected */) {
|
||||||
- /* use AC from radiotap */
|
- /* use AC from radiotap */
|
||||||
+ if (!sta && ra && !is_multicast_ether_addr(ra)) {
|
+ if (!sta && ra && !is_multicast_ether_addr(ra)) {
|
||||||
+ sta = sta_info_get(sdata, ra);
|
+ sta = sta_info_get(sdata->local, ra);
|
||||||
+ if (sta)
|
+ if (sta)
|
||||||
+ sta_flags = get_sta_flags(sta);
|
+ sta_flags = get_sta_flags(sta);
|
||||||
}
|
}
|
||||||
|
@ -320,3 +338,43 @@
|
||||||
+
|
+
|
||||||
|
|
||||||
#endif /* _WME_H */
|
#endif /* _WME_H */
|
||||||
|
--- a/net/mac80211/mlme.c
|
||||||
|
+++ b/net/mac80211/mlme.c
|
||||||
|
@@ -934,7 +934,7 @@ static void ieee80211_set_associated(str
|
||||||
|
ieee80211_recalc_ps(local, -1);
|
||||||
|
mutex_unlock(&local->iflist_mtx);
|
||||||
|
|
||||||
|
- netif_start_queue(sdata->dev);
|
||||||
|
+ netif_tx_start_all_queues(sdata->dev);
|
||||||
|
netif_carrier_on(sdata->dev);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -1066,7 +1066,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/scan.c
|
||||||
|
+++ b/net/mac80211/scan.c
|
||||||
|
@@ -399,7 +399,7 @@ static int ieee80211_start_sw_scan(struc
|
||||||
|
* are handled in the scan state machine
|
||||||
|
*/
|
||||||
|
if (sdata->vif.type != NL80211_IFTYPE_STATION)
|
||||||
|
- netif_stop_queue(sdata->dev);
|
||||||
|
+ netif_tx_stop_all_queues(sdata->dev);
|
||||||
|
}
|
||||||
|
mutex_unlock(&local->iflist_mtx);
|
||||||
|
|
||||||
|
@@ -563,7 +563,7 @@ static void ieee80211_scan_state_leave_o
|
||||||
|
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_scan_ps_enable(sdata);
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue