iwlwifi: mvm: fix setting HE ppe FW config
The FW expects to get the ppe value for each NSS-BW pair in the same
format as in the he phy capabilities IE, which means that a value of 0
implies ppe should be used for BPSK (mcs 0). If there are no PPE
thresholds in the IE, or if for some NSS-RU pair there's no threshold
set for it (this could happen because it's a variable-sized field), it
means no PPE should not be used for that pair, so the value sent to FW
should be 7 which corresponds to "none".
Fixes: 514c30696f
("iwlwifi: add support for IEEE802.11ax")
Signed-off-by: Naftali Goldstein <naftali.goldstein@intel.com>
Signed-off-by: Luca Coelho <luciano.coelho@intel.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
This commit is contained in:
parent
4120e4a119
commit
189b8d441b
|
@ -443,7 +443,7 @@ struct iwl_he_backoff_conf {
|
||||||
* Support for Nss x BW (or RU) matrix:
|
* Support for Nss x BW (or RU) matrix:
|
||||||
* (0=SISO, 1=MIMO2) x (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz)
|
* (0=SISO, 1=MIMO2) x (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz)
|
||||||
* Each entry contains 2 QAM thresholds for 8us and 16us:
|
* Each entry contains 2 QAM thresholds for 8us and 16us:
|
||||||
* 0=BPSK, 1=QPSK, 2=16QAM, 3=64QAM, 4=256QAM, 5=1024QAM, 6/7=RES
|
* 0=BPSK, 1=QPSK, 2=16QAM, 3=64QAM, 4=256QAM, 5=1024QAM, 6=RES, 7=NONE
|
||||||
* i.e. QAM_th1 < QAM_th2 such if TX uses QAM_tx:
|
* i.e. QAM_th1 < QAM_th2 such if TX uses QAM_tx:
|
||||||
* QAM_tx < QAM_th1 --> PPE=0us
|
* QAM_tx < QAM_th1 --> PPE=0us
|
||||||
* QAM_th1 <= QAM_tx < QAM_th2 --> PPE=8us
|
* QAM_th1 <= QAM_tx < QAM_th2 --> PPE=8us
|
||||||
|
|
|
@ -2023,7 +2023,13 @@ static void iwl_mvm_cfg_he_sta(struct iwl_mvm *mvm,
|
||||||
if (sta->he_cap.he_cap_elem.mac_cap_info[4] & IEEE80211_HE_MAC_CAP4_BQR)
|
if (sta->he_cap.he_cap_elem.mac_cap_info[4] & IEEE80211_HE_MAC_CAP4_BQR)
|
||||||
sta_ctxt_cmd.htc_flags |= cpu_to_le32(IWL_HE_HTC_BQR_SUPP);
|
sta_ctxt_cmd.htc_flags |= cpu_to_le32(IWL_HE_HTC_BQR_SUPP);
|
||||||
|
|
||||||
/* If PPE Thresholds exist, parse them into a FW-familiar format */
|
/*
|
||||||
|
* Initialize the PPE thresholds to "None" (7), as described in Table
|
||||||
|
* 9-262ac of 80211.ax/D3.0.
|
||||||
|
*/
|
||||||
|
memset(&sta_ctxt_cmd.pkt_ext, 7, sizeof(sta_ctxt_cmd.pkt_ext));
|
||||||
|
|
||||||
|
/* If PPE Thresholds exist, parse them into a FW-familiar format. */
|
||||||
if (sta->he_cap.he_cap_elem.phy_cap_info[6] &
|
if (sta->he_cap.he_cap_elem.phy_cap_info[6] &
|
||||||
IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) {
|
IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) {
|
||||||
u8 nss = (sta->he_cap.ppe_thres[0] &
|
u8 nss = (sta->he_cap.ppe_thres[0] &
|
||||||
|
|
Loading…
Reference in New Issue