lkml.org 
[lkml]   [2019]   [Feb]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.19 187/313] iwlwifi: mvm: fix setting HE ppe FW config
    Date
    4.19-stable review patch.  If anyone has any objections, please let me know.

    ------------------

    [ Upstream commit 189b8d441b0f7825f0b4278851c52afaa0515ed2 ]

    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: 514c30696fbc ("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>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/wireless/intel/iwlwifi/fw/api/mac.h | 2 +-
    drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c | 8 +++++++-
    2 files changed, 8 insertions(+), 2 deletions(-)

    diff --git a/drivers/net/wireless/intel/iwlwifi/fw/api/mac.h b/drivers/net/wireless/intel/iwlwifi/fw/api/mac.h
    index 55594c93b014..47dbd2d3e3b4 100644
    --- a/drivers/net/wireless/intel/iwlwifi/fw/api/mac.h
    +++ b/drivers/net/wireless/intel/iwlwifi/fw/api/mac.h
    @@ -442,7 +442,7 @@ struct iwl_he_backoff_conf {
    * Support for Nss x BW (or RU) matrix:
    * (0=SISO, 1=MIMO2) x (0-20MHz, 1-40MHz, 2-80MHz, 3-160MHz)
    * 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:
    * QAM_tx < QAM_th1 --> PPE=0us
    * QAM_th1 <= QAM_tx < QAM_th2 --> PPE=8us
    diff --git a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
    index 9a764af30f36..0f357e8c4f94 100644
    --- a/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
    +++ b/drivers/net/wireless/intel/iwlwifi/mvm/mac80211.c
    @@ -1997,7 +1997,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)
    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] &
    IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) {
    u8 nss = (sta->he_cap.ppe_thres[0] &
    --
    2.19.1


    \
     
     \ /
      Last update: 2019-02-11 16:42    [W:3.502 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site