mac80211: fix tim recalculation after PS response
Handle the case where the mac80211 intermediate queues are empty and the driver has buffered frames Fixes: ba8c3d6f16a1 ("mac80211: add an intermediate software queue implementation") Signed-off-by: Felix Fietkau <nbd@nbd.name> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
committed by
Johannes Berg
parent
15543692a0
commit
83843c80dc
@ -1616,7 +1616,6 @@ ieee80211_sta_ps_deliver_response(struct sta_info *sta,
|
|||||||
|
|
||||||
sta_info_recalc_tim(sta);
|
sta_info_recalc_tim(sta);
|
||||||
} else {
|
} else {
|
||||||
unsigned long tids = sta->txq_buffered_tids & driver_release_tids;
|
|
||||||
int tid;
|
int tid;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -1648,7 +1647,8 @@ ieee80211_sta_ps_deliver_response(struct sta_info *sta,
|
|||||||
for (tid = 0; tid < ARRAY_SIZE(sta->sta.txq); tid++) {
|
for (tid = 0; tid < ARRAY_SIZE(sta->sta.txq); tid++) {
|
||||||
struct txq_info *txqi = to_txq_info(sta->sta.txq[tid]);
|
struct txq_info *txqi = to_txq_info(sta->sta.txq[tid]);
|
||||||
|
|
||||||
if (!(tids & BIT(tid)) || txqi->tin.backlog_packets)
|
if (!(driver_release_tids & BIT(tid)) ||
|
||||||
|
txqi->tin.backlog_packets)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
sta_info_recalc_tim(sta);
|
sta_info_recalc_tim(sta);
|
||||||
|
Reference in New Issue
Block a user