Lines Matching refs:ppdu_info

44 				       struct hal_rx_mon_ppdu_info *ppdu_info,  in ath12k_dp_mon_rx_populate_mu_user_info()  argument
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()
50 ppdu_info->tcp_ack_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()
54 ppdu_info->udp_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()
59 ppdu_info->frame_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()
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()
71 ppdu_info->num_mpdu_fcs_ok; 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()
78 ath12k_dp_mon_rx_populate_byte_count(rx_tlv, ppdu_info, rx_user_status); in ath12k_dp_mon_rx_populate_mu_user_info()
82 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_vht_sig_a() argument
92 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()
93 ppdu_info->mcs = u32_get_bits(info1, HAL_RX_VHT_SIG_A_INFO_INFO1_MCS); in ath12k_dp_mon_parse_vht_sig_a()
97 ppdu_info->gi = HAL_RX_GI_0_8_US; in ath12k_dp_mon_parse_vht_sig_a()
101 ppdu_info->gi = HAL_RX_GI_0_4_US; in ath12k_dp_mon_parse_vht_sig_a()
105 ppdu_info->is_stbc = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_STBC); in ath12k_dp_mon_parse_vht_sig_a()
107 if (ppdu_info->is_stbc && nsts > 0) in ath12k_dp_mon_parse_vht_sig_a()
110 ppdu_info->nss = u32_get_bits(nsts, VHT_SIG_SU_NSS_MASK); in ath12k_dp_mon_parse_vht_sig_a()
111 ppdu_info->bw = u32_get_bits(info0, HAL_RX_VHT_SIG_A_INFO_INFO0_BW); in ath12k_dp_mon_parse_vht_sig_a()
112 ppdu_info->beamformed = u32_get_bits(info1, in ath12k_dp_mon_parse_vht_sig_a()
116 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_vht_sig_a()
118 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_parse_vht_sig_a()
119 ppdu_info->vht_flag_values5 = group_id; in ath12k_dp_mon_parse_vht_sig_a()
120 ppdu_info->vht_flag_values3[0] = (((ppdu_info->mcs) << 4) | in ath12k_dp_mon_parse_vht_sig_a()
121 ppdu_info->nss); in ath12k_dp_mon_parse_vht_sig_a()
122 ppdu_info->vht_flag_values2 = ppdu_info->bw; in ath12k_dp_mon_parse_vht_sig_a()
123 ppdu_info->vht_flag_values4 = in ath12k_dp_mon_parse_vht_sig_a()
128 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_ht_sig() argument
135 ppdu_info->mcs = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_MCS); in ath12k_dp_mon_parse_ht_sig()
136 ppdu_info->bw = u32_get_bits(info0, HAL_RX_HT_SIG_INFO_INFO0_BW); in ath12k_dp_mon_parse_ht_sig()
137 ppdu_info->is_stbc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_STBC); in ath12k_dp_mon_parse_ht_sig()
138 ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_FEC_CODING); in ath12k_dp_mon_parse_ht_sig()
139 ppdu_info->gi = u32_get_bits(info1, HAL_RX_HT_SIG_INFO_INFO1_GI); in ath12k_dp_mon_parse_ht_sig()
140 ppdu_info->nss = (ppdu_info->mcs >> 3); in ath12k_dp_mon_parse_ht_sig()
141 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_ht_sig()
145 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_l_sig_b() argument
173 ppdu_info->rate = rate; in ath12k_dp_mon_parse_l_sig_b()
174 ppdu_info->cck_flag = 1; in ath12k_dp_mon_parse_l_sig_b()
175 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_l_sig_b()
179 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_l_sig_a() argument
216 ppdu_info->rate = rate; in ath12k_dp_mon_parse_l_sig_a()
217 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_l_sig_a()
221 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_b2_ofdma() argument
229 ppdu_info->he_data1 |= HE_MCS_KNOWN | HE_DCM_KNOWN | HE_CODING_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
232 ppdu_info->he_data2 |= HE_TXBF_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
234 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()
235 value = ppdu_info->mcs << HE_TRANSMIT_MCS_SHIFT; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
236 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
240 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
243 ppdu_info->ldpc = value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
245 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
250 ppdu_info->he_data4 |= value; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
252 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()
253 ppdu_info->beamformed = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_b2_ofdma()
255 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA; in ath12k_dp_mon_parse_he_sig_b2_ofdma()
259 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_b2_mu() argument
267 ppdu_info->he_data1 |= HE_MCS_KNOWN | HE_CODING_KNOWN; in ath12k_dp_mon_parse_he_sig_b2_mu()
269 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()
270 value = ppdu_info->mcs << HE_TRANSMIT_MCS_SHIFT; in ath12k_dp_mon_parse_he_sig_b2_mu()
271 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
274 ppdu_info->ldpc = value; in ath12k_dp_mon_parse_he_sig_b2_mu()
276 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
280 ppdu_info->he_data4 |= value; in ath12k_dp_mon_parse_he_sig_b2_mu()
282 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()
286 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_b1_mu() argument
295 ppdu_info->ru_alloc = ath12k_he_ru_tones_to_nl80211_he_ru_alloc(ru_tones); in ath12k_dp_mon_parse_he_sig_b1_mu()
296 ppdu_info->he_RU[0] = ru_tones; in ath12k_dp_mon_parse_he_sig_b1_mu()
297 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_parse_he_sig_b1_mu()
301 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_mu() argument
311 ppdu_info->he_mu_flags = 1; in ath12k_dp_mon_parse_he_sig_mu()
313 ppdu_info->he_data1 = HE_MU_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_mu()
314 ppdu_info->he_data1 |= in ath12k_dp_mon_parse_he_sig_mu()
322 ppdu_info->he_data2 = in ath12k_dp_mon_parse_he_sig_mu()
331 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()
334 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
338 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
342 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_mu()
345 ppdu_info->he_data4 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_mu()
347 ppdu_info->he_data4 = value; in ath12k_dp_mon_parse_he_sig_mu()
351 ppdu_info->he_data5 = value; in ath12k_dp_mon_parse_he_sig_mu()
352 ppdu_info->bw = value; in ath12k_dp_mon_parse_he_sig_mu()
374 ppdu_info->gi = he_gi; in ath12k_dp_mon_parse_he_sig_mu()
376 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
379 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
383 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
387 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
391 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_mu()
396 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_mu()
400 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_mu()
404 ppdu_info->he_flags1 = in ath12k_dp_mon_parse_he_sig_mu()
412 ppdu_info->he_flags1 |= value; in ath12k_dp_mon_parse_he_sig_mu()
415 ppdu_info->he_flags1 |= value; in ath12k_dp_mon_parse_he_sig_mu()
418 ppdu_info->he_flags2 = HE_BW_KNOWN; in ath12k_dp_mon_parse_he_sig_mu()
421 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
424 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
428 ppdu_info->he_flags2 |= value; in ath12k_dp_mon_parse_he_sig_mu()
430 ppdu_info->is_stbc = info1 & in ath12k_dp_mon_parse_he_sig_mu()
432 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_parse_he_sig_mu()
436 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_parse_he_sig_su() argument
445 ppdu_info->he_flags = 1; in ath12k_dp_mon_parse_he_sig_su()
452 ppdu_info->he_data1 = HE_TRIG_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_su()
454 ppdu_info->he_data1 = HE_SU_FORMAT_TYPE; in ath12k_dp_mon_parse_he_sig_su()
456 ppdu_info->he_data1 |= in ath12k_dp_mon_parse_he_sig_su()
468 ppdu_info->he_data2 |= in ath12k_dp_mon_parse_he_sig_su()
477 ppdu_info->he_data3 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_su()
481 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
484 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
487 ppdu_info->mcs = value; in ath12k_dp_mon_parse_he_sig_su()
489 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
494 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
497 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
500 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
504 ppdu_info->he_data3 |= value; in ath12k_dp_mon_parse_he_sig_su()
507 ppdu_info->he_data4 = u32_get_bits(info0, in ath12k_dp_mon_parse_he_sig_su()
513 ppdu_info->he_data5 = value; in ath12k_dp_mon_parse_he_sig_su()
514 ppdu_info->bw = value; in ath12k_dp_mon_parse_he_sig_su()
539 ppdu_info->gi = he_gi; in ath12k_dp_mon_parse_he_sig_su()
541 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
543 ppdu_info->ltf_size = he_ltf; in ath12k_dp_mon_parse_he_sig_su()
544 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
548 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
552 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
556 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
559 ppdu_info->he_data5 |= value; in ath12k_dp_mon_parse_he_sig_su()
564 ppdu_info->he_data6 = value; in ath12k_dp_mon_parse_he_sig_su()
567 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_su()
570 ppdu_info->he_data6 |= value; in ath12k_dp_mon_parse_he_sig_su()
572 ppdu_info->mcs = in ath12k_dp_mon_parse_he_sig_su()
574 ppdu_info->bw = in ath12k_dp_mon_parse_he_sig_su()
576 ppdu_info->ldpc = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_CODING); in ath12k_dp_mon_parse_he_sig_su()
577 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()
578 ppdu_info->beamformed = u32_get_bits(info1, HAL_RX_HE_SIG_A_SU_INFO_INFO1_TXBF); in ath12k_dp_mon_parse_he_sig_su()
580 ppdu_info->nss = u32_get_bits(info0, HAL_RX_HE_SIG_A_SU_INFO_INFO0_NSTS); in ath12k_dp_mon_parse_he_sig_su()
581 ppdu_info->dcm = dcm; in ath12k_dp_mon_parse_he_sig_su()
582 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_parse_he_sig_su()
590 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_rx_parse_status_tlv() local
600 ppdu_info->ppdu_id = in ath12k_dp_mon_rx_parse_status_tlv()
602 ppdu_info->chan_num = __le32_to_cpu(ppdu_start->chan_num); in ath12k_dp_mon_rx_parse_status_tlv()
603 ppdu_info->ppdu_ts = __le32_to_cpu(ppdu_start->ppdu_start_ts); in ath12k_dp_mon_rx_parse_status_tlv()
605 if (ppdu_info->ppdu_id != ppdu_info->last_ppdu_id) { in ath12k_dp_mon_rx_parse_status_tlv()
606 ppdu_info->last_ppdu_id = ppdu_info->ppdu_id; in ath12k_dp_mon_rx_parse_status_tlv()
607 ppdu_info->num_users = 0; in ath12k_dp_mon_rx_parse_status_tlv()
608 memset(&ppdu_info->mpdu_fcs_ok_bitmap, 0, in ath12k_dp_mon_rx_parse_status_tlv()
610 sizeof(ppdu_info->mpdu_fcs_ok_bitmap[0])); in ath12k_dp_mon_rx_parse_status_tlv()
625 ppdu_info->ast_index = in ath12k_dp_mon_rx_parse_status_tlv()
627 ppdu_info->fc_valid = in ath12k_dp_mon_rx_parse_status_tlv()
629 ppdu_info->tid = in ath12k_dp_mon_rx_parse_status_tlv()
633 ppdu_info->tcp_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
636 ppdu_info->udp_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
639 ppdu_info->other_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
642 ppdu_info->tcp_ack_msdu_count = in ath12k_dp_mon_rx_parse_status_tlv()
645 ppdu_info->preamble_type = in ath12k_dp_mon_rx_parse_status_tlv()
648 ppdu_info->num_mpdu_fcs_ok = in ath12k_dp_mon_rx_parse_status_tlv()
651 ppdu_info->num_mpdu_fcs_err = in ath12k_dp_mon_rx_parse_status_tlv()
654 switch (ppdu_info->preamble_type) { in ath12k_dp_mon_rx_parse_status_tlv()
656 ppdu_info->ht_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
659 ppdu_info->vht_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
662 ppdu_info->he_flags = 1; in ath12k_dp_mon_rx_parse_status_tlv()
670 &ppdu_info->userstats[userid]; in ath12k_dp_mon_rx_parse_status_tlv()
671 ppdu_info->num_users += 1; in ath12k_dp_mon_rx_parse_status_tlv()
674 ath12k_dp_mon_rx_populate_mu_user_info(tlv_data, ppdu_info, in ath12k_dp_mon_rx_parse_status_tlv()
677 ppdu_info->mpdu_fcs_ok_bitmap[0] = __le32_to_cpu(eu_stats->rsvd1[0]); in ath12k_dp_mon_rx_parse_status_tlv()
678 ppdu_info->mpdu_fcs_ok_bitmap[1] = __le32_to_cpu(eu_stats->rsvd1[1]); in ath12k_dp_mon_rx_parse_status_tlv()
684 ppdu_info->mpdu_fcs_ok_bitmap[2] = __le32_to_cpu(eu_stats->info1); in ath12k_dp_mon_rx_parse_status_tlv()
685 ppdu_info->mpdu_fcs_ok_bitmap[3] = __le32_to_cpu(eu_stats->info2); in ath12k_dp_mon_rx_parse_status_tlv()
686 ppdu_info->mpdu_fcs_ok_bitmap[4] = __le32_to_cpu(eu_stats->info3); in ath12k_dp_mon_rx_parse_status_tlv()
687 ppdu_info->mpdu_fcs_ok_bitmap[5] = __le32_to_cpu(eu_stats->info4); in ath12k_dp_mon_rx_parse_status_tlv()
688 ppdu_info->mpdu_fcs_ok_bitmap[6] = __le32_to_cpu(eu_stats->info5); in ath12k_dp_mon_rx_parse_status_tlv()
689 ppdu_info->mpdu_fcs_ok_bitmap[7] = __le32_to_cpu(eu_stats->info6); in ath12k_dp_mon_rx_parse_status_tlv()
693 ath12k_dp_mon_parse_ht_sig(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
697 ath12k_dp_mon_parse_l_sig_b(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
701 ath12k_dp_mon_parse_l_sig_a(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
705 ath12k_dp_mon_parse_vht_sig_a(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
709 ath12k_dp_mon_parse_he_sig_su(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
713 ath12k_dp_mon_parse_he_sig_mu(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
717 ath12k_dp_mon_parse_he_sig_b1_mu(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
721 ath12k_dp_mon_parse_he_sig_b2_mu(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
725 ath12k_dp_mon_parse_he_sig_b2_ofdma(tlv_data, ppdu_info); in ath12k_dp_mon_rx_parse_status_tlv()
740 ppdu_info->rssi_comb = in ath12k_dp_mon_rx_parse_status_tlv()
749 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_OFDMA; in ath12k_dp_mon_rx_parse_status_tlv()
752 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_MU_MIMO; in ath12k_dp_mon_rx_parse_status_tlv()
755 ppdu_info->reception_type = HAL_RX_RECEPTION_TYPE_SU; in ath12k_dp_mon_rx_parse_status_tlv()
765 ppdu_info->rx_duration = in ath12k_dp_mon_rx_parse_status_tlv()
767 ppdu_info->tsft = __le32_to_cpu(ppdu_rx_duration->rsvd0[1]); in ath12k_dp_mon_rx_parse_status_tlv()
768 ppdu_info->tsft = (ppdu_info->tsft << 32) | in ath12k_dp_mon_rx_parse_status_tlv()
781 ppdu_info->peer_id = peer_id; in ath12k_dp_mon_rx_parse_status_tlv()
783 ppdu_info->mpdu_len += u32_get_bits(info[1], in ath12k_dp_mon_rx_parse_status_tlv()
787 ppdu_info->userid = userid; in ath12k_dp_mon_rx_parse_status_tlv()
788 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()
2078 struct hal_rx_mon_ppdu_info *ppdu_info; in ath12k_dp_mon_srng_process() local
2081 ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_srng_process()
2082 memset(ppdu_info, 0, sizeof(*ppdu_info)); in ath12k_dp_mon_srng_process()
2083 ppdu_info->peer_id = HAL_INVALID_PEERID; in ath12k_dp_mon_srng_process()
2142 peer = ath12k_peer_find_by_id(ab, ppdu_info->peer_id); in ath12k_dp_mon_srng_process()
2147 ppdu_info->peer_id); in ath12k_dp_mon_srng_process()
2171 struct hal_rx_mon_ppdu_info *ppdu_info, in ath12k_dp_mon_rx_update_peer_rate_table_stats() argument
2176 u32 mcs_idx = (user_stats) ? user_stats->mcs : ppdu_info->mcs; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2177 u32 nss_idx = (user_stats) ? user_stats->nss - 1 : ppdu_info->nss - 1; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2178 u32 bw_idx = ppdu_info->bw; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2179 u32 gi_idx = ppdu_info->gi; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2186 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11N || in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2187 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AC) { in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2190 } else if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AX) { in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2191 gi_idx = ath12k_he_gi_to_nl80211_he_gi(ppdu_info->gi); in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2202 rx_stats->byte_stats.rx_rate[rate_idx] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_rate_table_stats()
2207 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_rx_update_peer_su_stats() argument
2215 arsta->rssi_comb = ppdu_info->rssi_comb; in ath12k_dp_mon_rx_update_peer_su_stats()
2217 num_msdu = ppdu_info->tcp_msdu_count + ppdu_info->tcp_ack_msdu_count + in ath12k_dp_mon_rx_update_peer_su_stats()
2218 ppdu_info->udp_msdu_count + ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2221 rx_stats->tcp_msdu_count += ppdu_info->tcp_msdu_count + in ath12k_dp_mon_rx_update_peer_su_stats()
2222 ppdu_info->tcp_ack_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2223 rx_stats->udp_msdu_count += ppdu_info->udp_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2224 rx_stats->other_msdu_count += ppdu_info->other_msdu_count; in ath12k_dp_mon_rx_update_peer_su_stats()
2226 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11A || in ath12k_dp_mon_rx_update_peer_su_stats()
2227 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11B) { in ath12k_dp_mon_rx_update_peer_su_stats()
2228 ppdu_info->nss = 1; in ath12k_dp_mon_rx_update_peer_su_stats()
2229 ppdu_info->mcs = HAL_RX_MAX_MCS; in ath12k_dp_mon_rx_update_peer_su_stats()
2230 ppdu_info->tid = IEEE80211_NUM_TIDS; in ath12k_dp_mon_rx_update_peer_su_stats()
2233 if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2234 rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2236 if (ppdu_info->tid <= IEEE80211_NUM_TIDS) in ath12k_dp_mon_rx_update_peer_su_stats()
2237 rx_stats->tid_count[ppdu_info->tid] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2239 if (ppdu_info->preamble_type < HAL_RX_PREAMBLE_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2240 rx_stats->pream_cnt[ppdu_info->preamble_type] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2242 if (ppdu_info->reception_type < HAL_RX_RECEPTION_TYPE_MAX) in ath12k_dp_mon_rx_update_peer_su_stats()
2243 rx_stats->reception_type[ppdu_info->reception_type] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2245 if (ppdu_info->is_stbc) in ath12k_dp_mon_rx_update_peer_su_stats()
2248 if (ppdu_info->beamformed) in ath12k_dp_mon_rx_update_peer_su_stats()
2251 if (ppdu_info->num_mpdu_fcs_ok > 1) in ath12k_dp_mon_rx_update_peer_su_stats()
2256 rx_stats->num_mpdu_fcs_ok += ppdu_info->num_mpdu_fcs_ok; in ath12k_dp_mon_rx_update_peer_su_stats()
2257 rx_stats->num_mpdu_fcs_err += ppdu_info->num_mpdu_fcs_err; in ath12k_dp_mon_rx_update_peer_su_stats()
2258 rx_stats->dcm_count += ppdu_info->dcm; in ath12k_dp_mon_rx_update_peer_su_stats()
2260 rx_stats->rx_duration += ppdu_info->rx_duration; in ath12k_dp_mon_rx_update_peer_su_stats()
2263 if (ppdu_info->nss > 0 && ppdu_info->nss <= HAL_RX_MAX_NSS) { in ath12k_dp_mon_rx_update_peer_su_stats()
2264 rx_stats->pkt_stats.nss_count[ppdu_info->nss - 1] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2265 rx_stats->byte_stats.nss_count[ppdu_info->nss - 1] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2268 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11N && in ath12k_dp_mon_rx_update_peer_su_stats()
2269 ppdu_info->mcs <= HAL_RX_MAX_MCS_HT) { in ath12k_dp_mon_rx_update_peer_su_stats()
2270 rx_stats->pkt_stats.ht_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2271 rx_stats->byte_stats.ht_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2273 ppdu_info->mcs = ppdu_info->mcs % 8; in ath12k_dp_mon_rx_update_peer_su_stats()
2276 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AC && in ath12k_dp_mon_rx_update_peer_su_stats()
2277 ppdu_info->mcs <= HAL_RX_MAX_MCS_VHT) { in ath12k_dp_mon_rx_update_peer_su_stats()
2278 rx_stats->pkt_stats.vht_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2279 rx_stats->byte_stats.vht_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2282 if (ppdu_info->preamble_type == HAL_RX_PREAMBLE_11AX && in ath12k_dp_mon_rx_update_peer_su_stats()
2283 ppdu_info->mcs <= HAL_RX_MAX_MCS_HE) { in ath12k_dp_mon_rx_update_peer_su_stats()
2284 rx_stats->pkt_stats.he_mcs_count[ppdu_info->mcs] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2285 rx_stats->byte_stats.he_mcs_count[ppdu_info->mcs] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2288 if ((ppdu_info->preamble_type == HAL_RX_PREAMBLE_11A || in ath12k_dp_mon_rx_update_peer_su_stats()
2289 ppdu_info->preamble_type == HAL_RX_PREAMBLE_11B) && in ath12k_dp_mon_rx_update_peer_su_stats()
2290 ppdu_info->rate < HAL_RX_LEGACY_RATE_INVALID) { in ath12k_dp_mon_rx_update_peer_su_stats()
2291 rx_stats->pkt_stats.legacy_count[ppdu_info->rate] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2292 rx_stats->byte_stats.legacy_count[ppdu_info->rate] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2295 if (ppdu_info->gi < HAL_RX_GI_MAX) { in ath12k_dp_mon_rx_update_peer_su_stats()
2296 rx_stats->pkt_stats.gi_count[ppdu_info->gi] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2297 rx_stats->byte_stats.gi_count[ppdu_info->gi] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2300 if (ppdu_info->bw < HAL_RX_BW_MAX) { in ath12k_dp_mon_rx_update_peer_su_stats()
2301 rx_stats->pkt_stats.bw_count[ppdu_info->bw] += num_msdu; in ath12k_dp_mon_rx_update_peer_su_stats()
2302 rx_stats->byte_stats.bw_count[ppdu_info->bw] += ppdu_info->mpdu_len; in ath12k_dp_mon_rx_update_peer_su_stats()
2305 ath12k_dp_mon_rx_update_peer_rate_table_stats(rx_stats, ppdu_info, in ath12k_dp_mon_rx_update_peer_su_stats()
2309 void ath12k_dp_mon_rx_process_ulofdma(struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_rx_process_ulofdma() argument
2314 if (!(ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_MIMO || in ath12k_dp_mon_rx_process_ulofdma()
2315 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA || in ath12k_dp_mon_rx_process_ulofdma()
2316 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO)) in ath12k_dp_mon_rx_process_ulofdma()
2319 num_users = ppdu_info->num_users; in ath12k_dp_mon_rx_process_ulofdma()
2324 rx_user_status = &ppdu_info->userstats[i]; in ath12k_dp_mon_rx_process_ulofdma()
2354 ppdu_info->ldpc = 1; in ath12k_dp_mon_rx_process_ulofdma()
2359 struct hal_rx_mon_ppdu_info *ppdu_info, in ath12k_dp_mon_rx_update_user_stats() argument
2364 struct hal_rx_user_status *user_stats = &ppdu_info->userstats[uid]; in ath12k_dp_mon_rx_update_user_stats()
2385 arsta->rssi_comb = ppdu_info->rssi_comb; in ath12k_dp_mon_rx_update_user_stats()
2396 if (ppdu_info->ldpc < HAL_RX_SU_MU_CODING_MAX) in ath12k_dp_mon_rx_update_user_stats()
2397 rx_stats->coding_count[ppdu_info->ldpc] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2405 if (ppdu_info->reception_type < HAL_RX_RECEPTION_TYPE_MAX) in ath12k_dp_mon_rx_update_user_stats()
2406 rx_stats->reception_type[ppdu_info->reception_type] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2408 if (ppdu_info->is_stbc) in ath12k_dp_mon_rx_update_user_stats()
2411 if (ppdu_info->beamformed) in ath12k_dp_mon_rx_update_user_stats()
2421 rx_stats->dcm_count += ppdu_info->dcm; in ath12k_dp_mon_rx_update_user_stats()
2422 if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA || in ath12k_dp_mon_rx_update_user_stats()
2423 ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_MU_OFDMA_MIMO) in ath12k_dp_mon_rx_update_user_stats()
2426 rx_stats->rx_duration += ppdu_info->rx_duration; in ath12k_dp_mon_rx_update_user_stats()
2442 if (ppdu_info->gi < HAL_RX_GI_MAX) { in ath12k_dp_mon_rx_update_user_stats()
2443 rx_stats->pkt_stats.gi_count[ppdu_info->gi] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2444 rx_stats->byte_stats.gi_count[ppdu_info->gi] += in ath12k_dp_mon_rx_update_user_stats()
2448 if (ppdu_info->bw < HAL_RX_BW_MAX) { in ath12k_dp_mon_rx_update_user_stats()
2449 rx_stats->pkt_stats.bw_count[ppdu_info->bw] += num_msdu; in ath12k_dp_mon_rx_update_user_stats()
2450 rx_stats->byte_stats.bw_count[ppdu_info->bw] += in ath12k_dp_mon_rx_update_user_stats()
2454 ath12k_dp_mon_rx_update_peer_rate_table_stats(rx_stats, ppdu_info, in ath12k_dp_mon_rx_update_user_stats()
2460 struct hal_rx_mon_ppdu_info *ppdu_info) in ath12k_dp_mon_rx_update_peer_mu_stats() argument
2464 num_users = ppdu_info->num_users; in ath12k_dp_mon_rx_update_peer_mu_stats()
2469 ath12k_dp_mon_rx_update_user_stats(ar, ppdu_info, i); in ath12k_dp_mon_rx_update_peer_mu_stats()
2478 struct hal_rx_mon_ppdu_info *ppdu_info = &pmon->mon_ppdu_info; in ath12k_dp_mon_rx_process_stats() local
2535 if (ppdu_info->peer_id == HAL_INVALID_PEERID || in ath12k_dp_mon_rx_process_stats()
2543 peer = ath12k_peer_find_by_id(ab, ppdu_info->peer_id); in ath12k_dp_mon_rx_process_stats()
2547 ppdu_info->peer_id); in ath12k_dp_mon_rx_process_stats()
2554 if (ppdu_info->reception_type == HAL_RX_RECEPTION_TYPE_SU) { in ath12k_dp_mon_rx_process_stats()
2557 ppdu_info); in ath12k_dp_mon_rx_process_stats()
2558 } else if ((ppdu_info->fc_valid) && in ath12k_dp_mon_rx_process_stats()
2559 (ppdu_info->ast_index != HAL_AST_IDX_INVALID)) { in ath12k_dp_mon_rx_process_stats()
2560 ath12k_dp_mon_rx_process_ulofdma(ppdu_info); in ath12k_dp_mon_rx_process_stats()
2561 ath12k_dp_mon_rx_update_peer_mu_stats(ar, ppdu_info); in ath12k_dp_mon_rx_process_stats()
2567 memset(ppdu_info, 0, sizeof(*ppdu_info)); in ath12k_dp_mon_rx_process_stats()
2568 ppdu_info->peer_id = HAL_INVALID_PEERID; in ath12k_dp_mon_rx_process_stats()