Lines Matching +full:center +full:- +full:spread

1 // SPDX-License-Identifier: BSD-3-Clause-Clear
3 * Copyright (c) 2019-2021 The Linux Foundation. All rights reserved.
4 * Copyright (c) 2021-2025 Qualcomm Innovation Center, Inc. All rights reserved.
23 rx_user_status->ul_ofdma_user_v0_word0 = in ath12k_dp_mon_rx_handle_ofdma_info()
24 __le32_to_cpu(ppdu_end_user->usr_resp_ref); in ath12k_dp_mon_rx_handle_ofdma_info()
25 rx_user_status->ul_ofdma_user_v0_word1 = in ath12k_dp_mon_rx_handle_ofdma_info()
26 __le32_to_cpu(ppdu_end_user->usr_resp_ref_ext); in ath12k_dp_mon_rx_handle_ofdma_info()
34 rx_user_status->mpdu_ok_byte_count = in ath12k_dp_mon_rx_populate_byte_count()
35 le32_get_bits(stats->info7, in ath12k_dp_mon_rx_populate_byte_count()
37 rx_user_status->mpdu_err_byte_count = in ath12k_dp_mon_rx_populate_byte_count()
38 le32_get_bits(stats->info8, in ath12k_dp_mon_rx_populate_byte_count()
47 rx_user_status->ast_index = ppdu_info->ast_index; in ath12k_dp_mon_rx_populate_mu_user_info()
48 rx_user_status->tid = ppdu_info->tid; in ath12k_dp_mon_rx_populate_mu_user_info()
49 rx_user_status->tcp_ack_msdu_count = in ath12k_dp_mon_rx_populate_mu_user_info()
50 ppdu_info->tcp_ack_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
51 rx_user_status->tcp_msdu_count = in ath12k_dp_mon_rx_populate_mu_user_info()
52 ppdu_info->tcp_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
53 rx_user_status->udp_msdu_count = in ath12k_dp_mon_rx_populate_mu_user_info()
54 ppdu_info->udp_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
55 rx_user_status->other_msdu_count = in ath12k_dp_mon_rx_populate_mu_user_info()
56 ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
57 rx_user_status->frame_control = ppdu_info->frame_control; in ath12k_dp_mon_rx_populate_mu_user_info()
58 rx_user_status->frame_control_info_valid = in ath12k_dp_mon_rx_populate_mu_user_info()
59 ppdu_info->frame_control_info_valid; in ath12k_dp_mon_rx_populate_mu_user_info()
60 rx_user_status->data_sequence_control_info_valid = in ath12k_dp_mon_rx_populate_mu_user_info()
61 ppdu_info->data_sequence_control_info_valid; in ath12k_dp_mon_rx_populate_mu_user_info()
62 rx_user_status->first_data_seq_ctrl = in ath12k_dp_mon_rx_populate_mu_user_info()
63 ppdu_info->first_data_seq_ctrl; in ath12k_dp_mon_rx_populate_mu_user_info()
64 rx_user_status->preamble_type = ppdu_info->preamble_type; in ath12k_dp_mon_rx_populate_mu_user_info()
65 rx_user_status->ht_flags = ppdu_info->ht_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
66 rx_user_status->vht_flags = ppdu_info->vht_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
67 rx_user_status->he_flags = ppdu_info->he_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
68 rx_user_status->rs_flags = ppdu_info->rs_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
70 rx_user_status->mpdu_cnt_fcs_ok = in ath12k_dp_mon_rx_populate_mu_user_info()
71 ppdu_info->num_mpdu_fcs_ok; in ath12k_dp_mon_rx_populate_mu_user_info()
72 rx_user_status->mpdu_cnt_fcs_err = in ath12k_dp_mon_rx_populate_mu_user_info()
73 ppdu_info->num_mpdu_fcs_err; in ath12k_dp_mon_rx_populate_mu_user_info()
74 memcpy(&rx_user_status->mpdu_fcs_ok_bitmap[0], &ppdu_info->mpdu_fcs_ok_bitmap[0], in ath12k_dp_mon_rx_populate_mu_user_info()
76 sizeof(ppdu_info->mpdu_fcs_ok_bitmap[0])); in ath12k_dp_mon_rx_populate_mu_user_info()
87 info0 = __le32_to_cpu(vht_sig->info0); in ath12k_dp_mon_parse_vht_sig_a()
88 info1 = __le32_to_cpu(vht_sig->info1); in ath12k_dp_mon_parse_vht_sig_a()
90 ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_SU_MU_CODING); in ath12k_dp_mon_parse_vht_sig_a()
91 ppdu_info->mcs = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_MCS); in ath12k_dp_mon_parse_vht_sig_a()
95 ppdu_info->gi = HAL_RX_GI_0_8_US; in ath12k_dp_mon_parse_vht_sig_a()
99 ppdu_info->gi = HAL_RX_GI_0_4_US; in ath12k_dp_mon_parse_vht_sig_a()
103 ppdu_info->is_stbc = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_STBC); in ath12k_dp_mon_parse_vht_sig_a()
105 if (ppdu_info->is_stbc && nsts > 0) in ath12k_dp_mon_parse_vht_sig_a()
106 nsts = ((nsts + 1) >> 1) - 1; in ath12k_dp_mon_parse_vht_sig_a()
108 ppdu_info->nss = u32_get_bits(nsts, VHT_SIG_SU_NSS_MASK); in ath12k_dp_mon_parse_vht_sig_a()
109 ppdu_info->bw = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_BW); in ath12k_dp_mon_parse_vht_sig_a()
110 ppdu_info->beamformed = u32_get_bits(info1, in ath12k_dp_mon_parse_vht_sig_a()
112 ppdu_info->vht_flag_values5 = u32_get_bits(info0, in ath12k_dp_mon_parse_vht_sig_a()
114 ppdu_info->vht_flag_values3[0] = (((ppdu_info->mcs) << 4) | in ath12k_dp_mon_parse_vht_sig_a()
115 ppdu_info->nss); in ath12k_dp_mon_parse_vht_sig_a()
116 ppdu_info->vht_flag_values2 = ppdu_info->bw; in ath12k_dp_mon_parse_vht_sig_a()
117 ppdu_info->vht_flag_values4 = in ath12k_dp_mon_parse_vht_sig_a()
124 u32 info0 = __le32_to_cpu(ht_sig->info0); in ath12k_dp_mon_parse_ht_sig()
125 u32 info1 = __le32_to_cpu(ht_sig->info1); in ath12k_dp_mon_parse_ht_sig()
127 ppdu_info->mcs = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_MCS); in ath12k_dp_mon_parse_ht_sig()
128 ppdu_info->bw = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_BW); in ath12k_dp_mon_parse_ht_sig()
129 ppdu_info->is_stbc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_STBC); in ath12k_dp_mon_parse_ht_sig()
130 ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING); in ath12k_dp_mon_parse_ht_sig()
131 ppdu_info->gi = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_GI); in ath12k_dp_mon_parse_ht_sig()
132 ppdu_info->nss = (ppdu_info->mcs >> 3); in ath12k_dp_mon_parse_ht_sig()
138 u32 info0 = __le32_to_cpu(lsigb->info0); in ath12k_dp_mon_parse_l_sig_b()
162 ppdu_info->rate = rate; in ath12k_dp_mon_parse_l_sig_b()
163 ppdu_info->cck_flag = 1; in ath12k_dp_mon_parse_l_sig_b()
169 u32 info0 = __le32_to_cpu(lsiga->info0); in ath12k_dp_mon_parse_l_sig_a()
202 ppdu_info->rate = rate; in ath12k_dp_mon_parse_l_sig_a()
211 info0 = __le32_to_cpu(ofdma->info0); in ath12k_dp_mon_parse_he_sig_b2_ofdma()
213 ppdu_info->he_data1 |= HE_MCS_KNOWN | HE_DCM_KNOWN | HE_CODING_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
215 /* HE-data2 */ in ath12k_dp_mon_parse_he_sig_b2_ofdma()
216 ppdu_info->he_data2 |= HE_TXBF_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
218 ppdu_info->mcs = u32_get_bits(info0, HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_MCS); in ath12k_dp_mon_parse_he_sig_b2_ofdma()
219 value = ppdu_info->mcs << HE_TRANSMIT_MCS_SHIFT; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
220 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
224 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
227 ppdu_info->ldpc = value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
229 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
231 /* HE-data4 */ in ath12k_dp_mon_parse_he_sig_b2_ofdma()
234 ppdu_info->he_data4 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
236 ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_B2_OFDMA_INFO_INFO0_STA_NSTS); in ath12k_dp_mon_parse_he_sig_b2_ofdma()
237 ppdu_info->beamformed = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_b2_ofdma()
247 info0 = __le32_to_cpu(he_sig_b2_mu->info0); in ath12k_dp_mon_parse_he_sig_b2_mu()
249 ppdu_info->he_data1 |= HE_MCS_KNOWN | HE_CODING_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_mu()
251 ppdu_info->mcs = u32_get_bits(info0, HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_MCS); in ath12k_dp_mon_parse_he_sig_b2_mu()
252 value = ppdu_info->mcs << HE_TRANSMIT_MCS_SHIFT; in ath12k_dp_mon_parse_he_sig_b2_mu()
253 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
256 ppdu_info->ldpc = value; in ath12k_dp_mon_parse_he_sig_b2_mu()
258 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
262 ppdu_info->he_data4 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
264 ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_B2_MU_INFO_INFO0_STA_NSTS); in ath12k_dp_mon_parse_he_sig_b2_mu()
271 u32 info0 = __le32_to_cpu(he_sig_b1_mu->info0); in ath12k_dp_mon_parse_he_sig_b1_mu()
276 ppdu_info->ru_alloc = ath12k_he_ru_tones_to_nl80211_he_ru_alloc(ru_tones); in ath12k_dp_mon_parse_he_sig_b1_mu()
277 ppdu_info->he_RU[0] = ru_tones; in ath12k_dp_mon_parse_he_sig_b1_mu()
287 info0 = __le32_to_cpu(he_sig_a_mu_dl->info0); in ath12k_dp_mon_parse_he_sig_mu()
288 info1 = __le32_to_cpu(he_sig_a_mu_dl->info1); in ath12k_dp_mon_parse_he_sig_mu()
290 ppdu_info->he_mu_flags = 1; in ath12k_dp_mon_parse_he_sig_mu()
292 ppdu_info->he_data1 = HE_MU_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_mu()
293 ppdu_info->he_data1 |= in ath12k_dp_mon_parse_he_sig_mu()
301 ppdu_info->he_data2 = in ath12k_dp_mon_parse_he_sig_mu()
310 ppdu_info->he_data3 = u32_get_bits(info0, HAL_RX_HE_SIG_A_MU_DL_INFO0_BSS_COLOR); in ath12k_dp_mon_parse_he_sig_mu()
313 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
317 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
321 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
324 ppdu_info->he_data4 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_mu()
326 ppdu_info->he_data4 = value; in ath12k_dp_mon_parse_he_sig_mu()
330 ppdu_info->he_data5 = value; in ath12k_dp_mon_parse_he_sig_mu()
331 ppdu_info->bw = value; in ath12k_dp_mon_parse_he_sig_mu()
353 ppdu_info->gi = he_gi; in ath12k_dp_mon_parse_he_sig_mu()
355 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
358 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
362 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
366 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
370 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
375 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_mu()
379 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_mu()
381 /* HE-MU Flags */ in ath12k_dp_mon_parse_he_sig_mu()
382 /* HE-MU-flags1 */ in ath12k_dp_mon_parse_he_sig_mu()
383 ppdu_info->he_flags1 = in ath12k_dp_mon_parse_he_sig_mu()
391 ppdu_info->he_flags1 |= value; in ath12k_dp_mon_parse_he_sig_mu()
394 ppdu_info->he_flags1 |= value; in ath12k_dp_mon_parse_he_sig_mu()
396 /* HE-MU-flags2 */ in ath12k_dp_mon_parse_he_sig_mu()
397 ppdu_info->he_flags2 = HE_BW_KNOWN; in ath12k_dp_mon_parse_he_sig_mu()
400 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
403 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
405 value = value - 1; in ath12k_dp_mon_parse_he_sig_mu()
407 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
409 ppdu_info->is_stbc = info1 & in ath12k_dp_mon_parse_he_sig_mu()
421 ppdu_info->he_flags = 1; in ath12k_dp_mon_parse_he_sig_su()
423 info0 = __le32_to_cpu(he_sig_a->info0); in ath12k_dp_mon_parse_he_sig_su()
424 info1 = __le32_to_cpu(he_sig_a->info1); in ath12k_dp_mon_parse_he_sig_su()
428 ppdu_info->he_data1 = HE_TRIG_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_su()
430 ppdu_info->he_data1 = HE_SU_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_su()
432 ppdu_info->he_data1 |= in ath12k_dp_mon_parse_he_sig_su()
444 ppdu_info->he_data2 |= in ath12k_dp_mon_parse_he_sig_su()
453 ppdu_info->he_data3 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_su()
457 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
460 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
463 ppdu_info->mcs = value; in ath12k_dp_mon_parse_he_sig_su()
465 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
470 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
473 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
476 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
480 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
483 ppdu_info->he_data4 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_su()
489 ppdu_info->he_data5 = value; in ath12k_dp_mon_parse_he_sig_su()
490 ppdu_info->bw = value; in ath12k_dp_mon_parse_he_sig_su()
515 ppdu_info->gi = he_gi; in ath12k_dp_mon_parse_he_sig_su()
517 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
519 ppdu_info->ltf_size = he_ltf; in ath12k_dp_mon_parse_he_sig_su()
520 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
524 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
528 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
532 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
535 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
540 ppdu_info->he_data6 = value; in ath12k_dp_mon_parse_he_sig_su()
543 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_su()
546 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_su()
548 ppdu_info->mcs = in ath12k_dp_mon_parse_he_sig_su()
550 ppdu_info->bw = in ath12k_dp_mon_parse_he_sig_su()
552 ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING); in ath12k_dp_mon_parse_he_sig_su()
553 ppdu_info->is_stbc = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_STBC); in ath12k_dp_mon_parse_he_sig_su()
554 ppdu_info->beamformed = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF); in ath12k_dp_mon_parse_he_sig_su()
556 ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS); in ath12k_dp_mon_parse_he_sig_su()
557 ppdu_info->dcm = dcm; in ath12k_dp_mon_parse_he_sig_su()
566 ppdu_info->u_sig_info.bw = le32_get_bits(cmn->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
568 ppdu_info->u_sig_info.ul_dl = le32_get_bits(cmn->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
571 common = __le32_to_cpu(ppdu_info->u_sig_info.usig.common); in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
577 ATH12K_LE32_DEC_ENC(cmn->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
580 u32_encode_bits(ppdu_info->u_sig_info.bw, in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
582 u32_encode_bits(ppdu_info->u_sig_info.ul_dl, in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
584 ATH12K_LE32_DEC_ENC(cmn->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
587 ATH12K_LE32_DEC_ENC(cmn->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
590 ppdu_info->u_sig_info.usig.common = cpu_to_le32(common); in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
592 switch (ppdu_info->u_sig_info.bw) { in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
596 ppdu_info->bw = HAL_RX_BW_20MHZ; in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
599 ppdu_info->bw = HAL_RX_BW_40MHZ; in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
602 ppdu_info->bw = HAL_RX_BW_80MHZ; in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
605 ppdu_info->bw = HAL_RX_BW_160MHZ; in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
609 ppdu_info->bw = HAL_RX_BW_320MHZ; in ath12k_dp_mon_hal_rx_parse_u_sig_cmn()
618 struct ieee80211_radiotap_eht_usig *usig = &ppdu_info->u_sig_info.usig; in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
625 common = __le32_to_cpu(usig->common); in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
626 value = __le32_to_cpu(usig->value); in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
627 mask = __le32_to_cpu(usig->mask); in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
629 ppdu_info->u_sig_info.ppdu_type_comp_mode = in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
630 le32_get_bits(usig_tb->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
633 common |= ATH12K_LE32_DEC_ENC(usig_tb->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
638 u32_encode_bits(ppdu_info->u_sig_info.ppdu_type_comp_mode, in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
641 ATH12K_LE32_DEC_ENC(usig_tb->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
644 ATH12K_LE32_DEC_ENC(usig_tb->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
648 ATH12K_LE32_DEC_ENC(usig_tb->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
651 ATH12K_LE32_DEC_ENC(usig_tb->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
663 usig->common = cpu_to_le32(common); in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
664 usig->value = cpu_to_le32(value); in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
665 usig->mask = cpu_to_le32(mask); in ath12k_dp_mon_hal_rx_parse_u_sig_tb()
672 struct ieee80211_radiotap_eht_usig *usig = &ppdu_info->u_sig_info.usig; in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
679 common = __le32_to_cpu(usig->common); in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
680 value = __le32_to_cpu(usig->value); in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
681 mask = __le32_to_cpu(usig->mask); in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
683 ppdu_info->u_sig_info.ppdu_type_comp_mode = in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
684 le32_get_bits(usig_mu->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
686 ppdu_info->u_sig_info.eht_sig_mcs = in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
687 le32_get_bits(usig_mu->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
689 ppdu_info->u_sig_info.num_eht_sig_sym = in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
690 le32_get_bits(usig_mu->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
693 common |= ATH12K_LE32_DEC_ENC(usig_mu->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
699 u32_encode_bits(ppdu_info->u_sig_info.ppdu_type_comp_mode, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
702 ATH12K_LE32_DEC_ENC(usig_mu->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
706 u32_encode_bits(ppdu_info->u_sig_info.eht_sig_mcs, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
708 u32_encode_bits(ppdu_info->u_sig_info.num_eht_sig_sym, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
710 ATH12K_LE32_DEC_ENC(usig_mu->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
713 ATH12K_LE32_DEC_ENC(usig_mu->info0, in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
728 usig->common = cpu_to_le32(common); in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
729 usig->value = cpu_to_le32(value); in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
730 usig->mask = cpu_to_le32(mask); in ath12k_dp_mon_hal_rx_parse_u_sig_mu()
739 ppdu_info->eht_usig = true; in ath12k_dp_mon_hal_rx_parse_u_sig_hdr()
741 ath12k_dp_mon_hal_rx_parse_u_sig_cmn(&usig->cmn, ppdu_info); in ath12k_dp_mon_hal_rx_parse_u_sig_hdr()
743 comp_mode = le32_get_bits(usig->non_cmn.mu.info0, in ath12k_dp_mon_hal_rx_parse_u_sig_hdr()
746 if (comp_mode == 0 && ppdu_info->u_sig_info.ul_dl) in ath12k_dp_mon_hal_rx_parse_u_sig_hdr()
747 ath12k_dp_mon_hal_rx_parse_u_sig_tb(&usig->non_cmn.tb, ppdu_info); in ath12k_dp_mon_hal_rx_parse_u_sig_hdr()
749 ath12k_dp_mon_hal_rx_parse_u_sig_mu(&usig->non_cmn.mu, ppdu_info); in ath12k_dp_mon_hal_rx_parse_u_sig_hdr()
756 if (tlv_len <= HAL_RX_MON_MAX_AGGR_SIZE - ppdu_info->tlv_aggr.cur_len) { in ath12k_dp_mon_hal_aggr_tlv()
757 memcpy(ppdu_info->tlv_aggr.buf + ppdu_info->tlv_aggr.cur_len, in ath12k_dp_mon_hal_aggr_tlv()
759 ppdu_info->tlv_aggr.cur_len += tlv_len; in ath12k_dp_mon_hal_aggr_tlv()
766 if (usig_info->ppdu_type_comp_mode == 1 && in ath12k_dp_mon_hal_rx_is_frame_type_ndp()
767 usig_info->eht_sig_mcs == 0 && in ath12k_dp_mon_hal_rx_is_frame_type_ndp()
768 usig_info->num_eht_sig_sym == 0) in ath12k_dp_mon_hal_rx_is_frame_type_ndp()
777 u32 ppdu_type_comp_mode = usig_info->ppdu_type_comp_mode; in ath12k_dp_mon_hal_rx_is_non_ofdma()
778 u32 ul_dl = usig_info->ul_dl; in ath12k_dp_mon_hal_rx_is_non_ofdma()
791 if (usig_info->ppdu_type_comp_mode == 0 && usig_info->ul_dl == 0) in ath12k_dp_mon_hal_rx_is_ofdma()
801 struct hal_rx_radiotap_eht *eht = &ppdu_info->eht_info.eht; in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
804 known = __le32_to_cpu(eht->known); in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
812 eht->known = cpu_to_le32(known); in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
814 data = __le32_to_cpu(eht->data[0]); in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
815 data |= ATH12K_LE32_DEC_ENC(eht_sig_ndp->info0, in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
821 data |= ATH12K_LE32_DEC_ENC(eht_sig_ndp->info0, in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
825 data |= ATH12K_LE32_DEC_ENC(eht_sig_ndp->info0, in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
829 data |= ATH12K_LE32_DEC_ENC(eht_sig_ndp->info0, in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
832 eht->data[0] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
834 data = __le32_to_cpu(eht->data[7]); in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
835 data |= ATH12K_LE32_DEC_ENC(eht_sig_ndp->info0, in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
839 data |= ATH12K_LE32_DEC_ENC(eht_sig_ndp->info0, in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
842 eht->data[7] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_eht_sig_ndp()
849 struct hal_rx_radiotap_eht *eht = &ppdu_info->eht_info.eht; in ath12k_dp_mon_hal_rx_parse_usig_overflow()
852 known = __le32_to_cpu(eht->known); in ath12k_dp_mon_hal_rx_parse_usig_overflow()
859 eht->known = cpu_to_le32(known); in ath12k_dp_mon_hal_rx_parse_usig_overflow()
861 data = __le32_to_cpu(eht->data[0]); in ath12k_dp_mon_hal_rx_parse_usig_overflow()
862 data |= ATH12K_LE32_DEC_ENC(ovflow->info0, in ath12k_dp_mon_hal_rx_parse_usig_overflow()
869 data |= ATH12K_LE32_DEC_ENC(ovflow->info0, in ath12k_dp_mon_hal_rx_parse_usig_overflow()
873 data |= ATH12K_LE32_DEC_ENC(ovflow->info0, in ath12k_dp_mon_hal_rx_parse_usig_overflow()
877 data |= ATH12K_LE32_DEC_ENC(ovflow->info0, in ath12k_dp_mon_hal_rx_parse_usig_overflow()
881 data |= ATH12K_LE32_DEC_ENC(ovflow->info0, in ath12k_dp_mon_hal_rx_parse_usig_overflow()
885 data |= ATH12K_LE32_DEC_ENC(ovflow->info0, in ath12k_dp_mon_hal_rx_parse_usig_overflow()
888 eht->data[0] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_usig_overflow()
895 struct hal_rx_radiotap_eht *eht = &ppdu_info->eht_info.eht; in ath12k_dp_mon_hal_rx_parse_non_ofdma_users()
898 known = __le32_to_cpu(eht->known); in ath12k_dp_mon_hal_rx_parse_non_ofdma_users()
900 eht->known = cpu_to_le32(known); in ath12k_dp_mon_hal_rx_parse_non_ofdma_users()
902 data = __le32_to_cpu(eht->data[7]); in ath12k_dp_mon_hal_rx_parse_non_ofdma_users()
903 data |= ATH12K_LE32_DEC_ENC(eb->info0, in ath12k_dp_mon_hal_rx_parse_non_ofdma_users()
906 eht->data[7] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_non_ofdma_users()
913 struct hal_rx_eht_info *eht_info = &ppdu_info->eht_info; in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
916 if (eht_info->num_user_info >= ARRAY_SIZE(eht_info->user_info)) in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
919 user_idx = eht_info->num_user_info++; in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
921 eht_info->user_info[user_idx] |= in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
926 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
929 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
932 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
935 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
939 ppdu_info->mcs = le32_get_bits(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_mumimo_user()
947 struct hal_rx_eht_info *eht_info = &ppdu_info->eht_info; in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
950 if (eht_info->num_user_info >= ARRAY_SIZE(eht_info->user_info)) in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
953 user_idx = eht_info->num_user_info++; in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
955 eht_info->user_info[user_idx] |= in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
961 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
964 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
967 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
970 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
973 ATH12K_LE32_DEC_ENC(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
977 ppdu_info->mcs = le32_get_bits(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
980 ppdu_info->nss = le32_get_bits(user->info0, in ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user()
987 if (usig_info->ppdu_type_comp_mode == HAL_RX_RECEPTION_TYPE_SU && in ath12k_dp_mon_hal_rx_is_mu_mimo_user()
988 usig_info->ul_dl == 1) in ath12k_dp_mon_hal_rx_is_mu_mimo_user()
1003 if (ath12k_dp_mon_hal_rx_is_mu_mimo_user(&ppdu_info->u_sig_info)) in ath12k_dp_mon_hal_rx_parse_eht_sig_non_ofdma()
1004 ath12k_dp_mon_hal_rx_parse_eht_mumimo_user(&eb->user_field.mu_mimo, in ath12k_dp_mon_hal_rx_parse_eht_sig_non_ofdma()
1007 ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user(&eb->user_field.n_mu_mimo, in ath12k_dp_mon_hal_rx_parse_eht_sig_non_ofdma()
1015 const struct hal_eht_sig_ofdma_cmn_eb1 *ofdma_cmn_eb1 = &eb->eb1; in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1016 const struct hal_eht_sig_ofdma_cmn_eb2 *ofdma_cmn_eb2 = &eb->eb2; in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1017 struct hal_rx_radiotap_eht *eht = &ppdu_info->eht_info.eht; in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1031 switch (ppdu_info->u_sig_info.bw) { in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1034 data = __le32_to_cpu(eht->data[4]); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1037 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb2->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1040 eht->data[4] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1042 data = __le32_to_cpu(eht->data[5]); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1045 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb2->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1051 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb2->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1054 eht->data[5] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1056 data = __le32_to_cpu(eht->data[6]); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1059 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb2->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1062 eht->data[6] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1066 data = __le32_to_cpu(eht->data[3]); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1069 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb2->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1074 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb2->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1077 eht->data[3] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1081 data = __le32_to_cpu(eht->data[2]); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1084 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb1->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1087 eht->data[2] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1093 data = __le32_to_cpu(eht->data[1]); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1096 ATH12K_LE64_DEC_ENC(ofdma_cmn_eb1->info0, in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1099 eht->data[1] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_ru_allocation()
1115 ath12k_dp_mon_hal_rx_parse_eht_non_mumimo_user(&ofdma->user_field.n_mu_mimo, in ath12k_dp_mon_hal_rx_parse_eht_sig_ofdma()
1123 ppdu_info->is_eht = true; in ath12k_dp_mon_parse_eht_sig_hdr()
1125 if (ath12k_dp_mon_hal_rx_is_frame_type_ndp(&ppdu_info->u_sig_info)) in ath12k_dp_mon_parse_eht_sig_hdr()
1127 else if (ath12k_dp_mon_hal_rx_is_non_ofdma(&ppdu_info->u_sig_info)) in ath12k_dp_mon_parse_eht_sig_hdr()
1129 else if (ath12k_dp_mon_hal_rx_is_ofdma(&ppdu_info->u_sig_info)) in ath12k_dp_mon_parse_eht_sig_hdr()
1223 struct hal_rx_radiotap_eht *eht = &ppdu_info->eht_info.eht; in ath12k_dp_mon_hal_rx_parse_user_info()
1234 reception_type = le32_get_bits(rx_usr_info->info0, in ath12k_dp_mon_hal_rx_parse_user_info()
1239 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_hal_rx_parse_user_info()
1243 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_hal_rx_parse_user_info()
1247 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA; in ath12k_dp_mon_hal_rx_parse_user_info()
1251 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO; in ath12k_dp_mon_hal_rx_parse_user_info()
1254 ppdu_info->is_stbc = le32_get_bits(rx_usr_info->info0, HAL_RX_USR_INFO0_STBC); in ath12k_dp_mon_hal_rx_parse_user_info()
1255 ppdu_info->ldpc = le32_get_bits(rx_usr_info->info2, HAL_RX_USR_INFO2_LDPC); in ath12k_dp_mon_hal_rx_parse_user_info()
1256 ppdu_info->dcm = le32_get_bits(rx_usr_info->info2, HAL_RX_USR_INFO2_STA_DCM); in ath12k_dp_mon_hal_rx_parse_user_info()
1257 ppdu_info->bw = le32_get_bits(rx_usr_info->info1, HAL_RX_USR_INFO1_RX_BW); in ath12k_dp_mon_hal_rx_parse_user_info()
1258 ppdu_info->mcs = le32_get_bits(rx_usr_info->info1, HAL_RX_USR_INFO1_MCS); in ath12k_dp_mon_hal_rx_parse_user_info()
1259 ppdu_info->nss = le32_get_bits(rx_usr_info->info2, HAL_RX_USR_INFO2_NSS) + 1; in ath12k_dp_mon_hal_rx_parse_user_info()
1262 mon_rx_user_status = &ppdu_info->userstats[user_id]; in ath12k_dp_mon_hal_rx_parse_user_info()
1263 mon_rx_user_status->mcs = ppdu_info->mcs; in ath12k_dp_mon_hal_rx_parse_user_info()
1264 mon_rx_user_status->nss = ppdu_info->nss; in ath12k_dp_mon_hal_rx_parse_user_info()
1267 if (!(ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_MIMO || in ath12k_dp_mon_hal_rx_parse_user_info()
1268 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA || in ath12k_dp_mon_hal_rx_parse_user_info()
1269 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO)) in ath12k_dp_mon_hal_rx_parse_user_info()
1273 ru_type_80_0 = le32_get_bits(rx_usr_info->info2, HAL_RX_USR_INFO2_RU_TYPE_80_0); in ath12k_dp_mon_hal_rx_parse_user_info()
1274 ru_start_index_80_0 = le32_get_bits(rx_usr_info->info3, in ath12k_dp_mon_hal_rx_parse_user_info()
1284 ru_type_80_1 = le32_get_bits(rx_usr_info->info2, HAL_RX_USR_INFO2_RU_TYPE_80_1); in ath12k_dp_mon_hal_rx_parse_user_info()
1285 ru_start_index_80_1 = le32_get_bits(rx_usr_info->info3, in ath12k_dp_mon_hal_rx_parse_user_info()
1295 ru_type_80_2 = le32_get_bits(rx_usr_info->info2, HAL_RX_USR_INFO2_RU_TYPE_80_2); in ath12k_dp_mon_hal_rx_parse_user_info()
1296 ru_start_index_80_2 = le32_get_bits(rx_usr_info->info3, in ath12k_dp_mon_hal_rx_parse_user_info()
1306 ru_type_80_3 = le32_get_bits(rx_usr_info->info2, HAL_RX_USR_INFO2_RU_TYPE_80_3); in ath12k_dp_mon_hal_rx_parse_user_info()
1307 ru_start_index_80_3 = le32_get_bits(rx_usr_info->info2, in ath12k_dp_mon_hal_rx_parse_user_info()
1384 known = __le32_to_cpu(eht->known); in ath12k_dp_mon_hal_rx_parse_user_info()
1386 eht->known = cpu_to_le32(known); in ath12k_dp_mon_hal_rx_parse_user_info()
1388 data = __le32_to_cpu(eht->data[1]); in ath12k_dp_mon_hal_rx_parse_user_info()
1391 eht->data[1] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_user_info()
1397 known = __le32_to_cpu(eht->known); in ath12k_dp_mon_hal_rx_parse_user_info()
1399 eht->known = cpu_to_le32(known); in ath12k_dp_mon_hal_rx_parse_user_info()
1401 data = __le32_to_cpu(eht->data[1]); in ath12k_dp_mon_hal_rx_parse_user_info()
1404 eht->data[1] = cpu_to_le32(data); in ath12k_dp_mon_hal_rx_parse_user_info()
1409 mon_rx_user_status->ul_ofdma_ru_start_index = ru_index; in ath12k_dp_mon_hal_rx_parse_user_info()
1410 mon_rx_user_status->ul_ofdma_ru_size = rtap_ru_size; in ath12k_dp_mon_hal_rx_parse_user_info()
1414 mon_rx_user_status->ul_ofdma_ru_width = ru_width; in ath12k_dp_mon_hal_rx_parse_user_info()
1415 mon_rx_user_status->ofdma_info_valid = 1; in ath12k_dp_mon_hal_rx_parse_user_info()
1424 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_rx_parse_status_tlv()
1425 const void *tlv_data = tlv->value; in ath12k_dp_mon_rx_parse_status_tlv()
1429 tlv_tag = le64_get_bits(tlv->tl, HAL_TLV_64_HDR_TAG); in ath12k_dp_mon_rx_parse_status_tlv()
1430 tlv_len = le64_get_bits(tlv->tl, HAL_TLV_64_HDR_LEN); in ath12k_dp_mon_rx_parse_status_tlv()
1431 userid = le64_get_bits(tlv->tl, HAL_TLV_64_USR_ID); in ath12k_dp_mon_rx_parse_status_tlv()
1433 if (ppdu_info->tlv_aggr.in_progress && ppdu_info->tlv_aggr.tlv_tag != tlv_tag) { in ath12k_dp_mon_rx_parse_status_tlv()
1434 ath12k_dp_mon_parse_eht_sig_hdr(ppdu_info, ppdu_info->tlv_aggr.buf); in ath12k_dp_mon_rx_parse_status_tlv()
1436 ppdu_info->tlv_aggr.in_progress = false; in ath12k_dp_mon_rx_parse_status_tlv()
1437 ppdu_info->tlv_aggr.cur_len = 0; in ath12k_dp_mon_rx_parse_status_tlv()
1444 u64 ppdu_ts = ath12k_le32hilo_to_u64(ppdu_start->ppdu_start_ts_63_32, in ath12k_dp_mon_rx_parse_status_tlv()
1445 ppdu_start->ppdu_start_ts_31_0); in ath12k_dp_mon_rx_parse_status_tlv()
1447 info[0] = __le32_to_cpu(ppdu_start->info0); in ath12k_dp_mon_rx_parse_status_tlv()
1449 ppdu_info->ppdu_id = u32_get_bits(info[0], in ath12k_dp_mon_rx_parse_status_tlv()
1452 info[1] = __le32_to_cpu(ppdu_start->info1); in ath12k_dp_mon_rx_parse_status_tlv()
1453 ppdu_info->chan_num = u32_get_bits(info[1], in ath12k_dp_mon_rx_parse_status_tlv()
1455 ppdu_info->freq = u32_get_bits(info[1], in ath12k_dp_mon_rx_parse_status_tlv()
1457 ppdu_info->ppdu_ts = ppdu_ts; in ath12k_dp_mon_rx_parse_status_tlv()
1459 if (ppdu_info->ppdu_id != ppdu_info->last_ppdu_id) { in ath12k_dp_mon_rx_parse_status_tlv()
1460 ppdu_info->last_ppdu_id = ppdu_info->ppdu_id; in ath12k_dp_mon_rx_parse_status_tlv()
1461 ppdu_info->num_users = 0; in ath12k_dp_mon_rx_parse_status_tlv()
1462 memset(&ppdu_info->mpdu_fcs_ok_bitmap, 0, in ath12k_dp_mon_rx_parse_status_tlv()
1464 sizeof(ppdu_info->mpdu_fcs_ok_bitmap[0])); in ath12k_dp_mon_rx_parse_status_tlv()
1472 info[0] = __le32_to_cpu(eu_stats->info0); in ath12k_dp_mon_rx_parse_status_tlv()
1473 info[1] = __le32_to_cpu(eu_stats->info1); in ath12k_dp_mon_rx_parse_status_tlv()
1474 info[2] = __le32_to_cpu(eu_stats->info2); in ath12k_dp_mon_rx_parse_status_tlv()
1475 info[4] = __le32_to_cpu(eu_stats->info4); in ath12k_dp_mon_rx_parse_status_tlv()
1476 info[5] = __le32_to_cpu(eu_stats->info5); in ath12k_dp_mon_rx_parse_status_tlv()
1477 info[6] = __le32_to_cpu(eu_stats->info6); in ath12k_dp_mon_rx_parse_status_tlv()
1479 ppdu_info->ast_index = in ath12k_dp_mon_rx_parse_status_tlv()
1481 ppdu_info->fc_valid = in ath12k_dp_mon_rx_parse_status_tlv()
1485 ppdu_info->tid = ffs(tid_bitmap) - 1; in ath12k_dp_mon_rx_parse_status_tlv()
1486 ppdu_info->tcp_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
1489 ppdu_info->udp_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
1492 ppdu_info->other_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
1495 ppdu_info->tcp_ack_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
1498 ppdu_info->preamble_type = in ath12k_dp_mon_rx_parse_status_tlv()
1501 ppdu_info->num_mpdu_fcs_ok = in ath12k_dp_mon_rx_parse_status_tlv()
1504 ppdu_info->num_mpdu_fcs_err = in ath12k_dp_mon_rx_parse_status_tlv()
1507 ppdu_info->peer_id = in ath12k_dp_mon_rx_parse_status_tlv()
1510 switch (ppdu_info->preamble_type) { in ath12k_dp_mon_rx_parse_status_tlv()
1512 ppdu_info->ht_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
1515 ppdu_info->vht_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
1518 ppdu_info->he_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
1521 ppdu_info->is_eht = true; in ath12k_dp_mon_rx_parse_status_tlv()
1529 &ppdu_info->userstats[userid]; in ath12k_dp_mon_rx_parse_status_tlv()
1531 if (ppdu_info->num_mpdu_fcs_ok > 1 || in ath12k_dp_mon_rx_parse_status_tlv()
1532 ppdu_info->num_mpdu_fcs_err > 1) in ath12k_dp_mon_rx_parse_status_tlv()
1533 ppdu_info->userstats[userid].ampdu_present = true; in ath12k_dp_mon_rx_parse_status_tlv()
1535 ppdu_info->num_users += 1; in ath12k_dp_mon_rx_parse_status_tlv()
1541 ppdu_info->mpdu_fcs_ok_bitmap[0] = __le32_to_cpu(eu_stats->rsvd1[0]); in ath12k_dp_mon_rx_parse_status_tlv()
1542 ppdu_info->mpdu_fcs_ok_bitmap[1] = __le32_to_cpu(eu_stats->rsvd1[1]); in ath12k_dp_mon_rx_parse_status_tlv()
1548 ppdu_info->mpdu_fcs_ok_bitmap[2] = __le32_to_cpu(eu_stats->info1); in ath12k_dp_mon_rx_parse_status_tlv()
1549 ppdu_info->mpdu_fcs_ok_bitmap[3] = __le32_to_cpu(eu_stats->info2); in ath12k_dp_mon_rx_parse_status_tlv()
1550 ppdu_info->mpdu_fcs_ok_bitmap[4] = __le32_to_cpu(eu_stats->info3); in ath12k_dp_mon_rx_parse_status_tlv()
1551 ppdu_info->mpdu_fcs_ok_bitmap[5] = __le32_to_cpu(eu_stats->info4); in ath12k_dp_mon_rx_parse_status_tlv()
1552 ppdu_info->mpdu_fcs_ok_bitmap[6] = __le32_to_cpu(eu_stats->info5); in ath12k_dp_mon_rx_parse_status_tlv()
1553 ppdu_info->mpdu_fcs_ok_bitmap[7] = __le32_to_cpu(eu_stats->info6); in ath12k_dp_mon_rx_parse_status_tlv()
1595 info[0] = __le32_to_cpu(rssi->info0); in ath12k_dp_mon_rx_parse_status_tlv()
1596 info[1] = __le32_to_cpu(rssi->info1); in ath12k_dp_mon_rx_parse_status_tlv()
1602 ppdu_info->rssi_comb = in ath12k_dp_mon_rx_parse_status_tlv()
1606 ppdu_info->bw = u32_get_bits(info[0], in ath12k_dp_mon_rx_parse_status_tlv()
1613 ppdu_info->gi = le32_get_bits(cmn_usr_info->info0, in ath12k_dp_mon_rx_parse_status_tlv()
1624 info[0] = __le32_to_cpu(ppdu_rx_duration->info0); in ath12k_dp_mon_rx_parse_status_tlv()
1625 ppdu_info->rx_duration = in ath12k_dp_mon_rx_parse_status_tlv()
1627 ppdu_info->tsft = __le32_to_cpu(ppdu_rx_duration->rsvd0[1]); in ath12k_dp_mon_rx_parse_status_tlv()
1628 ppdu_info->tsft = (ppdu_info->tsft << 32) | in ath12k_dp_mon_rx_parse_status_tlv()
1629 __le32_to_cpu(ppdu_rx_duration->rsvd0[0]); in ath12k_dp_mon_rx_parse_status_tlv()
1636 info[1] = __le32_to_cpu(mpdu_start->info1); in ath12k_dp_mon_rx_parse_status_tlv()
1639 ppdu_info->peer_id = peer_id; in ath12k_dp_mon_rx_parse_status_tlv()
1641 ppdu_info->mpdu_len += u32_get_bits(info[1], in ath12k_dp_mon_rx_parse_status_tlv()
1644 info[0] = __le32_to_cpu(mpdu_start->info0); in ath12k_dp_mon_rx_parse_status_tlv()
1645 ppdu_info->userid = userid; in ath12k_dp_mon_rx_parse_status_tlv()
1646 ppdu_info->userstats[userid].ampdu_id = in ath12k_dp_mon_rx_parse_status_tlv()
1669 if (!ppdu_info->tlv_aggr.in_progress) { in ath12k_dp_mon_rx_parse_status_tlv()
1670 ppdu_info->tlv_aggr.in_progress = true; in ath12k_dp_mon_rx_parse_status_tlv()
1671 ppdu_info->tlv_aggr.tlv_tag = tlv_tag; in ath12k_dp_mon_rx_parse_status_tlv()
1672 ppdu_info->tlv_aggr.cur_len = 0; in ath12k_dp_mon_rx_parse_status_tlv()
1675 ppdu_info->is_eht = true; in ath12k_dp_mon_rx_parse_status_tlv()
1697 rx_pkt_offset = ar->ab->hal.hal_desc_sz; in ath12k_dp_mon_rx_msdus_set_payload()
1699 ath12k_dp_rx_h_l3pad(ar->ab, (struct hal_rx_desc *)tail_msdu->data); in ath12k_dp_mon_rx_msdus_set_payload()
1708 struct ath12k_base *ab = ar->ab; in ath12k_dp_mon_rx_merg_msdus()
1720 rx_desc = (struct hal_rx_desc *)head_msdu->data; in ath12k_dp_mon_rx_merg_msdus()
1721 tail_rx_desc = (struct hal_rx_desc *)tail_msdu->data; in ath12k_dp_mon_rx_merg_msdus()
1735 msdu = head_msdu->next; in ath12k_dp_mon_rx_merg_msdus()
1744 frag_list_sum_len += msdu->len; in ath12k_dp_mon_rx_merg_msdus()
1746 msdu = msdu->next; in ath12k_dp_mon_rx_merg_msdus()
1749 prev_buf->next = NULL; in ath12k_dp_mon_rx_merg_msdus()
1751 skb_trim(prev_buf, prev_buf->len - HAL_RX_FCS_LEN); in ath12k_dp_mon_rx_merg_msdus()
1753 skb_shinfo(head_msdu)->frag_list = head_frag_list; in ath12k_dp_mon_rx_merg_msdus()
1754 head_msdu->data_len = frag_list_sum_len; in ath12k_dp_mon_rx_merg_msdus()
1755 head_msdu->len += head_msdu->data_len; in ath12k_dp_mon_rx_merg_msdus()
1756 head_msdu->next = NULL; in ath12k_dp_mon_rx_merg_msdus()
1761 rx_desc = (struct hal_rx_desc *)head_msdu->data; in ath12k_dp_mon_rx_merg_msdus()
1763 ab->hal_rx_ops->rx_desc_get_msdu_payload(rx_desc); in ath12k_dp_mon_rx_merg_msdus()
1768 if (ieee80211_is_data_qos(wh->frame_control)) in ath12k_dp_mon_rx_merg_msdus()
1782 msdu = msdu->next; in ath12k_dp_mon_rx_merg_msdus()
1789 "mpdu_buf %p mpdu_buf->len %u", in ath12k_dp_mon_rx_merg_msdus()
1790 prev_buf, prev_buf->len); in ath12k_dp_mon_rx_merg_msdus()
1816 put_unaligned_le16(rx_status->he_data1, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he()
1819 put_unaligned_le16(rx_status->he_data2, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he()
1822 put_unaligned_le16(rx_status->he_data3, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he()
1825 put_unaligned_le16(rx_status->he_data4, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he()
1828 put_unaligned_le16(rx_status->he_data5, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he()
1831 put_unaligned_le16(rx_status->he_data6, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he()
1840 put_unaligned_le16(rx_status->he_flags1, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he_mu()
1843 put_unaligned_le16(rx_status->he_flags2, &rtap_buf[rtap_len]); in ath12k_dp_mon_rx_update_radiotap_he_mu()
1846 rtap_buf[rtap_len] = rx_status->he_RU[0]; in ath12k_dp_mon_rx_update_radiotap_he_mu()
1849 rtap_buf[rtap_len] = rx_status->he_RU[1]; in ath12k_dp_mon_rx_update_radiotap_he_mu()
1852 rtap_buf[rtap_len] = rx_status->he_RU[2]; in ath12k_dp_mon_rx_update_radiotap_he_mu()
1855 rtap_buf[rtap_len] = rx_status->he_RU[3]; in ath12k_dp_mon_rx_update_radiotap_he_mu()
1866 rxs->flag |= RX_FLAG_MACTIME_START; in ath12k_dp_mon_update_radiotap()
1867 rxs->signal = ppduinfo->rssi_comb + ATH12K_DEFAULT_NOISE_FLOOR; in ath12k_dp_mon_update_radiotap()
1868 rxs->nss = ppduinfo->nss + 1; in ath12k_dp_mon_update_radiotap()
1870 if (ppduinfo->userstats[ppduinfo->userid].ampdu_present) { in ath12k_dp_mon_update_radiotap()
1871 rxs->flag |= RX_FLAG_AMPDU_DETAILS; in ath12k_dp_mon_update_radiotap()
1872 rxs->ampdu_reference = ppduinfo->userstats[ppduinfo->userid].ampdu_id; in ath12k_dp_mon_update_radiotap()
1875 if (ppduinfo->is_eht || ppduinfo->eht_usig) { in ath12k_dp_mon_update_radiotap()
1882 if (ppduinfo->is_eht) { in ath12k_dp_mon_update_radiotap()
1885 ppduinfo->eht_info.num_user_info); in ath12k_dp_mon_update_radiotap()
1889 if (ppduinfo->eht_usig) { in ath12k_dp_mon_update_radiotap()
1894 rxs->flag |= RX_FLAG_RADIOTAP_TLV_AT_END; in ath12k_dp_mon_update_radiotap()
1895 rxs->encoding = RX_ENC_EHT; in ath12k_dp_mon_update_radiotap()
1901 if (ppduinfo->is_eht) { in ath12k_dp_mon_update_radiotap()
1902 tlv->type = cpu_to_le16(IEEE80211_RADIOTAP_EHT); in ath12k_dp_mon_update_radiotap()
1903 tlv->len = cpu_to_le16(eht_len); in ath12k_dp_mon_update_radiotap()
1905 eht = (struct ieee80211_radiotap_eht *)tlv->data; in ath12k_dp_mon_update_radiotap()
1906 eht->known = ppduinfo->eht_info.eht.known; in ath12k_dp_mon_update_radiotap()
1909 i < ARRAY_SIZE(eht->data) && in ath12k_dp_mon_update_radiotap()
1910 i < ARRAY_SIZE(ppduinfo->eht_info.eht.data); in ath12k_dp_mon_update_radiotap()
1912 eht->data[i] = ppduinfo->eht_info.eht.data[i]; in ath12k_dp_mon_update_radiotap()
1914 for (user = 0; user < ppduinfo->eht_info.num_user_info; user++) in ath12k_dp_mon_update_radiotap()
1915 put_unaligned_le32(ppduinfo->eht_info.user_info[user], in ath12k_dp_mon_update_radiotap()
1916 &eht->user_info[user]); in ath12k_dp_mon_update_radiotap()
1918 tlv = (struct ieee80211_radiotap_tlv *)&tlv->data[eht_len]; in ath12k_dp_mon_update_radiotap()
1921 if (ppduinfo->eht_usig) { in ath12k_dp_mon_update_radiotap()
1922 tlv->type = cpu_to_le16(IEEE80211_RADIOTAP_EHT_USIG); in ath12k_dp_mon_update_radiotap()
1923 tlv->len = cpu_to_le16(usig_len); in ath12k_dp_mon_update_radiotap()
1925 usig = (struct ieee80211_radiotap_eht_usig *)tlv->data; in ath12k_dp_mon_update_radiotap()
1926 *usig = ppduinfo->u_sig_info.usig; in ath12k_dp_mon_update_radiotap()
1928 } else if (ppduinfo->he_mu_flags) { in ath12k_dp_mon_update_radiotap()
1929 rxs->flag |= RX_FLAG_RADIOTAP_HE_MU; in ath12k_dp_mon_update_radiotap()
1930 rxs->encoding = RX_ENC_HE; in ath12k_dp_mon_update_radiotap()
1933 } else if (ppduinfo->he_flags) { in ath12k_dp_mon_update_radiotap()
1934 rxs->flag |= RX_FLAG_RADIOTAP_HE; in ath12k_dp_mon_update_radiotap()
1935 rxs->encoding = RX_ENC_HE; in ath12k_dp_mon_update_radiotap()
1938 rxs->rate_idx = ppduinfo->rate; in ath12k_dp_mon_update_radiotap()
1939 } else if (ppduinfo->vht_flags) { in ath12k_dp_mon_update_radiotap()
1940 rxs->encoding = RX_ENC_VHT; in ath12k_dp_mon_update_radiotap()
1941 rxs->rate_idx = ppduinfo->rate; in ath12k_dp_mon_update_radiotap()
1942 } else if (ppduinfo->ht_flags) { in ath12k_dp_mon_update_radiotap()
1943 rxs->encoding = RX_ENC_HT; in ath12k_dp_mon_update_radiotap()
1944 rxs->rate_idx = ppduinfo->rate; in ath12k_dp_mon_update_radiotap()
1946 rxs->encoding = RX_ENC_LEGACY; in ath12k_dp_mon_update_radiotap()
1947 sband = &ar->mac.sbands[rxs->band]; in ath12k_dp_mon_update_radiotap()
1948 rxs->rate_idx = ath12k_mac_hw_rate_to_idx(sband, ppduinfo->rate, in ath12k_dp_mon_update_radiotap()
1949 ppduinfo->cck_flag); in ath12k_dp_mon_update_radiotap()
1952 rxs->mactime = ppduinfo->tsft; in ath12k_dp_mon_update_radiotap()
1970 bool is_mcbc = rxcb->is_mcbc; in ath12k_dp_mon_rx_deliver_msdu()
1971 bool is_eapol_tkip = rxcb->is_eapol; in ath12k_dp_mon_rx_deliver_msdu()
1973 if ((status->encoding == RX_ENC_HE) && !(status->flag & RX_FLAG_RADIOTAP_HE) && in ath12k_dp_mon_rx_deliver_msdu()
1974 !(status->flag & RX_FLAG_SKIP_MONITOR)) { in ath12k_dp_mon_rx_deliver_msdu()
1977 status->flag |= RX_FLAG_RADIOTAP_HE; in ath12k_dp_mon_rx_deliver_msdu()
1980 if (!(status->flag & RX_FLAG_ONLY_MONITOR)) in ath12k_dp_mon_rx_deliver_msdu()
1981 decap = ath12k_dp_rx_h_decap_type(ar->ab, rxcb->rx_desc); in ath12k_dp_mon_rx_deliver_msdu()
1982 spin_lock_bh(&ar->ab->base_lock); in ath12k_dp_mon_rx_deliver_msdu()
1983 peer = ath12k_dp_rx_h_find_peer(ar->ab, msdu); in ath12k_dp_mon_rx_deliver_msdu()
1984 if (peer && peer->sta) { in ath12k_dp_mon_rx_deliver_msdu()
1985 pubsta = peer->sta; in ath12k_dp_mon_rx_deliver_msdu()
1986 if (pubsta->valid_links) { in ath12k_dp_mon_rx_deliver_msdu()
1987 status->link_valid = 1; in ath12k_dp_mon_rx_deliver_msdu()
1988 status->link_id = peer->link_id; in ath12k_dp_mon_rx_deliver_msdu()
1992 spin_unlock_bh(&ar->ab->base_lock); in ath12k_dp_mon_rx_deliver_msdu()
1994 ath12k_dbg(ar->ab, ATH12K_DBG_DATA, in ath12k_dp_mon_rx_deliver_msdu()
1995 …s%s%s%s%s %srate_idx %u vht_nss %u freq %u band %u flag 0x%x fcs-err %i mic-err %i amsdu-more %i\n… in ath12k_dp_mon_rx_deliver_msdu()
1997 msdu->len, in ath12k_dp_mon_rx_deliver_msdu()
1998 peer ? peer->addr : NULL, in ath12k_dp_mon_rx_deliver_msdu()
1999 rxcb->tid, in ath12k_dp_mon_rx_deliver_msdu()
2001 (status->encoding == RX_ENC_LEGACY) ? "legacy" : "", in ath12k_dp_mon_rx_deliver_msdu()
2002 (status->encoding == RX_ENC_HT) ? "ht" : "", in ath12k_dp_mon_rx_deliver_msdu()
2003 (status->encoding == RX_ENC_VHT) ? "vht" : "", in ath12k_dp_mon_rx_deliver_msdu()
2004 (status->encoding == RX_ENC_HE) ? "he" : "", in ath12k_dp_mon_rx_deliver_msdu()
2005 (status->bw == RATE_INFO_BW_40) ? "40" : "", in ath12k_dp_mon_rx_deliver_msdu()
2006 (status->bw == RATE_INFO_BW_80) ? "80" : "", in ath12k_dp_mon_rx_deliver_msdu()
2007 (status->bw == RATE_INFO_BW_160) ? "160" : "", in ath12k_dp_mon_rx_deliver_msdu()
2008 (status->bw == RATE_INFO_BW_320) ? "320" : "", in ath12k_dp_mon_rx_deliver_msdu()
2009 status->enc_flags & RX_ENC_FLAG_SHORT_GI ? "sgi " : "", in ath12k_dp_mon_rx_deliver_msdu()
2010 status->rate_idx, in ath12k_dp_mon_rx_deliver_msdu()
2011 status->nss, in ath12k_dp_mon_rx_deliver_msdu()
2012 status->freq, in ath12k_dp_mon_rx_deliver_msdu()
2013 status->band, status->flag, in ath12k_dp_mon_rx_deliver_msdu()
2014 !!(status->flag & RX_FLAG_FAILED_FCS_CRC), in ath12k_dp_mon_rx_deliver_msdu()
2015 !!(status->flag & RX_FLAG_MMIC_ERROR), in ath12k_dp_mon_rx_deliver_msdu()
2016 !!(status->flag & RX_FLAG_AMSDU_MORE)); in ath12k_dp_mon_rx_deliver_msdu()
2018 ath12k_dbg_dump(ar->ab, ATH12K_DBG_DP_RX, NULL, "dp rx msdu: ", in ath12k_dp_mon_rx_deliver_msdu()
2019 msdu->data, msdu->len); in ath12k_dp_mon_rx_deliver_msdu()
2031 !(is_mcbc && rx_status->flag & RX_FLAG_DECRYPTED)) in ath12k_dp_mon_rx_deliver_msdu()
2032 rx_status->flag |= RX_FLAG_8023; in ath12k_dp_mon_rx_deliver_msdu()
2042 struct ath12k_pdev_dp *dp = &ar->dp; in ath12k_dp_mon_rx_deliver()
2044 struct ieee80211_rx_status *rxs = &dp->rx_status; in ath12k_dp_mon_rx_deliver()
2054 rxs->flag = 0; in ath12k_dp_mon_rx_deliver()
2057 rxs->flag = RX_FLAG_FAILED_FCS_CRC; in ath12k_dp_mon_rx_deliver()
2060 skb_next = mon_skb->next; in ath12k_dp_mon_rx_deliver()
2062 rxs->flag &= ~RX_FLAG_AMSDU_MORE; in ath12k_dp_mon_rx_deliver()
2064 rxs->flag |= RX_FLAG_AMSDU_MORE; in ath12k_dp_mon_rx_deliver()
2068 rxs->flag &= ~RX_FLAG_ALLOW_SAME_PN; in ath12k_dp_mon_rx_deliver()
2070 rxs->flag |= RX_FLAG_ALLOW_SAME_PN; in ath12k_dp_mon_rx_deliver()
2072 rxs->flag |= RX_FLAG_ONLY_MONITOR; in ath12k_dp_mon_rx_deliver()
2077 rxs->flag = 0; in ath12k_dp_mon_rx_deliver()
2084 skb_next = mon_skb->next; in ath12k_dp_mon_rx_deliver()
2088 return -EINVAL; in ath12k_dp_mon_rx_deliver()
2099 u8 *ptr = skb->data; in ath12k_dp_mon_parse_rx_dest()
2103 tlv_tag = le64_get_bits(tlv->tl, HAL_TLV_64_HDR_TAG); in ath12k_dp_mon_parse_rx_dest()
2114 tlv_len = le64_get_bits(tlv->tl, HAL_TLV_64_HDR_LEN); in ath12k_dp_mon_parse_rx_dest()
2120 if ((ptr - skb->data) >= DP_RX_BUFFER_SIZE) in ath12k_dp_mon_parse_rx_dest()
2129 if (rxcb->is_end_of_ppdu) in ath12k_dp_mon_parse_rx_dest()
2141 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_rx_parse_mon_status()
2143 struct dp_mon_mpdu *mon_mpdu = pmon->mon_mpdu; in ath12k_dp_mon_rx_parse_mon_status()
2149 list_for_each_entry_safe(mon_mpdu, tmp, &pmon->dp_rx_mon_mpdu_list, list) { in ath12k_dp_mon_rx_parse_mon_status()
2150 list_del(&mon_mpdu->list); in ath12k_dp_mon_rx_parse_mon_status()
2151 head_msdu = mon_mpdu->head; in ath12k_dp_mon_rx_parse_mon_status()
2152 tail_msdu = mon_mpdu->tail; in ath12k_dp_mon_rx_parse_mon_status()
2175 srng = &ab->hal.srng_list[buf_ring->refill_buf_ring.ring_id]; in ath12k_dp_mon_buf_replenish()
2176 spin_lock_bh(&srng->lock); in ath12k_dp_mon_buf_replenish()
2184 if (!IS_ALIGNED((unsigned long)skb->data, DP_RX_BUFFER_ALIGN_SIZE)) { in ath12k_dp_mon_buf_replenish()
2186 PTR_ALIGN(skb->data, DP_RX_BUFFER_ALIGN_SIZE) - in ath12k_dp_mon_buf_replenish()
2187 skb->data); in ath12k_dp_mon_buf_replenish()
2190 paddr = dma_map_single(ab->dev, skb->data, in ath12k_dp_mon_buf_replenish()
2191 skb->len + skb_tailroom(skb), in ath12k_dp_mon_buf_replenish()
2194 if (unlikely(dma_mapping_error(ab->dev, paddr))) in ath12k_dp_mon_buf_replenish()
2197 spin_lock_bh(&buf_ring->idr_lock); in ath12k_dp_mon_buf_replenish()
2198 buf_id = idr_alloc(&buf_ring->bufs_idr, skb, 0, in ath12k_dp_mon_buf_replenish()
2199 buf_ring->bufs_max * 3, GFP_ATOMIC); in ath12k_dp_mon_buf_replenish()
2200 spin_unlock_bh(&buf_ring->idr_lock); in ath12k_dp_mon_buf_replenish()
2209 ATH12K_SKB_RXCB(skb)->paddr = paddr; in ath12k_dp_mon_buf_replenish()
2213 mon_buf->paddr_lo = cpu_to_le32(lower_32_bits(paddr)); in ath12k_dp_mon_buf_replenish()
2214 mon_buf->paddr_hi = cpu_to_le32(upper_32_bits(paddr)); in ath12k_dp_mon_buf_replenish()
2215 mon_buf->cookie = cpu_to_le64(cookie); in ath12k_dp_mon_buf_replenish()
2217 req_entries--; in ath12k_dp_mon_buf_replenish()
2221 spin_unlock_bh(&srng->lock); in ath12k_dp_mon_buf_replenish()
2225 spin_lock_bh(&buf_ring->idr_lock); in ath12k_dp_mon_buf_replenish()
2226 idr_remove(&buf_ring->bufs_idr, buf_id); in ath12k_dp_mon_buf_replenish()
2227 spin_unlock_bh(&buf_ring->idr_lock); in ath12k_dp_mon_buf_replenish()
2229 dma_unmap_single(ab->dev, paddr, skb->len + skb_tailroom(skb), in ath12k_dp_mon_buf_replenish()
2235 spin_unlock_bh(&srng->lock); in ath12k_dp_mon_buf_replenish()
2236 return -ENOMEM; in ath12k_dp_mon_buf_replenish()
2247 tx_ppdu_info = pmon->tx_prot_ppdu_info; in ath12k_dp_mon_tx_get_ppdu_info()
2249 if (tx_ppdu_info && !tx_ppdu_info->is_used) in ath12k_dp_mon_tx_get_ppdu_info()
2253 tx_ppdu_info = pmon->tx_data_ppdu_info; in ath12k_dp_mon_tx_get_ppdu_info()
2255 if (tx_ppdu_info && !tx_ppdu_info->is_used) in ath12k_dp_mon_tx_get_ppdu_info()
2265 tx_ppdu_info->is_used = 0; in ath12k_dp_mon_tx_get_ppdu_info()
2266 tx_ppdu_info->ppdu_id = ppdu_id; in ath12k_dp_mon_tx_get_ppdu_info()
2269 pmon->tx_prot_ppdu_info = tx_ppdu_info; in ath12k_dp_mon_tx_get_ppdu_info()
2271 pmon->tx_data_ppdu_info = tx_ppdu_info; in ath12k_dp_mon_tx_get_ppdu_info()
2302 if (!pmon->tx_prot_ppdu_info->is_used) in ath12k_dp_mon_hal_tx_ppdu_info()
2303 pmon->tx_prot_ppdu_info->is_used = true; in ath12k_dp_mon_hal_tx_ppdu_info()
2305 return pmon->tx_prot_ppdu_info; in ath12k_dp_mon_hal_tx_ppdu_info()
2309 if (!pmon->tx_data_ppdu_info->is_used) in ath12k_dp_mon_hal_tx_ppdu_info()
2310 pmon->tx_data_ppdu_info->is_used = true; in ath12k_dp_mon_hal_tx_ppdu_info()
2312 return pmon->tx_data_ppdu_info; in ath12k_dp_mon_hal_tx_ppdu_info()
2328 if (!IS_ALIGNED((unsigned long)skb->data, 4)) in ath12k_dp_mon_tx_alloc_skb()
2329 skb_pull(skb, PTR_ALIGN(skb->data, 4) - skb->data); in ath12k_dp_mon_tx_alloc_skb()
2342 return -ENOMEM; in ath12k_dp_mon_tx_gen_cts2self_frame()
2344 cts = (struct ieee80211_cts *)skb->data; in ath12k_dp_mon_tx_gen_cts2self_frame()
2346 cts->frame_control = in ath12k_dp_mon_tx_gen_cts2self_frame()
2348 cts->duration = cpu_to_le16(tx_ppdu_info->rx_status.rx_duration); in ath12k_dp_mon_tx_gen_cts2self_frame()
2349 memcpy(cts->ra, tx_ppdu_info->rx_status.addr1, sizeof(cts->ra)); in ath12k_dp_mon_tx_gen_cts2self_frame()
2352 tx_ppdu_info->tx_mon_mpdu->head = skb; in ath12k_dp_mon_tx_gen_cts2self_frame()
2353 tx_ppdu_info->tx_mon_mpdu->tail = NULL; in ath12k_dp_mon_tx_gen_cts2self_frame()
2354 list_add_tail(&tx_ppdu_info->tx_mon_mpdu->list, in ath12k_dp_mon_tx_gen_cts2self_frame()
2355 &tx_ppdu_info->dp_tx_mon_mpdu_list); in ath12k_dp_mon_tx_gen_cts2self_frame()
2368 return -ENOMEM; in ath12k_dp_mon_tx_gen_rts_frame()
2370 rts = (struct ieee80211_rts *)skb->data; in ath12k_dp_mon_tx_gen_rts_frame()
2372 rts->frame_control = in ath12k_dp_mon_tx_gen_rts_frame()
2374 rts->duration = cpu_to_le16(tx_ppdu_info->rx_status.rx_duration); in ath12k_dp_mon_tx_gen_rts_frame()
2375 memcpy(rts->ra, tx_ppdu_info->rx_status.addr1, sizeof(rts->ra)); in ath12k_dp_mon_tx_gen_rts_frame()
2376 memcpy(rts->ta, tx_ppdu_info->rx_status.addr2, sizeof(rts->ta)); in ath12k_dp_mon_tx_gen_rts_frame()
2379 tx_ppdu_info->tx_mon_mpdu->head = skb; in ath12k_dp_mon_tx_gen_rts_frame()
2380 tx_ppdu_info->tx_mon_mpdu->tail = NULL; in ath12k_dp_mon_tx_gen_rts_frame()
2381 list_add_tail(&tx_ppdu_info->tx_mon_mpdu->list, in ath12k_dp_mon_tx_gen_rts_frame()
2382 &tx_ppdu_info->dp_tx_mon_mpdu_list); in ath12k_dp_mon_tx_gen_rts_frame()
2395 return -ENOMEM; in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2397 qhdr = (struct ieee80211_qos_hdr *)skb->data; in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2399 qhdr->frame_control = in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2401 qhdr->duration_id = cpu_to_le16(tx_ppdu_info->rx_status.rx_duration); in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2402 memcpy(qhdr->addr1, tx_ppdu_info->rx_status.addr1, ETH_ALEN); in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2403 memcpy(qhdr->addr2, tx_ppdu_info->rx_status.addr2, ETH_ALEN); in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2404 memcpy(qhdr->addr3, tx_ppdu_info->rx_status.addr3, ETH_ALEN); in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2407 tx_ppdu_info->tx_mon_mpdu->head = skb; in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2408 tx_ppdu_info->tx_mon_mpdu->tail = NULL; in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2409 list_add_tail(&tx_ppdu_info->tx_mon_mpdu->list, in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2410 &tx_ppdu_info->dp_tx_mon_mpdu_list); in ath12k_dp_mon_tx_gen_3addr_qos_null_frame()
2423 return -ENOMEM; in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2425 qhdr = (struct dp_mon_qosframe_addr4 *)skb->data; in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2427 qhdr->frame_control = in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2429 qhdr->duration = cpu_to_le16(tx_ppdu_info->rx_status.rx_duration); in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2430 memcpy(qhdr->addr1, tx_ppdu_info->rx_status.addr1, ETH_ALEN); in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2431 memcpy(qhdr->addr2, tx_ppdu_info->rx_status.addr2, ETH_ALEN); in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2432 memcpy(qhdr->addr3, tx_ppdu_info->rx_status.addr3, ETH_ALEN); in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2433 memcpy(qhdr->addr4, tx_ppdu_info->rx_status.addr4, ETH_ALEN); in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2436 tx_ppdu_info->tx_mon_mpdu->head = skb; in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2437 tx_ppdu_info->tx_mon_mpdu->tail = NULL; in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2438 list_add_tail(&tx_ppdu_info->tx_mon_mpdu->list, in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2439 &tx_ppdu_info->dp_tx_mon_mpdu_list); in ath12k_dp_mon_tx_gen_4addr_qos_null_frame()
2452 return -ENOMEM; in ath12k_dp_mon_tx_gen_ack_frame()
2454 fbmhdr = (struct dp_mon_frame_min_one *)skb->data; in ath12k_dp_mon_tx_gen_ack_frame()
2456 fbmhdr->frame_control = in ath12k_dp_mon_tx_gen_ack_frame()
2458 memcpy(fbmhdr->addr1, tx_ppdu_info->rx_status.addr1, ETH_ALEN); in ath12k_dp_mon_tx_gen_ack_frame()
2461 fbmhdr->duration = 0; in ath12k_dp_mon_tx_gen_ack_frame()
2464 tx_ppdu_info->tx_mon_mpdu->head = skb; in ath12k_dp_mon_tx_gen_ack_frame()
2465 tx_ppdu_info->tx_mon_mpdu->tail = NULL; in ath12k_dp_mon_tx_gen_ack_frame()
2466 list_add_tail(&tx_ppdu_info->tx_mon_mpdu->list, in ath12k_dp_mon_tx_gen_ack_frame()
2467 &tx_ppdu_info->dp_tx_mon_mpdu_list); in ath12k_dp_mon_tx_gen_ack_frame()
2477 switch (tx_ppdu_info->rx_status.medium_prot_type) { in ath12k_dp_mon_tx_gen_prot_frame()
2512 info[0] = __le32_to_cpu(tx_fes_setup->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2513 tx_ppdu_info->ppdu_id = __le32_to_cpu(tx_fes_setup->schedule_id); in ath12k_dp_mon_tx_parse_status_tlv()
2514 tx_ppdu_info->num_users = in ath12k_dp_mon_tx_parse_status_tlv()
2524 info[0] = __le32_to_cpu(tx_fes_status_end->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2532 tx_ppdu_info->rx_status.ppdu_ts = (tst_15_0 | (tst_31_16 << 16)); in ath12k_dp_mon_tx_parse_status_tlv()
2542 info[0] = __le32_to_cpu(rx_resp_req_info->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2543 info[1] = __le32_to_cpu(rx_resp_req_info->info1); in ath12k_dp_mon_tx_parse_status_tlv()
2544 info[2] = __le32_to_cpu(rx_resp_req_info->info2); in ath12k_dp_mon_tx_parse_status_tlv()
2545 info[3] = __le32_to_cpu(rx_resp_req_info->info3); in ath12k_dp_mon_tx_parse_status_tlv()
2546 info[4] = __le32_to_cpu(rx_resp_req_info->info4); in ath12k_dp_mon_tx_parse_status_tlv()
2547 info[5] = __le32_to_cpu(rx_resp_req_info->info5); in ath12k_dp_mon_tx_parse_status_tlv()
2549 tx_ppdu_info->rx_status.ppdu_id = in ath12k_dp_mon_tx_parse_status_tlv()
2551 tx_ppdu_info->rx_status.reception_type = in ath12k_dp_mon_tx_parse_status_tlv()
2553 tx_ppdu_info->rx_status.rx_duration = in ath12k_dp_mon_tx_parse_status_tlv()
2555 tx_ppdu_info->rx_status.mcs = in ath12k_dp_mon_tx_parse_status_tlv()
2557 tx_ppdu_info->rx_status.sgi = in ath12k_dp_mon_tx_parse_status_tlv()
2559 tx_ppdu_info->rx_status.is_stbc = in ath12k_dp_mon_tx_parse_status_tlv()
2561 tx_ppdu_info->rx_status.ldpc = in ath12k_dp_mon_tx_parse_status_tlv()
2563 tx_ppdu_info->rx_status.is_ampdu = in ath12k_dp_mon_tx_parse_status_tlv()
2565 tx_ppdu_info->rx_status.num_users = in ath12k_dp_mon_tx_parse_status_tlv()
2570 ath12k_dp_get_mac_addr(addr_32, addr_16, tx_ppdu_info->rx_status.addr1); in ath12k_dp_mon_tx_parse_status_tlv()
2574 ath12k_dp_get_mac_addr(addr_32, addr_16, tx_ppdu_info->rx_status.addr2); in ath12k_dp_mon_tx_parse_status_tlv()
2576 if (tx_ppdu_info->rx_status.reception_type == 0) in ath12k_dp_mon_tx_parse_status_tlv()
2587 info[0] = __le32_to_cpu(ppdu_setup->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2588 info[1] = __le32_to_cpu(ppdu_setup->info1); in ath12k_dp_mon_tx_parse_status_tlv()
2589 info[2] = __le32_to_cpu(ppdu_setup->info2); in ath12k_dp_mon_tx_parse_status_tlv()
2590 info[3] = __le32_to_cpu(ppdu_setup->info3); in ath12k_dp_mon_tx_parse_status_tlv()
2591 info[4] = __le32_to_cpu(ppdu_setup->info4); in ath12k_dp_mon_tx_parse_status_tlv()
2592 info[5] = __le32_to_cpu(ppdu_setup->info5); in ath12k_dp_mon_tx_parse_status_tlv()
2593 info[6] = __le32_to_cpu(ppdu_setup->info6); in ath12k_dp_mon_tx_parse_status_tlv()
2600 ath12k_dp_get_mac_addr(addr_32, addr_16, tx_ppdu_info->rx_status.addr1); in ath12k_dp_mon_tx_parse_status_tlv()
2607 ath12k_dp_get_mac_addr(addr_32, addr_16, tx_ppdu_info->rx_status.addr2); in ath12k_dp_mon_tx_parse_status_tlv()
2614 ath12k_dp_get_mac_addr(addr_32, addr_16, tx_ppdu_info->rx_status.addr3); in ath12k_dp_mon_tx_parse_status_tlv()
2621 ath12k_dp_get_mac_addr(addr_32, addr_16, tx_ppdu_info->rx_status.addr4); in ath12k_dp_mon_tx_parse_status_tlv()
2631 info[0] = __le32_to_cpu(tx_q_exten->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2633 tx_ppdu_info->rx_status.frame_control = in ath12k_dp_mon_tx_parse_status_tlv()
2636 tx_ppdu_info->rx_status.fc_valid = true; in ath12k_dp_mon_tx_parse_status_tlv()
2643 info[0] = __le32_to_cpu(tx_fes_start->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2645 tx_ppdu_info->rx_status.medium_prot_type = in ath12k_dp_mon_tx_parse_status_tlv()
2656 info[0] = __le32_to_cpu(tx_fes_status->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2657 info[1] = __le32_to_cpu(tx_fes_status->info1); in ath12k_dp_mon_tx_parse_status_tlv()
2671 tx_ppdu_info->rx_status.rx_duration = end_timestamp - start_timestamp; in ath12k_dp_mon_tx_parse_status_tlv()
2682 info[0] = __le32_to_cpu(tx_fes_stat_start->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2684 tx_ppdu_info->rx_status.ppdu_ts = in ath12k_dp_mon_tx_parse_status_tlv()
2689 tx_ppdu_info->rx_status.ppdu_ts |= ppdu_ts << 32; in ath12k_dp_mon_tx_parse_status_tlv()
2696 info[0] = __le32_to_cpu(tx_fes_usr_ppdu->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2698 tx_ppdu_info->rx_status.rx_duration = in ath12k_dp_mon_tx_parse_status_tlv()
2705 ath12k_dp_mon_parse_he_sig_su(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2709 ath12k_dp_mon_parse_he_sig_mu(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2713 ath12k_dp_mon_parse_he_sig_b1_mu(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2717 ath12k_dp_mon_parse_he_sig_b2_mu(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2721 ath12k_dp_mon_parse_he_sig_b2_ofdma(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2725 ath12k_dp_mon_parse_vht_sig_a(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2729 ath12k_dp_mon_parse_l_sig_a(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2733 ath12k_dp_mon_parse_l_sig_b(tlv_data, &tx_ppdu_info->rx_status); in ath12k_dp_mon_tx_parse_status_tlv()
2741 info[0] = __le32_to_cpu(fbm_ack->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2742 info[1] = __le32_to_cpu(fbm_ack->info1); in ath12k_dp_mon_tx_parse_status_tlv()
2748 ath12k_dp_get_mac_addr(addr_32, addr_16, tx_ppdu_info->rx_status.addr1); in ath12k_dp_mon_tx_parse_status_tlv()
2757 info[0] = __le32_to_cpu(tx_phy_desc->info0); in ath12k_dp_mon_tx_parse_status_tlv()
2758 info[1] = __le32_to_cpu(tx_phy_desc->info1); in ath12k_dp_mon_tx_parse_status_tlv()
2759 info[2] = __le32_to_cpu(tx_phy_desc->info2); in ath12k_dp_mon_tx_parse_status_tlv()
2760 info[3] = __le32_to_cpu(tx_phy_desc->info3); in ath12k_dp_mon_tx_parse_status_tlv()
2762 tx_ppdu_info->rx_status.beamformed = in ath12k_dp_mon_tx_parse_status_tlv()
2765 tx_ppdu_info->rx_status.preamble_type = in ath12k_dp_mon_tx_parse_status_tlv()
2768 tx_ppdu_info->rx_status.mcs = in ath12k_dp_mon_tx_parse_status_tlv()
2771 tx_ppdu_info->rx_status.ltf_size = in ath12k_dp_mon_tx_parse_status_tlv()
2774 tx_ppdu_info->rx_status.nss = in ath12k_dp_mon_tx_parse_status_tlv()
2777 tx_ppdu_info->rx_status.chan_num = in ath12k_dp_mon_tx_parse_status_tlv()
2780 tx_ppdu_info->rx_status.bw = in ath12k_dp_mon_tx_parse_status_tlv()
2787 struct dp_mon_mpdu *mon_mpdu = tx_ppdu_info->tx_mon_mpdu; in ath12k_dp_mon_tx_parse_status_tlv()
2797 list_add_tail(&tx_ppdu_info->tx_mon_mpdu->list, in ath12k_dp_mon_tx_parse_status_tlv()
2798 &tx_ppdu_info->dp_tx_mon_mpdu_list); in ath12k_dp_mon_tx_parse_status_tlv()
2818 info0 = __le32_to_cpu(tx_fes_setup->info0); in ath12k_dp_mon_tx_status_get_num_user()
2844 &tx_ppdu_info->dp_tx_mon_mpdu_list, list) { in ath12k_dp_mon_tx_process_ppdu_info()
2845 list_del(&mon_mpdu->list); in ath12k_dp_mon_tx_process_ppdu_info()
2846 head_msdu = mon_mpdu->head; in ath12k_dp_mon_tx_process_ppdu_info()
2847 tail_msdu = mon_mpdu->tail; in ath12k_dp_mon_tx_process_ppdu_info()
2851 &tx_ppdu_info->rx_status, napi); in ath12k_dp_mon_tx_process_ppdu_info()
2864 struct ath12k_base *ab = ar->ab; in ath12k_dp_mon_tx_parse_mon_status()
2867 u8 *ptr = skb->data; in ath12k_dp_mon_tx_parse_mon_status()
2877 return -ENOMEM; in ath12k_dp_mon_tx_parse_mon_status()
2880 tlv_tag = le32_get_bits(tlv->tl, HAL_TLV_HDR_TAG); in ath12k_dp_mon_tx_parse_mon_status()
2884 return -EINVAL; in ath12k_dp_mon_tx_parse_mon_status()
2889 return -ENOMEM; in ath12k_dp_mon_tx_parse_mon_status()
2893 tlv_tag = le32_get_bits(tlv->tl, HAL_TLV_HDR_TAG); in ath12k_dp_mon_tx_parse_mon_status()
2894 tlv_len = le32_get_bits(tlv->tl, HAL_TLV_HDR_LEN); in ath12k_dp_mon_tx_parse_mon_status()
2895 tlv_userid = le32_get_bits(tlv->tl, HAL_TLV_USR_ID); in ath12k_dp_mon_tx_parse_mon_status()
2902 if ((ptr - skb->data) >= DP_TX_MONITOR_BUF_SIZE) in ath12k_dp_mon_tx_parse_mon_status()
2919 u32 mcs_idx = (user_stats) ? user_stats->mcs : ppdu_info->mcs; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2920 u32 nss_idx = (user_stats) ? user_stats->nss - 1 : ppdu_info->nss - 1; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2921 u32 bw_idx = ppdu_info->bw; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2922 u32 gi_idx = ppdu_info->gi; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2930 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AX || in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2931 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11BE) in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2932 gi_idx = ath12k_he_gi_to_nl80211_he_gi(ppdu_info->gi); in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2934 rx_stats->pkt_stats.rx_rate[bw_idx][gi_idx][nss_idx][mcs_idx] += num_msdu; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2935 stats = &rx_stats->byte_stats; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2938 len = user_stats->mpdu_ok_byte_count; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2940 len = ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2942 stats->rx_rate[bw_idx][gi_idx][nss_idx][mcs_idx] += len; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2949 struct ath12k_rx_peer_stats *rx_stats = arsta->rx_stats; in ath12k_dp_mon_rx_update_peer_su_stats()
2955 arsta->rssi_comb = ppdu_info->rssi_comb; in ath12k_dp_mon_rx_update_peer_su_stats()
2956 ewma_avg_rssi_add(&arsta->avg_rssi, ppdu_info->rssi_comb); in ath12k_dp_mon_rx_update_peer_su_stats()
2958 num_msdu = ppdu_info->tcp_msdu_count + ppdu_info->tcp_ack_msdu_count + in ath12k_dp_mon_rx_update_peer_su_stats()
2959 ppdu_info->udp_msdu_count + ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2961 rx_stats->num_msdu += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2962 rx_stats->tcp_msdu_count += ppdu_info->tcp_msdu_count + in ath12k_dp_mon_rx_update_peer_su_stats()
2963 ppdu_info->tcp_ack_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2964 rx_stats->udp_msdu_count += ppdu_info->udp_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2965 rx_stats->other_msdu_count += ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2967 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11A || in ath12k_dp_mon_rx_update_peer_su_stats()
2968 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11B) { in ath12k_dp_mon_rx_update_peer_su_stats()
2969 ppdu_info->nss = 1; in ath12k_dp_mon_rx_update_peer_su_stats()
2970 ppdu_info->mcs = HAL_RX_MAX_MCS; in ath12k_dp_mon_rx_update_peer_su_stats()
2971 ppdu_info->tid = IEEE80211_NUM_TIDS; in ath12k_dp_mon_rx_update_peer_su_stats()
2974 if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2975 rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2977 if (ppdu_info->tid <= IEEE80211_NUM_TIDS) in ath12k_dp_mon_rx_update_peer_su_stats()
2978 rx_stats->tid_count[ppdu_info->tid] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2980 if (ppdu_info->preamble_type < HAL_RX_PREAMBLE_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2981 rx_stats->pream_cnt[ppdu_info->preamble_type] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2983 if (ppdu_info->reception_type < HAL_RX_RECEPTION_TYPE_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2984 rx_stats->reception_type[ppdu_info->reception_type] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2986 if (ppdu_info->is_stbc) in ath12k_dp_mon_rx_update_peer_su_stats()
2987 rx_stats->stbc_count += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2989 if (ppdu_info->beamformed) in ath12k_dp_mon_rx_update_peer_su_stats()
2990 rx_stats->beamformed_count += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2992 if (ppdu_info->num_mpdu_fcs_ok > 1) in ath12k_dp_mon_rx_update_peer_su_stats()
2993 rx_stats->ampdu_msdu_count += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2995 rx_stats->non_ampdu_msdu_count += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2997 rx_stats->num_mpdu_fcs_ok += ppdu_info->num_mpdu_fcs_ok; in ath12k_dp_mon_rx_update_peer_su_stats()
2998 rx_stats->num_mpdu_fcs_err += ppdu_info->num_mpdu_fcs_err; in ath12k_dp_mon_rx_update_peer_su_stats()
2999 rx_stats->dcm_count += ppdu_info->dcm; in ath12k_dp_mon_rx_update_peer_su_stats()
3001 rx_stats->rx_duration += ppdu_info->rx_duration; in ath12k_dp_mon_rx_update_peer_su_stats()
3002 arsta->rx_duration = rx_stats->rx_duration; in ath12k_dp_mon_rx_update_peer_su_stats()
3004 if (ppdu_info->nss > 0 && ppdu_info->nss <= HAL_RX_MAX_NSS) { in ath12k_dp_mon_rx_update_peer_su_stats()
3005 rx_stats->pkt_stats.nss_count[ppdu_info->nss - 1] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3006 rx_stats->byte_stats.nss_count[ppdu_info->nss - 1] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3009 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11N && in ath12k_dp_mon_rx_update_peer_su_stats()
3010 ppdu_info->mcs <= HAL_RX_MAX_MCS_HT) { in ath12k_dp_mon_rx_update_peer_su_stats()
3011 rx_stats->pkt_stats.ht_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3012 rx_stats->byte_stats.ht_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3014 ppdu_info->mcs = ppdu_info->mcs % 8; in ath12k_dp_mon_rx_update_peer_su_stats()
3017 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AC && in ath12k_dp_mon_rx_update_peer_su_stats()
3018 ppdu_info->mcs <= HAL_RX_MAX_MCS_VHT) { in ath12k_dp_mon_rx_update_peer_su_stats()
3019 rx_stats->pkt_stats.vht_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3020 rx_stats->byte_stats.vht_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3023 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AX && in ath12k_dp_mon_rx_update_peer_su_stats()
3024 ppdu_info->mcs <= HAL_RX_MAX_MCS_HE) { in ath12k_dp_mon_rx_update_peer_su_stats()
3025 rx_stats->pkt_stats.he_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3026 rx_stats->byte_stats.he_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3029 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11BE && in ath12k_dp_mon_rx_update_peer_su_stats()
3030 ppdu_info->mcs <= HAL_RX_MAX_MCS_BE) { in ath12k_dp_mon_rx_update_peer_su_stats()
3031 rx_stats->pkt_stats.be_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3032 rx_stats->byte_stats.be_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3035 if ((ppdu_info->preamble_type == HAL_RX_PREAMBLE_11A || in ath12k_dp_mon_rx_update_peer_su_stats()
3036 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11B) && in ath12k_dp_mon_rx_update_peer_su_stats()
3037 ppdu_info->rate < HAL_RX_LEGACY_RATE_INVALID) { in ath12k_dp_mon_rx_update_peer_su_stats()
3038 rx_stats->pkt_stats.legacy_count[ppdu_info->rate] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3039 rx_stats->byte_stats.legacy_count[ppdu_info->rate] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3042 if (ppdu_info->gi < HAL_RX_GI_MAX) { in ath12k_dp_mon_rx_update_peer_su_stats()
3043 rx_stats->pkt_stats.gi_count[ppdu_info->gi] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3044 rx_stats->byte_stats.gi_count[ppdu_info->gi] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3047 if (ppdu_info->bw < HAL_RX_BW_MAX) { in ath12k_dp_mon_rx_update_peer_su_stats()
3048 rx_stats->pkt_stats.bw_count[ppdu_info->bw] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
3049 rx_stats->byte_stats.bw_count[ppdu_info->bw] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
3061 if (!(ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_MIMO || in ath12k_dp_mon_rx_process_ulofdma()
3062 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA || in ath12k_dp_mon_rx_process_ulofdma()
3063 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO)) in ath12k_dp_mon_rx_process_ulofdma()
3066 num_users = ppdu_info->num_users; in ath12k_dp_mon_rx_process_ulofdma()
3071 rx_user_status = &ppdu_info->userstats[i]; in ath12k_dp_mon_rx_process_ulofdma()
3073 rx_user_status->ul_ofdma_user_v0_word0; in ath12k_dp_mon_rx_process_ulofdma()
3075 rx_user_status->ul_ofdma_user_v0_word1; in ath12k_dp_mon_rx_process_ulofdma()
3081 rx_user_status->mcs = in ath12k_dp_mon_rx_process_ulofdma()
3084 rx_user_status->nss = in ath12k_dp_mon_rx_process_ulofdma()
3088 rx_user_status->ofdma_info_valid = 1; in ath12k_dp_mon_rx_process_ulofdma()
3089 rx_user_status->ul_ofdma_ru_start_index = in ath12k_dp_mon_rx_process_ulofdma()
3095 rx_user_status->ul_ofdma_ru_width = ru_size; in ath12k_dp_mon_rx_process_ulofdma()
3096 rx_user_status->ul_ofdma_ru_size = ru_size; in ath12k_dp_mon_rx_process_ulofdma()
3098 rx_user_status->ldpc = u32_get_bits(mu_ul_user_v0_word1, in ath12k_dp_mon_rx_process_ulofdma()
3101 ppdu_info->ldpc = 1; in ath12k_dp_mon_rx_process_ulofdma()
3112 struct hal_rx_user_status *user_stats = &ppdu_info->userstats[uid]; in ath12k_dp_mon_rx_update_user_stats()
3116 if (user_stats->ast_index == 0 || user_stats->ast_index == 0xFFFF) in ath12k_dp_mon_rx_update_user_stats()
3119 peer = ath12k_peer_find_by_ast(ar->ab, user_stats->ast_index); in ath12k_dp_mon_rx_update_user_stats()
3122 ath12k_warn(ar->ab, "peer ast idx %d can't be found\n", in ath12k_dp_mon_rx_update_user_stats()
3123 user_stats->ast_index); in ath12k_dp_mon_rx_update_user_stats()
3127 ahsta = ath12k_sta_to_ahsta(peer->sta); in ath12k_dp_mon_rx_update_user_stats()
3128 arsta = &ahsta->deflink; in ath12k_dp_mon_rx_update_user_stats()
3129 rx_stats = arsta->rx_stats; in ath12k_dp_mon_rx_update_user_stats()
3134 arsta->rssi_comb = ppdu_info->rssi_comb; in ath12k_dp_mon_rx_update_user_stats()
3135 ewma_avg_rssi_add(&arsta->avg_rssi, ppdu_info->rssi_comb); in ath12k_dp_mon_rx_update_user_stats()
3137 num_msdu = user_stats->tcp_msdu_count + user_stats->tcp_ack_msdu_count + in ath12k_dp_mon_rx_update_user_stats()
3138 user_stats->udp_msdu_count + user_stats->other_msdu_count; in ath12k_dp_mon_rx_update_user_stats()
3140 rx_stats->num_msdu += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3141 rx_stats->tcp_msdu_count += user_stats->tcp_msdu_count + in ath12k_dp_mon_rx_update_user_stats()
3142 user_stats->tcp_ack_msdu_count; in ath12k_dp_mon_rx_update_user_stats()
3143 rx_stats->udp_msdu_count += user_stats->udp_msdu_count; in ath12k_dp_mon_rx_update_user_stats()
3144 rx_stats->other_msdu_count += user_stats->other_msdu_count; in ath12k_dp_mon_rx_update_user_stats()
3146 if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) in ath12k_dp_mon_rx_update_user_stats()
3147 rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3149 if (user_stats->tid <= IEEE80211_NUM_TIDS) in ath12k_dp_mon_rx_update_user_stats()
3150 rx_stats->tid_count[user_stats->tid] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3152 if (user_stats->preamble_type < HAL_RX_PREAMBLE_MAX) in ath12k_dp_mon_rx_update_user_stats()
3153 rx_stats->pream_cnt[user_stats->preamble_type] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3155 if (ppdu_info->reception_type < HAL_RX_RECEPTION_TYPE_MAX) in ath12k_dp_mon_rx_update_user_stats()
3156 rx_stats->reception_type[ppdu_info->reception_type] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3158 if (ppdu_info->is_stbc) in ath12k_dp_mon_rx_update_user_stats()
3159 rx_stats->stbc_count += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3161 if (ppdu_info->beamformed) in ath12k_dp_mon_rx_update_user_stats()
3162 rx_stats->beamformed_count += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3164 if (user_stats->mpdu_cnt_fcs_ok > 1) in ath12k_dp_mon_rx_update_user_stats()
3165 rx_stats->ampdu_msdu_count += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3167 rx_stats->non_ampdu_msdu_count += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3169 rx_stats->num_mpdu_fcs_ok += user_stats->mpdu_cnt_fcs_ok; in ath12k_dp_mon_rx_update_user_stats()
3170 rx_stats->num_mpdu_fcs_err += user_stats->mpdu_cnt_fcs_err; in ath12k_dp_mon_rx_update_user_stats()
3171 rx_stats->dcm_count += ppdu_info->dcm; in ath12k_dp_mon_rx_update_user_stats()
3172 if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA || in ath12k_dp_mon_rx_update_user_stats()
3173 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO) in ath12k_dp_mon_rx_update_user_stats()
3174 rx_stats->ru_alloc_cnt[user_stats->ul_ofdma_ru_size] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3176 rx_stats->rx_duration += ppdu_info->rx_duration; in ath12k_dp_mon_rx_update_user_stats()
3177 arsta->rx_duration = rx_stats->rx_duration; in ath12k_dp_mon_rx_update_user_stats()
3179 if (user_stats->nss > 0 && user_stats->nss <= HAL_RX_MAX_NSS) { in ath12k_dp_mon_rx_update_user_stats()
3180 rx_stats->pkt_stats.nss_count[user_stats->nss - 1] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3181 rx_stats->byte_stats.nss_count[user_stats->nss - 1] += in ath12k_dp_mon_rx_update_user_stats()
3182 user_stats->mpdu_ok_byte_count; in ath12k_dp_mon_rx_update_user_stats()
3185 if (user_stats->preamble_type == HAL_RX_PREAMBLE_11AX && in ath12k_dp_mon_rx_update_user_stats()
3186 user_stats->mcs <= HAL_RX_MAX_MCS_HE) { in ath12k_dp_mon_rx_update_user_stats()
3187 rx_stats->pkt_stats.he_mcs_count[user_stats->mcs] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3188 rx_stats->byte_stats.he_mcs_count[user_stats->mcs] += in ath12k_dp_mon_rx_update_user_stats()
3189 user_stats->mpdu_ok_byte_count; in ath12k_dp_mon_rx_update_user_stats()
3192 if (ppdu_info->gi < HAL_RX_GI_MAX) { in ath12k_dp_mon_rx_update_user_stats()
3193 rx_stats->pkt_stats.gi_count[ppdu_info->gi] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3194 rx_stats->byte_stats.gi_count[ppdu_info->gi] += in ath12k_dp_mon_rx_update_user_stats()
3195 user_stats->mpdu_ok_byte_count; in ath12k_dp_mon_rx_update_user_stats()
3198 if (ppdu_info->bw < HAL_RX_BW_MAX) { in ath12k_dp_mon_rx_update_user_stats()
3199 rx_stats->pkt_stats.bw_count[ppdu_info->bw] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
3200 rx_stats->byte_stats.bw_count[ppdu_info->bw] += in ath12k_dp_mon_rx_update_user_stats()
3201 user_stats->mpdu_ok_byte_count; in ath12k_dp_mon_rx_update_user_stats()
3214 num_users = ppdu_info->num_users; in ath12k_dp_mon_rx_update_peer_mu_stats()
3226 ppdu_info->peer_id = HAL_INVALID_PEERID; in ath12k_dp_mon_rx_memset_ppdu_info()
3232 struct ath12k_base *ab = ar->ab; in ath12k_dp_mon_srng_process()
3233 struct ath12k_pdev_dp *pdev_dp = &ar->dp; in ath12k_dp_mon_srng_process()
3234 struct ath12k_mon_data *pmon = (struct ath12k_mon_data *)&pdev_dp->mon_data; in ath12k_dp_mon_srng_process()
3235 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_srng_process()
3236 struct ath12k_dp *dp = &ab->dp; in ath12k_dp_mon_srng_process()
3250 u8 pdev_idx = ath12k_hw_mac_id_to_pdev_id(ab->hw_params, ar->pdev_idx); in ath12k_dp_mon_srng_process()
3253 srng_id = ath12k_hw_mac_id_to_srng_id(ab->hw_params, pdev_idx); in ath12k_dp_mon_srng_process()
3254 mon_dst_ring = &pdev_dp->rxdma_mon_dst_ring[srng_id]; in ath12k_dp_mon_srng_process()
3255 buf_ring = &dp->rxdma_mon_buf_ring; in ath12k_dp_mon_srng_process()
3257 srng = &ab->hal.srng_list[mon_dst_ring->ring_id]; in ath12k_dp_mon_srng_process()
3258 spin_lock_bh(&srng->lock); in ath12k_dp_mon_srng_process()
3262 *budget -= 1; in ath12k_dp_mon_srng_process()
3271 info0 = le32_to_cpu(mon_dst_desc->info0); in ath12k_dp_mon_srng_process()
3275 cookie = le32_to_cpu(mon_dst_desc->cookie); in ath12k_dp_mon_srng_process()
3278 spin_lock_bh(&buf_ring->idr_lock); in ath12k_dp_mon_srng_process()
3279 skb = idr_remove(&buf_ring->bufs_idr, buf_id); in ath12k_dp_mon_srng_process()
3280 spin_unlock_bh(&buf_ring->idr_lock); in ath12k_dp_mon_srng_process()
3289 dma_unmap_single(ab->dev, rxcb->paddr, in ath12k_dp_mon_srng_process()
3290 skb->len + skb_tailroom(skb), in ath12k_dp_mon_srng_process()
3313 *budget -= 1; in ath12k_dp_mon_srng_process()
3314 rxcb->is_end_of_ppdu = true; in ath12k_dp_mon_srng_process()
3336 spin_unlock_bh(&srng->lock); in ath12k_dp_mon_srng_process()
3341 /* In some cases, one PPDU worth of data can be spread across multiple NAPI in ath12k_dp_mon_srng_process()
3345 if (!ppdu_info->ppdu_continuation) in ath12k_dp_mon_srng_process()
3351 ppdu_info->ppdu_continuation = true; in ath12k_dp_mon_srng_process()
3356 if (ppdu_info->peer_id == HAL_INVALID_PEERID) in ath12k_dp_mon_srng_process()
3360 spin_lock_bh(&ab->base_lock); in ath12k_dp_mon_srng_process()
3361 peer = ath12k_peer_find_by_id(ab, ppdu_info->peer_id); in ath12k_dp_mon_srng_process()
3362 if (!peer || !peer->sta) { in ath12k_dp_mon_srng_process()
3365 ppdu_info->peer_id); in ath12k_dp_mon_srng_process()
3369 if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) { in ath12k_dp_mon_srng_process()
3370 ahsta = ath12k_sta_to_ahsta(peer->sta); in ath12k_dp_mon_srng_process()
3371 arsta = &ahsta->deflink; in ath12k_dp_mon_srng_process()
3374 } else if ((ppdu_info->fc_valid) && in ath12k_dp_mon_srng_process()
3375 (ppdu_info->ast_index != HAL_AST_IDX_INVALID)) { in ath12k_dp_mon_srng_process()
3381 spin_unlock_bh(&ab->base_lock); in ath12k_dp_mon_srng_process()
3398 if (ab->hw_params->rxdma1_enable) { in ath12k_dp_mon_process_ring()