mac80211: allow the driver not to pass the tid to ieee80211_sta_uapsd_trigger
iwlwifi will check internally that the tid maps to an AC that is trigger enabled, but can't know what tid exactly. Allow the driver to pass a generic tid and make mac80211 assume that a trigger frame was received. Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@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:
Родитель
b473b8f12a
Коммит
0aa419ec6e
|
@ -4087,6 +4087,10 @@ void ieee80211_sta_pspoll(struct ieee80211_sta *sta);
|
||||||
* This must be used in conjunction with ieee80211_sta_ps_transition()
|
* This must be used in conjunction with ieee80211_sta_ps_transition()
|
||||||
* and possibly ieee80211_sta_pspoll(); calls to all three must be
|
* and possibly ieee80211_sta_pspoll(); calls to all three must be
|
||||||
* serialized.
|
* serialized.
|
||||||
|
* %IEEE80211_NUM_TIDS can be passed as the tid if the tid is unknown.
|
||||||
|
* In this case, mac80211 will not check that this tid maps to an AC
|
||||||
|
* that is trigger enabled and assume that the caller did the proper
|
||||||
|
* checks.
|
||||||
*/
|
*/
|
||||||
void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid);
|
void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *sta, u8 tid);
|
||||||
|
|
||||||
|
|
|
@ -1394,13 +1394,14 @@ void ieee80211_sta_uapsd_trigger(struct ieee80211_sta *pubsta, u8 tid)
|
||||||
u8 ac = ieee802_1d_to_ac[tid & 7];
|
u8 ac = ieee802_1d_to_ac[tid & 7];
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* If this AC is not trigger-enabled do nothing.
|
* If this AC is not trigger-enabled do nothing unless the
|
||||||
|
* driver is calling us after it already checked.
|
||||||
*
|
*
|
||||||
* NB: This could/should check a separate bitmap of trigger-
|
* NB: This could/should check a separate bitmap of trigger-
|
||||||
* enabled queues, but for now we only implement uAPSD w/o
|
* enabled queues, but for now we only implement uAPSD w/o
|
||||||
* TSPEC changes to the ACs, so they're always the same.
|
* TSPEC changes to the ACs, so they're always the same.
|
||||||
*/
|
*/
|
||||||
if (!(sta->sta.uapsd_queues & BIT(ac)))
|
if (!(sta->sta.uapsd_queues & BIT(ac)) && tid != IEEE80211_NUM_TIDS)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* if we are in a service period, do nothing */
|
/* if we are in a service period, do nothing */
|
||||||
|
|
Загрузка…
Ссылка в новой задаче