mac80211: let flush() drop packets when possible
When roaming / suspending, it makes no sense to wait until the transmit queues of the device are empty. In extreme condition they can be starved (VO saturating the air), but even in regular cases, it is pointless to delay the roaming because the low level driver is trying to send packets to an AP which is far away. We'd rather drop these packets and let TCP retransmit if needed. This will allow to speed up the roaming. For suspend, the explanation is even more trivial. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
0efbb786f1
commit
3b24f4c653
@@ -578,7 +578,7 @@ ieee80211_get_vif_queues(struct ieee80211_local *local,
|
||||
|
||||
void __ieee80211_flush_queues(struct ieee80211_local *local,
|
||||
struct ieee80211_sub_if_data *sdata,
|
||||
unsigned int queues)
|
||||
unsigned int queues, bool drop)
|
||||
{
|
||||
if (!local->ops->flush)
|
||||
return;
|
||||
@@ -594,7 +594,7 @@ void __ieee80211_flush_queues(struct ieee80211_local *local,
|
||||
IEEE80211_QUEUE_STOP_REASON_FLUSH,
|
||||
false);
|
||||
|
||||
drv_flush(local, sdata, queues, false);
|
||||
drv_flush(local, sdata, queues, drop);
|
||||
|
||||
ieee80211_wake_queues_by_reason(&local->hw, queues,
|
||||
IEEE80211_QUEUE_STOP_REASON_FLUSH,
|
||||
@@ -602,9 +602,9 @@ void __ieee80211_flush_queues(struct ieee80211_local *local,
|
||||
}
|
||||
|
||||
void ieee80211_flush_queues(struct ieee80211_local *local,
|
||||
struct ieee80211_sub_if_data *sdata)
|
||||
struct ieee80211_sub_if_data *sdata, bool drop)
|
||||
{
|
||||
__ieee80211_flush_queues(local, sdata, 0);
|
||||
__ieee80211_flush_queues(local, sdata, 0, drop);
|
||||
}
|
||||
|
||||
void ieee80211_stop_vif_queues(struct ieee80211_local *local,
|
||||
|
||||
Reference in New Issue
Block a user