CC: l...@lists.linux.dev
CC: kbuild-...@lists.01.org
CC: Kalle Valo <kv...@codeaurora.org>
CC: ath...@lists.infradead.org
CC: linux-ker...@vger.kernel.org
TO: Pradeep Kumar Chitrapu <prade...@codeaurora.org>
CC: Kalle Valo <quic_kv...@quicinc.com>
CC: Miles Hu <mil...@codeaurora.org>
CC: Anilkumar Kolli <ako...@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-...@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 <l...@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-...@lists.01.org
_______________________________________________
kbuild mailing list -- kbuild@lists.01.org
To unsubscribe send an email to kbuild-le...@lists.01.org

Reply via email to