Lines Matching refs:ppdu_info
42 struct hal_rx_mon_ppdu_info *ppdu_info, in ath12k_dp_mon_rx_populate_mu_user_info() argument
45 rx_user_status->ast_index = ppdu_info->ast_index; in ath12k_dp_mon_rx_populate_mu_user_info()
46 rx_user_status->tid = ppdu_info->tid; in ath12k_dp_mon_rx_populate_mu_user_info()
48 ppdu_info->tcp_ack_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
50 ppdu_info->tcp_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
52 ppdu_info->udp_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
54 ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_populate_mu_user_info()
55 rx_user_status->frame_control = ppdu_info->frame_control; in ath12k_dp_mon_rx_populate_mu_user_info()
57 ppdu_info->frame_control_info_valid; in ath12k_dp_mon_rx_populate_mu_user_info()
59 ppdu_info->data_sequence_control_info_valid; in ath12k_dp_mon_rx_populate_mu_user_info()
61 ppdu_info->first_data_seq_ctrl; in ath12k_dp_mon_rx_populate_mu_user_info()
62 rx_user_status->preamble_type = ppdu_info->preamble_type; in ath12k_dp_mon_rx_populate_mu_user_info()
63 rx_user_status->ht_flags = ppdu_info->ht_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
64 rx_user_status->vht_flags = ppdu_info->vht_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
65 rx_user_status->he_flags = ppdu_info->he_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
66 rx_user_status->rs_flags = ppdu_info->rs_flags; in ath12k_dp_mon_rx_populate_mu_user_info()
69 ppdu_info->num_mpdu_fcs_ok; in ath12k_dp_mon_rx_populate_mu_user_info()
71 ppdu_info->num_mpdu_fcs_err; in ath12k_dp_mon_rx_populate_mu_user_info()
72 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()
74 sizeof(ppdu_info->mpdu_fcs_ok_bitmap[0])); in ath12k_dp_mon_rx_populate_mu_user_info()
76 ath12k_dp_mon_rx_populate_byte_count(rx_tlv, ppdu_info, rx_user_status); in ath12k_dp_mon_rx_populate_mu_user_info()
80 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_vht_sig_a() argument
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()
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()
114 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_vht_sig_a()
116 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_parse_vht_sig_a()
117 ppdu_info->vht_flag_values5 = group_id; in ath12k_dp_mon_parse_vht_sig_a()
118 ppdu_info->vht_flag_values3[0] = (((ppdu_info->mcs) << 4) | in ath12k_dp_mon_parse_vht_sig_a()
119 ppdu_info->nss); in ath12k_dp_mon_parse_vht_sig_a()
120 ppdu_info->vht_flag_values2 = ppdu_info->bw; in ath12k_dp_mon_parse_vht_sig_a()
121 ppdu_info->vht_flag_values4 = in ath12k_dp_mon_parse_vht_sig_a()
126 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_ht_sig() argument
133 ppdu_info->mcs = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_MCS); in ath12k_dp_mon_parse_ht_sig()
134 ppdu_info->bw = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_BW); in ath12k_dp_mon_parse_ht_sig()
135 ppdu_info->is_stbc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_STBC); in ath12k_dp_mon_parse_ht_sig()
136 ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING); in ath12k_dp_mon_parse_ht_sig()
137 ppdu_info->gi = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_GI); in ath12k_dp_mon_parse_ht_sig()
138 ppdu_info->nss = (ppdu_info->mcs >> 3); in ath12k_dp_mon_parse_ht_sig()
139 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_ht_sig()
143 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_l_sig_b() argument
171 ppdu_info->rate = rate; in ath12k_dp_mon_parse_l_sig_b()
172 ppdu_info->cck_flag = 1; in ath12k_dp_mon_parse_l_sig_b()
173 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_l_sig_b()
177 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_l_sig_a() argument
214 ppdu_info->rate = rate; in ath12k_dp_mon_parse_l_sig_a()
215 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_l_sig_a()
219 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_b2_ofdma() argument
227 ppdu_info->he_data1 |= HE_MCS_KNOWN | HE_DCM_KNOWN | HE_CODING_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
230 ppdu_info->he_data2 |= HE_TXBF_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
232 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()
233 value = ppdu_info->mcs << HE_TRANSMIT_MCS_SHIFT; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
234 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
238 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
241 ppdu_info->ldpc = value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
243 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
248 ppdu_info->he_data4 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
250 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()
251 ppdu_info->beamformed = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_b2_ofdma()
253 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
257 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_b2_mu() argument
265 ppdu_info->he_data1 |= HE_MCS_KNOWN | HE_CODING_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_mu()
267 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()
268 value = ppdu_info->mcs << HE_TRANSMIT_MCS_SHIFT; in ath12k_dp_mon_parse_he_sig_b2_mu()
269 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
272 ppdu_info->ldpc = value; in ath12k_dp_mon_parse_he_sig_b2_mu()
274 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
278 ppdu_info->he_data4 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
280 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()
284 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_b1_mu() argument
293 ppdu_info->ru_alloc = ath12k_he_ru_tones_to_nl80211_he_ru_alloc(ru_tones); in ath12k_dp_mon_parse_he_sig_b1_mu()
294 ppdu_info->he_RU[0] = ru_tones; in ath12k_dp_mon_parse_he_sig_b1_mu()
295 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_parse_he_sig_b1_mu()
299 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_mu() argument
309 ppdu_info->he_mu_flags = 1; in ath12k_dp_mon_parse_he_sig_mu()
311 ppdu_info->he_data1 = HE_MU_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_mu()
312 ppdu_info->he_data1 |= in ath12k_dp_mon_parse_he_sig_mu()
320 ppdu_info->he_data2 = in ath12k_dp_mon_parse_he_sig_mu()
329 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()
332 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
336 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
340 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
343 ppdu_info->he_data4 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_mu()
345 ppdu_info->he_data4 = value; in ath12k_dp_mon_parse_he_sig_mu()
349 ppdu_info->he_data5 = value; in ath12k_dp_mon_parse_he_sig_mu()
350 ppdu_info->bw = value; in ath12k_dp_mon_parse_he_sig_mu()
372 ppdu_info->gi = he_gi; in ath12k_dp_mon_parse_he_sig_mu()
374 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
377 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
381 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
385 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
389 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
394 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_mu()
398 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_mu()
402 ppdu_info->he_flags1 = in ath12k_dp_mon_parse_he_sig_mu()
410 ppdu_info->he_flags1 |= value; in ath12k_dp_mon_parse_he_sig_mu()
413 ppdu_info->he_flags1 |= value; in ath12k_dp_mon_parse_he_sig_mu()
416 ppdu_info->he_flags2 = HE_BW_KNOWN; in ath12k_dp_mon_parse_he_sig_mu()
419 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
422 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
426 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
428 ppdu_info->is_stbc = info1 & in ath12k_dp_mon_parse_he_sig_mu()
430 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_parse_he_sig_mu()
434 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_su() argument
443 ppdu_info->he_flags = 1; in ath12k_dp_mon_parse_he_sig_su()
450 ppdu_info->he_data1 = HE_TRIG_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_su()
452 ppdu_info->he_data1 = HE_SU_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_su()
454 ppdu_info->he_data1 |= in ath12k_dp_mon_parse_he_sig_su()
466 ppdu_info->he_data2 |= in ath12k_dp_mon_parse_he_sig_su()
475 ppdu_info->he_data3 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_su()
479 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
482 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
485 ppdu_info->mcs = value; in ath12k_dp_mon_parse_he_sig_su()
487 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
492 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
495 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
498 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
502 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
505 ppdu_info->he_data4 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_su()
511 ppdu_info->he_data5 = value; in ath12k_dp_mon_parse_he_sig_su()
512 ppdu_info->bw = value; in ath12k_dp_mon_parse_he_sig_su()
537 ppdu_info->gi = he_gi; in ath12k_dp_mon_parse_he_sig_su()
539 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
541 ppdu_info->ltf_size = he_ltf; in ath12k_dp_mon_parse_he_sig_su()
542 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
546 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
550 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
554 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
557 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
562 ppdu_info->he_data6 = value; in ath12k_dp_mon_parse_he_sig_su()
565 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_su()
568 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_su()
570 ppdu_info->mcs = in ath12k_dp_mon_parse_he_sig_su()
572 ppdu_info->bw = in ath12k_dp_mon_parse_he_sig_su()
574 ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING); in ath12k_dp_mon_parse_he_sig_su()
575 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()
576 ppdu_info->beamformed = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF); in ath12k_dp_mon_parse_he_sig_su()
578 ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS); in ath12k_dp_mon_parse_he_sig_su()
579 ppdu_info->dcm = dcm; in ath12k_dp_mon_parse_he_sig_su()
580 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_he_sig_su()
588 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_rx_parse_status_tlv() local
598 ppdu_info->ppdu_id = in ath12k_dp_mon_rx_parse_status_tlv()
600 ppdu_info->chan_num = __le32_to_cpu(ppdu_start->chan_num); in ath12k_dp_mon_rx_parse_status_tlv()
601 ppdu_info->ppdu_ts = __le32_to_cpu(ppdu_start->ppdu_start_ts); in ath12k_dp_mon_rx_parse_status_tlv()
603 if (ppdu_info->ppdu_id != ppdu_info->last_ppdu_id) { in ath12k_dp_mon_rx_parse_status_tlv()
604 ppdu_info->last_ppdu_id = ppdu_info->ppdu_id; in ath12k_dp_mon_rx_parse_status_tlv()
605 ppdu_info->num_users = 0; in ath12k_dp_mon_rx_parse_status_tlv()
606 memset(&ppdu_info->mpdu_fcs_ok_bitmap, 0, in ath12k_dp_mon_rx_parse_status_tlv()
608 sizeof(ppdu_info->mpdu_fcs_ok_bitmap[0])); in ath12k_dp_mon_rx_parse_status_tlv()
623 ppdu_info->ast_index = in ath12k_dp_mon_rx_parse_status_tlv()
625 ppdu_info->fc_valid = in ath12k_dp_mon_rx_parse_status_tlv()
627 ppdu_info->tid = in ath12k_dp_mon_rx_parse_status_tlv()
631 ppdu_info->tcp_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
634 ppdu_info->udp_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
637 ppdu_info->other_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
640 ppdu_info->tcp_ack_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
643 ppdu_info->preamble_type = in ath12k_dp_mon_rx_parse_status_tlv()
646 ppdu_info->num_mpdu_fcs_ok = in ath12k_dp_mon_rx_parse_status_tlv()
649 ppdu_info->num_mpdu_fcs_err = in ath12k_dp_mon_rx_parse_status_tlv()
652 switch (ppdu_info->preamble_type) { in ath12k_dp_mon_rx_parse_status_tlv()
654 ppdu_info->ht_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
657 ppdu_info->vht_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
660 ppdu_info->he_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
668 &ppdu_info->userstats[userid]; in ath12k_dp_mon_rx_parse_status_tlv()
669 ppdu_info->num_users += 1; in ath12k_dp_mon_rx_parse_status_tlv()
672 ath12k_dp_mon_rx_populate_mu_user_info(tlv_data, ppdu_info, in ath12k_dp_mon_rx_parse_status_tlv()
675 ppdu_info->mpdu_fcs_ok_bitmap[0] = __le32_to_cpu(eu_stats->rsvd1[0]); in ath12k_dp_mon_rx_parse_status_tlv()
676 ppdu_info->mpdu_fcs_ok_bitmap[1] = __le32_to_cpu(eu_stats->rsvd1[1]); in ath12k_dp_mon_rx_parse_status_tlv()
682 ppdu_info->mpdu_fcs_ok_bitmap[2] = __le32_to_cpu(eu_stats->info1); in ath12k_dp_mon_rx_parse_status_tlv()
683 ppdu_info->mpdu_fcs_ok_bitmap[3] = __le32_to_cpu(eu_stats->info2); in ath12k_dp_mon_rx_parse_status_tlv()
684 ppdu_info->mpdu_fcs_ok_bitmap[4] = __le32_to_cpu(eu_stats->info3); in ath12k_dp_mon_rx_parse_status_tlv()
685 ppdu_info->mpdu_fcs_ok_bitmap[5] = __le32_to_cpu(eu_stats->info4); in ath12k_dp_mon_rx_parse_status_tlv()
686 ppdu_info->mpdu_fcs_ok_bitmap[6] = __le32_to_cpu(eu_stats->info5); in ath12k_dp_mon_rx_parse_status_tlv()
687 ppdu_info->mpdu_fcs_ok_bitmap[7] = __le32_to_cpu(eu_stats->info6); in ath12k_dp_mon_rx_parse_status_tlv()
691 ath12k_dp_mon_parse_ht_sig(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
695 ath12k_dp_mon_parse_l_sig_b(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
699 ath12k_dp_mon_parse_l_sig_a(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
703 ath12k_dp_mon_parse_vht_sig_a(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
707 ath12k_dp_mon_parse_he_sig_su(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
711 ath12k_dp_mon_parse_he_sig_mu(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
715 ath12k_dp_mon_parse_he_sig_b1_mu(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
719 ath12k_dp_mon_parse_he_sig_b2_mu(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
723 ath12k_dp_mon_parse_he_sig_b2_ofdma(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
738 ppdu_info->rssi_comb = in ath12k_dp_mon_rx_parse_status_tlv()
747 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA; in ath12k_dp_mon_rx_parse_status_tlv()
750 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_rx_parse_status_tlv()
753 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_rx_parse_status_tlv()
763 ppdu_info->rx_duration = in ath12k_dp_mon_rx_parse_status_tlv()
765 ppdu_info->tsft = __le32_to_cpu(ppdu_rx_duration->rsvd0[1]); in ath12k_dp_mon_rx_parse_status_tlv()
766 ppdu_info->tsft = (ppdu_info->tsft << 32) | in ath12k_dp_mon_rx_parse_status_tlv()
779 ppdu_info->peer_id = peer_id; in ath12k_dp_mon_rx_parse_status_tlv()
781 ppdu_info->mpdu_len += u32_get_bits(info[1], in ath12k_dp_mon_rx_parse_status_tlv()
785 ppdu_info->userid = userid; in ath12k_dp_mon_rx_parse_status_tlv()
786 ppdu_info->ampdu_id[userid] = in ath12k_dp_mon_rx_parse_status_tlv()
1194 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_parse_rx_dest() local
1201 memset(ppdu_info, 0, sizeof(struct hal_rx_mon_ppdu_info)); in ath12k_dp_mon_parse_rx_dest()
1240 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_rx_parse_mon_status() local
1255 ppdu_info, napi); in ath12k_dp_mon_rx_parse_mon_status()
2041 struct hal_rx_mon_ppdu_info *ppdu_info; in ath12k_dp_mon_srng_process() local
2044 ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_srng_process()
2045 memset(ppdu_info, 0, sizeof(*ppdu_info)); in ath12k_dp_mon_srng_process()
2046 ppdu_info->peer_id = HAL_INVALID_PEERID; in ath12k_dp_mon_srng_process()
2104 peer = ath12k_peer_find_by_id(ab, ppdu_info->peer_id); in ath12k_dp_mon_srng_process()
2109 ppdu_info->peer_id); in ath12k_dp_mon_srng_process()
2133 struct hal_rx_mon_ppdu_info *ppdu_info, in ath12k_dp_mon_rx_update_peer_rate_table_stats() argument
2138 u32 mcs_idx = (user_stats) ? user_stats->mcs : ppdu_info->mcs; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2139 u32 nss_idx = (user_stats) ? user_stats->nss - 1 : ppdu_info->nss - 1; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2140 u32 bw_idx = ppdu_info->bw; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2141 u32 gi_idx = ppdu_info->gi; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2148 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11N || in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2149 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AC) { in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2152 } else if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AX) { in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2153 gi_idx = ath12k_he_gi_to_nl80211_he_gi(ppdu_info->gi); in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2164 rx_stats->byte_stats.rx_rate[rate_idx] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2169 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_rx_update_peer_su_stats() argument
2177 arsta->rssi_comb = ppdu_info->rssi_comb; in ath12k_dp_mon_rx_update_peer_su_stats()
2179 num_msdu = ppdu_info->tcp_msdu_count + ppdu_info->tcp_ack_msdu_count + in ath12k_dp_mon_rx_update_peer_su_stats()
2180 ppdu_info->udp_msdu_count + ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2183 rx_stats->tcp_msdu_count += ppdu_info->tcp_msdu_count + in ath12k_dp_mon_rx_update_peer_su_stats()
2184 ppdu_info->tcp_ack_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2185 rx_stats->udp_msdu_count += ppdu_info->udp_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2186 rx_stats->other_msdu_count += ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2188 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11A || in ath12k_dp_mon_rx_update_peer_su_stats()
2189 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11B) { in ath12k_dp_mon_rx_update_peer_su_stats()
2190 ppdu_info->nss = 1; in ath12k_dp_mon_rx_update_peer_su_stats()
2191 ppdu_info->mcs = HAL_RX_MAX_MCS; in ath12k_dp_mon_rx_update_peer_su_stats()
2192 ppdu_info->tid = IEEE80211_NUM_TIDS; in ath12k_dp_mon_rx_update_peer_su_stats()
2195 if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2196 rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2198 if (ppdu_info->tid <= IEEE80211_NUM_TIDS) in ath12k_dp_mon_rx_update_peer_su_stats()
2199 rx_stats->tid_count[ppdu_info->tid] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2201 if (ppdu_info->preamble_type < HAL_RX_PREAMBLE_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2202 rx_stats->pream_cnt[ppdu_info->preamble_type] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2204 if (ppdu_info->reception_type < HAL_RX_RECEPTION_TYPE_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2205 rx_stats->reception_type[ppdu_info->reception_type] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2207 if (ppdu_info->is_stbc) in ath12k_dp_mon_rx_update_peer_su_stats()
2210 if (ppdu_info->beamformed) in ath12k_dp_mon_rx_update_peer_su_stats()
2213 if (ppdu_info->num_mpdu_fcs_ok > 1) in ath12k_dp_mon_rx_update_peer_su_stats()
2218 rx_stats->num_mpdu_fcs_ok += ppdu_info->num_mpdu_fcs_ok; in ath12k_dp_mon_rx_update_peer_su_stats()
2219 rx_stats->num_mpdu_fcs_err += ppdu_info->num_mpdu_fcs_err; in ath12k_dp_mon_rx_update_peer_su_stats()
2220 rx_stats->dcm_count += ppdu_info->dcm; in ath12k_dp_mon_rx_update_peer_su_stats()
2222 rx_stats->rx_duration += ppdu_info->rx_duration; in ath12k_dp_mon_rx_update_peer_su_stats()
2225 if (ppdu_info->nss > 0 && ppdu_info->nss <= HAL_RX_MAX_NSS) { in ath12k_dp_mon_rx_update_peer_su_stats()
2226 rx_stats->pkt_stats.nss_count[ppdu_info->nss - 1] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2227 rx_stats->byte_stats.nss_count[ppdu_info->nss - 1] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2230 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11N && in ath12k_dp_mon_rx_update_peer_su_stats()
2231 ppdu_info->mcs <= HAL_RX_MAX_MCS_HT) { in ath12k_dp_mon_rx_update_peer_su_stats()
2232 rx_stats->pkt_stats.ht_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2233 rx_stats->byte_stats.ht_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2235 ppdu_info->mcs = ppdu_info->mcs % 8; in ath12k_dp_mon_rx_update_peer_su_stats()
2238 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AC && in ath12k_dp_mon_rx_update_peer_su_stats()
2239 ppdu_info->mcs <= HAL_RX_MAX_MCS_VHT) { in ath12k_dp_mon_rx_update_peer_su_stats()
2240 rx_stats->pkt_stats.vht_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2241 rx_stats->byte_stats.vht_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2244 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AX && in ath12k_dp_mon_rx_update_peer_su_stats()
2245 ppdu_info->mcs <= HAL_RX_MAX_MCS_HE) { in ath12k_dp_mon_rx_update_peer_su_stats()
2246 rx_stats->pkt_stats.he_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2247 rx_stats->byte_stats.he_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2250 if ((ppdu_info->preamble_type == HAL_RX_PREAMBLE_11A || in ath12k_dp_mon_rx_update_peer_su_stats()
2251 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11B) && in ath12k_dp_mon_rx_update_peer_su_stats()
2252 ppdu_info->rate < HAL_RX_LEGACY_RATE_INVALID) { in ath12k_dp_mon_rx_update_peer_su_stats()
2253 rx_stats->pkt_stats.legacy_count[ppdu_info->rate] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2254 rx_stats->byte_stats.legacy_count[ppdu_info->rate] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2257 if (ppdu_info->gi < HAL_RX_GI_MAX) { in ath12k_dp_mon_rx_update_peer_su_stats()
2258 rx_stats->pkt_stats.gi_count[ppdu_info->gi] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2259 rx_stats->byte_stats.gi_count[ppdu_info->gi] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2262 if (ppdu_info->bw < HAL_RX_BW_MAX) { in ath12k_dp_mon_rx_update_peer_su_stats()
2263 rx_stats->pkt_stats.bw_count[ppdu_info->bw] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2264 rx_stats->byte_stats.bw_count[ppdu_info->bw] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2267 ath12k_dp_mon_rx_update_peer_rate_table_stats(rx_stats, ppdu_info, in ath12k_dp_mon_rx_update_peer_su_stats()
2271 void ath12k_dp_mon_rx_process_ulofdma(struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_rx_process_ulofdma() argument
2276 if (!(ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_MIMO || in ath12k_dp_mon_rx_process_ulofdma()
2277 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA || in ath12k_dp_mon_rx_process_ulofdma()
2278 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO)) in ath12k_dp_mon_rx_process_ulofdma()
2281 num_users = ppdu_info->num_users; in ath12k_dp_mon_rx_process_ulofdma()
2286 rx_user_status = &ppdu_info->userstats[i]; in ath12k_dp_mon_rx_process_ulofdma()
2316 ppdu_info->ldpc = 1; in ath12k_dp_mon_rx_process_ulofdma()
2321 struct hal_rx_mon_ppdu_info *ppdu_info, in ath12k_dp_mon_rx_update_user_stats() argument
2326 struct hal_rx_user_status *user_stats = &ppdu_info->userstats[uid]; in ath12k_dp_mon_rx_update_user_stats()
2347 arsta->rssi_comb = ppdu_info->rssi_comb; in ath12k_dp_mon_rx_update_user_stats()
2358 if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) in ath12k_dp_mon_rx_update_user_stats()
2359 rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2367 if (ppdu_info->reception_type < HAL_RX_RECEPTION_TYPE_MAX) in ath12k_dp_mon_rx_update_user_stats()
2368 rx_stats->reception_type[ppdu_info->reception_type] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2370 if (ppdu_info->is_stbc) in ath12k_dp_mon_rx_update_user_stats()
2373 if (ppdu_info->beamformed) in ath12k_dp_mon_rx_update_user_stats()
2383 rx_stats->dcm_count += ppdu_info->dcm; in ath12k_dp_mon_rx_update_user_stats()
2384 if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA || in ath12k_dp_mon_rx_update_user_stats()
2385 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO) in ath12k_dp_mon_rx_update_user_stats()
2388 rx_stats->rx_duration += ppdu_info->rx_duration; in ath12k_dp_mon_rx_update_user_stats()
2404 if (ppdu_info->gi < HAL_RX_GI_MAX) { in ath12k_dp_mon_rx_update_user_stats()
2405 rx_stats->pkt_stats.gi_count[ppdu_info->gi] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2406 rx_stats->byte_stats.gi_count[ppdu_info->gi] += in ath12k_dp_mon_rx_update_user_stats()
2410 if (ppdu_info->bw < HAL_RX_BW_MAX) { in ath12k_dp_mon_rx_update_user_stats()
2411 rx_stats->pkt_stats.bw_count[ppdu_info->bw] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2412 rx_stats->byte_stats.bw_count[ppdu_info->bw] += in ath12k_dp_mon_rx_update_user_stats()
2416 ath12k_dp_mon_rx_update_peer_rate_table_stats(rx_stats, ppdu_info, in ath12k_dp_mon_rx_update_user_stats()
2422 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_rx_update_peer_mu_stats() argument
2426 num_users = ppdu_info->num_users; in ath12k_dp_mon_rx_update_peer_mu_stats()
2431 ath12k_dp_mon_rx_update_user_stats(ar, ppdu_info, i); in ath12k_dp_mon_rx_update_peer_mu_stats()
2440 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_rx_process_stats() local
2497 if (ppdu_info->peer_id == HAL_INVALID_PEERID || in ath12k_dp_mon_rx_process_stats()
2505 peer = ath12k_peer_find_by_id(ab, ppdu_info->peer_id); in ath12k_dp_mon_rx_process_stats()
2509 ppdu_info->peer_id); in ath12k_dp_mon_rx_process_stats()
2516 if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) { in ath12k_dp_mon_rx_process_stats()
2519 ppdu_info); in ath12k_dp_mon_rx_process_stats()
2520 } else if ((ppdu_info->fc_valid) && in ath12k_dp_mon_rx_process_stats()
2521 (ppdu_info->ast_index != HAL_AST_IDX_INVALID)) { in ath12k_dp_mon_rx_process_stats()
2522 ath12k_dp_mon_rx_process_ulofdma(ppdu_info); in ath12k_dp_mon_rx_process_stats()
2523 ath12k_dp_mon_rx_update_peer_mu_stats(ar, ppdu_info); in ath12k_dp_mon_rx_process_stats()
2529 memset(ppdu_info, 0, sizeof(*ppdu_info)); in ath12k_dp_mon_rx_process_stats()
2530 ppdu_info->peer_id = HAL_INVALID_PEERID; in ath12k_dp_mon_rx_process_stats()