All of lore.kernel.org
 help / color / mirror / Atom feed
* [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]
@ 2022-02-22 23:10 kernel test robot
  0 siblings, 0 replies; only message in thread
From: kernel test robot @ 2022-02-22 23:10 UTC (permalink / raw)
  To: kbuild

[-- 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

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-02-22 23:10 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-22 23:10 [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] 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.