mac80211: add an option for station management TXQ
We have a TXQ abstraction for non-data packets that need powersave buffering. Since the AP cannot sleep, in case of station we can use this TXQ for all management frames, regardless if they are bufferable. Add HW flag to allow that. Signed-off-by: Sara Sharon <sara.sharon@intel.com> Signed-off-by: Luca Coelho <luciano.coelho@intel.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Šī revīzija ir iekļauta:

revīziju iesūtīja
Johannes Berg

vecāks
add7453ad6
revīzija
0eeb2b674f
@@ -217,6 +217,7 @@ static const char *hw_flag_names[] = {
|
||||
FLAG(DOESNT_SUPPORT_QOS_NDP),
|
||||
FLAG(BUFF_MMPDU_TXQ),
|
||||
FLAG(SUPPORTS_VHT_EXT_NSS_BW),
|
||||
FLAG(STA_MMPDU_TXQ),
|
||||
#undef FLAG
|
||||
};
|
||||
|
||||
|
@@ -1251,7 +1251,8 @@ static struct txq_info *ieee80211_get_txq(struct ieee80211_local *local,
|
||||
|
||||
if (unlikely(!ieee80211_is_data_present(hdr->frame_control))) {
|
||||
if ((!ieee80211_is_mgmt(hdr->frame_control) ||
|
||||
ieee80211_is_bufferable_mmpdu(hdr->frame_control)) &&
|
||||
ieee80211_is_bufferable_mmpdu(hdr->frame_control) ||
|
||||
vif->type == NL80211_IFTYPE_STATION) &&
|
||||
sta && sta->uploaded) {
|
||||
/*
|
||||
* This will be NULL if the driver didn't set the
|
||||
@@ -1456,9 +1457,16 @@ void ieee80211_txq_init(struct ieee80211_sub_if_data *sdata,
|
||||
}
|
||||
|
||||
if (tid == IEEE80211_NUM_TIDS) {
|
||||
/* Drivers need to opt in to the bufferable MMPDU TXQ */
|
||||
if (!ieee80211_hw_check(&sdata->local->hw, BUFF_MMPDU_TXQ))
|
||||
if (sdata->vif.type == NL80211_IFTYPE_STATION) {
|
||||
/* Drivers need to opt in to the management MPDU TXQ */
|
||||
if (!ieee80211_hw_check(&sdata->local->hw,
|
||||
STA_MMPDU_TXQ))
|
||||
return;
|
||||
} else if (!ieee80211_hw_check(&sdata->local->hw,
|
||||
BUFF_MMPDU_TXQ)) {
|
||||
/* Drivers need to opt in to the bufferable MMPDU TXQ */
|
||||
return;
|
||||
}
|
||||
txqi->txq.ac = IEEE80211_AC_VO;
|
||||
} else {
|
||||
txqi->txq.ac = ieee80211_ac_from_tid(tid);
|
||||
|
Atsaukties uz šo jaunā problēmā
Block a user