* drivers/net/wireless/ath/ath11k/mac.c:1927:27: warning: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs' [clang-analyzer-deadcode.DeadStores]
@ 2021-11-28 9:04 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-11-28 9:04 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 31826 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Miles Hu <milehu@codeaurora.org>
CC: Kalle Valo <kvalo@codeaurora.org>
CC: Aloka Dixit <alokad@codeaurora.org>
CC: Lavanya Suresh <lavaks@codeaurora.org>
CC: Pradeep Chitrapu <pradeepc@codeaurora.org>
CC: Venkateswara Naralasetty <vnaralas@codeaurora.org>
CC: Jouni Malinen <jouni@codeaurora.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 3498e7f2bb415e447354a3debef6738d9655768c
commit: 61fe43e7216df6e9a912d831aafc7142fa20f280 ath11k: add support for setting fixed HE rate/gi/ltf
date: 9 weeks ago
:::::: branch date: 10 hours ago
:::::: commit date: 9 weeks ago
config: i386-randconfig-c001-20211015 (https://download.01.org/0day-ci/archive/20211128/202111281731.IICWqcAz-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 6069a6a5049497a32a50a49661c2f4169078bdba)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=61fe43e7216df6e9a912d831aafc7142fa20f280
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 61fe43e7216df6e9a912d831aafc7142fa20f280
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:615:21: warning: Value stored to 'client' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:615:21: note: Value stored to 'client' during its initialization is never read
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:822:21: warning: Value stored to 'client' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:822:21: note: Value stored to 'client' during its initialization is never read
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:873:21: warning: Value stored to 'client' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:873:21: note: Value stored to 'client' during its initialization is never read
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:949:21: warning: Value stored to 'client' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:949:21: note: Value stored to 'client' during its initialization is never read
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:967:21: warning: Value stored to 'client' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:967:21: note: Value stored to 'client' during its initialization is never read
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:986:21: warning: Value stored to 'client' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
drivers/media/dvb-frontends/af9033.c:986:21: note: Value stored to 'client' during its initialization is never read
struct i2c_client *client = dev->client;
^~~~~~ ~~~~~~~~~~~
Suppressed 7 warnings (7 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
17 warnings generated.
drivers/net/wireless/ath/ath11k/wmi.c:890:2: warning: Value stored to 'ptr' is never read [clang-analyzer-deadcode.DeadStores]
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:890:2: note: Value stored to 'ptr' is never read
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7111:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
conn_req.service_id = svc_id[pdev_idx];
^
drivers/net/wireless/ath/ath11k/wmi.c:7227:6: note: Assuming 'wmi_ep_count' is <= field 'max_radios'
if (wmi_ep_count > ab->hw_params.max_radios)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7227:2: note: Taking false branch
if (wmi_ep_count > ab->hw_params.max_radios)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:32: note: The value 3 is assigned to 'i'
for (i = 0; i < wmi_ep_count; i++)
^~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7231:39: note: Passing the value 3 via 2nd parameter 'pdev_idx'
ath11k_connect_pdev_htc_service(ab, i);
^
drivers/net/wireless/ath/ath11k/wmi.c:7231:3: note: Calling 'ath11k_connect_pdev_htc_service'
ath11k_connect_pdev_htc_service(ab, i);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7111:22: note: Assigned value is garbage or undefined
conn_req.service_id = svc_id[pdev_idx];
^ ~~~~~~~~~~~~~~~~
Suppressed 15 warnings (15 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
23 warnings generated.
drivers/net/wireless/ath/ath11k/mac.c:1661:27: warning: Although the value stored to 'vht_mcs' is used in the enclosing expression, the value is never actually read from 'vht_mcs' [clang-analyzer-deadcode.DeadStores]
for (i = 0, max_nss = 0, vht_mcs = 0; i < NL80211_VHT_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:1661:27: note: Although the value stored to 'vht_mcs' is used in the enclosing expression, the value is never actually read from 'vht_mcs'
for (i = 0, max_nss = 0, vht_mcs = 0; i < NL80211_VHT_NSS_MAX; i++) {
^ ~
>> drivers/net/wireless/ath/ath11k/mac.c:1927:27: warning: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs' [clang-analyzer-deadcode.DeadStores]
for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:1927:27: note: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs'
for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:3141:3: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
kfree(arg.extraie.ptr);
^ ~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:3078:2: note: Control jumps to 'case ATH11K_SCAN_ABORTING:' @line 3089
switch (ar->scan.state) {
^
drivers/net/wireless/ath/ath11k/mac.c:3091:3: note: Execution continues on line 3093
break;
^
drivers/net/wireless/ath/ath11k/mac.c:3095:6: note: 'ret' is -16
if (ret)
^~~
drivers/net/wireless/ath/ath11k/mac.c:3095:2: note: Taking true branch
if (ret)
^
drivers/net/wireless/ath/ath11k/mac.c:3096:3: note: Control jumps to line 3140
goto exit;
^
drivers/net/wireless/ath/ath11k/mac.c:3140:6: note: Assuming field 'ie_len' is not equal to 0
if (req->ie_len)
^~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:3140:2: note: Taking true branch
if (req->ie_len)
^
drivers/net/wireless/ath/ath11k/mac.c:3141:3: note: 1st function call argument is an uninitialized value
kfree(arg.extraie.ptr);
^ ~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4091:3: warning: Value stored to 'bw' is never read [clang-analyzer-deadcode.DeadStores]
bw = WMI_PEER_CHWIDTH_20MHZ;
^ ~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4091:3: note: Value stored to 'bw' is never read
bw = WMI_PEER_CHWIDTH_20MHZ;
^ ~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4120:3: warning: Value stored to 'smps' is never read [clang-analyzer-deadcode.DeadStores]
smps = WMI_PEER_SMPS_PS_NONE;
^ ~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4120:3: note: Value stored to 'smps' is never read
smps = WMI_PEER_SMPS_PS_NONE;
^ ~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:5684:2: warning: Value stored to 'changed_flags' is never read [clang-analyzer-deadcode.DeadStores]
changed_flags &= SUPPORTED_FILTERS;
^
drivers/net/wireless/ath/ath11k/mac.c:5684:2: note: Value stored to 'changed_flags' is never read
drivers/net/wireless/ath/ath11k/mac.c:7312:22: warning: Value stored to 'ab' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct ath11k_base *ab = ar->ab;
^~ ~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:7312:22: note: Value stored to 'ab' during its initialization is never read
struct ath11k_base *ab = ar->ab;
^~ ~~~~~~
Suppressed 16 warnings (15 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
drivers/media/i2c/imx258.c:781:3: warning: Value stored to 'ret' is never read [clang-analyzer-deadcode.DeadStores]
ret = imx258_write_reg(imx258, IMX258_REG_TEST_PATTERN,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/imx258.c:781:3: note: Value stored to 'ret' is never read
ret = imx258_write_reg(imx258, IMX258_REG_TEST_PATTERN,
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
10 warnings generated.
drivers/media/i2c/imx274.c:955:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device *dev = &imx274->client->dev;
^~~ ~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/imx274.c:955:17: note: Value stored to 'dev' during its initialization is never read
struct device *dev = &imx274->client->dev;
^~~ ~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/imx274.c:1014:17: warning: Value stored to 'dev' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct device *dev = &imx274->client->dev;
^~~ ~~~~~~~~~~~~~~~~~~~~
drivers/media/i2c/imx274.c:1014:17: note: Value stored to 'dev' during its initialization is never read
struct device *dev = &imx274->client->dev;
^~~ ~~~~~~~~~~~~~~~~~~~~
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
9 warnings generated.
Suppressed 9 warnings (8 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
Suppressed 8 warnings (8 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
Suppressed 8 warnings (8 in non-user code).
vim +1927 drivers/net/wireless/ath/ath11k/mac.c
61fe43e7216df6 Miles Hu 2021-09-24 1761
d5c65159f28953 Kalle Valo 2019-11-23 1762 static void ath11k_peer_assoc_h_he(struct ath11k *ar,
d5c65159f28953 Kalle Valo 2019-11-23 1763 struct ieee80211_vif *vif,
d5c65159f28953 Kalle Valo 2019-11-23 1764 struct ieee80211_sta *sta,
d5c65159f28953 Kalle Valo 2019-11-23 1765 struct peer_assoc_params *arg)
d5c65159f28953 Kalle Valo 2019-11-23 1766 {
61fe43e7216df6 Miles Hu 2021-09-24 1767 struct ath11k_vif *arvif = (void *)vif->drv_priv;
61fe43e7216df6 Miles Hu 2021-09-24 1768 struct cfg80211_chan_def def;
9f056ed8ee01ad John Crispin 2019-11-25 1769 const struct ieee80211_sta_he_cap *he_cap = &sta->he_cap;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1770 u8 ampdu_factor;
61fe43e7216df6 Miles Hu 2021-09-24 1771 enum nl80211_band band;
61fe43e7216df6 Miles Hu 2021-09-24 1772 u16 *he_mcs_mask;
61fe43e7216df6 Miles Hu 2021-09-24 1773 u8 max_nss, he_mcs;
61fe43e7216df6 Miles Hu 2021-09-24 1774 u16 he_tx_mcs = 0, v = 0;
61fe43e7216df6 Miles Hu 2021-09-24 1775 int i, he_nss, nss_idx;
61fe43e7216df6 Miles Hu 2021-09-24 1776 bool user_rate_valid = true;
61fe43e7216df6 Miles Hu 2021-09-24 1777
61fe43e7216df6 Miles Hu 2021-09-24 1778 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
61fe43e7216df6 Miles Hu 2021-09-24 1779 return;
9f056ed8ee01ad John Crispin 2019-11-25 1780
9f056ed8ee01ad John Crispin 2019-11-25 1781 if (!he_cap->has_he)
9f056ed8ee01ad John Crispin 2019-11-25 1782 return;
9f056ed8ee01ad John Crispin 2019-11-25 1783
61fe43e7216df6 Miles Hu 2021-09-24 1784 band = def.chan->band;
61fe43e7216df6 Miles Hu 2021-09-24 1785 he_mcs_mask = arvif->bitrate_mask.control[band].he_mcs;
61fe43e7216df6 Miles Hu 2021-09-24 1786
61fe43e7216df6 Miles Hu 2021-09-24 1787 if (ath11k_peer_assoc_h_he_masked(he_mcs_mask))
61fe43e7216df6 Miles Hu 2021-09-24 1788 return;
61fe43e7216df6 Miles Hu 2021-09-24 1789
9f056ed8ee01ad John Crispin 2019-11-25 1790 arg->he_flag = true;
9f056ed8ee01ad John Crispin 2019-11-25 1791
c8bcd82a4efd05 Kees Cook 2021-06-16 1792 memcpy_and_pad(&arg->peer_he_cap_macinfo,
c8bcd82a4efd05 Kees Cook 2021-06-16 1793 sizeof(arg->peer_he_cap_macinfo),
c8bcd82a4efd05 Kees Cook 2021-06-16 1794 he_cap->he_cap_elem.mac_cap_info,
c8bcd82a4efd05 Kees Cook 2021-06-16 1795 sizeof(he_cap->he_cap_elem.mac_cap_info),
c8bcd82a4efd05 Kees Cook 2021-06-16 1796 0);
c8bcd82a4efd05 Kees Cook 2021-06-16 1797 memcpy_and_pad(&arg->peer_he_cap_phyinfo,
c8bcd82a4efd05 Kees Cook 2021-06-16 1798 sizeof(arg->peer_he_cap_phyinfo),
c8bcd82a4efd05 Kees Cook 2021-06-16 1799 he_cap->he_cap_elem.phy_cap_info,
c8bcd82a4efd05 Kees Cook 2021-06-16 1800 sizeof(he_cap->he_cap_elem.phy_cap_info),
c8bcd82a4efd05 Kees Cook 2021-06-16 1801 0);
60689de46c7f6a Rajkumar Manoharan 2020-04-24 1802 arg->peer_he_ops = vif->bss_conf.he_oper.params;
9f056ed8ee01ad John Crispin 2019-11-25 1803
9f056ed8ee01ad John Crispin 2019-11-25 1804 /* the top most byte is used to indicate BSS color info */
9f056ed8ee01ad John Crispin 2019-11-25 1805 arg->peer_he_ops &= 0xffffff;
9f056ed8ee01ad John Crispin 2019-11-25 1806
af6d39db1b046a Tamizh Chelvam 2020-09-08 1807 /* As per section 26.6.1 11ax Draft5.0, if the Max AMPDU Exponent Extension
af6d39db1b046a Tamizh Chelvam 2020-09-08 1808 * in HE cap is zero, use the arg->peer_max_mpdu as calculated while parsing
af6d39db1b046a Tamizh Chelvam 2020-09-08 1809 * VHT caps(if VHT caps is present) or HT caps (if VHT caps is not present).
af6d39db1b046a Tamizh Chelvam 2020-09-08 1810 *
af6d39db1b046a Tamizh Chelvam 2020-09-08 1811 * For non-zero value of Max AMPDU Extponent Extension in HE MAC caps,
af6d39db1b046a Tamizh Chelvam 2020-09-08 1812 * if a HE STA sends VHT cap and HE cap IE in assoc request then, use
af6d39db1b046a Tamizh Chelvam 2020-09-08 1813 * MAX_AMPDU_LEN_FACTOR as 20 to calculate max_ampdu length.
af6d39db1b046a Tamizh Chelvam 2020-09-08 1814 * If a HE STA that does not send VHT cap, but HE and HT cap in assoc
af6d39db1b046a Tamizh Chelvam 2020-09-08 1815 * request, then use MAX_AMPDU_LEN_FACTOR as 16 to calculate max_ampdu
af6d39db1b046a Tamizh Chelvam 2020-09-08 1816 * length.
af6d39db1b046a Tamizh Chelvam 2020-09-08 1817 */
1f851b8dfd76a0 Johannes Berg 2021-04-09 1818 ampdu_factor = u8_get_bits(he_cap->he_cap_elem.mac_cap_info[3],
1f851b8dfd76a0 Johannes Berg 2021-04-09 1819 IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK);
af6d39db1b046a Tamizh Chelvam 2020-09-08 1820
af6d39db1b046a Tamizh Chelvam 2020-09-08 1821 if (ampdu_factor) {
af6d39db1b046a Tamizh Chelvam 2020-09-08 1822 if (sta->vht_cap.vht_supported)
af6d39db1b046a Tamizh Chelvam 2020-09-08 1823 arg->peer_max_mpdu = (1 << (IEEE80211_HE_VHT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam 2020-09-08 1824 ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1825 else if (sta->ht_cap.ht_supported)
af6d39db1b046a Tamizh Chelvam 2020-09-08 1826 arg->peer_max_mpdu = (1 << (IEEE80211_HE_HT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam 2020-09-08 1827 ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1828 }
af6d39db1b046a Tamizh Chelvam 2020-09-08 1829
9f056ed8ee01ad John Crispin 2019-11-25 1830 if (he_cap->he_cap_elem.phy_cap_info[6] &
9f056ed8ee01ad John Crispin 2019-11-25 1831 IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) {
9f056ed8ee01ad John Crispin 2019-11-25 1832 int bit = 7;
9f056ed8ee01ad John Crispin 2019-11-25 1833 int nss, ru;
9f056ed8ee01ad John Crispin 2019-11-25 1834
9f056ed8ee01ad John Crispin 2019-11-25 1835 arg->peer_ppet.numss_m1 = he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1836 IEEE80211_PPE_THRES_NSS_MASK;
9f056ed8ee01ad John Crispin 2019-11-25 1837 arg->peer_ppet.ru_bit_mask =
9f056ed8ee01ad John Crispin 2019-11-25 1838 (he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1839 IEEE80211_PPE_THRES_RU_INDEX_BITMASK_MASK) >>
9f056ed8ee01ad John Crispin 2019-11-25 1840 IEEE80211_PPE_THRES_RU_INDEX_BITMASK_POS;
9f056ed8ee01ad John Crispin 2019-11-25 1841
9f056ed8ee01ad John Crispin 2019-11-25 1842 for (nss = 0; nss <= arg->peer_ppet.numss_m1; nss++) {
9f056ed8ee01ad John Crispin 2019-11-25 1843 for (ru = 0; ru < 4; ru++) {
9f056ed8ee01ad John Crispin 2019-11-25 1844 u32 val = 0;
9f056ed8ee01ad John Crispin 2019-11-25 1845 int i;
9f056ed8ee01ad John Crispin 2019-11-25 1846
9f056ed8ee01ad John Crispin 2019-11-25 1847 if ((arg->peer_ppet.ru_bit_mask & BIT(ru)) == 0)
9f056ed8ee01ad John Crispin 2019-11-25 1848 continue;
9f056ed8ee01ad John Crispin 2019-11-25 1849 for (i = 0; i < 6; i++) {
9f056ed8ee01ad John Crispin 2019-11-25 1850 val >>= 1;
9f056ed8ee01ad John Crispin 2019-11-25 1851 val |= ((he_cap->ppe_thres[bit / 8] >>
9f056ed8ee01ad John Crispin 2019-11-25 1852 (bit % 8)) & 0x1) << 5;
9f056ed8ee01ad John Crispin 2019-11-25 1853 bit++;
9f056ed8ee01ad John Crispin 2019-11-25 1854 }
9f056ed8ee01ad John Crispin 2019-11-25 1855 arg->peer_ppet.ppet16_ppet8_ru3_ru0[nss] |=
9f056ed8ee01ad John Crispin 2019-11-25 1856 val << (ru * 6);
9f056ed8ee01ad John Crispin 2019-11-25 1857 }
9f056ed8ee01ad John Crispin 2019-11-25 1858 }
9f056ed8ee01ad John Crispin 2019-11-25 1859 }
9f056ed8ee01ad John Crispin 2019-11-25 1860
6d293d447670da John Crispin 2019-11-25 1861 if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_RES)
6d293d447670da John Crispin 2019-11-25 1862 arg->twt_responder = true;
6d293d447670da John Crispin 2019-11-25 1863 if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_REQ)
6d293d447670da John Crispin 2019-11-25 1864 arg->twt_requester = true;
6d293d447670da John Crispin 2019-11-25 1865
61fe43e7216df6 Miles Hu 2021-09-24 1866 he_nss = ath11k_mac_max_he_nss(he_mcs_mask);
61fe43e7216df6 Miles Hu 2021-09-24 1867
61fe43e7216df6 Miles Hu 2021-09-24 1868 if (he_nss > sta->rx_nss) {
61fe43e7216df6 Miles Hu 2021-09-24 1869 user_rate_valid = false;
61fe43e7216df6 Miles Hu 2021-09-24 1870 for (nss_idx = sta->rx_nss - 1; nss_idx >= 0; nss_idx--) {
61fe43e7216df6 Miles Hu 2021-09-24 1871 if (he_mcs_mask[nss_idx]) {
61fe43e7216df6 Miles Hu 2021-09-24 1872 user_rate_valid = true;
61fe43e7216df6 Miles Hu 2021-09-24 1873 break;
61fe43e7216df6 Miles Hu 2021-09-24 1874 }
61fe43e7216df6 Miles Hu 2021-09-24 1875 }
61fe43e7216df6 Miles Hu 2021-09-24 1876 }
61fe43e7216df6 Miles Hu 2021-09-24 1877
61fe43e7216df6 Miles Hu 2021-09-24 1878 if (!user_rate_valid) {
61fe43e7216df6 Miles Hu 2021-09-24 1879 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 1880 sta->rx_nss, sta->addr);
61fe43e7216df6 Miles Hu 2021-09-24 1881 he_mcs_mask[sta->rx_nss - 1] = he_mcs_mask[he_nss - 1];
61fe43e7216df6 Miles Hu 2021-09-24 1882 }
61fe43e7216df6 Miles Hu 2021-09-24 1883
9f056ed8ee01ad John Crispin 2019-11-25 1884 switch (sta->bandwidth) {
9f056ed8ee01ad John Crispin 2019-11-25 1885 case IEEE80211_STA_RX_BW_160:
9f056ed8ee01ad John Crispin 2019-11-25 1886 if (he_cap->he_cap_elem.phy_cap_info[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1887 IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G) {
9f056ed8ee01ad John Crispin 2019-11-25 1888 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80p80);
61fe43e7216df6 Miles Hu 2021-09-24 1889 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1890 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1891
9f056ed8ee01ad John Crispin 2019-11-25 1892 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80p80);
9f056ed8ee01ad John Crispin 2019-11-25 1893 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1894
9f056ed8ee01ad John Crispin 2019-11-25 1895 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1896 he_tx_mcs = v;
9f056ed8ee01ad John Crispin 2019-11-25 1897 }
9f056ed8ee01ad John Crispin 2019-11-25 1898 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
9f056ed8ee01ad John Crispin 2019-11-25 1899 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1900
9f056ed8ee01ad John Crispin 2019-11-25 1901 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_160);
61fe43e7216df6 Miles Hu 2021-09-24 1902 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1903 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1904
9f056ed8ee01ad John Crispin 2019-11-25 1905 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1906 if (!he_tx_mcs)
61fe43e7216df6 Miles Hu 2021-09-24 1907 he_tx_mcs = v;
0b294aebb6a00b Gustavo A. R. Silva 2020-07-27 1908 fallthrough;
9f056ed8ee01ad John Crispin 2019-11-25 1909
9f056ed8ee01ad John Crispin 2019-11-25 1910 default:
9f056ed8ee01ad John Crispin 2019-11-25 1911 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80);
9f056ed8ee01ad John Crispin 2019-11-25 1912 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1913
9f056ed8ee01ad John Crispin 2019-11-25 1914 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
61fe43e7216df6 Miles Hu 2021-09-24 1915 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1916 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1917
9f056ed8ee01ad John Crispin 2019-11-25 1918 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1919 if (!he_tx_mcs)
61fe43e7216df6 Miles Hu 2021-09-24 1920 he_tx_mcs = v;
9f056ed8ee01ad John Crispin 2019-11-25 1921 break;
9f056ed8ee01ad John Crispin 2019-11-25 1922 }
61fe43e7216df6 Miles Hu 2021-09-24 1923
61fe43e7216df6 Miles Hu 2021-09-24 1924 /* Calculate peer NSS capability from HE capabilities if STA
61fe43e7216df6 Miles Hu 2021-09-24 1925 * supports HE.
61fe43e7216df6 Miles Hu 2021-09-24 1926 */
61fe43e7216df6 Miles Hu 2021-09-24 @1927 for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
61fe43e7216df6 Miles Hu 2021-09-24 1928 he_mcs = he_tx_mcs >> (2 * i) & 3;
61fe43e7216df6 Miles Hu 2021-09-24 1929
61fe43e7216df6 Miles Hu 2021-09-24 1930 /* In case of fixed rates, MCS Range in he_tx_mcs might have
61fe43e7216df6 Miles Hu 2021-09-24 1931 * unsupported range, with he_mcs_mask set, so check either of them
61fe43e7216df6 Miles Hu 2021-09-24 1932 * to find nss.
61fe43e7216df6 Miles Hu 2021-09-24 1933 */
61fe43e7216df6 Miles Hu 2021-09-24 1934 if (he_mcs != IEEE80211_HE_MCS_NOT_SUPPORTED ||
61fe43e7216df6 Miles Hu 2021-09-24 1935 he_mcs_mask[i])
61fe43e7216df6 Miles Hu 2021-09-24 1936 max_nss = i + 1;
61fe43e7216df6 Miles Hu 2021-09-24 1937 }
61fe43e7216df6 Miles Hu 2021-09-24 1938 arg->peer_nss = min(sta->rx_nss, max_nss);
61fe43e7216df6 Miles Hu 2021-09-24 1939
61fe43e7216df6 Miles Hu 2021-09-24 1940 ath11k_dbg(ar->ab, ATH11K_DBG_MAC,
61fe43e7216df6 Miles Hu 2021-09-24 1941 "mac he peer %pM nss %d mcs cnt %d\n",
61fe43e7216df6 Miles Hu 2021-09-24 1942 sta->addr, arg->peer_nss, arg->peer_he_mcs_count);
d5c65159f28953 Kalle Valo 2019-11-23 1943 }
d5c65159f28953 Kalle Valo 2019-11-23 1944
---
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] 3+ messages in thread
* drivers/net/wireless/ath/ath11k/mac.c:1927:27: warning: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs' [clang-analyzer-deadcode.DeadStores]
@ 2021-12-01 10:52 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-12-01 10:52 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 29477 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Miles Hu <milehu@codeaurora.org>
CC: Kalle Valo <kvalo@codeaurora.org>
CC: Aloka Dixit <alokad@codeaurora.org>
CC: Lavanya Suresh <lavaks@codeaurora.org>
CC: Pradeep Chitrapu <pradeepc@codeaurora.org>
CC: Venkateswara Naralasetty <vnaralas@codeaurora.org>
CC: Jouni Malinen <jouni@codeaurora.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: 58e1100fdc5990b0cc0d4beaf2562a92e621ac7d
commit: 61fe43e7216df6e9a912d831aafc7142fa20f280 ath11k: add support for setting fixed HE rate/gi/ltf
date: 9 weeks ago
:::::: branch date: 13 hours ago
:::::: commit date: 9 weeks ago
config: i386-randconfig-c001-20211015 (https://download.01.org/0day-ci/archive/20211201/202112011845.d9RZhEPc-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 6069a6a5049497a32a50a49661c2f4169078bdba)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=61fe43e7216df6e9a912d831aafc7142fa20f280
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 61fe43e7216df6e9a912d831aafc7142fa20f280
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
^~~~~~~~~~~~
drivers/spi/spi-amd.c:178:3: note: Taking false branch
if (xfer->rx_buf)
^
drivers/spi/spi-amd.c:180:7: note: Assuming field 'tx_buf' is null
if (xfer->tx_buf)
^~~~~~~~~~~~
drivers/spi/spi-amd.c:180:3: note: Taking false branch
if (xfer->tx_buf)
^
drivers/spi/spi-amd.c:183:3: note: Taking false branch
if (m_cmd & AMD_SPI_XFER_TX) {
^
drivers/spi/spi-amd.c:202:3: note: Taking true branch
if (m_cmd & AMD_SPI_XFER_RX) {
^
drivers/spi/spi-amd.c:208:4: note: Null pointer value stored to 'buf'
buf = (u8 *)xfer->rx_buf;
^~~~~~~~~~~~~~~~~~~~~~~~
drivers/spi/spi-amd.c:214:16: note: Assuming 'i' is < 'rx_len'
for (i = 0; i < rx_len; i++)
^~~~~~~~~~
drivers/spi/spi-amd.c:214:4: note: Loop condition is true. Entering loop body
for (i = 0; i < rx_len; i++)
^
drivers/spi/spi-amd.c:215:12: note: Array access (from variable 'buf') results in a null pointer dereference
buf[i] = amd_spi_readreg8(master,
~~~ ^
Suppressed 6 warnings (6 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
17 warnings generated.
drivers/net/wireless/ath/ath11k/wmi.c:890:2: warning: Value stored to 'ptr' is never read [clang-analyzer-deadcode.DeadStores]
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:890:2: note: Value stored to 'ptr' is never read
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7111:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
conn_req.service_id = svc_id[pdev_idx];
^
drivers/net/wireless/ath/ath11k/wmi.c:7227:6: note: Assuming 'wmi_ep_count' is <= field 'max_radios'
if (wmi_ep_count > ab->hw_params.max_radios)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7227:2: note: Taking false branch
if (wmi_ep_count > ab->hw_params.max_radios)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:32: note: The value 3 is assigned to 'i'
for (i = 0; i < wmi_ep_count; i++)
^~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7231:39: note: Passing the value 3 via 2nd parameter 'pdev_idx'
ath11k_connect_pdev_htc_service(ab, i);
^
drivers/net/wireless/ath/ath11k/wmi.c:7231:3: note: Calling 'ath11k_connect_pdev_htc_service'
ath11k_connect_pdev_htc_service(ab, i);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7111:22: note: Assigned value is garbage or undefined
conn_req.service_id = svc_id[pdev_idx];
^ ~~~~~~~~~~~~~~~~
Suppressed 15 warnings (15 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
23 warnings generated.
drivers/net/wireless/ath/ath11k/mac.c:1661:27: warning: Although the value stored to 'vht_mcs' is used in the enclosing expression, the value is never actually read from 'vht_mcs' [clang-analyzer-deadcode.DeadStores]
for (i = 0, max_nss = 0, vht_mcs = 0; i < NL80211_VHT_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:1661:27: note: Although the value stored to 'vht_mcs' is used in the enclosing expression, the value is never actually read from 'vht_mcs'
for (i = 0, max_nss = 0, vht_mcs = 0; i < NL80211_VHT_NSS_MAX; i++) {
^ ~
>> drivers/net/wireless/ath/ath11k/mac.c:1927:27: warning: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs' [clang-analyzer-deadcode.DeadStores]
for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:1927:27: note: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs'
for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:3141:3: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
kfree(arg.extraie.ptr);
^ ~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:3078:2: note: Control jumps to 'case ATH11K_SCAN_ABORTING:' @line 3089
switch (ar->scan.state) {
^
drivers/net/wireless/ath/ath11k/mac.c:3091:3: note: Execution continues on line 3093
break;
^
drivers/net/wireless/ath/ath11k/mac.c:3095:6: note: 'ret' is -16
if (ret)
^~~
drivers/net/wireless/ath/ath11k/mac.c:3095:2: note: Taking true branch
if (ret)
^
drivers/net/wireless/ath/ath11k/mac.c:3096:3: note: Control jumps to line 3140
goto exit;
^
drivers/net/wireless/ath/ath11k/mac.c:3140:6: note: Assuming field 'ie_len' is not equal to 0
if (req->ie_len)
^~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:3140:2: note: Taking true branch
if (req->ie_len)
^
drivers/net/wireless/ath/ath11k/mac.c:3141:3: note: 1st function call argument is an uninitialized value
kfree(arg.extraie.ptr);
^ ~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4091:3: warning: Value stored to 'bw' is never read [clang-analyzer-deadcode.DeadStores]
bw = WMI_PEER_CHWIDTH_20MHZ;
^ ~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4091:3: note: Value stored to 'bw' is never read
bw = WMI_PEER_CHWIDTH_20MHZ;
^ ~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4120:3: warning: Value stored to 'smps' is never read [clang-analyzer-deadcode.DeadStores]
smps = WMI_PEER_SMPS_PS_NONE;
^ ~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4120:3: note: Value stored to 'smps' is never read
smps = WMI_PEER_SMPS_PS_NONE;
^ ~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:5684:2: warning: Value stored to 'changed_flags' is never read [clang-analyzer-deadcode.DeadStores]
changed_flags &= SUPPORTED_FILTERS;
^
drivers/net/wireless/ath/ath11k/mac.c:5684:2: note: Value stored to 'changed_flags' is never read
drivers/net/wireless/ath/ath11k/mac.c:7312:22: warning: Value stored to 'ab' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct ath11k_base *ab = ar->ab;
^~ ~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:7312:22: note: Value stored to 'ab' during its initialization is never read
struct ath11k_base *ab = ar->ab;
^~ ~~~~~~
Suppressed 16 warnings (15 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
drivers/input/touchscreen/elants_i2c.c:137:8: warning: Excessive padding in 'struct elants_data' (40 padding bytes, where 8 is optimal).
Optimal fields order:
buf,
test_version,
fw_version,
client,
input,
vcc33,
vccio,
reset_gpio,
x_res,
y_res,
x_max,
y_max,
phy_x,
phy_y,
state,
chip_id,
iap_mode,
prop,
cmd_done,
sysfs_mutex,
hw_version,
solution_version,
bc_version,
iap_version,
major_res,
wake_irq_enabled,
keep_power_in_suspend,
cmd_resp,
consider reordering the fields or adding explicit padding members [clang-analyzer-optin.performance.Padding]
struct elants_data {
~~~~~~~^~~~~~~~~~~~~
drivers/input/touchscreen/elants_i2c.c:137:8: note: Excessive padding in 'struct elants_data' (40 padding bytes, where 8 is optimal). Optimal fields order: buf, test_version, fw_version, client, input, vcc33, vccio, reset_gpio, x_res, y_res, x_max, y_max, phy_x, phy_y, state, chip_id, iap_mode, prop, cmd_done, sysfs_mutex, hw_version, solution_version, bc_version, iap_version, major_res, wake_irq_enabled, keep_power_in_suspend, cmd_resp, consider reordering the fields or adding explicit padding members
struct elants_data {
~~~~~~~^~~~~~~~~~~~~
Suppressed 7 warnings (7 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
7 warnings generated.
Suppressed 7 warnings (7 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
vim +1927 drivers/net/wireless/ath/ath11k/mac.c
61fe43e7216df6 Miles Hu 2021-09-24 1761
d5c65159f28953 Kalle Valo 2019-11-23 1762 static void ath11k_peer_assoc_h_he(struct ath11k *ar,
d5c65159f28953 Kalle Valo 2019-11-23 1763 struct ieee80211_vif *vif,
d5c65159f28953 Kalle Valo 2019-11-23 1764 struct ieee80211_sta *sta,
d5c65159f28953 Kalle Valo 2019-11-23 1765 struct peer_assoc_params *arg)
d5c65159f28953 Kalle Valo 2019-11-23 1766 {
61fe43e7216df6 Miles Hu 2021-09-24 1767 struct ath11k_vif *arvif = (void *)vif->drv_priv;
61fe43e7216df6 Miles Hu 2021-09-24 1768 struct cfg80211_chan_def def;
9f056ed8ee01ad John Crispin 2019-11-25 1769 const struct ieee80211_sta_he_cap *he_cap = &sta->he_cap;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1770 u8 ampdu_factor;
61fe43e7216df6 Miles Hu 2021-09-24 1771 enum nl80211_band band;
61fe43e7216df6 Miles Hu 2021-09-24 1772 u16 *he_mcs_mask;
61fe43e7216df6 Miles Hu 2021-09-24 1773 u8 max_nss, he_mcs;
61fe43e7216df6 Miles Hu 2021-09-24 1774 u16 he_tx_mcs = 0, v = 0;
61fe43e7216df6 Miles Hu 2021-09-24 1775 int i, he_nss, nss_idx;
61fe43e7216df6 Miles Hu 2021-09-24 1776 bool user_rate_valid = true;
61fe43e7216df6 Miles Hu 2021-09-24 1777
61fe43e7216df6 Miles Hu 2021-09-24 1778 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
61fe43e7216df6 Miles Hu 2021-09-24 1779 return;
9f056ed8ee01ad John Crispin 2019-11-25 1780
9f056ed8ee01ad John Crispin 2019-11-25 1781 if (!he_cap->has_he)
9f056ed8ee01ad John Crispin 2019-11-25 1782 return;
9f056ed8ee01ad John Crispin 2019-11-25 1783
61fe43e7216df6 Miles Hu 2021-09-24 1784 band = def.chan->band;
61fe43e7216df6 Miles Hu 2021-09-24 1785 he_mcs_mask = arvif->bitrate_mask.control[band].he_mcs;
61fe43e7216df6 Miles Hu 2021-09-24 1786
61fe43e7216df6 Miles Hu 2021-09-24 1787 if (ath11k_peer_assoc_h_he_masked(he_mcs_mask))
61fe43e7216df6 Miles Hu 2021-09-24 1788 return;
61fe43e7216df6 Miles Hu 2021-09-24 1789
9f056ed8ee01ad John Crispin 2019-11-25 1790 arg->he_flag = true;
9f056ed8ee01ad John Crispin 2019-11-25 1791
c8bcd82a4efd05 Kees Cook 2021-06-16 1792 memcpy_and_pad(&arg->peer_he_cap_macinfo,
c8bcd82a4efd05 Kees Cook 2021-06-16 1793 sizeof(arg->peer_he_cap_macinfo),
c8bcd82a4efd05 Kees Cook 2021-06-16 1794 he_cap->he_cap_elem.mac_cap_info,
c8bcd82a4efd05 Kees Cook 2021-06-16 1795 sizeof(he_cap->he_cap_elem.mac_cap_info),
c8bcd82a4efd05 Kees Cook 2021-06-16 1796 0);
c8bcd82a4efd05 Kees Cook 2021-06-16 1797 memcpy_and_pad(&arg->peer_he_cap_phyinfo,
c8bcd82a4efd05 Kees Cook 2021-06-16 1798 sizeof(arg->peer_he_cap_phyinfo),
c8bcd82a4efd05 Kees Cook 2021-06-16 1799 he_cap->he_cap_elem.phy_cap_info,
c8bcd82a4efd05 Kees Cook 2021-06-16 1800 sizeof(he_cap->he_cap_elem.phy_cap_info),
c8bcd82a4efd05 Kees Cook 2021-06-16 1801 0);
60689de46c7f6a Rajkumar Manoharan 2020-04-24 1802 arg->peer_he_ops = vif->bss_conf.he_oper.params;
9f056ed8ee01ad John Crispin 2019-11-25 1803
9f056ed8ee01ad John Crispin 2019-11-25 1804 /* the top most byte is used to indicate BSS color info */
9f056ed8ee01ad John Crispin 2019-11-25 1805 arg->peer_he_ops &= 0xffffff;
9f056ed8ee01ad John Crispin 2019-11-25 1806
af6d39db1b046a Tamizh Chelvam 2020-09-08 1807 /* As per section 26.6.1 11ax Draft5.0, if the Max AMPDU Exponent Extension
af6d39db1b046a Tamizh Chelvam 2020-09-08 1808 * in HE cap is zero, use the arg->peer_max_mpdu as calculated while parsing
af6d39db1b046a Tamizh Chelvam 2020-09-08 1809 * VHT caps(if VHT caps is present) or HT caps (if VHT caps is not present).
af6d39db1b046a Tamizh Chelvam 2020-09-08 1810 *
af6d39db1b046a Tamizh Chelvam 2020-09-08 1811 * For non-zero value of Max AMPDU Extponent Extension in HE MAC caps,
af6d39db1b046a Tamizh Chelvam 2020-09-08 1812 * if a HE STA sends VHT cap and HE cap IE in assoc request then, use
af6d39db1b046a Tamizh Chelvam 2020-09-08 1813 * MAX_AMPDU_LEN_FACTOR as 20 to calculate max_ampdu length.
af6d39db1b046a Tamizh Chelvam 2020-09-08 1814 * If a HE STA that does not send VHT cap, but HE and HT cap in assoc
af6d39db1b046a Tamizh Chelvam 2020-09-08 1815 * request, then use MAX_AMPDU_LEN_FACTOR as 16 to calculate max_ampdu
af6d39db1b046a Tamizh Chelvam 2020-09-08 1816 * length.
af6d39db1b046a Tamizh Chelvam 2020-09-08 1817 */
1f851b8dfd76a0 Johannes Berg 2021-04-09 1818 ampdu_factor = u8_get_bits(he_cap->he_cap_elem.mac_cap_info[3],
1f851b8dfd76a0 Johannes Berg 2021-04-09 1819 IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK);
af6d39db1b046a Tamizh Chelvam 2020-09-08 1820
af6d39db1b046a Tamizh Chelvam 2020-09-08 1821 if (ampdu_factor) {
af6d39db1b046a Tamizh Chelvam 2020-09-08 1822 if (sta->vht_cap.vht_supported)
af6d39db1b046a Tamizh Chelvam 2020-09-08 1823 arg->peer_max_mpdu = (1 << (IEEE80211_HE_VHT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam 2020-09-08 1824 ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1825 else if (sta->ht_cap.ht_supported)
af6d39db1b046a Tamizh Chelvam 2020-09-08 1826 arg->peer_max_mpdu = (1 << (IEEE80211_HE_HT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam 2020-09-08 1827 ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1828 }
af6d39db1b046a Tamizh Chelvam 2020-09-08 1829
9f056ed8ee01ad John Crispin 2019-11-25 1830 if (he_cap->he_cap_elem.phy_cap_info[6] &
9f056ed8ee01ad John Crispin 2019-11-25 1831 IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) {
9f056ed8ee01ad John Crispin 2019-11-25 1832 int bit = 7;
9f056ed8ee01ad John Crispin 2019-11-25 1833 int nss, ru;
9f056ed8ee01ad John Crispin 2019-11-25 1834
9f056ed8ee01ad John Crispin 2019-11-25 1835 arg->peer_ppet.numss_m1 = he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1836 IEEE80211_PPE_THRES_NSS_MASK;
9f056ed8ee01ad John Crispin 2019-11-25 1837 arg->peer_ppet.ru_bit_mask =
9f056ed8ee01ad John Crispin 2019-11-25 1838 (he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1839 IEEE80211_PPE_THRES_RU_INDEX_BITMASK_MASK) >>
9f056ed8ee01ad John Crispin 2019-11-25 1840 IEEE80211_PPE_THRES_RU_INDEX_BITMASK_POS;
9f056ed8ee01ad John Crispin 2019-11-25 1841
9f056ed8ee01ad John Crispin 2019-11-25 1842 for (nss = 0; nss <= arg->peer_ppet.numss_m1; nss++) {
9f056ed8ee01ad John Crispin 2019-11-25 1843 for (ru = 0; ru < 4; ru++) {
9f056ed8ee01ad John Crispin 2019-11-25 1844 u32 val = 0;
9f056ed8ee01ad John Crispin 2019-11-25 1845 int i;
9f056ed8ee01ad John Crispin 2019-11-25 1846
9f056ed8ee01ad John Crispin 2019-11-25 1847 if ((arg->peer_ppet.ru_bit_mask & BIT(ru)) == 0)
9f056ed8ee01ad John Crispin 2019-11-25 1848 continue;
9f056ed8ee01ad John Crispin 2019-11-25 1849 for (i = 0; i < 6; i++) {
9f056ed8ee01ad John Crispin 2019-11-25 1850 val >>= 1;
9f056ed8ee01ad John Crispin 2019-11-25 1851 val |= ((he_cap->ppe_thres[bit / 8] >>
9f056ed8ee01ad John Crispin 2019-11-25 1852 (bit % 8)) & 0x1) << 5;
9f056ed8ee01ad John Crispin 2019-11-25 1853 bit++;
9f056ed8ee01ad John Crispin 2019-11-25 1854 }
9f056ed8ee01ad John Crispin 2019-11-25 1855 arg->peer_ppet.ppet16_ppet8_ru3_ru0[nss] |=
9f056ed8ee01ad John Crispin 2019-11-25 1856 val << (ru * 6);
9f056ed8ee01ad John Crispin 2019-11-25 1857 }
9f056ed8ee01ad John Crispin 2019-11-25 1858 }
9f056ed8ee01ad John Crispin 2019-11-25 1859 }
9f056ed8ee01ad John Crispin 2019-11-25 1860
6d293d447670da John Crispin 2019-11-25 1861 if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_RES)
6d293d447670da John Crispin 2019-11-25 1862 arg->twt_responder = true;
6d293d447670da John Crispin 2019-11-25 1863 if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_REQ)
6d293d447670da John Crispin 2019-11-25 1864 arg->twt_requester = true;
6d293d447670da John Crispin 2019-11-25 1865
61fe43e7216df6 Miles Hu 2021-09-24 1866 he_nss = ath11k_mac_max_he_nss(he_mcs_mask);
61fe43e7216df6 Miles Hu 2021-09-24 1867
61fe43e7216df6 Miles Hu 2021-09-24 1868 if (he_nss > sta->rx_nss) {
61fe43e7216df6 Miles Hu 2021-09-24 1869 user_rate_valid = false;
61fe43e7216df6 Miles Hu 2021-09-24 1870 for (nss_idx = sta->rx_nss - 1; nss_idx >= 0; nss_idx--) {
61fe43e7216df6 Miles Hu 2021-09-24 1871 if (he_mcs_mask[nss_idx]) {
61fe43e7216df6 Miles Hu 2021-09-24 1872 user_rate_valid = true;
61fe43e7216df6 Miles Hu 2021-09-24 1873 break;
61fe43e7216df6 Miles Hu 2021-09-24 1874 }
61fe43e7216df6 Miles Hu 2021-09-24 1875 }
61fe43e7216df6 Miles Hu 2021-09-24 1876 }
61fe43e7216df6 Miles Hu 2021-09-24 1877
61fe43e7216df6 Miles Hu 2021-09-24 1878 if (!user_rate_valid) {
61fe43e7216df6 Miles Hu 2021-09-24 1879 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 1880 sta->rx_nss, sta->addr);
61fe43e7216df6 Miles Hu 2021-09-24 1881 he_mcs_mask[sta->rx_nss - 1] = he_mcs_mask[he_nss - 1];
61fe43e7216df6 Miles Hu 2021-09-24 1882 }
61fe43e7216df6 Miles Hu 2021-09-24 1883
9f056ed8ee01ad John Crispin 2019-11-25 1884 switch (sta->bandwidth) {
9f056ed8ee01ad John Crispin 2019-11-25 1885 case IEEE80211_STA_RX_BW_160:
9f056ed8ee01ad John Crispin 2019-11-25 1886 if (he_cap->he_cap_elem.phy_cap_info[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1887 IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G) {
9f056ed8ee01ad John Crispin 2019-11-25 1888 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80p80);
61fe43e7216df6 Miles Hu 2021-09-24 1889 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1890 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1891
9f056ed8ee01ad John Crispin 2019-11-25 1892 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80p80);
9f056ed8ee01ad John Crispin 2019-11-25 1893 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1894
9f056ed8ee01ad John Crispin 2019-11-25 1895 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1896 he_tx_mcs = v;
9f056ed8ee01ad John Crispin 2019-11-25 1897 }
9f056ed8ee01ad John Crispin 2019-11-25 1898 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
9f056ed8ee01ad John Crispin 2019-11-25 1899 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1900
9f056ed8ee01ad John Crispin 2019-11-25 1901 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_160);
61fe43e7216df6 Miles Hu 2021-09-24 1902 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1903 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1904
9f056ed8ee01ad John Crispin 2019-11-25 1905 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1906 if (!he_tx_mcs)
61fe43e7216df6 Miles Hu 2021-09-24 1907 he_tx_mcs = v;
0b294aebb6a00b Gustavo A. R. Silva 2020-07-27 1908 fallthrough;
9f056ed8ee01ad John Crispin 2019-11-25 1909
9f056ed8ee01ad John Crispin 2019-11-25 1910 default:
9f056ed8ee01ad John Crispin 2019-11-25 1911 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80);
9f056ed8ee01ad John Crispin 2019-11-25 1912 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1913
9f056ed8ee01ad John Crispin 2019-11-25 1914 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
61fe43e7216df6 Miles Hu 2021-09-24 1915 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1916 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1917
9f056ed8ee01ad John Crispin 2019-11-25 1918 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1919 if (!he_tx_mcs)
61fe43e7216df6 Miles Hu 2021-09-24 1920 he_tx_mcs = v;
9f056ed8ee01ad John Crispin 2019-11-25 1921 break;
9f056ed8ee01ad John Crispin 2019-11-25 1922 }
61fe43e7216df6 Miles Hu 2021-09-24 1923
61fe43e7216df6 Miles Hu 2021-09-24 1924 /* Calculate peer NSS capability from HE capabilities if STA
61fe43e7216df6 Miles Hu 2021-09-24 1925 * supports HE.
61fe43e7216df6 Miles Hu 2021-09-24 1926 */
61fe43e7216df6 Miles Hu 2021-09-24 @1927 for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
61fe43e7216df6 Miles Hu 2021-09-24 1928 he_mcs = he_tx_mcs >> (2 * i) & 3;
61fe43e7216df6 Miles Hu 2021-09-24 1929
61fe43e7216df6 Miles Hu 2021-09-24 1930 /* In case of fixed rates, MCS Range in he_tx_mcs might have
61fe43e7216df6 Miles Hu 2021-09-24 1931 * unsupported range, with he_mcs_mask set, so check either of them
61fe43e7216df6 Miles Hu 2021-09-24 1932 * to find nss.
61fe43e7216df6 Miles Hu 2021-09-24 1933 */
61fe43e7216df6 Miles Hu 2021-09-24 1934 if (he_mcs != IEEE80211_HE_MCS_NOT_SUPPORTED ||
61fe43e7216df6 Miles Hu 2021-09-24 1935 he_mcs_mask[i])
61fe43e7216df6 Miles Hu 2021-09-24 1936 max_nss = i + 1;
61fe43e7216df6 Miles Hu 2021-09-24 1937 }
61fe43e7216df6 Miles Hu 2021-09-24 1938 arg->peer_nss = min(sta->rx_nss, max_nss);
61fe43e7216df6 Miles Hu 2021-09-24 1939
61fe43e7216df6 Miles Hu 2021-09-24 1940 ath11k_dbg(ar->ab, ATH11K_DBG_MAC,
61fe43e7216df6 Miles Hu 2021-09-24 1941 "mac he peer %pM nss %d mcs cnt %d\n",
61fe43e7216df6 Miles Hu 2021-09-24 1942 sta->addr, arg->peer_nss, arg->peer_he_mcs_count);
d5c65159f28953 Kalle Valo 2019-11-23 1943 }
d5c65159f28953 Kalle Valo 2019-11-23 1944
---
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] 3+ messages in thread
* drivers/net/wireless/ath/ath11k/mac.c:1927:27: warning: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs' [clang-analyzer-deadcode.DeadStores]
@ 2021-12-05 0:40 kernel test robot
0 siblings, 0 replies; 3+ messages in thread
From: kernel test robot @ 2021-12-05 0:40 UTC (permalink / raw)
To: kbuild
[-- Attachment #1: Type: text/plain, Size: 30793 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: linux-kernel(a)vger.kernel.org
TO: Miles Hu <milehu@codeaurora.org>
CC: Kalle Valo <kvalo@codeaurora.org>
CC: Aloka Dixit <alokad@codeaurora.org>
CC: Lavanya Suresh <lavaks@codeaurora.org>
CC: Pradeep Chitrapu <pradeepc@codeaurora.org>
CC: Venkateswara Naralasetty <vnaralas@codeaurora.org>
CC: Jouni Malinen <jouni@codeaurora.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git master
head: bbef3c7a63d2a4cb0f3f839db9e767f168c5e348
commit: 61fe43e7216df6e9a912d831aafc7142fa20f280 ath11k: add support for setting fixed HE rate/gi/ltf
date: 10 weeks ago
:::::: branch date: 8 hours ago
:::::: commit date: 10 weeks ago
config: i386-randconfig-c001-20211015 (https://download.01.org/0day-ci/archive/20211205/202112050821.X3jKB1bZ-lkp(a)intel.com/config)
compiler: clang version 14.0.0 (https://github.com/llvm/llvm-project 6069a6a5049497a32a50a49661c2f4169078bdba)
reproduce (this is a W=1 build):
wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross
chmod +x ~/bin/make.cross
# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=61fe43e7216df6e9a912d831aafc7142fa20f280
git remote add linus https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
git fetch --no-tags linus master
git checkout 61fe43e7216df6e9a912d831aafc7142fa20f280
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=i386 clang-analyzer
If you fix the issue, kindly add following tag as appropriate
Reported-by: kernel test robot <lkp@intel.com>
clang-analyzer warnings: (new ones prefixed by >>)
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
7 warnings generated.
14 warnings generated.
Suppressed 14 warnings (14 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
7 warnings generated.
14 warnings generated.
Suppressed 14 warnings (14 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
7 warnings generated.
14 warnings generated.
Suppressed 14 warnings (14 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
16 warnings generated.
drivers/video/fbdev/nvidia/nv_i2c.c:89:2: warning: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119 [clang-analyzer-security.insecureAPI.strcpy]
strcpy(chan->adapter.name, name);
^~~~~~
drivers/video/fbdev/nvidia/nv_i2c.c:89:2: note: Call to function 'strcpy' is insecure as it does not provide bounding of the memory buffer. Replace unbounded copy functions with analogous functions that support length arguments such as 'strlcpy'. CWE-119
strcpy(chan->adapter.name, name);
^~~~~~
Suppressed 14 warnings (14 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
8 warnings generated.
16 warnings generated.
drivers/video/fbdev/nvidia/nvidia.c:124:4: warning: Value stored to 'tmp' is never read [clang-analyzer-deadcode.DeadStores]
tmp = 0;
^ ~
drivers/video/fbdev/nvidia/nvidia.c:124:4: note: Value stored to 'tmp' is never read
tmp = 0;
^ ~
Suppressed 14 warnings (14 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
17 warnings generated.
drivers/net/wireless/ath/ath11k/wmi.c:890:2: warning: Value stored to 'ptr' is never read [clang-analyzer-deadcode.DeadStores]
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:890:2: note: Value stored to 'ptr' is never read
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7111:22: warning: Assigned value is garbage or undefined [clang-analyzer-core.uninitialized.Assign]
conn_req.service_id = svc_id[pdev_idx];
^
drivers/net/wireless/ath/ath11k/wmi.c:7227:6: note: Assuming 'wmi_ep_count' is <= field 'max_radios'
if (wmi_ep_count > ab->hw_params.max_radios)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7227:2: note: Taking false branch
if (wmi_ep_count > ab->hw_params.max_radios)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7230:32: note: The value 3 is assigned to 'i'
for (i = 0; i < wmi_ep_count; i++)
^~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:14: note: Assuming 'i' is < 'wmi_ep_count'
for (i = 0; i < wmi_ep_count; i++)
^~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7230:2: note: Loop condition is true. Entering loop body
for (i = 0; i < wmi_ep_count; i++)
^
drivers/net/wireless/ath/ath11k/wmi.c:7231:39: note: Passing the value 3 via 2nd parameter 'pdev_idx'
ath11k_connect_pdev_htc_service(ab, i);
^
drivers/net/wireless/ath/ath11k/wmi.c:7231:3: note: Calling 'ath11k_connect_pdev_htc_service'
ath11k_connect_pdev_htc_service(ab, i);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:7111:22: note: Assigned value is garbage or undefined
conn_req.service_id = svc_id[pdev_idx];
^ ~~~~~~~~~~~~~~~~
Suppressed 15 warnings (15 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
23 warnings generated.
drivers/net/wireless/ath/ath11k/mac.c:1661:27: warning: Although the value stored to 'vht_mcs' is used in the enclosing expression, the value is never actually read from 'vht_mcs' [clang-analyzer-deadcode.DeadStores]
for (i = 0, max_nss = 0, vht_mcs = 0; i < NL80211_VHT_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:1661:27: note: Although the value stored to 'vht_mcs' is used in the enclosing expression, the value is never actually read from 'vht_mcs'
for (i = 0, max_nss = 0, vht_mcs = 0; i < NL80211_VHT_NSS_MAX; i++) {
^ ~
>> drivers/net/wireless/ath/ath11k/mac.c:1927:27: warning: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs' [clang-analyzer-deadcode.DeadStores]
for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:1927:27: note: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs'
for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
^ ~
drivers/net/wireless/ath/ath11k/mac.c:3141:3: warning: 1st function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
kfree(arg.extraie.ptr);
^ ~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:3078:2: note: Control jumps to 'case ATH11K_SCAN_ABORTING:' @line 3089
switch (ar->scan.state) {
^
drivers/net/wireless/ath/ath11k/mac.c:3091:3: note: Execution continues on line 3093
break;
^
drivers/net/wireless/ath/ath11k/mac.c:3095:6: note: 'ret' is -16
if (ret)
^~~
drivers/net/wireless/ath/ath11k/mac.c:3095:2: note: Taking true branch
if (ret)
^
drivers/net/wireless/ath/ath11k/mac.c:3096:3: note: Control jumps to line 3140
goto exit;
^
drivers/net/wireless/ath/ath11k/mac.c:3140:6: note: Assuming field 'ie_len' is not equal to 0
if (req->ie_len)
^~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:3140:2: note: Taking true branch
if (req->ie_len)
^
drivers/net/wireless/ath/ath11k/mac.c:3141:3: note: 1st function call argument is an uninitialized value
kfree(arg.extraie.ptr);
^ ~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4091:3: warning: Value stored to 'bw' is never read [clang-analyzer-deadcode.DeadStores]
bw = WMI_PEER_CHWIDTH_20MHZ;
^ ~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4091:3: note: Value stored to 'bw' is never read
bw = WMI_PEER_CHWIDTH_20MHZ;
^ ~~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4120:3: warning: Value stored to 'smps' is never read [clang-analyzer-deadcode.DeadStores]
smps = WMI_PEER_SMPS_PS_NONE;
^ ~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:4120:3: note: Value stored to 'smps' is never read
smps = WMI_PEER_SMPS_PS_NONE;
^ ~~~~~~~~~~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:5684:2: warning: Value stored to 'changed_flags' is never read [clang-analyzer-deadcode.DeadStores]
changed_flags &= SUPPORTED_FILTERS;
^
drivers/net/wireless/ath/ath11k/mac.c:5684:2: note: Value stored to 'changed_flags' is never read
drivers/net/wireless/ath/ath11k/mac.c:7312:22: warning: Value stored to 'ab' during its initialization is never read [clang-analyzer-deadcode.DeadStores]
struct ath11k_base *ab = ar->ab;
^~ ~~~~~~
drivers/net/wireless/ath/ath11k/mac.c:7312:22: note: Value stored to 'ab' during its initialization is never read
struct ath11k_base *ab = ar->ab;
^~ ~~~~~~
Suppressed 16 warnings (15 in non-user code, 1 with check filters).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
5 warnings generated.
Suppressed 5 warnings (5 in non-user code).
Use -header-filter=.* to display errors from all non-system headers. Use -system-headers to display errors from system headers as well.
6 warnings generated.
include/linux/hid.h:1007:9: warning: Access to field 'name' results in a dereference of a null pointer (loaded from variable 'input') [clang-analyzer-core.NullDereference]
input->name, c, type);
^
drivers/hid/hid-penmount.c:22:6: note: Assuming the condition is true
if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hid/hid-penmount.c:22:2: note: Taking true branch
if ((usage->hid & HID_USAGE_PAGE) == HID_UP_BUTTON) {
^
drivers/hid/hid-penmount.c:23:7: note: Assuming the condition is true
if (((usage->hid - 1) & HID_USAGE) == 0) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
drivers/hid/hid-penmount.c:23:3: note: Taking true branch
if (((usage->hid - 1) & HID_USAGE) == 0) {
^
drivers/hid/hid-penmount.c:24:4: note: Calling 'hid_map_usage'
hid_map_usage(hi, usage, bit, max, EV_KEY, BTN_TOUCH);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:982:2: note: 'input' initialized here
struct input_dev *input = hidinput->input;
^~~~~~~~~~~~~~~~~~~~~~~
include/linux/hid.h:986:2: note: Control jumps to 'case 1:' at line 995
switch (type) {
^
include/linux/hid.h:998:3: note: Execution continues on line 1005
break;
^
include/linux/hid.h:1005:15: note: 'c' is <= 'limit'
if (unlikely(c > limit || !bmap)) {
^
include/linux/compiler.h:78:42: note: expanded from macro 'unlikely'
# define unlikely(x) __builtin_expect(!!(x), 0)
^
include/linux/hid.h:1005:15: note: Left side of '||' is false
if (unlikely(c > limit || !bmap)) {
^
include/linux/hid.h:1005:28: note: Assuming 'bmap' is null
vim +1927 drivers/net/wireless/ath/ath11k/mac.c
61fe43e7216df6 Miles Hu 2021-09-24 1761
d5c65159f28953 Kalle Valo 2019-11-23 1762 static void ath11k_peer_assoc_h_he(struct ath11k *ar,
d5c65159f28953 Kalle Valo 2019-11-23 1763 struct ieee80211_vif *vif,
d5c65159f28953 Kalle Valo 2019-11-23 1764 struct ieee80211_sta *sta,
d5c65159f28953 Kalle Valo 2019-11-23 1765 struct peer_assoc_params *arg)
d5c65159f28953 Kalle Valo 2019-11-23 1766 {
61fe43e7216df6 Miles Hu 2021-09-24 1767 struct ath11k_vif *arvif = (void *)vif->drv_priv;
61fe43e7216df6 Miles Hu 2021-09-24 1768 struct cfg80211_chan_def def;
9f056ed8ee01ad John Crispin 2019-11-25 1769 const struct ieee80211_sta_he_cap *he_cap = &sta->he_cap;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1770 u8 ampdu_factor;
61fe43e7216df6 Miles Hu 2021-09-24 1771 enum nl80211_band band;
61fe43e7216df6 Miles Hu 2021-09-24 1772 u16 *he_mcs_mask;
61fe43e7216df6 Miles Hu 2021-09-24 1773 u8 max_nss, he_mcs;
61fe43e7216df6 Miles Hu 2021-09-24 1774 u16 he_tx_mcs = 0, v = 0;
61fe43e7216df6 Miles Hu 2021-09-24 1775 int i, he_nss, nss_idx;
61fe43e7216df6 Miles Hu 2021-09-24 1776 bool user_rate_valid = true;
61fe43e7216df6 Miles Hu 2021-09-24 1777
61fe43e7216df6 Miles Hu 2021-09-24 1778 if (WARN_ON(ath11k_mac_vif_chan(vif, &def)))
61fe43e7216df6 Miles Hu 2021-09-24 1779 return;
9f056ed8ee01ad John Crispin 2019-11-25 1780
9f056ed8ee01ad John Crispin 2019-11-25 1781 if (!he_cap->has_he)
9f056ed8ee01ad John Crispin 2019-11-25 1782 return;
9f056ed8ee01ad John Crispin 2019-11-25 1783
61fe43e7216df6 Miles Hu 2021-09-24 1784 band = def.chan->band;
61fe43e7216df6 Miles Hu 2021-09-24 1785 he_mcs_mask = arvif->bitrate_mask.control[band].he_mcs;
61fe43e7216df6 Miles Hu 2021-09-24 1786
61fe43e7216df6 Miles Hu 2021-09-24 1787 if (ath11k_peer_assoc_h_he_masked(he_mcs_mask))
61fe43e7216df6 Miles Hu 2021-09-24 1788 return;
61fe43e7216df6 Miles Hu 2021-09-24 1789
9f056ed8ee01ad John Crispin 2019-11-25 1790 arg->he_flag = true;
9f056ed8ee01ad John Crispin 2019-11-25 1791
c8bcd82a4efd05 Kees Cook 2021-06-16 1792 memcpy_and_pad(&arg->peer_he_cap_macinfo,
c8bcd82a4efd05 Kees Cook 2021-06-16 1793 sizeof(arg->peer_he_cap_macinfo),
c8bcd82a4efd05 Kees Cook 2021-06-16 1794 he_cap->he_cap_elem.mac_cap_info,
c8bcd82a4efd05 Kees Cook 2021-06-16 1795 sizeof(he_cap->he_cap_elem.mac_cap_info),
c8bcd82a4efd05 Kees Cook 2021-06-16 1796 0);
c8bcd82a4efd05 Kees Cook 2021-06-16 1797 memcpy_and_pad(&arg->peer_he_cap_phyinfo,
c8bcd82a4efd05 Kees Cook 2021-06-16 1798 sizeof(arg->peer_he_cap_phyinfo),
c8bcd82a4efd05 Kees Cook 2021-06-16 1799 he_cap->he_cap_elem.phy_cap_info,
c8bcd82a4efd05 Kees Cook 2021-06-16 1800 sizeof(he_cap->he_cap_elem.phy_cap_info),
c8bcd82a4efd05 Kees Cook 2021-06-16 1801 0);
60689de46c7f6a Rajkumar Manoharan 2020-04-24 1802 arg->peer_he_ops = vif->bss_conf.he_oper.params;
9f056ed8ee01ad John Crispin 2019-11-25 1803
9f056ed8ee01ad John Crispin 2019-11-25 1804 /* the top most byte is used to indicate BSS color info */
9f056ed8ee01ad John Crispin 2019-11-25 1805 arg->peer_he_ops &= 0xffffff;
9f056ed8ee01ad John Crispin 2019-11-25 1806
af6d39db1b046a Tamizh Chelvam 2020-09-08 1807 /* As per section 26.6.1 11ax Draft5.0, if the Max AMPDU Exponent Extension
af6d39db1b046a Tamizh Chelvam 2020-09-08 1808 * in HE cap is zero, use the arg->peer_max_mpdu as calculated while parsing
af6d39db1b046a Tamizh Chelvam 2020-09-08 1809 * VHT caps(if VHT caps is present) or HT caps (if VHT caps is not present).
af6d39db1b046a Tamizh Chelvam 2020-09-08 1810 *
af6d39db1b046a Tamizh Chelvam 2020-09-08 1811 * For non-zero value of Max AMPDU Extponent Extension in HE MAC caps,
af6d39db1b046a Tamizh Chelvam 2020-09-08 1812 * if a HE STA sends VHT cap and HE cap IE in assoc request then, use
af6d39db1b046a Tamizh Chelvam 2020-09-08 1813 * MAX_AMPDU_LEN_FACTOR as 20 to calculate max_ampdu length.
af6d39db1b046a Tamizh Chelvam 2020-09-08 1814 * If a HE STA that does not send VHT cap, but HE and HT cap in assoc
af6d39db1b046a Tamizh Chelvam 2020-09-08 1815 * request, then use MAX_AMPDU_LEN_FACTOR as 16 to calculate max_ampdu
af6d39db1b046a Tamizh Chelvam 2020-09-08 1816 * length.
af6d39db1b046a Tamizh Chelvam 2020-09-08 1817 */
1f851b8dfd76a0 Johannes Berg 2021-04-09 1818 ampdu_factor = u8_get_bits(he_cap->he_cap_elem.mac_cap_info[3],
1f851b8dfd76a0 Johannes Berg 2021-04-09 1819 IEEE80211_HE_MAC_CAP3_MAX_AMPDU_LEN_EXP_MASK);
af6d39db1b046a Tamizh Chelvam 2020-09-08 1820
af6d39db1b046a Tamizh Chelvam 2020-09-08 1821 if (ampdu_factor) {
af6d39db1b046a Tamizh Chelvam 2020-09-08 1822 if (sta->vht_cap.vht_supported)
af6d39db1b046a Tamizh Chelvam 2020-09-08 1823 arg->peer_max_mpdu = (1 << (IEEE80211_HE_VHT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam 2020-09-08 1824 ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1825 else if (sta->ht_cap.ht_supported)
af6d39db1b046a Tamizh Chelvam 2020-09-08 1826 arg->peer_max_mpdu = (1 << (IEEE80211_HE_HT_MAX_AMPDU_FACTOR +
af6d39db1b046a Tamizh Chelvam 2020-09-08 1827 ampdu_factor)) - 1;
af6d39db1b046a Tamizh Chelvam 2020-09-08 1828 }
af6d39db1b046a Tamizh Chelvam 2020-09-08 1829
9f056ed8ee01ad John Crispin 2019-11-25 1830 if (he_cap->he_cap_elem.phy_cap_info[6] &
9f056ed8ee01ad John Crispin 2019-11-25 1831 IEEE80211_HE_PHY_CAP6_PPE_THRESHOLD_PRESENT) {
9f056ed8ee01ad John Crispin 2019-11-25 1832 int bit = 7;
9f056ed8ee01ad John Crispin 2019-11-25 1833 int nss, ru;
9f056ed8ee01ad John Crispin 2019-11-25 1834
9f056ed8ee01ad John Crispin 2019-11-25 1835 arg->peer_ppet.numss_m1 = he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1836 IEEE80211_PPE_THRES_NSS_MASK;
9f056ed8ee01ad John Crispin 2019-11-25 1837 arg->peer_ppet.ru_bit_mask =
9f056ed8ee01ad John Crispin 2019-11-25 1838 (he_cap->ppe_thres[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1839 IEEE80211_PPE_THRES_RU_INDEX_BITMASK_MASK) >>
9f056ed8ee01ad John Crispin 2019-11-25 1840 IEEE80211_PPE_THRES_RU_INDEX_BITMASK_POS;
9f056ed8ee01ad John Crispin 2019-11-25 1841
9f056ed8ee01ad John Crispin 2019-11-25 1842 for (nss = 0; nss <= arg->peer_ppet.numss_m1; nss++) {
9f056ed8ee01ad John Crispin 2019-11-25 1843 for (ru = 0; ru < 4; ru++) {
9f056ed8ee01ad John Crispin 2019-11-25 1844 u32 val = 0;
9f056ed8ee01ad John Crispin 2019-11-25 1845 int i;
9f056ed8ee01ad John Crispin 2019-11-25 1846
9f056ed8ee01ad John Crispin 2019-11-25 1847 if ((arg->peer_ppet.ru_bit_mask & BIT(ru)) == 0)
9f056ed8ee01ad John Crispin 2019-11-25 1848 continue;
9f056ed8ee01ad John Crispin 2019-11-25 1849 for (i = 0; i < 6; i++) {
9f056ed8ee01ad John Crispin 2019-11-25 1850 val >>= 1;
9f056ed8ee01ad John Crispin 2019-11-25 1851 val |= ((he_cap->ppe_thres[bit / 8] >>
9f056ed8ee01ad John Crispin 2019-11-25 1852 (bit % 8)) & 0x1) << 5;
9f056ed8ee01ad John Crispin 2019-11-25 1853 bit++;
9f056ed8ee01ad John Crispin 2019-11-25 1854 }
9f056ed8ee01ad John Crispin 2019-11-25 1855 arg->peer_ppet.ppet16_ppet8_ru3_ru0[nss] |=
9f056ed8ee01ad John Crispin 2019-11-25 1856 val << (ru * 6);
9f056ed8ee01ad John Crispin 2019-11-25 1857 }
9f056ed8ee01ad John Crispin 2019-11-25 1858 }
9f056ed8ee01ad John Crispin 2019-11-25 1859 }
9f056ed8ee01ad John Crispin 2019-11-25 1860
6d293d447670da John Crispin 2019-11-25 1861 if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_RES)
6d293d447670da John Crispin 2019-11-25 1862 arg->twt_responder = true;
6d293d447670da John Crispin 2019-11-25 1863 if (he_cap->he_cap_elem.mac_cap_info[0] & IEEE80211_HE_MAC_CAP0_TWT_REQ)
6d293d447670da John Crispin 2019-11-25 1864 arg->twt_requester = true;
6d293d447670da John Crispin 2019-11-25 1865
61fe43e7216df6 Miles Hu 2021-09-24 1866 he_nss = ath11k_mac_max_he_nss(he_mcs_mask);
61fe43e7216df6 Miles Hu 2021-09-24 1867
61fe43e7216df6 Miles Hu 2021-09-24 1868 if (he_nss > sta->rx_nss) {
61fe43e7216df6 Miles Hu 2021-09-24 1869 user_rate_valid = false;
61fe43e7216df6 Miles Hu 2021-09-24 1870 for (nss_idx = sta->rx_nss - 1; nss_idx >= 0; nss_idx--) {
61fe43e7216df6 Miles Hu 2021-09-24 1871 if (he_mcs_mask[nss_idx]) {
61fe43e7216df6 Miles Hu 2021-09-24 1872 user_rate_valid = true;
61fe43e7216df6 Miles Hu 2021-09-24 1873 break;
61fe43e7216df6 Miles Hu 2021-09-24 1874 }
61fe43e7216df6 Miles Hu 2021-09-24 1875 }
61fe43e7216df6 Miles Hu 2021-09-24 1876 }
61fe43e7216df6 Miles Hu 2021-09-24 1877
61fe43e7216df6 Miles Hu 2021-09-24 1878 if (!user_rate_valid) {
61fe43e7216df6 Miles Hu 2021-09-24 1879 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 1880 sta->rx_nss, sta->addr);
61fe43e7216df6 Miles Hu 2021-09-24 1881 he_mcs_mask[sta->rx_nss - 1] = he_mcs_mask[he_nss - 1];
61fe43e7216df6 Miles Hu 2021-09-24 1882 }
61fe43e7216df6 Miles Hu 2021-09-24 1883
9f056ed8ee01ad John Crispin 2019-11-25 1884 switch (sta->bandwidth) {
9f056ed8ee01ad John Crispin 2019-11-25 1885 case IEEE80211_STA_RX_BW_160:
9f056ed8ee01ad John Crispin 2019-11-25 1886 if (he_cap->he_cap_elem.phy_cap_info[0] &
9f056ed8ee01ad John Crispin 2019-11-25 1887 IEEE80211_HE_PHY_CAP0_CHANNEL_WIDTH_SET_80PLUS80_MHZ_IN_5G) {
9f056ed8ee01ad John Crispin 2019-11-25 1888 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80p80);
61fe43e7216df6 Miles Hu 2021-09-24 1889 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1890 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1891
9f056ed8ee01ad John Crispin 2019-11-25 1892 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80p80);
9f056ed8ee01ad John Crispin 2019-11-25 1893 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1894
9f056ed8ee01ad John Crispin 2019-11-25 1895 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1896 he_tx_mcs = v;
9f056ed8ee01ad John Crispin 2019-11-25 1897 }
9f056ed8ee01ad John Crispin 2019-11-25 1898 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_160);
9f056ed8ee01ad John Crispin 2019-11-25 1899 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1900
9f056ed8ee01ad John Crispin 2019-11-25 1901 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_160);
61fe43e7216df6 Miles Hu 2021-09-24 1902 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1903 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_160] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1904
9f056ed8ee01ad John Crispin 2019-11-25 1905 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1906 if (!he_tx_mcs)
61fe43e7216df6 Miles Hu 2021-09-24 1907 he_tx_mcs = v;
0b294aebb6a00b Gustavo A. R. Silva 2020-07-27 1908 fallthrough;
9f056ed8ee01ad John Crispin 2019-11-25 1909
9f056ed8ee01ad John Crispin 2019-11-25 1910 default:
9f056ed8ee01ad John Crispin 2019-11-25 1911 v = le16_to_cpu(he_cap->he_mcs_nss_supp.rx_mcs_80);
9f056ed8ee01ad John Crispin 2019-11-25 1912 arg->peer_he_rx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1913
9f056ed8ee01ad John Crispin 2019-11-25 1914 v = le16_to_cpu(he_cap->he_mcs_nss_supp.tx_mcs_80);
61fe43e7216df6 Miles Hu 2021-09-24 1915 v = ath11k_peer_assoc_h_he_limit(v, he_mcs_mask);
9f056ed8ee01ad John Crispin 2019-11-25 1916 arg->peer_he_tx_mcs_set[WMI_HECAP_TXRX_MCS_NSS_IDX_80] = v;
9f056ed8ee01ad John Crispin 2019-11-25 1917
9f056ed8ee01ad John Crispin 2019-11-25 1918 arg->peer_he_mcs_count++;
61fe43e7216df6 Miles Hu 2021-09-24 1919 if (!he_tx_mcs)
61fe43e7216df6 Miles Hu 2021-09-24 1920 he_tx_mcs = v;
9f056ed8ee01ad John Crispin 2019-11-25 1921 break;
9f056ed8ee01ad John Crispin 2019-11-25 1922 }
61fe43e7216df6 Miles Hu 2021-09-24 1923
61fe43e7216df6 Miles Hu 2021-09-24 1924 /* Calculate peer NSS capability from HE capabilities if STA
61fe43e7216df6 Miles Hu 2021-09-24 1925 * supports HE.
61fe43e7216df6 Miles Hu 2021-09-24 1926 */
61fe43e7216df6 Miles Hu 2021-09-24 @1927 for (i = 0, max_nss = 0, he_mcs = 0; i < NL80211_HE_NSS_MAX; i++) {
61fe43e7216df6 Miles Hu 2021-09-24 1928 he_mcs = he_tx_mcs >> (2 * i) & 3;
61fe43e7216df6 Miles Hu 2021-09-24 1929
61fe43e7216df6 Miles Hu 2021-09-24 1930 /* In case of fixed rates, MCS Range in he_tx_mcs might have
61fe43e7216df6 Miles Hu 2021-09-24 1931 * unsupported range, with he_mcs_mask set, so check either of them
61fe43e7216df6 Miles Hu 2021-09-24 1932 * to find nss.
61fe43e7216df6 Miles Hu 2021-09-24 1933 */
61fe43e7216df6 Miles Hu 2021-09-24 1934 if (he_mcs != IEEE80211_HE_MCS_NOT_SUPPORTED ||
61fe43e7216df6 Miles Hu 2021-09-24 1935 he_mcs_mask[i])
61fe43e7216df6 Miles Hu 2021-09-24 1936 max_nss = i + 1;
61fe43e7216df6 Miles Hu 2021-09-24 1937 }
61fe43e7216df6 Miles Hu 2021-09-24 1938 arg->peer_nss = min(sta->rx_nss, max_nss);
61fe43e7216df6 Miles Hu 2021-09-24 1939
61fe43e7216df6 Miles Hu 2021-09-24 1940 ath11k_dbg(ar->ab, ATH11K_DBG_MAC,
61fe43e7216df6 Miles Hu 2021-09-24 1941 "mac he peer %pM nss %d mcs cnt %d\n",
61fe43e7216df6 Miles Hu 2021-09-24 1942 sta->addr, arg->peer_nss, arg->peer_he_mcs_count);
d5c65159f28953 Kalle Valo 2019-11-23 1943 }
d5c65159f28953 Kalle Valo 2019-11-23 1944
---
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] 3+ messages in thread
end of thread, other threads:[~2021-12-05 0:40 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-28 9:04 drivers/net/wireless/ath/ath11k/mac.c:1927:27: warning: Although the value stored to 'he_mcs' is used in the enclosing expression, the value is never actually read from 'he_mcs' [clang-analyzer-deadcode.DeadStores] kernel test robot
-- strict thread matches above, loose matches on Subject: below --
2021-12-01 10:52 kernel test robot
2021-12-05 0:40 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.