CC: [email protected]
BCC: [email protected]
CC: [email protected]
TO: Wen Gong <[email protected]>
CC: Kalle Valo <[email protected]>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 
master
head:   952923ddc01120190dcf671e7b354364ce1d1362
commit: 3db26ecf7114370e451e296e33a0af3303d32819 ath11k: calculate the correct 
NSS of peer for HE capabilities
date:   7 months ago
:::::: branch date: 15 hours ago
:::::: commit date: 7 months ago
config: microblaze-randconfig-m031-20220605 
(https://download.01.org/0day-ci/archive/20220606/[email protected]/config)
compiler: microblaze-linux-gcc (GCC) 11.3.0

If you fix the issue, kindly add following tag where applicable
Reported-by: kernel test robot <[email protected]>
Reported-by: Dan Carpenter <[email protected]>

New smatch warnings:
drivers/net/wireless/ath/ath11k/mac.c:1975 ath11k_peer_assoc_h_he() error: 
uninitialized symbol 'rx_mcs_80'.
drivers/net/wireless/ath/ath11k/mac.c:1975 ath11k_peer_assoc_h_he() error: 
uninitialized symbol 'rx_mcs_160'.

Old smatch warnings:
drivers/net/wireless/ath/ath11k/mac.c:1977 ath11k_peer_assoc_h_he() error: 
uninitialized symbol 'rx_mcs_80'.

vim +/rx_mcs_80 +1975 drivers/net/wireless/ath/ath11k/mac.c

61fe43e7216df6 Miles Hu            2021-09-24  1914  
d5c65159f28953 Kalle Valo          2019-11-23  1915  static void 
ath11k_peer_assoc_h_he(struct ath11k *ar,
d5c65159f28953 Kalle Valo          2019-11-23  1916                             
   struct ieee80211_vif *vif,
d5c65159f28953 Kalle Valo          2019-11-23  1917                             
   struct ieee80211_sta *sta,
d5c65159f28953 Kalle Valo          2019-11-23  1918                             
   struct peer_assoc_params *arg)
d5c65159f28953 Kalle Valo          2019-11-23  1919  {
61fe43e7216df6 Miles Hu            2021-09-24  1920     struct ath11k_vif 
*arvif = (void *)vif->drv_priv;
61fe43e7216df6 Miles Hu            2021-09-24  1921     struct 
cfg80211_chan_def def;
9f056ed8ee01ad John Crispin        2019-11-25  1922     const struct 
ieee80211_sta_he_cap *he_cap = &sta->he_cap;
61fe43e7216df6 Miles Hu            2021-09-24  1923     enum nl80211_band band;
61fe43e7216df6 Miles Hu            2021-09-24  1924     u16 *he_mcs_mask;
61fe43e7216df6 Miles Hu            2021-09-24  1925     u8 max_nss, he_mcs;
61fe43e7216df6 Miles Hu            2021-09-24  1926     u16 he_tx_mcs = 0, v = 
0;
61fe43e7216df6 Miles Hu            2021-09-24  1927     int i, he_nss, nss_idx;
61fe43e7216df6 Miles Hu            2021-09-24  1928     bool user_rate_valid = 
true;
f552d6fd2f27ce P Praneesh          2021-09-24  1929     u32 rx_nss, tx_nss, 
nss_160;
3db26ecf711437 Wen Gong            2021-11-22  1930     u8 ampdu_factor, 
rx_mcs_80, rx_mcs_160;
3db26ecf711437 Wen Gong            2021-11-22  1931     u16 mcs_160_map, 
mcs_80_map;
3db26ecf711437 Wen Gong            2021-11-22  1932     bool support_160;
61fe43e7216df6 Miles Hu            2021-09-24  1933  
61fe43e7216df6 Miles Hu            2021-09-24  1934     if 
(WARN_ON(ath11k_mac_vif_chan(vif, &def)))
61fe43e7216df6 Miles Hu            2021-09-24  1935             return;
9f056ed8ee01ad John Crispin        2019-11-25  1936  
9f056ed8ee01ad John Crispin        2019-11-25  1937     if (!he_cap->has_he)
9f056ed8ee01ad John Crispin        2019-11-25  1938             return;
9f056ed8ee01ad John Crispin        2019-11-25  1939  
61fe43e7216df6 Miles Hu            2021-09-24  1940     band = def.chan->band;
61fe43e7216df6 Miles Hu            2021-09-24  1941     he_mcs_mask = 
arvif->bitrate_mask.control[band].he_mcs;
61fe43e7216df6 Miles Hu            2021-09-24  1942  
61fe43e7216df6 Miles Hu            2021-09-24  1943     if 
(ath11k_peer_assoc_h_he_masked(he_mcs_mask))
61fe43e7216df6 Miles Hu            2021-09-24  1944             return;
61fe43e7216df6 Miles Hu            2021-09-24  1945  
9f056ed8ee01ad John Crispin        2019-11-25  1946     arg->he_flag = true;
3db26ecf711437 Wen Gong            2021-11-22  1947     support_160 = 
!!(he_cap->he_cap_elem.phy_cap_info[0] &
3db26ecf711437 Wen Gong            2021-11-22  1948               
IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_160MHZ_IN_5G);
3db26ecf711437 Wen Gong            2021-11-22  1949  
3db26ecf711437 Wen Gong            2021-11-22  1950     /* Supported HE-MCS and 
NSS Set of peer he_cap is intersection with self he_cp */
3db26ecf711437 Wen Gong            2021-11-22  1951     mcs_160_map = 
le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
3db26ecf711437 Wen Gong            2021-11-22  1952     mcs_80_map = 
le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80);
3db26ecf711437 Wen Gong            2021-11-22  1953  
3db26ecf711437 Wen Gong            2021-11-22  1954     if (support_160) {
3db26ecf711437 Wen Gong            2021-11-22  1955             for (i = 7; i 
>= 0; i--) {
3db26ecf711437 Wen Gong            2021-11-22  1956                     u8 
mcs_160 = (mcs_160_map >> (2 * i)) & 3;
3db26ecf711437 Wen Gong            2021-11-22  1957  
3db26ecf711437 Wen Gong            2021-11-22  1958                     if 
(mcs_160 != IEEE80211_VHT_MCS_NOT_SUPPORTED) {
3db26ecf711437 Wen Gong            2021-11-22  1959                             
rx_mcs_160 = i + 1;
3db26ecf711437 Wen Gong            2021-11-22  1960                             
break;
3db26ecf711437 Wen Gong            2021-11-22  1961                     }
3db26ecf711437 Wen Gong            2021-11-22  1962             }
3db26ecf711437 Wen Gong            2021-11-22  1963     }
3db26ecf711437 Wen Gong            2021-11-22  1964  
3db26ecf711437 Wen Gong            2021-11-22  1965     for (i = 7; i >= 0; 
i--) {
3db26ecf711437 Wen Gong            2021-11-22  1966             u8 mcs_80 = 
(mcs_80_map >> (2 * i)) & 3;
3db26ecf711437 Wen Gong            2021-11-22  1967  
3db26ecf711437 Wen Gong            2021-11-22  1968             if (mcs_80 != 
IEEE80211_VHT_MCS_NOT_SUPPORTED) {
3db26ecf711437 Wen Gong            2021-11-22  1969                     
rx_mcs_80 = i + 1;
3db26ecf711437 Wen Gong            2021-11-22  1970                     break;
3db26ecf711437 Wen Gong            2021-11-22  1971             }
3db26ecf711437 Wen Gong            2021-11-22  1972     }
3db26ecf711437 Wen Gong            2021-11-22  1973  
3db26ecf711437 Wen Gong            2021-11-22  1974     if (support_160)
3db26ecf711437 Wen Gong            2021-11-22 @1975             max_nss = 
min(rx_mcs_80, rx_mcs_160);
3db26ecf711437 Wen Gong            2021-11-22  1976     else
3db26ecf711437 Wen Gong            2021-11-22  1977             max_nss = 
rx_mcs_80;
3db26ecf711437 Wen Gong            2021-11-22  1978  
3db26ecf711437 Wen Gong            2021-11-22  1979     arg->peer_nss = 
min(sta->rx_nss, max_nss);
9f056ed8ee01ad John Crispin        2019-11-25  1980  
c8bcd82a4efd05 Kees Cook           2021-06-16  1981     
memcpy_and_pad(&arg->peer_he_cap_macinfo,
c8bcd82a4efd05 Kees Cook           2021-06-16  1982                    
sizeof(arg->peer_he_cap_macinfo),
c8bcd82a4efd05 Kees Cook           2021-06-16  1983                    
he_cap->he_cap_elem.mac_cap_info,
c8bcd82a4efd05 Kees Cook           2021-06-16  1984                    
sizeof(he_cap->he_cap_elem.mac_cap_info),
c8bcd82a4efd05 Kees Cook           2021-06-16  1985                    0);
c8bcd82a4efd05 Kees Cook           2021-06-16  1986     
memcpy_and_pad(&arg->peer_he_cap_phyinfo,
c8bcd82a4efd05 Kees Cook           2021-06-16  1987                    
sizeof(arg->peer_he_cap_phyinfo),
c8bcd82a4efd05 Kees Cook           2021-06-16  1988                    
he_cap->he_cap_elem.phy_cap_info,
c8bcd82a4efd05 Kees Cook           2021-06-16  1989                    
sizeof(he_cap->he_cap_elem.phy_cap_info),
c8bcd82a4efd05 Kees Cook           2021-06-16  1990                    0);
60689de46c7f6a Rajkumar Manoharan  2020-04-24  1991     arg->peer_he_ops = 
vif->bss_conf.he_oper.params;
9f056ed8ee01ad John Crispin        2019-11-25  1992  
9f056ed8ee01ad John Crispin        2019-11-25  1993     /* the top most byte is 
used to indicate BSS color info */
9f056ed8ee01ad John Crispin        2019-11-25  1994     arg->peer_he_ops &= 
0xffffff;
9f056ed8ee01ad John Crispin        2019-11-25  1995  
af6d39db1b046a Tamizh Chelvam      2020-09-08  1996     /* As per section 
26.6.1 11ax Draft5.0, if the Max AMPDU Exponent Extension
af6d39db1b046a Tamizh Chelvam      2020-09-08  1997      * in HE cap is zero, 
use the arg->peer_max_mpdu as calculated while parsing
af6d39db1b046a Tamizh Chelvam      2020-09-08  1998      * VHT caps(if VHT caps 
is present) or HT caps (if VHT caps is not present).
af6d39db1b046a Tamizh Chelvam      2020-09-08  1999      *
af6d39db1b046a Tamizh Chelvam      2020-09-08  2000      * For non-zero value 
of Max AMPDU Extponent Extension in HE MAC caps,
af6d39db1b046a Tamizh Chelvam      2020-09-08  2001      * if a HE STA sends 
VHT cap and HE cap IE in assoc request then, use
af6d39db1b046a Tamizh Chelvam      2020-09-08  2002      * MAX_AMPDU_LEN_FACTOR 
as 20 to calculate max_ampdu length.
af6d39db1b046a Tamizh Chelvam      2020-09-08  2003      * If a HE STA that 
does not send VHT cap, but HE and HT cap in assoc
af6d39db1b046a Tamizh Chelvam      2020-09-08  2004      * request, then use 
MAX_AMPDU_LEN_FACTOR as 16 to calculate max_ampdu
af6d39db1b046a Tamizh Chelvam      2020-09-08  2005      * length.
af6d39db1b046a Tamizh Chelvam      2020-09-08  2006      */
1f851b8dfd76a0 Johannes Berg       2021-04-09  2007     ampdu_factor = 
u8_get_bits(he_cap->he_cap_elem.mac_cap_info[3],
1f851b8dfd76a0 Johannes Berg       2021-04-09  2008                             
   IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK);
af6d39db1b046a Tamizh Chelvam      2020-09-08  2009  
af6d39db1b046a Tamizh Chelvam      2020-09-08  2010     if (ampdu_factor) {
af6d39db1b046a Tamizh Chelvam      2020-09-08  2011             if 
(sta->vht_cap.vht_supported)
af6d39db1b046a Tamizh Chelvam      2020-09-08  2012                     
arg->peer_max_mpdu = (1 << (IEEE80211_HE_VHT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam      2020-09-08  2013                             
                    ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam      2020-09-08  2014             else if 
(sta->ht_cap.ht_supported)
af6d39db1b046a Tamizh Chelvam      2020-09-08  2015                     
arg->peer_max_mpdu = (1 << (IEEE80211_HE_HT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam      2020-09-08  2016                             
                    ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam      2020-09-08  2017     }
af6d39db1b046a Tamizh Chelvam      2020-09-08  2018  
9f056ed8ee01ad John Crispin        2019-11-25  2019     if 
(he_cap->he_cap_elem.phy_cap_info[6] &
9f056ed8ee01ad John Crispin        2019-11-25  2020         
IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) {
9f056ed8ee01ad John Crispin        2019-11-25  2021             int bit = 7;
9f056ed8ee01ad John Crispin        2019-11-25  2022             int nss, ru;
9f056ed8ee01ad John Crispin        2019-11-25  2023  
9f056ed8ee01ad John Crispin        2019-11-25  2024             
arg->peer_ppet.numss_m1 = he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin        2019-11-25  2025                             
          IEEE80211_PPE_THRES_NSS_MASK;
9f056ed8ee01ad John Crispin        2019-11-25  2026             
arg->peer_ppet.ru_bit_mask =
9f056ed8ee01ad John Crispin        2019-11-25  2027                     
(he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin        2019-11-25  2028                      
IEEE80211_PPE_THRES_RU_INDEX_BITMASK_MASK) >>
9f056ed8ee01ad John Crispin        2019-11-25  2029                     
IEEE80211_PPE_THRES_RU_INDEX_BITMASK_POS;
9f056ed8ee01ad John Crispin        2019-11-25  2030  
9f056ed8ee01ad John Crispin        2019-11-25  2031             for (nss = 0; 
nss <= arg->peer_ppet.numss_m1; nss++) {
9f056ed8ee01ad John Crispin        2019-11-25  2032                     for (ru 
= 0; ru < 4; ru++) {
9f056ed8ee01ad John Crispin        2019-11-25  2033                             
u32 val = 0;
9f056ed8ee01ad John Crispin        2019-11-25  2034                             
int i;
9f056ed8ee01ad John Crispin        2019-11-25  2035  
9f056ed8ee01ad John Crispin        2019-11-25  2036                             
if ((arg->peer_ppet.ru_bit_mask & BIT(ru)) == 0)
9f056ed8ee01ad John Crispin        2019-11-25  2037                             
        continue;
9f056ed8ee01ad John Crispin        2019-11-25  2038                             
for (i = 0; i < 6; i++) {
9f056ed8ee01ad John Crispin        2019-11-25  2039                             
        val >>= 1;
9f056ed8ee01ad John Crispin        2019-11-25  2040                             
        val |= ((he_cap->ppe_thres[bit / 8] >>
9f056ed8ee01ad John Crispin        2019-11-25  2041                             
                 (bit % 8)) & 0x1) << 5;
9f056ed8ee01ad John Crispin        2019-11-25  2042                             
        bit++;
9f056ed8ee01ad John Crispin        2019-11-25  2043                             
}
9f056ed8ee01ad John Crispin        2019-11-25  2044                             
arg->peer_ppet.ppet16_ppet8_ru3_ru0[nss] |=
9f056ed8ee01ad John Crispin        2019-11-25  2045                             
                                val << (ru * 6);
9f056ed8ee01ad John Crispin        2019-11-25  2046                     }
9f056ed8ee01ad John Crispin        2019-11-25  2047             }
9f056ed8ee01ad John Crispin        2019-11-25  2048     }
9f056ed8ee01ad John Crispin        2019-11-25  2049  
6d293d447670da John Crispin        2019-11-25  2050     if 
(he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_RES)
6d293d447670da John Crispin        2019-11-25  2051             
arg->twt_responder = true;
6d293d447670da John Crispin        2019-11-25  2052     if 
(he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_REQ)
6d293d447670da John Crispin        2019-11-25  2053             
arg->twt_requester = true;
6d293d447670da John Crispin        2019-11-25  2054  
61fe43e7216df6 Miles Hu            2021-09-24  2055     he_nss =  
ath11k_mac_max_he_nss(he_mcs_mask);
61fe43e7216df6 Miles Hu            2021-09-24  2056  
61fe43e7216df6 Miles Hu            2021-09-24  2057     if (he_nss > 
sta->rx_nss) {
61fe43e7216df6 Miles Hu            2021-09-24  2058             user_rate_valid 
= false;
61fe43e7216df6 Miles Hu            2021-09-24  2059             for (nss_idx = 
sta->rx_nss - 1; nss_idx >= 0; nss_idx--) {
61fe43e7216df6 Miles Hu            2021-09-24  2060                     if 
(he_mcs_mask[nss_idx]) {
61fe43e7216df6 Miles Hu            2021-09-24  2061                             
user_rate_valid = true;
61fe43e7216df6 Miles Hu            2021-09-24  2062                             
break;
61fe43e7216df6 Miles Hu            2021-09-24  2063                     }
61fe43e7216df6 Miles Hu            2021-09-24  2064             }
61fe43e7216df6 Miles Hu            2021-09-24  2065     }
61fe43e7216df6 Miles Hu            2021-09-24  2066  
61fe43e7216df6 Miles Hu            2021-09-24  2067     if (!user_rate_valid) {
61fe43e7216df6 Miles Hu            2021-09-24  2068             
ath11k_dbg(ar->ab, ATH11K_DBG_MAC, "mac setting he range mcs value to peer 
supported nss %d for peer %pM\n",
61fe43e7216df6 Miles Hu            2021-09-24  2069                        
sta->rx_nss, sta->addr);
61fe43e7216df6 Miles Hu            2021-09-24  2070             
he_mcs_mask[sta->rx_nss - 1] = he_mcs_mask[he_nss - 1];
61fe43e7216df6 Miles Hu            2021-09-24  2071     }
61fe43e7216df6 Miles Hu            2021-09-24  2072  
9f056ed8ee01ad John Crispin        2019-11-25  2073     switch (sta->bandwidth) 
{
9f056ed8ee01ad John Crispin        2019-11-25  2074     case 
IEEE80211_STA_RX_BW_160:
9f056ed8ee01ad John Crispin        2019-11-25  2075             if 
(he_cap->he_cap_elem.phy_cap_info[0] &
9f056ed8ee01ad John Crispin        2019-11-25  2076                 
IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G) {
9f056ed8ee01ad John Crispin        2019-11-25  2077                     v = 
le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80p80);
61fe43e7216df6 Miles Hu            2021-09-24  2078                     v = 
ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin        2019-11-25  2079                     
arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin        2019-11-25  2080  
9f056ed8ee01ad John Crispin        2019-11-25  2081                     v = 
le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80p80);
9f056ed8ee01ad John Crispin        2019-11-25  2082                     
arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin        2019-11-25  2083  
9f056ed8ee01ad John Crispin        2019-11-25  2084                     
arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu            2021-09-24  2085                     
he_tx_mcs = v;
9f056ed8ee01ad John Crispin        2019-11-25  2086             }
9f056ed8ee01ad John Crispin        2019-11-25  2087             v = 
le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
9f056ed8ee01ad John Crispin        2019-11-25  2088             
arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin        2019-11-25  2089  
9f056ed8ee01ad John Crispin        2019-11-25  2090             v = 
le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_160);
61fe43e7216df6 Miles Hu            2021-09-24  2091             v = 
ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin        2019-11-25  2092             
arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin        2019-11-25  2093  
9f056ed8ee01ad John Crispin        2019-11-25  2094             
arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu            2021-09-24  2095             if (!he_tx_mcs)
61fe43e7216df6 Miles Hu            2021-09-24  2096                     
he_tx_mcs = v;
0b294aebb6a00b Gustavo A. R. Silva 2020-07-27  2097             fallthrough;
9f056ed8ee01ad John Crispin        2019-11-25  2098  
9f056ed8ee01ad John Crispin        2019-11-25  2099     default:
9f056ed8ee01ad John Crispin        2019-11-25  2100             v = 
le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80);
9f056ed8ee01ad John Crispin        2019-11-25  2101             
arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin        2019-11-25  2102  
9f056ed8ee01ad John Crispin        2019-11-25  2103             v = 
le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
61fe43e7216df6 Miles Hu            2021-09-24  2104             v = 
ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin        2019-11-25  2105             
arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin        2019-11-25  2106  
9f056ed8ee01ad John Crispin        2019-11-25  2107             
arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu            2021-09-24  2108             if (!he_tx_mcs)
61fe43e7216df6 Miles Hu            2021-09-24  2109                     
he_tx_mcs = v;
9f056ed8ee01ad John Crispin        2019-11-25  2110             break;
9f056ed8ee01ad John Crispin        2019-11-25  2111     }
61fe43e7216df6 Miles Hu            2021-09-24  2112  
61fe43e7216df6 Miles Hu            2021-09-24  2113     /* Calculate peer NSS 
capability from HE capabilities if STA
61fe43e7216df6 Miles Hu            2021-09-24  2114      * supports HE.
61fe43e7216df6 Miles Hu            2021-09-24  2115      */
61fe43e7216df6 Miles Hu            2021-09-24  2116     for (i = 0, max_nss = 
0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
61fe43e7216df6 Miles Hu            2021-09-24  2117             he_mcs = 
he_tx_mcs >> (2 * i) & 3;
61fe43e7216df6 Miles Hu            2021-09-24  2118  
61fe43e7216df6 Miles Hu            2021-09-24  2119             /* In case of 
fixed rates, MCS Range in he_tx_mcs might have
61fe43e7216df6 Miles Hu            2021-09-24  2120              * unsupported 
range, with he_mcs_mask set, so check either of them
61fe43e7216df6 Miles Hu            2021-09-24  2121              * to find nss.
61fe43e7216df6 Miles Hu            2021-09-24  2122              */
61fe43e7216df6 Miles Hu            2021-09-24  2123             if (he_mcs != 
IEEE80211_HE_MCS_NOT_SUPPORTED ||
61fe43e7216df6 Miles Hu            2021-09-24  2124                 
he_mcs_mask[i])
61fe43e7216df6 Miles Hu            2021-09-24  2125                     max_nss 
= i + 1;
61fe43e7216df6 Miles Hu            2021-09-24  2126     }
61fe43e7216df6 Miles Hu            2021-09-24  2127     arg->peer_nss = 
min(sta->rx_nss, max_nss);
61fe43e7216df6 Miles Hu            2021-09-24  2128  
f552d6fd2f27ce P Praneesh          2021-09-24  2129     if (arg->peer_phymode 
== MODE_11AX_HE160 ||
f552d6fd2f27ce P Praneesh          2021-09-24  2130         arg->peer_phymode 
== MODE_11AX_HE80_80) {
f552d6fd2f27ce P Praneesh          2021-09-24  2131             tx_nss = 
ath11k_get_nss_160mhz(ar, max_nss);
f552d6fd2f27ce P Praneesh          2021-09-24  2132             rx_nss = 
min(arg->peer_nss, tx_nss);
f552d6fd2f27ce P Praneesh          2021-09-24  2133             
arg->peer_bw_rxnss_override = ATH11K_BW_NSS_MAP_ENABLE;
f552d6fd2f27ce P Praneesh          2021-09-24  2134  
f552d6fd2f27ce P Praneesh          2021-09-24  2135             if (!rx_nss) {
f552d6fd2f27ce P Praneesh          2021-09-24  2136                     
ath11k_warn(ar->ab, "invalid max_nss\n");
f552d6fd2f27ce P Praneesh          2021-09-24  2137                     return;
f552d6fd2f27ce P Praneesh          2021-09-24  2138             }
f552d6fd2f27ce P Praneesh          2021-09-24  2139  
f552d6fd2f27ce P Praneesh          2021-09-24  2140             if 
(arg->peer_phymode == MODE_11AX_HE160)
f552d6fd2f27ce P Praneesh          2021-09-24  2141                     nss_160 
= FIELD_PREP(ATH11K_PEER_RX_NSS_160MHZ, rx_nss - 1);
f552d6fd2f27ce P Praneesh          2021-09-24  2142             else
f552d6fd2f27ce P Praneesh          2021-09-24  2143                     nss_160 
= FIELD_PREP(ATH11K_PEER_RX_NSS_80_80MHZ, rx_nss - 1);
f552d6fd2f27ce P Praneesh          2021-09-24  2144  
f552d6fd2f27ce P Praneesh          2021-09-24  2145             
arg->peer_bw_rxnss_override |= nss_160;
f552d6fd2f27ce P Praneesh          2021-09-24  2146     }
f552d6fd2f27ce P Praneesh          2021-09-24  2147  
61fe43e7216df6 Miles Hu            2021-09-24  2148     ath11k_dbg(ar->ab, 
ATH11K_DBG_MAC,
f552d6fd2f27ce P Praneesh          2021-09-24  2149                "mac he peer 
%pM nss %d mcs cnt %d nss_override 0x%x\n",
f552d6fd2f27ce P Praneesh          2021-09-24  2150                sta->addr, 
arg->peer_nss,
f552d6fd2f27ce P Praneesh          2021-09-24  2151                
arg->peer_he_mcs_count,
f552d6fd2f27ce P Praneesh          2021-09-24  2152                
arg->peer_bw_rxnss_override);
d5c65159f28953 Kalle Valo          2019-11-23  2153  }
d5c65159f28953 Kalle Valo          2019-11-23  2154  

-- 
0-DAY CI Kernel Test Service
https://01.org/lkp
_______________________________________________
kbuild mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to