All of lore.kernel.org
 help / color / mirror / Atom feed
* drivers/net/wireless/ath/ath11k/mac.c:1975 ath11k_peer_assoc_h_he() error: uninitialized symbol 'rx_mcs_80'.
@ 2022-06-05 17:21 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-06-05 17:21 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 21515 bytes --]

CC: kbuild-all(a)lists.01.org
BCC: lkp(a)intel.com
CC: linux-kernel(a)vger.kernel.org
TO: Wen Gong <quic_wgong@quicinc.com>
CC: Kalle Valo <kvalo@codeaurora.org>

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/202206060127.NFzDQEHo-lkp(a)intel.com/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 <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

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

^ permalink raw reply	[flat|nested] 2+ messages in thread

* drivers/net/wireless/ath/ath11k/mac.c:1975 ath11k_peer_assoc_h_he() error: uninitialized symbol 'rx_mcs_80'.
@ 2022-01-27  9:44 kernel test robot
  0 siblings, 0 replies; 2+ messages in thread
From: kernel test robot @ 2022-01-27  9:44 UTC (permalink / raw)
  To: kbuild

[-- Attachment #1: Type: text/plain, Size: 21652 bytes --]

CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Wen Gong <quic_wgong@quicinc.com>
CC: Kalle Valo <kvalo@codeaurora.org>

tree:   https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head:   0280e3c58f92b2fe0e8fbbdf8d386449168de4a8
commit: 3db26ecf7114370e451e296e33a0af3303d32819 ath11k: calculate the correct NSS of peer for HE capabilities
date:   9 weeks ago
:::::: branch date: 2 days ago
:::::: commit date: 9 weeks ago
config: microblaze-randconfig-m031-20220127 (https://download.01.org/0day-ci/archive/20220127/202201271745.LYiGP8Sl-lkp(a)intel.com/config)
compiler: microblaze-linux-gcc (GCC) 11.2.0

If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
Reported-by: Dan Carpenter <dan.carpenter@oracle.com>

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:
arch/microblaze/include/asm/thread_info.h:91 current_thread_info() error: uninitialized symbol 'sp'.
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, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-05 17:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-06-05 17:21 drivers/net/wireless/ath/ath11k/mac.c:1975 ath11k_peer_assoc_h_he() error: uninitialized symbol 'rx_mcs_80' kernel test robot
  -- strict thread matches above, loose matches on Subject: below --
2022-01-27  9:44 kernel test robot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.