From: kernel test robot <lkp@intel.com>
To: kbuild@lists.01.org
Subject: [kvalo-ath:pending 33/42] drivers/net/wireless/ath/ath11k/hal_rx.c:1246:3: warning: Value stored to 'he_stbc' is never read [clang-analyzer-deadcode.DeadStores]
Date: Wed, 23 Feb 2022 07:10:14 +0800 [thread overview]
Message-ID: <202202230731.bSpDCarB-lkp@intel.com> (raw)
[-- Attachment #1: Type: text/plain, Size: 71428 bytes --]
CC: llvm(a)lists.linux.dev
CC: kbuild-all(a)lists.01.org
CC: Kalle Valo <kvalo@codeaurora.org>
CC: ath10k(a)lists.infradead.org
CC: linux-kernel(a)vger.kernel.org
TO: Pradeep Kumar Chitrapu <pradeepc@codeaurora.org>
CC: Kalle Valo <quic_kvalo@quicinc.com>
CC: Miles Hu <milehu@codeaurora.org>
CC: Anilkumar Kolli <akolli@codeaurora.org>
tree: https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git pending
head: 4136ddcfda28450e2d01173e37300b95c8687d9b
commit: 20168f00578862c259f02f179971f71c51a2a7a4 [33/42] ath11k: translate HE status to radiotap format
:::::: branch date: 9 hours ago
:::::: commit date: 2 days ago
config: x86_64-randconfig-c007 (https://download.01.org/0day-ci/archive/20220223/202202230731.bSpDCarB-lkp(a)intel.com/config)
compiler: clang version 15.0.0 (https://github.com/llvm/llvm-project d271fc04d5b97b12e6b797c6067d3c96a8d7470e)
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/kvalo/ath.git/commit/?id=20168f00578862c259f02f179971f71c51a2a7a4
git remote add kvalo-ath https://git.kernel.org/pub/scm/linux/kernel/git/kvalo/ath.git
git fetch --no-tags kvalo-ath pending
git checkout 20168f00578862c259f02f179971f71c51a2a7a4
# save the config file to linux build tree
COMPILER_INSTALL_PATH=$HOME/0day COMPILER=clang make.cross ARCH=x86_64 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 >>)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
net/sunrpc/cache.c:1081:4: note: Taking false branch
if (test_bit(CACHE_PENDING, &ch->flags))
^
net/sunrpc/cache.c:1084:8: note: Assuming field 'readers' is equal to 0
if (cr->readers != 0)
^~~~~~~~~~~~~~~~
net/sunrpc/cache.c:1084:4: note: Taking false branch
if (cr->readers != 0)
^
net/sunrpc/cache.c:1076:2: note: Loop condition is false. Execution continues on line 1088
list_for_each_entry_safe(cq, tmp, &detail->queue, list)
^
include/linux/list.h:725:2: note: expanded from macro 'list_for_each_entry_safe'
for (pos = list_first_entry(head, typeof(*pos), member), \
^
net/sunrpc/cache.c:1089:2: note: Loop condition is true. Entering loop body
while (!list_empty(&dequeued)) {
^
net/sunrpc/cache.c:1094:3: note: Memory is released
kfree(cr);
^~~~~~~~~
net/sunrpc/cache.c:1089:2: note: Loop condition is true. Entering loop body
while (!list_empty(&dequeued)) {
^
net/sunrpc/cache.c:1091:3: note: Calling 'list_del'
list_del(&cr->q.list);
^~~~~~~~~~~~~~~~~~~~~
include/linux/list.h:149:14: note: Use of memory after it is freed
entry->next = LIST_POISON1;
~~~~~~~~~~~ ^
Suppressed 11 warnings (11 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 (9 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.
Suppressed 6 warnings (5 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
4 warnings generated.
Suppressed 4 warnings (4 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.
16 warnings generated.
>> drivers/net/wireless/ath/ath11k/hal_rx.c:1246:3: warning: Value stored to 'he_stbc' is never read [clang-analyzer-deadcode.DeadStores]
he_stbc = value;
^ ~~~~~
drivers/net/wireless/ath/ath11k/hal_rx.c:1246:3: note: Value stored to 'he_stbc' is never read
he_stbc = value;
^ ~~~~~
>> drivers/net/wireless/ath/ath11k/hal_rx.c:1415:3: warning: Value stored to 'he_dcm' is never read [clang-analyzer-deadcode.DeadStores]
he_dcm = value;
^ ~~~~~
drivers/net/wireless/ath/ath11k/hal_rx.c:1415:3: note: Value stored to 'he_dcm' is never read
he_dcm = value;
^ ~~~~~
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.
19 warnings generated.
drivers/net/wireless/ath/ath11k/wmi.c:953:2: warning: Value stored to 'ptr' is never read [clang-analyzer-deadcode.DeadStores]
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:953:2: note: Value stored to 'ptr' is never read
ptr += sizeof(*tlv);
^ ~~~~~~~~~~~~
drivers/net/wireless/ath/ath11k/wmi.c:6617:7: warning: 2nd function call argument is an uninitialized value [clang-analyzer-core.CallAndMessage]
ar = ath11k_mac_get_ar_by_vdev_id(ab, peer_del_resp.vdev_id);
^
drivers/net/wireless/ath/ath11k/wmi.c:7774:7: note: Taking false branch
id = FIELD_GET(WMI_CMD_HDR_CMD_ID, (cmd_hdr->cmd_id));
^
include/linux/bitfield.h:125:3: note: expanded from macro 'FIELD_GET'
__BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \
^
include/linux/bitfield.h:62:3: note: expanded from macro '__BF_FIELD_CHECK'
BUILD_BUG_ON_MSG(!__builtin_constant_p(_mask), \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/net/wireless/ath/ath11k/wmi.c:7774:7: note: Loop condition is false. Exiting loop
id = FIELD_GET(WMI_CMD_HDR_CMD_ID, (cmd_hdr->cmd_id));
^
include/linux/bitfield.h:125:3: note: expanded from macro 'FIELD_GET'
__BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \
^
include/linux/bitfield.h:62:3: note: expanded from macro '__BF_FIELD_CHECK'
BUILD_BUG_ON_MSG(!__builtin_constant_p(_mask), \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
do { \
^
drivers/net/wireless/ath/ath11k/wmi.c:7774:7: note: Taking false branch
id = FIELD_GET(WMI_CMD_HDR_CMD_ID, (cmd_hdr->cmd_id));
^
include/linux/bitfield.h:125:3: note: expanded from macro 'FIELD_GET'
__BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \
^
include/linux/bitfield.h:64:3: note: expanded from macro '__BF_FIELD_CHECK'
BUILD_BUG_ON_MSG((_mask) == 0, _pfx "mask is zero"); \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:326:3: note: expanded from macro '__compiletime_assert'
if (!(condition)) \
^
drivers/net/wireless/ath/ath11k/wmi.c:7774:7: note: Loop condition is false. Exiting loop
id = FIELD_GET(WMI_CMD_HDR_CMD_ID, (cmd_hdr->cmd_id));
^
include/linux/bitfield.h:125:3: note: expanded from macro 'FIELD_GET'
__BF_FIELD_CHECK(_mask, _reg, 0U, "FIELD_GET: "); \
^
include/linux/bitfield.h:64:3: note: expanded from macro '__BF_FIELD_CHECK'
BUILD_BUG_ON_MSG((_mask) == 0, _pfx "mask is zero"); \
^
include/linux/build_bug.h:39:37: note: expanded from macro 'BUILD_BUG_ON_MSG'
#define BUILD_BUG_ON_MSG(cond, msg) compiletime_assert(!(cond), msg)
^
include/linux/compiler_types.h:346:2: note: expanded from macro 'compiletime_assert'
_compiletime_assert(condition, msg, __compiletime_assert_, __COUNTER__)
^
include/linux/compiler_types.h:334:2: note: expanded from macro '_compiletime_assert'
__compiletime_assert(condition, msg, prefix, suffix)
^
include/linux/compiler_types.h:318:2: note: expanded from macro '__compiletime_assert'
do { \
vim +/he_stbc +1246 drivers/net/wireless/ath/ath11k/hal_rx.c
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 867
d5c65159f28953 Kalle Valo 2019-11-23 868 static enum hal_rx_mon_status
d5c65159f28953 Kalle Valo 2019-11-23 869 ath11k_hal_rx_parse_mon_status_tlv(struct ath11k_base *ab,
d5c65159f28953 Kalle Valo 2019-11-23 870 struct hal_rx_mon_ppdu_info *ppdu_info,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 871 u32 tlv_tag, u8 *tlv_data, u32 userid)
d5c65159f28953 Kalle Valo 2019-11-23 872 {
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 873 u32 info0, info1, value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 874 u8 he_dcm = 0, he_stbc = 0;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 875 u16 he_gi = 0, he_ltf = 0;
d5c65159f28953 Kalle Valo 2019-11-23 876
d5c65159f28953 Kalle Valo 2019-11-23 877 switch (tlv_tag) {
d5c65159f28953 Kalle Valo 2019-11-23 878 case HAL_RX_PPDU_START: {
d5c65159f28953 Kalle Valo 2019-11-23 879 struct hal_rx_ppdu_start *ppdu_start =
d5c65159f28953 Kalle Valo 2019-11-23 880 (struct hal_rx_ppdu_start *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 881
d5c65159f28953 Kalle Valo 2019-11-23 882 ppdu_info->ppdu_id =
d5c65159f28953 Kalle Valo 2019-11-23 883 FIELD_GET(HAL_RX_PPDU_START_INFO0_PPDU_ID,
d5c65159f28953 Kalle Valo 2019-11-23 884 __le32_to_cpu(ppdu_start->info0));
d5c65159f28953 Kalle Valo 2019-11-23 885 ppdu_info->chan_num = __le32_to_cpu(ppdu_start->chan_num);
d5c65159f28953 Kalle Valo 2019-11-23 886 ppdu_info->ppdu_ts = __le32_to_cpu(ppdu_start->ppdu_start_ts);
d5c65159f28953 Kalle Valo 2019-11-23 887 break;
d5c65159f28953 Kalle Valo 2019-11-23 888 }
d5c65159f28953 Kalle Valo 2019-11-23 889 case HAL_RX_PPDU_END_USER_STATS: {
d5c65159f28953 Kalle Valo 2019-11-23 890 struct hal_rx_ppdu_end_user_stats *eu_stats =
d5c65159f28953 Kalle Valo 2019-11-23 891 (struct hal_rx_ppdu_end_user_stats *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 892
d5c65159f28953 Kalle Valo 2019-11-23 893 info0 = __le32_to_cpu(eu_stats->info0);
d5c65159f28953 Kalle Valo 2019-11-23 894 info1 = __le32_to_cpu(eu_stats->info1);
d5c65159f28953 Kalle Valo 2019-11-23 895
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 896 ppdu_info->ast_index =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 897 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO2_AST_INDEX,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 898 __le32_to_cpu(eu_stats->info2));
d5c65159f28953 Kalle Valo 2019-11-23 899 ppdu_info->tid =
d5c65159f28953 Kalle Valo 2019-11-23 900 ffs(FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO6_TID_BITMAP,
d5c65159f28953 Kalle Valo 2019-11-23 901 __le32_to_cpu(eu_stats->info6))) - 1;
d5c65159f28953 Kalle Valo 2019-11-23 902 ppdu_info->tcp_msdu_count =
d5c65159f28953 Kalle Valo 2019-11-23 903 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO4_TCP_MSDU_CNT,
d5c65159f28953 Kalle Valo 2019-11-23 904 __le32_to_cpu(eu_stats->info4));
d5c65159f28953 Kalle Valo 2019-11-23 905 ppdu_info->udp_msdu_count =
d5c65159f28953 Kalle Valo 2019-11-23 906 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO4_UDP_MSDU_CNT,
d5c65159f28953 Kalle Valo 2019-11-23 907 __le32_to_cpu(eu_stats->info4));
d5c65159f28953 Kalle Valo 2019-11-23 908 ppdu_info->other_msdu_count =
d5c65159f28953 Kalle Valo 2019-11-23 909 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO5_OTHER_MSDU_CNT,
d5c65159f28953 Kalle Valo 2019-11-23 910 __le32_to_cpu(eu_stats->info5));
d5c65159f28953 Kalle Valo 2019-11-23 911 ppdu_info->tcp_ack_msdu_count =
d5c65159f28953 Kalle Valo 2019-11-23 912 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO5_TCP_ACK_MSDU_CNT,
d5c65159f28953 Kalle Valo 2019-11-23 913 __le32_to_cpu(eu_stats->info5));
d5c65159f28953 Kalle Valo 2019-11-23 914 ppdu_info->preamble_type =
d5c65159f28953 Kalle Valo 2019-11-23 915 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO1_PKT_TYPE, info1);
d5c65159f28953 Kalle Valo 2019-11-23 916 ppdu_info->num_mpdu_fcs_ok =
d5c65159f28953 Kalle Valo 2019-11-23 917 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO1_MPDU_CNT_FCS_OK,
d5c65159f28953 Kalle Valo 2019-11-23 918 info1);
d5c65159f28953 Kalle Valo 2019-11-23 919 ppdu_info->num_mpdu_fcs_err =
d5c65159f28953 Kalle Valo 2019-11-23 920 FIELD_GET(HAL_RX_PPDU_END_USER_STATS_INFO0_MPDU_CNT_FCS_ERR,
d5c65159f28953 Kalle Valo 2019-11-23 921 info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 922 switch (ppdu_info->preamble_type) {
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 923 case HAL_RX_PREAMBLE_11N:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 924 ppdu_info->ht_flags = 1;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 925 break;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 926 case HAL_RX_PREAMBLE_11AC:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 927 ppdu_info->vht_flags = 1;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 928 break;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 929 case HAL_RX_PREAMBLE_11AX:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 930 ppdu_info->he_flags = 1;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 931 break;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 932 default:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 933 break;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 934 }
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 935
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 936 if (userid < HAL_MAX_UL_MU_USERS) {
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 937 struct hal_rx_user_status *rxuser_stats =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 938 &ppdu_info->userstats;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 939
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 940 ath11k_hal_rx_handle_ofdma_info(tlv_data, rxuser_stats);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 941 ath11k_hal_rx_populate_mu_user_info(tlv_data, ppdu_info,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 942 rxuser_stats);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 943 }
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 944 ppdu_info->userstats.mpdu_fcs_ok_bitmap[0] =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 945 __le32_to_cpu(eu_stats->rsvd1[0]);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 946 ppdu_info->userstats.mpdu_fcs_ok_bitmap[1] =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 947 __le32_to_cpu(eu_stats->rsvd1[1]);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 948
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 949 break;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 950 }
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 951 case HAL_RX_PPDU_END_USER_STATS_EXT: {
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 952 struct hal_rx_ppdu_end_user_stats_ext *eu_stats =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 953 (struct hal_rx_ppdu_end_user_stats_ext *)tlv_data;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 954 ppdu_info->userstats.mpdu_fcs_ok_bitmap[2] = eu_stats->info1;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 955 ppdu_info->userstats.mpdu_fcs_ok_bitmap[3] = eu_stats->info2;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 956 ppdu_info->userstats.mpdu_fcs_ok_bitmap[4] = eu_stats->info3;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 957 ppdu_info->userstats.mpdu_fcs_ok_bitmap[5] = eu_stats->info4;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 958 ppdu_info->userstats.mpdu_fcs_ok_bitmap[6] = eu_stats->info5;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 959 ppdu_info->userstats.mpdu_fcs_ok_bitmap[7] = eu_stats->info6;
d5c65159f28953 Kalle Valo 2019-11-23 960 break;
d5c65159f28953 Kalle Valo 2019-11-23 961 }
d5c65159f28953 Kalle Valo 2019-11-23 962 case HAL_PHYRX_HT_SIG: {
d5c65159f28953 Kalle Valo 2019-11-23 963 struct hal_rx_ht_sig_info *ht_sig =
d5c65159f28953 Kalle Valo 2019-11-23 964 (struct hal_rx_ht_sig_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 965
d5c65159f28953 Kalle Valo 2019-11-23 966 info0 = __le32_to_cpu(ht_sig->info0);
d5c65159f28953 Kalle Valo 2019-11-23 967 info1 = __le32_to_cpu(ht_sig->info1);
d5c65159f28953 Kalle Valo 2019-11-23 968
d5c65159f28953 Kalle Valo 2019-11-23 969 ppdu_info->mcs = FIELD_GET(HAL_RX_HT_SIG_INFO_INFO0_MCS, info0);
d5c65159f28953 Kalle Valo 2019-11-23 970 ppdu_info->bw = FIELD_GET(HAL_RX_HT_SIG_INFO_INFO0_BW, info0);
d5c65159f28953 Kalle Valo 2019-11-23 971 ppdu_info->is_stbc = FIELD_GET(HAL_RX_HT_SIG_INFO_INFO1_STBC,
d5c65159f28953 Kalle Valo 2019-11-23 972 info1);
d5c65159f28953 Kalle Valo 2019-11-23 973 ppdu_info->ldpc = FIELD_GET(HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING, info1);
d5c65159f28953 Kalle Valo 2019-11-23 974 ppdu_info->gi = info1 & HAL_RX_HT_SIG_INFO_INFO1_GI;
d5c65159f28953 Kalle Valo 2019-11-23 975
d5c65159f28953 Kalle Valo 2019-11-23 976 switch (ppdu_info->mcs) {
d5c65159f28953 Kalle Valo 2019-11-23 977 case 0 ... 7:
d5c65159f28953 Kalle Valo 2019-11-23 978 ppdu_info->nss = 1;
d5c65159f28953 Kalle Valo 2019-11-23 979 break;
d5c65159f28953 Kalle Valo 2019-11-23 980 case 8 ... 15:
d5c65159f28953 Kalle Valo 2019-11-23 981 ppdu_info->nss = 2;
d5c65159f28953 Kalle Valo 2019-11-23 982 break;
d5c65159f28953 Kalle Valo 2019-11-23 983 case 16 ... 23:
d5c65159f28953 Kalle Valo 2019-11-23 984 ppdu_info->nss = 3;
d5c65159f28953 Kalle Valo 2019-11-23 985 break;
d5c65159f28953 Kalle Valo 2019-11-23 986 case 24 ... 31:
d5c65159f28953 Kalle Valo 2019-11-23 987 ppdu_info->nss = 4;
d5c65159f28953 Kalle Valo 2019-11-23 988 break;
d5c65159f28953 Kalle Valo 2019-11-23 989 }
d5c65159f28953 Kalle Valo 2019-11-23 990
d5c65159f28953 Kalle Valo 2019-11-23 991 if (ppdu_info->nss > 1)
d5c65159f28953 Kalle Valo 2019-11-23 992 ppdu_info->mcs = ppdu_info->mcs % 8;
d5c65159f28953 Kalle Valo 2019-11-23 993
d5c65159f28953 Kalle Valo 2019-11-23 994 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU;
d5c65159f28953 Kalle Valo 2019-11-23 995 break;
d5c65159f28953 Kalle Valo 2019-11-23 996 }
d5c65159f28953 Kalle Valo 2019-11-23 997 case HAL_PHYRX_L_SIG_B: {
d5c65159f28953 Kalle Valo 2019-11-23 998 struct hal_rx_lsig_b_info *lsigb =
d5c65159f28953 Kalle Valo 2019-11-23 999 (struct hal_rx_lsig_b_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1000
d5c65159f28953 Kalle Valo 2019-11-23 1001 ppdu_info->rate = FIELD_GET(HAL_RX_LSIG_B_INFO_INFO0_RATE,
d5c65159f28953 Kalle Valo 2019-11-23 1002 __le32_to_cpu(lsigb->info0));
d5c65159f28953 Kalle Valo 2019-11-23 1003 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU;
d5c65159f28953 Kalle Valo 2019-11-23 1004 break;
d5c65159f28953 Kalle Valo 2019-11-23 1005 }
d5c65159f28953 Kalle Valo 2019-11-23 1006 case HAL_PHYRX_L_SIG_A: {
d5c65159f28953 Kalle Valo 2019-11-23 1007 struct hal_rx_lsig_a_info *lsiga =
d5c65159f28953 Kalle Valo 2019-11-23 1008 (struct hal_rx_lsig_a_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1009
d5c65159f28953 Kalle Valo 2019-11-23 1010 ppdu_info->rate = FIELD_GET(HAL_RX_LSIG_A_INFO_INFO0_RATE,
d5c65159f28953 Kalle Valo 2019-11-23 1011 __le32_to_cpu(lsiga->info0));
d5c65159f28953 Kalle Valo 2019-11-23 1012 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU;
d5c65159f28953 Kalle Valo 2019-11-23 1013 break;
d5c65159f28953 Kalle Valo 2019-11-23 1014 }
d5c65159f28953 Kalle Valo 2019-11-23 1015 case HAL_PHYRX_VHT_SIG_A: {
d5c65159f28953 Kalle Valo 2019-11-23 1016 struct hal_rx_vht_sig_a_info *vht_sig =
d5c65159f28953 Kalle Valo 2019-11-23 1017 (struct hal_rx_vht_sig_a_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1018 u32 nsts;
d5c65159f28953 Kalle Valo 2019-11-23 1019 u32 group_id;
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1020 u8 gi_setting;
d5c65159f28953 Kalle Valo 2019-11-23 1021
d5c65159f28953 Kalle Valo 2019-11-23 1022 info0 = __le32_to_cpu(vht_sig->info0);
d5c65159f28953 Kalle Valo 2019-11-23 1023 info1 = __le32_to_cpu(vht_sig->info1);
d5c65159f28953 Kalle Valo 2019-11-23 1024
d5c65159f28953 Kalle Valo 2019-11-23 1025 ppdu_info->ldpc = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING,
d5c65159f28953 Kalle Valo 2019-11-23 1026 info0);
d5c65159f28953 Kalle Valo 2019-11-23 1027 ppdu_info->mcs = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_MCS,
d5c65159f28953 Kalle Valo 2019-11-23 1028 info1);
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1029 gi_setting = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_GI_SETTING,
d5c65159f28953 Kalle Valo 2019-11-23 1030 info1);
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1031 switch (gi_setting) {
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1032 case HAL_RX_VHT_SIG_A_NORMAL_GI:
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1033 ppdu_info->gi = HAL_RX_GI_0_8_US;
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1034 break;
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1035 case HAL_RX_VHT_SIG_A_SHORT_GI:
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1036 case HAL_RX_VHT_SIG_A_SHORT_GI_AMBIGUITY:
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1037 ppdu_info->gi = HAL_RX_GI_0_4_US;
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1038 break;
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1039 }
28dee8ef7645cd Manikanta Pubbisetty 2019-11-28 1040
d5c65159f28953 Kalle Valo 2019-11-23 1041 ppdu_info->is_stbc = info0 & HAL_RX_VHT_SIG_A_INFO_INFO0_STBC;
d5c65159f28953 Kalle Valo 2019-11-23 1042 nsts = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO0_NSTS, info0);
d5c65159f28953 Kalle Valo 2019-11-23 1043 if (ppdu_info->is_stbc && nsts > 0)
d5c65159f28953 Kalle Valo 2019-11-23 1044 nsts = ((nsts + 1) >> 1) - 1;
d5c65159f28953 Kalle Valo 2019-11-23 1045
d5c65159f28953 Kalle Valo 2019-11-23 1046 ppdu_info->nss = (nsts & VHT_SIG_SU_NSS_MASK) + 1;
d5c65159f28953 Kalle Valo 2019-11-23 1047 ppdu_info->bw = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO0_BW,
d5c65159f28953 Kalle Valo 2019-11-23 1048 info0);
d5c65159f28953 Kalle Valo 2019-11-23 1049 ppdu_info->beamformed = info1 &
d5c65159f28953 Kalle Valo 2019-11-23 1050 HAL_RX_VHT_SIG_A_INFO_INFO1_BEAMFORMED;
d5c65159f28953 Kalle Valo 2019-11-23 1051 group_id = FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO0_GROUP_ID,
d5c65159f28953 Kalle Valo 2019-11-23 1052 info0);
d5c65159f28953 Kalle Valo 2019-11-23 1053 if (group_id == 0 || group_id == 63)
d5c65159f28953 Kalle Valo 2019-11-23 1054 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU;
d5c65159f28953 Kalle Valo 2019-11-23 1055 else
d5c65159f28953 Kalle Valo 2019-11-23 1056 ppdu_info->reception_type =
d5c65159f28953 Kalle Valo 2019-11-23 1057 HAL_RX_RECEPTION_TYPE_MU_MIMO;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1058 ppdu_info->vht_flag_values5 = group_id;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1059 ppdu_info->vht_flag_values3[0] = (((ppdu_info->mcs) << 4) |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1060 ppdu_info->nss);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1061 ppdu_info->vht_flag_values2 = ppdu_info->bw;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1062 ppdu_info->vht_flag_values4 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1063 FIELD_GET(HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING, info1);
d5c65159f28953 Kalle Valo 2019-11-23 1064 break;
d5c65159f28953 Kalle Valo 2019-11-23 1065 }
d5c65159f28953 Kalle Valo 2019-11-23 1066 case HAL_PHYRX_HE_SIG_A_SU: {
d5c65159f28953 Kalle Valo 2019-11-23 1067 struct hal_rx_he_sig_a_su_info *he_sig_a =
d5c65159f28953 Kalle Valo 2019-11-23 1068 (struct hal_rx_he_sig_a_su_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1069
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1070 ppdu_info->he_flags = 1;
d5c65159f28953 Kalle Valo 2019-11-23 1071 info0 = __le32_to_cpu(he_sig_a->info0);
d5c65159f28953 Kalle Valo 2019-11-23 1072 info1 = __le32_to_cpu(he_sig_a->info1);
d5c65159f28953 Kalle Valo 2019-11-23 1073
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1074 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_FORMAT_IND, info0);
d5c65159f28953 Kalle Valo 2019-11-23 1075
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1076 if (value == 0)
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1077 ppdu_info->he_data1 = IEEE80211_RADIOTAP_HE_DATA1_FORMAT_TRIG;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1078 else
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1079 ppdu_info->he_data1 = IEEE80211_RADIOTAP_HE_DATA1_FORMAT_SU;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1080
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1081 ppdu_info->he_data1 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1082 IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1083 IEEE80211_RADIOTAP_HE_DATA1_BEAM_CHANGE_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1084 IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1085 IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1086 IEEE80211_RADIOTAP_HE_DATA1_DATA_DCM_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1087 IEEE80211_RADIOTAP_HE_DATA1_CODING_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1088 IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1089 IEEE80211_RADIOTAP_HE_DATA1_STBC_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1090 IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1091 IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1092
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1093 ppdu_info->he_data2 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1094 IEEE80211_RADIOTAP_HE_DATA2_GI_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1095 IEEE80211_RADIOTAP_HE_DATA2_TXBF_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1096 IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1097 IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1098 IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1099 IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1100 IEEE80211_RADIOTAP_HE_DATA2_MIDAMBLE_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1101
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1102 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_BSS_COLOR, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1103 ppdu_info->he_data3 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1104 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1105 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_BEAM_CHANGE, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1106 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1107 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_BEAM_CHANGE, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1108 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_DL_UL_FLAG, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1109 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1110 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_UL_DL, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1111 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_MCS, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1112 ppdu_info->mcs = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1113 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1114 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_DATA_MCS, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1115
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1116 he_dcm = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_DCM, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1117 ppdu_info->dcm = he_dcm;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1118 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1119 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_DATA_DCM, he_dcm);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1120 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1121 ppdu_info->ldpc = (value == HAL_RX_SU_MU_CODING_LDPC) ? 1 : 0;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1122 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1123 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_CODING, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1124 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_LDPC_EXTRA, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1125 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1126 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1127 he_stbc = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_STBC, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1128 ppdu_info->is_stbc = he_stbc;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1129 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1130 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_STBC, he_stbc);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1131
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1132 /* data4 */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1133 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_SPATIAL_REUSE, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1134 ppdu_info->he_data4 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1135 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1136
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1137 /* data5 */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1138 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_TRANSMIT_BW, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1139 ppdu_info->bw = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1140 ppdu_info->he_data5 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1141 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1142 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_CP_LTF_SIZE, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1143 switch (value) {
d5c65159f28953 Kalle Valo 2019-11-23 1144 case 0:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1145 he_gi = HE_GI_0_8;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1146 he_ltf = HE_LTF_1_X;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1147 break;
d5c65159f28953 Kalle Valo 2019-11-23 1148 case 1:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1149 he_gi = HE_GI_0_8;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1150 he_ltf = HE_LTF_2_X;
d5c65159f28953 Kalle Valo 2019-11-23 1151 break;
d5c65159f28953 Kalle Valo 2019-11-23 1152 case 2:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1153 he_gi = HE_GI_1_6;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1154 he_ltf = HE_LTF_2_X;
d5c65159f28953 Kalle Valo 2019-11-23 1155 break;
d5c65159f28953 Kalle Valo 2019-11-23 1156 case 3:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1157 if (he_dcm && he_stbc) {
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1158 he_gi = HE_GI_0_8;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1159 he_ltf = HE_LTF_4_X;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1160 } else {
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1161 he_gi = HE_GI_3_2;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1162 he_ltf = HE_LTF_4_X;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1163 }
d5c65159f28953 Kalle Valo 2019-11-23 1164 break;
d5c65159f28953 Kalle Valo 2019-11-23 1165 }
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1166 ppdu_info->gi = he_gi;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1167 he_gi = (he_gi != 0) ? he_gi - 1 : 0;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1168 ppdu_info->he_data5 |= FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_GI, he_gi);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1169 ppdu_info->ltf_size = he_ltf;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1170 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1171 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1172 (he_ltf == HE_LTF_4_X) ? he_ltf - 1 : he_ltf);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1173
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1174 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1175 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1176 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1177
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1178 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_PKT_EXT_FACTOR, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1179 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1180 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1181
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1182 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1183 ppdu_info->beamformed = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1184 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1185 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_TXBF, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1186 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_PKT_EXT_PE_DISAM, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1187 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1188 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1189
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1190 /* data6 */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1191 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1192 value++;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1193 ppdu_info->nss = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1194 ppdu_info->he_data6 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1195 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA6_NSTS, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1196 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_DOPPLER_IND, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1197 ppdu_info->he_data6 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1198 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA6_DOPPLER, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1199 value = FIELD_GET(HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXOP_DURATION, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1200 ppdu_info->he_data6 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1201 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA6_TXOP, value);
d5c65159f28953 Kalle Valo 2019-11-23 1202
d5c65159f28953 Kalle Valo 2019-11-23 1203 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU;
d5c65159f28953 Kalle Valo 2019-11-23 1204 break;
d5c65159f28953 Kalle Valo 2019-11-23 1205 }
d5c65159f28953 Kalle Valo 2019-11-23 1206 case HAL_PHYRX_HE_SIG_A_MU_DL: {
d5c65159f28953 Kalle Valo 2019-11-23 1207 struct hal_rx_he_sig_a_mu_dl_info *he_sig_a_mu_dl =
d5c65159f28953 Kalle Valo 2019-11-23 1208 (struct hal_rx_he_sig_a_mu_dl_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1209
d5c65159f28953 Kalle Valo 2019-11-23 1210 info0 = __le32_to_cpu(he_sig_a_mu_dl->info0);
d5c65159f28953 Kalle Valo 2019-11-23 1211 info1 = __le32_to_cpu(he_sig_a_mu_dl->info1);
d5c65159f28953 Kalle Valo 2019-11-23 1212
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1213 ppdu_info->he_mu_flags = 1;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1214
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1215 ppdu_info->he_data1 = IEEE80211_RADIOTAP_HE_DATA1_FORMAT_MU;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1216 ppdu_info->he_data1 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1217 IEEE80211_RADIOTAP_HE_DATA1_BSS_COLOR_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1218 IEEE80211_RADIOTAP_HE_DATA1_UL_DL_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1219 IEEE80211_RADIOTAP_HE_DATA1_LDPC_XSYMSEG_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1220 IEEE80211_RADIOTAP_HE_DATA1_STBC_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1221 IEEE80211_RADIOTAP_HE_DATA1_BW_RU_ALLOC_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1222 IEEE80211_RADIOTAP_HE_DATA1_DOPPLER_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1223
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1224 ppdu_info->he_data2 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1225 IEEE80211_RADIOTAP_HE_DATA2_GI_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1226 IEEE80211_RADIOTAP_HE_DATA2_NUM_LTF_SYMS_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1227 IEEE80211_RADIOTAP_HE_DATA2_PRE_FEC_PAD_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1228 IEEE80211_RADIOTAP_HE_DATA2_PE_DISAMBIG_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1229 IEEE80211_RADIOTAP_HE_DATA2_TXOP_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1230 IEEE80211_RADIOTAP_HE_DATA2_MIDAMBLE_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1231
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1232 /*data3*/
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1233 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_BSS_COLOR, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1234 ppdu_info->he_data3 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1235 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_BSS_COLOR, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1236
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1237 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_UL_FLAG, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1238 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1239 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_UL_DL, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1240
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1241 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_LDPC_EXTRA, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1242 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1243 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_LDPC_XSYMSEG, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1244
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1245 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_STBC, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 @1246 he_stbc = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1247 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1248 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_STBC, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1249
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1250 /*data4*/
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1251 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_SPATIAL_REUSE, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1252 ppdu_info->he_data4 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1253 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA4_SU_MU_SPTL_REUSE, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1254
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1255 /*data5*/
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1256 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_TRANSMIT_BW, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1257 ppdu_info->bw = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1258 ppdu_info->he_data5 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1259 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_DATA_BW_RU_ALLOC, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1260
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1261 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_CP_LTF_SIZE, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1262 switch (value) {
d5c65159f28953 Kalle Valo 2019-11-23 1263 case 0:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1264 he_gi = HE_GI_0_8;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1265 he_ltf = HE_LTF_4_X;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1266 break;
d5c65159f28953 Kalle Valo 2019-11-23 1267 case 1:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1268 he_gi = HE_GI_0_8;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1269 he_ltf = HE_LTF_2_X;
d5c65159f28953 Kalle Valo 2019-11-23 1270 break;
d5c65159f28953 Kalle Valo 2019-11-23 1271 case 2:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1272 he_gi = HE_GI_1_6;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1273 he_ltf = HE_LTF_2_X;
d5c65159f28953 Kalle Valo 2019-11-23 1274 break;
d5c65159f28953 Kalle Valo 2019-11-23 1275 case 3:
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1276 he_gi = HE_GI_3_2;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1277 he_ltf = HE_LTF_4_X;
d5c65159f28953 Kalle Valo 2019-11-23 1278 break;
d5c65159f28953 Kalle Valo 2019-11-23 1279 }
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1280 ppdu_info->gi = he_gi;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1281 he_gi = (he_gi != 0) ? he_gi - 1 : 0;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1282 ppdu_info->he_data5 |= FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_GI, he_gi);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1283 ppdu_info->ltf_size = he_ltf;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1284 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1285 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_LTF_SIZE,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1286 (he_ltf == HE_LTF_4_X) ? he_ltf - 1 : he_ltf);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1287
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1288 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_NUM_LTF_SYMB, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1289 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1290 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_NUM_LTF_SYMS, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1291
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1292 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_PKT_EXT_FACTOR,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1293 info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1294 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1295 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_PRE_FEC_PAD, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1296
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1297 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_PKT_EXT_PE_DISAM,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1298 info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1299 ppdu_info->he_data5 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1300 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA5_PE_DISAMBIG, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1301
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1302 /*data6*/
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1303 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_DOPPLER_INDICATION,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1304 info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1305 ppdu_info->he_data6 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1306 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA6_DOPPLER, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1307
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1308 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_TXOP_DURATION, info1);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1309 ppdu_info->he_data6 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1310 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA6_TXOP, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1311
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1312 /* HE-MU Flags */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1313 /* HE-MU-flags1 */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1314 ppdu_info->he_flags1 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1315 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1316 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1317 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_COMP_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1318 IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_SYMS_USERS_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1319 IEEE80211_RADIOTAP_HE_MU_FLAGS1_CH1_RU_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1320
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1321 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_MCS_OF_SIGB, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1322 ppdu_info->he_flags1 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1323 FIELD_PREP(IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_MCS_KNOWN,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1324 value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1325 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_DCM_OF_SIGB, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1326 ppdu_info->he_flags1 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1327 FIELD_PREP(IEEE80211_RADIOTAP_HE_MU_FLAGS1_SIG_B_DCM_KNOWN,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1328 value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1329
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1330 /* HE-MU-flags2 */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1331 ppdu_info->he_flags2 =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1332 IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1333
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1334 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_TRANSMIT_BW, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1335 ppdu_info->he_flags2 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1336 FIELD_PREP(IEEE80211_RADIOTAP_HE_MU_FLAGS2_BW_FROM_SIG_A_BW,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1337 value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1338 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_COMP_MODE_SIGB, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1339 ppdu_info->he_flags2 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1340 FIELD_PREP(IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_COMP, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1341 value = FIELD_GET(HAL_RX_HE_SIG_A_MU_DL_INFO_INFO0_NUM_SIGB_SYMB, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1342 value = value - 1;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1343 ppdu_info->he_flags2 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1344 FIELD_PREP(IEEE80211_RADIOTAP_HE_MU_FLAGS2_SIG_B_SYMS_USERS,
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1345 value);
d5c65159f28953 Kalle Valo 2019-11-23 1346
d5c65159f28953 Kalle Valo 2019-11-23 1347 ppdu_info->is_stbc = info1 &
d5c65159f28953 Kalle Valo 2019-11-23 1348 HAL_RX_HE_SIG_A_MU_DL_INFO_INFO1_STBC;
d5c65159f28953 Kalle Valo 2019-11-23 1349 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO;
d5c65159f28953 Kalle Valo 2019-11-23 1350 break;
d5c65159f28953 Kalle Valo 2019-11-23 1351 }
d5c65159f28953 Kalle Valo 2019-11-23 1352 case HAL_PHYRX_HE_SIG_B1_MU: {
6a0c370259c76c John Crispin 2020-02-04 1353 struct hal_rx_he_sig_b1_mu_info *he_sig_b1_mu =
6a0c370259c76c John Crispin 2020-02-04 1354 (struct hal_rx_he_sig_b1_mu_info *)tlv_data;
6a0c370259c76c John Crispin 2020-02-04 1355 u16 ru_tones;
6a0c370259c76c John Crispin 2020-02-04 1356
6a0c370259c76c John Crispin 2020-02-04 1357 info0 = __le32_to_cpu(he_sig_b1_mu->info0);
6a0c370259c76c John Crispin 2020-02-04 1358
6a0c370259c76c John Crispin 2020-02-04 1359 ru_tones = FIELD_GET(HAL_RX_HE_SIG_B1_MU_INFO_INFO0_RU_ALLOCATION,
6a0c370259c76c John Crispin 2020-02-04 1360 info0);
1b8bb94c0612cf Wen Gong 2021-12-20 1361 ppdu_info->ru_alloc =
1b8bb94c0612cf Wen Gong 2021-12-20 1362 ath11k_mac_phy_he_ru_to_nl80211_he_ru_alloc(ru_tones);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1363 ppdu_info->he_RU[0] = ru_tones;
d5c65159f28953 Kalle Valo 2019-11-23 1364 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO;
d5c65159f28953 Kalle Valo 2019-11-23 1365 break;
d5c65159f28953 Kalle Valo 2019-11-23 1366 }
d5c65159f28953 Kalle Valo 2019-11-23 1367 case HAL_PHYRX_HE_SIG_B2_MU: {
d5c65159f28953 Kalle Valo 2019-11-23 1368 struct hal_rx_he_sig_b2_mu_info *he_sig_b2_mu =
d5c65159f28953 Kalle Valo 2019-11-23 1369 (struct hal_rx_he_sig_b2_mu_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1370
d5c65159f28953 Kalle Valo 2019-11-23 1371 info0 = __le32_to_cpu(he_sig_b2_mu->info0);
d5c65159f28953 Kalle Valo 2019-11-23 1372
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1373 ppdu_info->he_data1 |= IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1374 IEEE80211_RADIOTAP_HE_DATA1_CODING_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1375
d5c65159f28953 Kalle Valo 2019-11-23 1376 ppdu_info->mcs =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1377 FIELD_GET(HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_MCS, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1378 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1379 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_DATA_MCS, ppdu_info->mcs);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1380
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1381 value = FIELD_GET(HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_CODING, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1382 ppdu_info->ldpc = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1383 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1384 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_CODING, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1385
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1386 value = FIELD_GET(HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_ID, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1387 ppdu_info->he_data4 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1388 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA4_MU_STA_ID, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1389
d5c65159f28953 Kalle Valo 2019-11-23 1390 ppdu_info->nss =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1391 FIELD_GET(HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS, info0) + 1;
d5c65159f28953 Kalle Valo 2019-11-23 1392 break;
d5c65159f28953 Kalle Valo 2019-11-23 1393 }
d5c65159f28953 Kalle Valo 2019-11-23 1394 case HAL_PHYRX_HE_SIG_B2_OFDMA: {
d5c65159f28953 Kalle Valo 2019-11-23 1395 struct hal_rx_he_sig_b2_ofdma_info *he_sig_b2_ofdma =
d5c65159f28953 Kalle Valo 2019-11-23 1396 (struct hal_rx_he_sig_b2_ofdma_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1397
d5c65159f28953 Kalle Valo 2019-11-23 1398 info0 = __le32_to_cpu(he_sig_b2_ofdma->info0);
d5c65159f28953 Kalle Valo 2019-11-23 1399
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1400 ppdu_info->he_data1 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1401 IEEE80211_RADIOTAP_HE_DATA1_DATA_MCS_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1402 IEEE80211_RADIOTAP_HE_DATA1_DATA_DCM_KNOWN |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1403 IEEE80211_RADIOTAP_HE_DATA1_CODING_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1404
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1405 /* HE-data2 */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1406 ppdu_info->he_data2 |= IEEE80211_RADIOTAP_HE_DATA2_TXBF_KNOWN;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1407
d5c65159f28953 Kalle Valo 2019-11-23 1408 ppdu_info->mcs =
d5c65159f28953 Kalle Valo 2019-11-23 1409 FIELD_GET(HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_MCS,
d5c65159f28953 Kalle Valo 2019-11-23 1410 info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1411 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1412 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_DATA_MCS, ppdu_info->mcs);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1413
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1414 value = FIELD_GET(HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_DCM, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 @1415 he_dcm = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1416 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1417 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_DATA_DCM, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1418
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1419 value = FIELD_GET(HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_CODING, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1420 ppdu_info->ldpc = value;
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1421 ppdu_info->he_data3 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1422 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA3_CODING, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1423
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1424 /* HE-data4 */
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1425 value = FIELD_GET(HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_ID, info0);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1426 ppdu_info->he_data4 |=
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1427 FIELD_PREP(IEEE80211_RADIOTAP_HE_DATA4_MU_STA_ID, value);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1428
d5c65159f28953 Kalle Valo 2019-11-23 1429 ppdu_info->nss =
d5c65159f28953 Kalle Valo 2019-11-23 1430 FIELD_GET(HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_NSTS,
d5c65159f28953 Kalle Valo 2019-11-23 1431 info0) + 1;
d5c65159f28953 Kalle Valo 2019-11-23 1432 ppdu_info->beamformed =
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1433 info0 & HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_TXBF;
d5c65159f28953 Kalle Valo 2019-11-23 1434 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA;
d5c65159f28953 Kalle Valo 2019-11-23 1435 break;
d5c65159f28953 Kalle Valo 2019-11-23 1436 }
d5c65159f28953 Kalle Valo 2019-11-23 1437 case HAL_PHYRX_RSSI_LEGACY: {
b488c766442f7d Wen Gong 2021-12-17 1438 int i;
b488c766442f7d Wen Gong 2021-12-17 1439 bool db2dbm = test_bit(WMI_TLV_SERVICE_HW_DB2DBM_CONVERSION_SUPPORT,
b488c766442f7d Wen Gong 2021-12-17 1440 ab->wmi_ab.svc_map);
d5c65159f28953 Kalle Valo 2019-11-23 1441 struct hal_rx_phyrx_rssi_legacy_info *rssi =
d5c65159f28953 Kalle Valo 2019-11-23 1442 (struct hal_rx_phyrx_rssi_legacy_info *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1443
d5c65159f28953 Kalle Valo 2019-11-23 1444 /* TODO: Please note that the combined rssi will not be accurate
d5c65159f28953 Kalle Valo 2019-11-23 1445 * in MU case. Rssi in MU needs to be retrieved from
d5c65159f28953 Kalle Valo 2019-11-23 1446 * PHYRX_OTHER_RECEIVE_INFO TLV.
d5c65159f28953 Kalle Valo 2019-11-23 1447 */
d5c65159f28953 Kalle Valo 2019-11-23 1448 ppdu_info->rssi_comb =
d5c65159f28953 Kalle Valo 2019-11-23 1449 FIELD_GET(HAL_RX_PHYRX_RSSI_LEGACY_INFO_INFO1_RSSI_COMB,
d5c65159f28953 Kalle Valo 2019-11-23 1450 __le32_to_cpu(rssi->info0));
b488c766442f7d Wen Gong 2021-12-17 1451
b488c766442f7d Wen Gong 2021-12-17 1452 if (db2dbm) {
b488c766442f7d Wen Gong 2021-12-17 1453 for (i = 0; i < ARRAY_SIZE(rssi->preamble); i++) {
b488c766442f7d Wen Gong 2021-12-17 1454 ppdu_info->rssi_chain_pri20[i] =
b488c766442f7d Wen Gong 2021-12-17 1455 le32_get_bits(rssi->preamble[i].rssi_2040,
b488c766442f7d Wen Gong 2021-12-17 1456 HAL_RX_PHYRX_RSSI_PREAMBLE_PRI20);
b488c766442f7d Wen Gong 2021-12-17 1457 }
b488c766442f7d Wen Gong 2021-12-17 1458 }
d5c65159f28953 Kalle Valo 2019-11-23 1459 break;
d5c65159f28953 Kalle Valo 2019-11-23 1460 }
d5c65159f28953 Kalle Valo 2019-11-23 1461 case HAL_RX_MPDU_START: {
d5c65159f28953 Kalle Valo 2019-11-23 1462 u16 peer_id;
d5c65159f28953 Kalle Valo 2019-11-23 1463
8845fed1ad7b2f Baochen Qiang 2021-05-31 1464 peer_id = ab->hw_params.hw_ops->mpdu_info_get_peerid(tlv_data);
d5c65159f28953 Kalle Valo 2019-11-23 1465 if (peer_id)
d5c65159f28953 Kalle Valo 2019-11-23 1466 ppdu_info->peer_id = peer_id;
d5c65159f28953 Kalle Valo 2019-11-23 1467 break;
d5c65159f28953 Kalle Valo 2019-11-23 1468 }
d5c65159f28953 Kalle Valo 2019-11-23 1469 case HAL_RXPCU_PPDU_END_INFO: {
d5c65159f28953 Kalle Valo 2019-11-23 1470 struct hal_rx_ppdu_end_duration *ppdu_rx_duration =
d5c65159f28953 Kalle Valo 2019-11-23 1471 (struct hal_rx_ppdu_end_duration *)tlv_data;
d5c65159f28953 Kalle Valo 2019-11-23 1472 ppdu_info->rx_duration =
d5c65159f28953 Kalle Valo 2019-11-23 1473 FIELD_GET(HAL_RX_PPDU_END_DURATION,
d5c65159f28953 Kalle Valo 2019-11-23 1474 __le32_to_cpu(ppdu_rx_duration->info0));
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1475 ppdu_info->tsft = __le32_to_cpu(ppdu_rx_duration->rsvd0[1]);
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1476 ppdu_info->tsft = (ppdu_info->tsft << 32) |
20168f00578862 Pradeep Kumar Chitrapu 2022-02-16 1477 __le32_to_cpu(ppdu_rx_duration->rsvd0[0]);
d5c65159f28953 Kalle Valo 2019-11-23 1478 break;
d5c65159f28953 Kalle Valo 2019-11-23 1479 }
d5c65159f28953 Kalle Valo 2019-11-23 1480 case HAL_DUMMY:
d5c65159f28953 Kalle Valo 2019-11-23 1481 return HAL_RX_MON_STATUS_BUF_DONE;
d5c65159f28953 Kalle Valo 2019-11-23 1482 case HAL_RX_PPDU_END_STATUS_DONE:
d5c65159f28953 Kalle Valo 2019-11-23 1483 case 0:
d5c65159f28953 Kalle Valo 2019-11-23 1484 return HAL_RX_MON_STATUS_PPDU_DONE;
d5c65159f28953 Kalle Valo 2019-11-23 1485 default:
d5c65159f28953 Kalle Valo 2019-11-23 1486 break;
d5c65159f28953 Kalle Valo 2019-11-23 1487 }
d5c65159f28953 Kalle Valo 2019-11-23 1488
d5c65159f28953 Kalle Valo 2019-11-23 1489 return HAL_RX_MON_STATUS_PPDU_NOT_DONE;
d5c65159f28953 Kalle Valo 2019-11-23 1490 }
d5c65159f28953 Kalle Valo 2019-11-23 1491
---
0-DAY CI Kernel Test Service, Intel Corporation
https://lists.01.org/hyperkitty/list/kbuild-all(a)lists.01.org
reply other threads:[~2022-02-22 23:10 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=202202230731.bSpDCarB-lkp@intel.com \
--to=lkp@intel.com \
--cc=kbuild@lists.01.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.