mac80211: Don't wake up from PS for offchannel TX
Otherwise the offchannel frame might be queued due to IEEE80211_QUEUE_STOP_REASON_PS and later dropped (in ieee80211_tx_frags()). Anyway, it doesn't make much sense to wake up the device during ROC. Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
8682250b3c
commit
94a5b3acd0
|
@ -214,6 +214,7 @@ ieee80211_tx_h_dynamic_ps(struct ieee80211_tx_data *tx)
|
|||
{
|
||||
struct ieee80211_local *local = tx->local;
|
||||
struct ieee80211_if_managed *ifmgd;
|
||||
struct ieee80211_tx_info *info = IEEE80211_SKB_CB(tx->skb);
|
||||
|
||||
/* driver doesn't support power save */
|
||||
if (!ieee80211_hw_check(&local->hw, SUPPORTS_PS))
|
||||
|
@ -242,6 +243,9 @@ ieee80211_tx_h_dynamic_ps(struct ieee80211_tx_data *tx)
|
|||
if (tx->sdata->vif.type != NL80211_IFTYPE_STATION)
|
||||
return TX_CONTINUE;
|
||||
|
||||
if (unlikely(info->flags & IEEE80211_TX_INTFL_OFFCHAN_TX_OK))
|
||||
return TX_CONTINUE;
|
||||
|
||||
ifmgd = &tx->sdata->u.mgd;
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue