LinuxKPI: 802.11: disable early queue wakeup workaround; better classify
We used to call lkpi_wake_tx_queues() for all queues early on in order to make sure they are ready. Turns out whatever logic in iwlwifi startup is working correctly these days under LinuxKPI so this is no longer needed. As the comment indicated the "workaround" did not always work. Disable it for now. The second part of the improvement is to properly classify Non-QOS non-data frames (mgmt and ctl frames for now, unless we have to be even more careful in the future about certain sub-types) as TID 7/VO. Contrary to net80211 we must not promote PAE frames. PR: 274382 MFC after: 3 day Reviewed by: cc Differential Revision: https://reviews.freebsd.org/D43944
This commit is contained in:
@@ -1311,6 +1311,7 @@ lkpi_sta_scan_to_auth(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
|
||||
lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
|
||||
|
||||
#if 0
|
||||
/*
|
||||
* Wakeup all queues now that sta is there so we have as much time to
|
||||
* possibly prepare the queue in the driver to be ready for the 1st
|
||||
@@ -1320,6 +1321,7 @@ lkpi_sta_scan_to_auth(struct ieee80211vap *vap, enum ieee80211_state nstate, int
|
||||
* for all queues.
|
||||
*/
|
||||
lkpi_wake_tx_queues(hw, LSTA_TO_STA(lsta), false, false);
|
||||
#endif
|
||||
|
||||
/* Start mgd_prepare_tx. */
|
||||
memset(&prep_tx_info, 0, sizeof(prep_tx_info));
|
||||
@@ -3669,8 +3671,16 @@ lkpi_80211_txq_tx_one(struct lkpi_sta *lsta, struct mbuf *m)
|
||||
hdr = (void *)skb->data;
|
||||
tid = linuxkpi_ieee80211_get_tid(hdr, true);
|
||||
if (tid == IEEE80211_NONQOS_TID) { /* == IEEE80211_NUM_TIDS */
|
||||
skb->priority = 0;
|
||||
ac = IEEE80211_AC_BE;
|
||||
if (!ieee80211_is_data(hdr->frame_control)) {
|
||||
/* MGMT and CTRL frames go on TID 7/VO. */
|
||||
skb->priority = 7;
|
||||
ac = IEEE80211_AC_VO;
|
||||
} else {
|
||||
/* Other non-QOS traffic goes to BE. */
|
||||
/* Contrary to net80211 we MUST NOT promote M_EAPOL. */
|
||||
skb->priority = 0;
|
||||
ac = IEEE80211_AC_BE;
|
||||
}
|
||||
} else {
|
||||
skb->priority = tid & IEEE80211_QOS_CTL_TID_MASK;
|
||||
ac = ieee80211e_up_to_ac[tid & 7];
|
||||
|
||||
Reference in New Issue
Block a user