diff --git a/hal/wifi3.0/hal_internal.h b/hal/wifi3.0/hal_internal.h index bb46abf70b..5d96ef6e52 100644 --- a/hal/wifi3.0/hal_internal.h +++ b/hal/wifi3.0/hal_internal.h @@ -1137,9 +1137,12 @@ struct hal_hw_txrx_ops { uint8_t (*hal_rx_get_tlv)(void *rx_tlv); void (*hal_rx_proc_phyrx_other_receive_info_tlv)(void *rx_tlv_hdr, void *ppdu_info_handle); - void (*hal_rx_dump_msdu_start_tlv)(void *msdu_start, uint8_t dbg_level); - void (*hal_rx_dump_msdu_end_tlv)(void *msdu_end, - uint8_t dbg_level); + void (*hal_rx_dump_msdu_end_tlv)(void *pkt_tlvs, uint8_t dbg_level); + void (*hal_rx_dump_rx_attention_tlv)(void *pkt_tlvs, uint8_t dbg_level); + void (*hal_rx_dump_msdu_start_tlv)(void *pkt_tlvs, uint8_t dbg_level); + void (*hal_rx_dump_mpdu_start_tlv)(void *pkt_tlvs, uint8_t dbg_level); + void (*hal_rx_dump_mpdu_end_tlv)(void *pkt_tlvs, uint8_t dbg_level); + void (*hal_rx_dump_pkt_hdr_tlv)(void *pkt_tlvs, uint8_t dbg_level); uint32_t (*hal_get_link_desc_size)(void); uint32_t (*hal_rx_mpdu_start_tid_get)(uint8_t *buf); uint32_t (*hal_rx_msdu_start_reception_type_get)(uint8_t *buf); @@ -1158,8 +1161,6 @@ struct hal_hw_txrx_ops { void (*hal_rx_wbm_err_info_get)(void *wbm_desc, void *wbm_er_info); - void (*hal_rx_dump_mpdu_start_tlv)(void *mpdustart, - uint8_t dbg_level); void (*hal_tx_set_pcp_tid_map)(struct hal_soc *hal_soc, uint8_t *map); void (*hal_tx_update_pcp_tid_map)(struct hal_soc *hal_soc, uint8_t pcp, diff --git a/hal/wifi3.0/hal_rx.h b/hal/wifi3.0/hal_rx.h index d409a0d3df..5d122223ac 100644 --- a/hal/wifi3.0/hal_rx.h +++ b/hal/wifi3.0/hal_rx.h @@ -1595,28 +1595,100 @@ enum hal_rx_wbm_rxdma_push_reason { HAL_RX_WBM_RXDMA_PSH_RSN_FLUSH, }; -static inline void hal_rx_dump_mpdu_start_tlv(struct rx_mpdu_start *mpdu_start, - uint8_t dbg_level, - struct hal_soc *hal) -{ - - hal->ops->hal_rx_dump_mpdu_start_tlv(mpdu_start, dbg_level); -} - /** * hal_rx_dump_msdu_end_tlv() - dump RX msdu_end TLV in structured * human readable format. * @hal_soc: HAL soc - * @msdu_end: pointer the msdu_end TLV in pkt. + * @pkt_tlvs: pointer the pkt_tlvs. * @dbg_level: log level. * * Return: void */ static inline void hal_rx_dump_msdu_end_tlv(struct hal_soc *hal_soc, - struct rx_msdu_end *msdu_end, + void *pkt_tlvs, uint8_t dbg_level) { - hal_soc->ops->hal_rx_dump_msdu_end_tlv(msdu_end, dbg_level); + hal_soc->ops->hal_rx_dump_msdu_end_tlv(pkt_tlvs, dbg_level); +} + +/** + * hal_rx_dump_rx_attention_tlv() - dump RX rx_attention TLV in structured + * human readable format. + * @hal_soc: HAL soc + * @pkt_tlvs: pointer the pkt_tlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_rx_attention_tlv(struct hal_soc *hal_soc, + void *pkt_tlvs, + uint8_t dbg_level) +{ + hal_soc->ops->hal_rx_dump_rx_attention_tlv(pkt_tlvs, dbg_level); +} + +/** + * hal_rx_dump_msdu_start_tlv: dump RX msdu_start TLV in structured + * human readable format. + * @hal_soc: HAL soc + * @pkt_tlvs: pointer the pkt_tlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_msdu_start_tlv(struct hal_soc *hal_soc, + void *pkt_tlvs, + uint8_t dbg_level) +{ + hal_soc->ops->hal_rx_dump_msdu_start_tlv(pkt_tlvs, dbg_level); +} + +/** + * hal_rx_dump_mpdu_start_tlv: dump RX mpdu_start TLV in structured + * human readable format. + * @hal_soc: HAL soc + * @pkt_tlvs: pointer the pkt_tlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_mpdu_start_tlv(struct hal_soc *hal_soc, + void *pkt_tlvs, + uint8_t dbg_level) +{ + hal_soc->ops->hal_rx_dump_mpdu_start_tlv(pkt_tlvs, dbg_level); +} + +/** + * hal_rx_dump_mpdu_end_tlv: dump RX mpdu_end TLV in structured + * human readable format. + * @hal_soc: HAL soc + * @pkt_tlvs: pointer the pkt_tlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_mpdu_end_tlv(struct hal_soc *hal_soc, + void *pkt_tlvs, + uint8_t dbg_level) +{ + hal_soc->ops->hal_rx_dump_mpdu_end_tlv(pkt_tlvs, dbg_level); +} + +/** + * hal_rx_dump_pkt_hdr_tlv: dump RX pkt_hdr TLV in structured + * human readable format. + * @hal_soc: HAL soc + * @pkt_tlvs: pointer the pkt_tlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_pkt_hdr_tlv(struct hal_soc *hal_soc, + void *pkt_tlvs, + uint8_t dbg_level) +{ + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv(pkt_tlvs, dbg_level); } /** @@ -1791,22 +1863,6 @@ uint32_t hal_rx_msdu_start_nss_get(hal_soc_handle_t hal_soc_hdl, uint8_t *buf) return hal_soc->ops->hal_rx_msdu_start_nss_get(buf); } -/** - * hal_rx_dump_msdu_start_tlv() - dump RX msdu_start TLV in structured - * human readable format. - * @hal_soc: HAL SOC - * @msdu_start: pointer the msdu_start TLV in pkt. - * @dbg_level: log level. - * - * Return: void - */ -static inline void hal_rx_dump_msdu_start_tlv(struct hal_soc *hal_soc, - struct rx_msdu_start *msdu_start, - uint8_t dbg_level) -{ - hal_soc->ops->hal_rx_dump_msdu_start_tlv(msdu_start, dbg_level); -} - /** * hal_rx_mpdu_start_tid_get() - Return tid info from the rx mpdu start * info details diff --git a/hal/wifi3.0/li/hal_li_generic_api.c b/hal/wifi3.0/li/hal_li_generic_api.c index 8850d409e5..f9ed389002 100644 --- a/hal/wifi3.0/li/hal_li_generic_api.c +++ b/hal/wifi3.0/li/hal_li_generic_api.c @@ -148,21 +148,14 @@ static void hal_rx_dump_pkt_tlvs_li(hal_soc_handle_t hal_soc_hdl, uint8_t *buf, uint8_t dbg_level) { struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; - struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn; - struct rx_mpdu_start *mpdu_start = - &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start; - struct rx_msdu_start *msdu_start = - &pkt_tlvs->msdu_start_tlv.rx_msdu_start; - struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; - struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl; - hal_rx_dump_rx_attention_tlv(rx_attn, dbg_level); - hal_rx_dump_mpdu_start_tlv(mpdu_start, dbg_level, hal_soc); - hal_rx_dump_msdu_start_tlv(hal_soc, msdu_start, dbg_level); - hal_rx_dump_mpdu_end_tlv(mpdu_end, dbg_level); - hal_rx_dump_msdu_end_tlv(hal_soc, msdu_end, dbg_level); - hal_rx_dump_pkt_hdr_tlv(pkt_tlvs, dbg_level); + hal_rx_dump_msdu_end_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_rx_attention_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_msdu_start_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_mpdu_start_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_mpdu_end_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_pkt_hdr_tlv(hal_soc, pkt_tlvs, dbg_level); } /** @@ -266,28 +259,6 @@ static int hal_rx_get_l3_l4_offsets_li(uint8_t *buf, uint32_t *l3_hdr_offset, return 0; } -/** - * hal_rx_tlv_get_pn_num_li() - Get packet number from RX TLV - * @buf: rx tlv address - * @pn_num: buffer to store packet number - * - * Return: None - */ -static inline void hal_rx_tlv_get_pn_num_li(uint8_t *buf, uint64_t *pn_num) -{ - struct rx_pkt_tlvs *rx_pkt_tlv = - (struct rx_pkt_tlvs *)buf; - struct rx_mpdu_info *rx_mpdu_info_details = - &rx_pkt_tlv->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details; - - pn_num[0] = rx_mpdu_info_details->pn_31_0; - pn_num[0] |= - ((uint64_t)rx_mpdu_info_details->pn_63_32 << 32); - pn_num[1] = rx_mpdu_info_details->pn_95_64; - pn_num[1] |= - ((uint64_t)rx_mpdu_info_details->pn_127_96 << 32); -} - #ifdef NO_RX_PKT_HDR_TLV /** * hal_rx_pkt_hdr_get_li() - Get rx packet header start address. @@ -651,26 +622,6 @@ hal_rx_tlv_csum_err_get_li(uint8_t *rx_tlv_hdr, uint32_t *ip_csum_err, *tcp_udp_csum_err = hal_rx_attn_tcp_udp_cksum_fail_get(rx_tlv_hdr); } -static -void hal_rx_tlv_get_pkt_capture_flags_li(uint8_t *rx_tlv_pkt_hdr, - struct hal_rx_pkt_capture_flags *flags) -{ - struct rx_pkt_tlvs *rx_tlv_hdr = (struct rx_pkt_tlvs *)rx_tlv_pkt_hdr; - struct rx_attention *rx_attn = &rx_tlv_hdr->attn_tlv.rx_attn; - struct rx_mpdu_start *mpdu_start = - &rx_tlv_hdr->mpdu_start_tlv.rx_mpdu_start; - struct rx_mpdu_end *mpdu_end = &rx_tlv_hdr->mpdu_end_tlv.rx_mpdu_end; - struct rx_msdu_start *msdu_start = - &rx_tlv_hdr->msdu_start_tlv.rx_msdu_start; - - flags->encrypt_type = mpdu_start->rx_mpdu_info_details.encrypt_type; - flags->fcs_err = mpdu_end->fcs_err; - flags->fragment_flag = rx_attn->fragment_flag; - flags->chan_freq = HAL_RX_MSDU_START_FREQ_GET(msdu_start); - flags->rssi_comb = HAL_RX_MSDU_START_RSSI_GET(msdu_start); - flags->tsft = msdu_start->ppdu_start_timestamp; -} - static uint8_t hal_rx_err_status_get_li(hal_ring_desc_t rx_desc) { return HAL_RX_ERROR_STATUS_GET(rx_desc); @@ -681,21 +632,6 @@ static uint8_t hal_rx_reo_buf_type_get_li(hal_ring_desc_t rx_desc) return HAL_RX_REO_BUF_TYPE_GET(rx_desc); } -static inline bool -hal_rx_mpdu_info_ampdu_flag_get_li(uint8_t *buf) -{ - struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; - struct rx_mpdu_start *mpdu_start = - &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start; - - struct rx_mpdu_info *mpdu_info = &mpdu_start->rx_mpdu_info_details; - bool ampdu_flag; - - ampdu_flag = HAL_RX_MPDU_INFO_AMPDU_FLAG_GET(mpdu_info); - - return ampdu_flag; -} - static uint32_t hal_rx_tlv_mpdu_len_err_get_li(void *hw_desc_addr) { @@ -877,46 +813,6 @@ static inline uint32_t hal_rx_tlv_get_pkt_type_li(uint8_t *buf) return pkt_type; } -/** - * hal_rx_tlv_mic_err_get_li(): API to get the MIC ERR - * from rx_mpdu_end TLV - * - * @buf: pointer to the start of RX PKT TLV headers - * Return: uint32_t(mic_err) - */ -static inline uint32_t -hal_rx_tlv_mic_err_get_li(uint8_t *buf) -{ - struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; - struct rx_mpdu_end *mpdu_end = - &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; - uint32_t mic_err; - - mic_err = HAL_RX_MPDU_END_MIC_ERR_GET(mpdu_end); - - return mic_err; -} - -/** - * hal_rx_tlv_decrypt_err_get_li(): API to get the Decrypt ERR - * from rx_mpdu_end TLV - * - * @buf: pointer to the start of RX PKT TLV headers - * Return: uint32_t(decrypt_err) - */ -static inline uint32_t -hal_rx_tlv_decrypt_err_get_li(uint8_t *buf) -{ - struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; - struct rx_mpdu_end *mpdu_end = - &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; - uint32_t decrypt_err; - - decrypt_err = HAL_RX_MPDU_END_DECRYPT_ERR_GET(mpdu_end); - - return decrypt_err; -} - /* * hal_rx_tlv_first_mpdu_get_li(): get fist_mpdu bit from rx attention * @buf: pointer to rx_pkt_tlvs @@ -1216,15 +1112,11 @@ void hal_hw_txrx_default_ops_attach_li(struct hal_soc *hal_soc) hal_rx_priv_info_set_in_tlv_li; hal_soc->ops->hal_rx_priv_info_get_from_tlv = hal_rx_priv_info_get_from_tlv_li; - hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = - hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_rx_tlv_mpdu_len_err_get = hal_rx_tlv_mpdu_len_err_get_li; hal_soc->ops->hal_rx_tlv_mpdu_fcs_err_get = hal_rx_tlv_mpdu_fcs_err_get_li; hal_soc->ops->hal_reo_send_cmd = hal_reo_send_cmd_li; - hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = - hal_rx_tlv_get_pkt_capture_flags_li; hal_soc->ops->hal_rx_desc_get_80211_hdr = hal_rx_desc_get_80211_hdr_li; hal_soc->ops->hal_rx_hw_desc_mpdu_user_id = hal_rx_hw_desc_mpdu_user_id_li; @@ -1236,10 +1128,6 @@ void hal_hw_txrx_default_ops_attach_li(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_tlv_sgi_get = hal_rx_tlv_sgi_get_li; hal_soc->ops->hal_rx_tlv_rate_mcs_get = hal_rx_tlv_rate_mcs_get_li; hal_soc->ops->hal_rx_tlv_get_pkt_type = hal_rx_tlv_get_pkt_type_li; - hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; - hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; - hal_soc->ops->hal_rx_tlv_decrypt_err_get = - hal_rx_tlv_decrypt_err_get_li; hal_soc->ops->hal_rx_tlv_first_mpdu_get = hal_rx_tlv_first_mpdu_get_li; hal_soc->ops->hal_rx_tlv_get_is_decrypted = hal_rx_tlv_get_is_decrypted_li; diff --git a/hal/wifi3.0/li/hal_li_generic_api.h b/hal/wifi3.0/li/hal_li_generic_api.h index d646ab0027..1e99b2aa38 100644 --- a/hal/wifi3.0/li/hal_li_generic_api.h +++ b/hal/wifi3.0/li/hal_li_generic_api.h @@ -1822,18 +1822,319 @@ static inline uint8_t hal_get_wbm_internal_error_generic_li(void *hal_desc) } /** - * hal_rx_dump_mpdu_start_tlv_generic_li() - dump RX mpdu_start TLV in - * structured human readable - * format. - * @mpdustart: pointer the rx_attention TLV in pkt. + * hal_rx_dump_rx_attention_tlv_generic_li() - dump RX attention TLV in + * structured humman readable + * format. + * @pkttlvs: pointer the pkt tlv struct. * @dbg_level: log level. * * Return: void */ -static inline void hal_rx_dump_mpdu_start_tlv_generic_li(void *mpdustart, - uint8_t dbg_level) +static inline +void hal_rx_dump_rx_attention_tlv_generic_li(void *pkttlvs, + uint8_t dbg_level) { - struct rx_mpdu_start *mpdu_start = (struct rx_mpdu_start *)mpdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn; + + hal_verbose_debug("rx_attention tlv (1/2) - " + "rxpcu_mpdu_filter_in_category: %x " + "sw_frame_group_id: %x " + "reserved_0: %x " + "phy_ppdu_id: %x " + "first_mpdu : %x " + "reserved_1a: %x " + "mcast_bcast: %x " + "ast_index_not_found: %x " + "ast_index_timeout: %x " + "power_mgmt: %x " + "non_qos: %x " + "null_data: %x " + "mgmt_type: %x " + "ctrl_type: %x " + "more_data: %x " + "eosp: %x " + "a_msdu_error: %x " + "fragment_flag: %x " + "order: %x " + "cce_match: %x " + "overflow_err: %x " + "msdu_length_err: %x " + "tcp_udp_chksum_fail: %x " + "ip_chksum_fail: %x " + "sa_idx_invalid: %x " + "da_idx_invalid: %x " + "reserved_1b: %x " + "rx_in_tx_decrypt_byp: %x ", + rx_attn->rxpcu_mpdu_filter_in_category, + rx_attn->sw_frame_group_id, + rx_attn->reserved_0, + rx_attn->phy_ppdu_id, + rx_attn->first_mpdu, + rx_attn->reserved_1a, + rx_attn->mcast_bcast, + rx_attn->ast_index_not_found, + rx_attn->ast_index_timeout, + rx_attn->power_mgmt, + rx_attn->non_qos, + rx_attn->null_data, + rx_attn->mgmt_type, + rx_attn->ctrl_type, + rx_attn->more_data, + rx_attn->eosp, + rx_attn->a_msdu_error, + rx_attn->fragment_flag, + rx_attn->order, + rx_attn->cce_match, + rx_attn->overflow_err, + rx_attn->msdu_length_err, + rx_attn->tcp_udp_chksum_fail, + rx_attn->ip_chksum_fail, + rx_attn->sa_idx_invalid, + rx_attn->da_idx_invalid, + rx_attn->reserved_1b, + rx_attn->rx_in_tx_decrypt_byp); + + hal_verbose_debug("rx_attention tlv (2/2) - " + "encrypt_required: %x " + "directed: %x " + "buffer_fragment: %x " + "mpdu_length_err: %x " + "tkip_mic_err: %x " + "decrypt_err: %x " + "unencrypted_frame_err: %x " + "fcs_err: %x " + "flow_idx_timeout: %x " + "flow_idx_invalid: %x " + "wifi_parser_error: %x " + "amsdu_parser_error: %x " + "sa_idx_timeout: %x " + "da_idx_timeout: %x " + "msdu_limit_error: %x " + "da_is_valid: %x " + "da_is_mcbc: %x " + "sa_is_valid: %x " + "decrypt_status_code: %x " + "rx_bitmap_not_updated: %x " + "reserved_2: %x " + "msdu_done: %x ", + rx_attn->encrypt_required, + rx_attn->directed, + rx_attn->buffer_fragment, + rx_attn->mpdu_length_err, + rx_attn->tkip_mic_err, + rx_attn->decrypt_err, + rx_attn->unencrypted_frame_err, + rx_attn->fcs_err, + rx_attn->flow_idx_timeout, + rx_attn->flow_idx_invalid, + rx_attn->wifi_parser_error, + rx_attn->amsdu_parser_error, + rx_attn->sa_idx_timeout, + rx_attn->da_idx_timeout, + rx_attn->msdu_limit_error, + rx_attn->da_is_valid, + rx_attn->da_is_mcbc, + rx_attn->sa_is_valid, + rx_attn->decrypt_status_code, + rx_attn->rx_bitmap_not_updated, + rx_attn->reserved_2, + rx_attn->msdu_done); +} + +/** + * hal_rx_dump_mpdu_end_tlv_generic_li() - dump RX mpdu_end TLV in structured + * human readable format. + * @pkttlvs: pointer the pkt tlv struct. + * @dbg_level: log level. + * + * Return: void + */ +static inline +void hal_rx_dump_mpdu_end_tlv_generic_li(void *pkttlvs, + uint8_t dbg_level) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; + + hal_verbose_debug("rx_mpdu_end tlv - " + "rxpcu_mpdu_filter_in_category: %x " + "sw_frame_group_id: %x " + "phy_ppdu_id: %x " + "unsup_ktype_short_frame: %x " + "rx_in_tx_decrypt_byp: %x " + "overflow_err: %x " + "mpdu_length_err: %x " + "tkip_mic_err: %x " + "decrypt_err: %x " + "unencrypted_frame_err: %x " + "pn_fields_contain_valid_info: %x " + "fcs_err: %x " + "msdu_length_err: %x " + "rxdma0_destination_ring: %x " + "rxdma1_destination_ring: %x " + "decrypt_status_code: %x " + "rx_bitmap_not_updated: %x ", + mpdu_end->rxpcu_mpdu_filter_in_category, + mpdu_end->sw_frame_group_id, + mpdu_end->phy_ppdu_id, + mpdu_end->unsup_ktype_short_frame, + mpdu_end->rx_in_tx_decrypt_byp, + mpdu_end->overflow_err, + mpdu_end->mpdu_length_err, + mpdu_end->tkip_mic_err, + mpdu_end->decrypt_err, + mpdu_end->unencrypted_frame_err, + mpdu_end->pn_fields_contain_valid_info, + mpdu_end->fcs_err, + mpdu_end->msdu_length_err, + mpdu_end->rxdma0_destination_ring, + mpdu_end->rxdma1_destination_ring, + mpdu_end->decrypt_status_code, + mpdu_end->rx_bitmap_not_updated); +} + +#ifdef NO_RX_PKT_HDR_TLV +static inline +void hal_rx_dump_pkt_hdr_tlv_generic_li(void *pkttlvs, + uint8_t dbg_level) +{ +} +#else +/** + * hal_rx_dump_pkt_hdr_tlv_generic_li() - dump RX pkt header TLV in hex format + * @pkttlvs: pointer the pkt tlv struct. + * @dbg_level: log level. + * + * Return: void + */ +static inline +void hal_rx_dump_pkt_hdr_tlv_generic_li(void *pkttlvs, + uint8_t dbg_level) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv; + + hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv" + "\n---------------\nphy_ppdu_id %d ", + pkt_hdr_tlv->phy_ppdu_id); + hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128); +} +#endif + +/** + * hal_rx_tlv_decrypt_err_get_li() - API to get the Decrypt ERR + * from rx_mpdu_end TLV + * + * @buf: pointer to the start of RX PKT TLV headers + * Return: uint32_t(decrypt_err) + */ +static inline uint32_t +hal_rx_tlv_decrypt_err_get_li(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; + struct rx_mpdu_end *mpdu_end = + &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; + uint32_t decrypt_err; + + decrypt_err = HAL_RX_MPDU_END_DECRYPT_ERR_GET(mpdu_end); + + return decrypt_err; +} + +/** + * hal_rx_tlv_mic_err_get_li() - API to get the MIC ERR + * from rx_mpdu_end TLV + * + * @buf: pointer to the start of RX PKT TLV headers + * Return: uint32_t(mic_err) + */ +static inline uint32_t +hal_rx_tlv_mic_err_get_li(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; + struct rx_mpdu_end *mpdu_end = + &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; + uint32_t mic_err; + + mic_err = HAL_RX_MPDU_END_MIC_ERR_GET(mpdu_end); + + return mic_err; +} + +static +void hal_rx_tlv_get_pkt_capture_flags_li(uint8_t *rx_tlv_pkt_hdr, + struct hal_rx_pkt_capture_flags *flags) +{ + struct rx_pkt_tlvs *rx_tlv_hdr = (struct rx_pkt_tlvs *)rx_tlv_pkt_hdr; + struct rx_attention *rx_attn = &rx_tlv_hdr->attn_tlv.rx_attn; + struct rx_mpdu_start *mpdu_start = + &rx_tlv_hdr->mpdu_start_tlv.rx_mpdu_start; + struct rx_mpdu_end *mpdu_end = &rx_tlv_hdr->mpdu_end_tlv.rx_mpdu_end; + struct rx_msdu_start *msdu_start = + &rx_tlv_hdr->msdu_start_tlv.rx_msdu_start; + + flags->encrypt_type = mpdu_start->rx_mpdu_info_details.encrypt_type; + flags->fcs_err = mpdu_end->fcs_err; + flags->fragment_flag = rx_attn->fragment_flag; + flags->chan_freq = HAL_RX_MSDU_START_FREQ_GET(msdu_start); + flags->rssi_comb = HAL_RX_MSDU_START_RSSI_GET(msdu_start); + flags->tsft = msdu_start->ppdu_start_timestamp; +} + +static inline bool +hal_rx_mpdu_info_ampdu_flag_get_li(uint8_t *buf) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; + struct rx_mpdu_start *mpdu_start = + &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start; + + struct rx_mpdu_info *mpdu_info = &mpdu_start->rx_mpdu_info_details; + bool ampdu_flag; + + ampdu_flag = HAL_RX_MPDU_INFO_AMPDU_FLAG_GET(mpdu_info); + + return ampdu_flag; +} + +/** + * hal_rx_tlv_get_pn_num_li() - Get packet number from RX TLV + * @buf: rx tlv address + * @pn_num: buffer to store packet number + * + * Return: None + */ +static inline void hal_rx_tlv_get_pn_num_li(uint8_t *buf, uint64_t *pn_num) +{ + struct rx_pkt_tlvs *rx_pkt_tlv = + (struct rx_pkt_tlvs *)buf; + struct rx_mpdu_info *rx_mpdu_info_details = + &rx_pkt_tlv->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details; + + pn_num[0] = rx_mpdu_info_details->pn_31_0; + pn_num[0] |= + ((uint64_t)rx_mpdu_info_details->pn_63_32 << 32); + pn_num[1] = rx_mpdu_info_details->pn_95_64; + pn_num[1] |= + ((uint64_t)rx_mpdu_info_details->pn_127_96 << 32); +} + +/** + * hal_rx_dump_mpdu_start_tlv_generic_li() - dump RX mpdu_start TLV in + * structured human readable + * format. + * @pkttlvs: pointer to the pkttlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline +void hal_rx_dump_mpdu_start_tlv_generic_li(void *pkttlvs, + uint8_t dbg_level) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_mpdu_start *mpdu_start = + &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start; struct rx_mpdu_info *mpdu_info = (struct rx_mpdu_info *)&mpdu_start->rx_mpdu_info_details; diff --git a/hal/wifi3.0/li/hal_li_rx.h b/hal/wifi3.0/li/hal_li_rx.h index c4546d5280..541333ffd5 100644 --- a/hal/wifi3.0/li/hal_li_rx.h +++ b/hal/wifi3.0/li/hal_li_rx.h @@ -840,195 +840,6 @@ HAL_RX_DESC_GET_DECAP_FORMAT(void *hw_desc_addr) { return HAL_RX_GET(rx_msdu_start, RX_MSDU_START_2, DECAP_FORMAT); } -/** - * hal_rx_dump_rx_attention_tlv() - dump RX attention TLV in structured - * human readable format. - * @rx_attn: pointer the rx_attention TLV in pkt. - * @dbg_level: log level. - * - * Return: void - */ -static inline void hal_rx_dump_rx_attention_tlv(struct rx_attention *rx_attn, - uint8_t dbg_level) -{ - hal_verbose_debug("rx_attention tlv (1/2) - " - "rxpcu_mpdu_filter_in_category: %x " - "sw_frame_group_id: %x " - "reserved_0: %x " - "phy_ppdu_id: %x " - "first_mpdu : %x " - "reserved_1a: %x " - "mcast_bcast: %x " - "ast_index_not_found: %x " - "ast_index_timeout: %x " - "power_mgmt: %x " - "non_qos: %x " - "null_data: %x " - "mgmt_type: %x " - "ctrl_type: %x " - "more_data: %x " - "eosp: %x " - "a_msdu_error: %x " - "fragment_flag: %x " - "order: %x " - "cce_match: %x " - "overflow_err: %x " - "msdu_length_err: %x " - "tcp_udp_chksum_fail: %x " - "ip_chksum_fail: %x " - "sa_idx_invalid: %x " - "da_idx_invalid: %x " - "reserved_1b: %x " - "rx_in_tx_decrypt_byp: %x ", - rx_attn->rxpcu_mpdu_filter_in_category, - rx_attn->sw_frame_group_id, - rx_attn->reserved_0, - rx_attn->phy_ppdu_id, - rx_attn->first_mpdu, - rx_attn->reserved_1a, - rx_attn->mcast_bcast, - rx_attn->ast_index_not_found, - rx_attn->ast_index_timeout, - rx_attn->power_mgmt, - rx_attn->non_qos, - rx_attn->null_data, - rx_attn->mgmt_type, - rx_attn->ctrl_type, - rx_attn->more_data, - rx_attn->eosp, - rx_attn->a_msdu_error, - rx_attn->fragment_flag, - rx_attn->order, - rx_attn->cce_match, - rx_attn->overflow_err, - rx_attn->msdu_length_err, - rx_attn->tcp_udp_chksum_fail, - rx_attn->ip_chksum_fail, - rx_attn->sa_idx_invalid, - rx_attn->da_idx_invalid, - rx_attn->reserved_1b, - rx_attn->rx_in_tx_decrypt_byp); - - hal_verbose_debug("rx_attention tlv (2/2) - " - "encrypt_required: %x " - "directed: %x " - "buffer_fragment: %x " - "mpdu_length_err: %x " - "tkip_mic_err: %x " - "decrypt_err: %x " - "unencrypted_frame_err: %x " - "fcs_err: %x " - "flow_idx_timeout: %x " - "flow_idx_invalid: %x " - "wifi_parser_error: %x " - "amsdu_parser_error: %x " - "sa_idx_timeout: %x " - "da_idx_timeout: %x " - "msdu_limit_error: %x " - "da_is_valid: %x " - "da_is_mcbc: %x " - "sa_is_valid: %x " - "decrypt_status_code: %x " - "rx_bitmap_not_updated: %x " - "reserved_2: %x " - "msdu_done: %x ", - rx_attn->encrypt_required, - rx_attn->directed, - rx_attn->buffer_fragment, - rx_attn->mpdu_length_err, - rx_attn->tkip_mic_err, - rx_attn->decrypt_err, - rx_attn->unencrypted_frame_err, - rx_attn->fcs_err, - rx_attn->flow_idx_timeout, - rx_attn->flow_idx_invalid, - rx_attn->wifi_parser_error, - rx_attn->amsdu_parser_error, - rx_attn->sa_idx_timeout, - rx_attn->da_idx_timeout, - rx_attn->msdu_limit_error, - rx_attn->da_is_valid, - rx_attn->da_is_mcbc, - rx_attn->sa_is_valid, - rx_attn->decrypt_status_code, - rx_attn->rx_bitmap_not_updated, - rx_attn->reserved_2, - rx_attn->msdu_done); -} - -/** - * hal_rx_dump_mpdu_end_tlv() - dump RX mpdu_end TLV in structured - * human readable format. - * @mpdu_end: pointer the mpdu_end TLV in pkt. - * @dbg_level: log level. - * - * Return: void - */ -static inline void hal_rx_dump_mpdu_end_tlv(struct rx_mpdu_end *mpdu_end, - uint8_t dbg_level) -{ - hal_verbose_debug("rx_mpdu_end tlv - " - "rxpcu_mpdu_filter_in_category: %x " - "sw_frame_group_id: %x " - "phy_ppdu_id: %x " - "unsup_ktype_short_frame: %x " - "rx_in_tx_decrypt_byp: %x " - "overflow_err: %x " - "mpdu_length_err: %x " - "tkip_mic_err: %x " - "decrypt_err: %x " - "unencrypted_frame_err: %x " - "pn_fields_contain_valid_info: %x " - "fcs_err: %x " - "msdu_length_err: %x " - "rxdma0_destination_ring: %x " - "rxdma1_destination_ring: %x " - "decrypt_status_code: %x " - "rx_bitmap_not_updated: %x ", - mpdu_end->rxpcu_mpdu_filter_in_category, - mpdu_end->sw_frame_group_id, - mpdu_end->phy_ppdu_id, - mpdu_end->unsup_ktype_short_frame, - mpdu_end->rx_in_tx_decrypt_byp, - mpdu_end->overflow_err, - mpdu_end->mpdu_length_err, - mpdu_end->tkip_mic_err, - mpdu_end->decrypt_err, - mpdu_end->unencrypted_frame_err, - mpdu_end->pn_fields_contain_valid_info, - mpdu_end->fcs_err, - mpdu_end->msdu_length_err, - mpdu_end->rxdma0_destination_ring, - mpdu_end->rxdma1_destination_ring, - mpdu_end->decrypt_status_code, - mpdu_end->rx_bitmap_not_updated); -} - -#ifdef NO_RX_PKT_HDR_TLV -static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs, - uint8_t dbg_level) -{ -} -#else -/** - * hal_rx_dump_pkt_hdr_tlv() - dump RX pkt header TLV in hex format - * @pkt_tlvs: pointer the pkt_hdr_tlv in pkt. - * @dbg_level: log level. - * - * Return: void - */ -static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs, - uint8_t dbg_level) -{ - struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv; - - hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv" - "\n---------------\nphy_ppdu_id %d ", - pkt_hdr_tlv->phy_ppdu_id); - hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128); -} -#endif - #define HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(_rx_mpdu_info) \ (_HAL_MS((*_OFFSET_TO_WORD_PTR(_rx_mpdu_info, \ RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_OFFSET)), \ diff --git a/hal/wifi3.0/qca5018/hal_5018.c b/hal/wifi3.0/qca5018/hal_5018.c index 8b2c7d8b98..034aa62c74 100644 --- a/hal/wifi3.0/qca5018/hal_5018.c +++ b/hal/wifi3.0/qca5018/hal_5018.c @@ -407,15 +407,17 @@ void hal_rx_get_rtt_info_5018(void *rx_tlv, /** * hal_rx_dump_msdu_start_tlv_5018() - dump RX msdu_start TLV in structured * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_5018(void *msdustart, +static void hal_rx_dump_msdu_start_tlv_5018(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_start tlv - " @@ -482,15 +484,16 @@ static void hal_rx_dump_msdu_start_tlv_5018(void *msdustart, /** * hal_rx_dump_msdu_end_tlv_5018() - dump RX msdu_end TLV in structured * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_5018(void *msduend, +static void hal_rx_dump_msdu_end_tlv_5018(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_end tlv - " @@ -1742,9 +1745,6 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_5018; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_5018; - hal_soc->ops->hal_rx_dump_msdu_start_tlv = - hal_rx_dump_msdu_start_tlv_5018; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_5018; hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_5018; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_5018; @@ -1762,8 +1762,18 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_5018; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; + hal_soc->ops->hal_rx_dump_msdu_start_tlv = + hal_rx_dump_msdu_start_tlv_5018; hal_soc->ops->hal_rx_dump_mpdu_start_tlv = hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1878,6 +1888,14 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc) hal_soc->ops->hal_compute_reo_remap_ix2_ix3 = hal_compute_reo_remap_ix2_ix3_5018; hal_soc->ops->hal_setup_link_idle_list = hal_setup_link_idle_list_generic_li; + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = NULL; hal_soc->ops->hal_rx_tlv_msdu_len_get = hal_rx_msdu_start_get_len_5018; diff --git a/hal/wifi3.0/qca6290/hal_6290.c b/hal/wifi3.0/qca6290/hal_6290.c index c818d01004..33d1afc641 100644 --- a/hal/wifi3.0/qca6290/hal_6290.c +++ b/hal/wifi3.0/qca6290/hal_6290.c @@ -1100,9 +1100,19 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6290; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_6290; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6290; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_6290; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6290; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6290; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_6290; @@ -1120,8 +1130,6 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1232,6 +1240,14 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc) hal_soc->ops->hal_get_first_wow_wakeup_packet = hal_get_first_wow_wakeup_packet_6290; #endif + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = NULL; }; diff --git a/hal/wifi3.0/qca6290/hal_6290_rx.h b/hal/wifi3.0/qca6290/hal_6290_rx.h index 0ce02a3ec1..8df9307e88 100644 --- a/hal/wifi3.0/qca6290/hal_6290_rx.h +++ b/hal/wifi3.0/qca6290/hal_6290_rx.h @@ -524,16 +524,18 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6290(void *rx_tlv_hdr, /** * hal_rx_dump_msdu_start_tlv_6290() - dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_6290(void *msdustart, +static void hal_rx_dump_msdu_start_tlv_6290(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_start tlv - " @@ -607,16 +609,17 @@ static void hal_rx_dump_msdu_start_tlv_6290(void *msdustart, /** * hal_rx_dump_msdu_end_tlv_6290() - dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_6290(void *msduend, +static void hal_rx_dump_msdu_end_tlv_6290(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_end tlv - " diff --git a/hal/wifi3.0/qca6390/hal_6390.c b/hal/wifi3.0/qca6390/hal_6390.c index 71b4c80ae8..f46836f4ca 100644 --- a/hal/wifi3.0/qca6390/hal_6390.c +++ b/hal/wifi3.0/qca6390/hal_6390.c @@ -1171,9 +1171,19 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6390; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_6390; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6390; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_6390; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6390; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6390; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_6390; @@ -1191,8 +1201,6 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1305,6 +1313,14 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc) hal_soc->ops->hal_get_first_wow_wakeup_packet = hal_get_first_wow_wakeup_packet_6390; #endif + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = hal_compute_reo_remap_ix0_6390; }; diff --git a/hal/wifi3.0/qca6390/hal_6390_rx.h b/hal/wifi3.0/qca6390/hal_6390_rx.h index 9c8e4978c4..10e03f179b 100644 --- a/hal/wifi3.0/qca6390/hal_6390_rx.h +++ b/hal/wifi3.0/qca6390/hal_6390_rx.h @@ -473,15 +473,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6390(void *rx_tlv_hdr, /** * hal_rx_dump_msdu_start_tlv_6390() - dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_6390(void *msdustart, uint8_t dbg_level) +static void hal_rx_dump_msdu_start_tlv_6390(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; hal_verbose_debug( "rx_msdu_start tlv (1/2) - " @@ -550,16 +552,17 @@ static void hal_rx_dump_msdu_start_tlv_6390(void *msdustart, uint8_t dbg_level) /** * hal_rx_dump_msdu_end_tlv_6390() - dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_6390(void *msduend, +static void hal_rx_dump_msdu_end_tlv_6390(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; __QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP, "rx_msdu_end tlv (1/2) - " diff --git a/hal/wifi3.0/qca6490/hal_6490.c b/hal/wifi3.0/qca6490/hal_6490.c index 6f0b9d9f1f..7b0848b113 100644 --- a/hal/wifi3.0/qca6490/hal_6490.c +++ b/hal/wifi3.0/qca6490/hal_6490.c @@ -256,15 +256,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6490(void *rx_tlv_hdr, /** * hal_rx_dump_msdu_start_tlv_6490() - dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_6490(void *msdustart, uint8_t dbg_level) +static void hal_rx_dump_msdu_start_tlv_6490(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; __QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP, "rx_msdu_start tlv (1/2) - " @@ -333,16 +335,17 @@ static void hal_rx_dump_msdu_start_tlv_6490(void *msdustart, uint8_t dbg_level) /** * hal_rx_dump_msdu_end_tlv_6490() - dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_6490(void *msduend, +static void hal_rx_dump_msdu_end_tlv_6490(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; __QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP, "rx_msdu_end tlv (1/3) - " @@ -1784,9 +1787,19 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6490; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_6490; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6490; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_6490; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6490; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6490; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_6490; @@ -1804,8 +1817,6 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1937,6 +1948,14 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc) hal_soc->ops->hal_get_first_wow_wakeup_packet = hal_get_first_wow_wakeup_packet_6490; #endif + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = hal_compute_reo_remap_ix0_6490; hal_soc->ops->hal_rx_tlv_l3_type_get = diff --git a/hal/wifi3.0/qca6750/hal_6750.c b/hal/wifi3.0/qca6750/hal_6750.c index 15fb9aa2d9..6829779a5d 100644 --- a/hal/wifi3.0/qca6750/hal_6750.c +++ b/hal/wifi3.0/qca6750/hal_6750.c @@ -257,15 +257,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6750(void *rx_tlv_hdr, /** * hal_rx_dump_msdu_start_tlv_6750() - dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_6750(void *msdustart, uint8_t dbg_level) +static void hal_rx_dump_msdu_start_tlv_6750(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; hal_verbose_debug( "rx_msdu_start tlv (1/2) - " @@ -334,16 +336,17 @@ static void hal_rx_dump_msdu_start_tlv_6750(void *msdustart, uint8_t dbg_level) /** * hal_rx_dump_msdu_end_tlv_6750() - dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_6750(void *msduend, +static void hal_rx_dump_msdu_end_tlv_6750(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; __QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP, "rx_msdu_end tlv (1/3) - " @@ -1927,9 +1930,19 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6750; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_6750; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6750; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_6750; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6750; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6750; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_6750; @@ -1947,8 +1960,6 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -2087,6 +2098,14 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc) hal_soc->ops->hal_get_first_wow_wakeup_packet = hal_get_first_wow_wakeup_packet_6750; #endif + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = hal_compute_reo_remap_ix0_6750; hal_soc->ops->hal_rx_tlv_msdu_len_get = diff --git a/hal/wifi3.0/qca8074v1/hal_8074v1.c b/hal/wifi3.0/qca8074v1/hal_8074v1.c index a573efc8ea..153fa38ae2 100644 --- a/hal/wifi3.0/qca8074v1/hal_8074v1.c +++ b/hal/wifi3.0/qca8074v1/hal_8074v1.c @@ -1288,9 +1288,19 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_8074; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_8074; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_8074; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_8074; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_8074; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_8074; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_8074; @@ -1308,8 +1318,6 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1425,6 +1433,14 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc) hal_compute_reo_remap_ix2_ix3_8074v1; hal_soc->ops->hal_setup_link_idle_list = hal_setup_link_idle_list_generic_li; + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = NULL; }; diff --git a/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h b/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h index ec6c7afb9b..c9411546e7 100644 --- a/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h +++ b/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h @@ -432,17 +432,19 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_8074(void *rx_tlv_hdr, /** - * hal_rx_dump_msdu_start_tlv_8074() : dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * hal_rx_dump_msdu_start_tlv_8074() - dump RX msdu_start TLV in structured + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_8074(void *msdustart, +static void hal_rx_dump_msdu_start_tlv_8074(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_start tlv - " @@ -512,16 +514,17 @@ static void hal_rx_dump_msdu_start_tlv_8074(void *msdustart, /** * hal_rx_dump_msdu_end_tlv_8074() - dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_8074(void *msduend, +static void hal_rx_dump_msdu_end_tlv_8074(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_end tlv - " diff --git a/hal/wifi3.0/qca8074v2/hal_8074v2.c b/hal/wifi3.0/qca8074v2/hal_8074v2.c index 6b0c293897..6f8b20a8b2 100644 --- a/hal/wifi3.0/qca8074v2/hal_8074v2.c +++ b/hal/wifi3.0/qca8074v2/hal_8074v2.c @@ -1283,9 +1283,20 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_8074v2; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_8074v2; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = + hal_rx_dump_msdu_end_tlv_8074v2; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_8074v2; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_8074v2; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_8074v2; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_8074v2; @@ -1303,8 +1314,6 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1424,6 +1433,14 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc) hal_compute_reo_remap_ix2_ix3_8074v2; hal_soc->ops->hal_setup_link_idle_list = hal_setup_link_idle_list_generic_li; + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = NULL; }; diff --git a/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h b/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h index 61e64dbc3b..6f5fa2ed17 100644 --- a/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h +++ b/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h @@ -607,16 +607,18 @@ void hal_rx_get_rtt_info_8074v2(void *rx_tlv, /** * hal_rx_dump_msdu_start_tlv_8074v2() - dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_8074v2(void *msdustart, - uint8_t dbg_level) +static void hal_rx_dump_msdu_start_tlv_8074v2(void *pkttlvs, + uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_start tlv - " @@ -682,16 +684,17 @@ static void hal_rx_dump_msdu_start_tlv_8074v2(void *msdustart, /** * hal_rx_dump_msdu_end_tlv_8074v2() - dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_8074v2(void *msduend, - uint8_t dbg_level) +static void hal_rx_dump_msdu_end_tlv_8074v2(void *pkttlvs, + uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_end tlv - " diff --git a/hal/wifi3.0/qcn6122/hal_qcn6122.c b/hal/wifi3.0/qcn6122/hal_qcn6122.c index 79bb43e1b4..e4b22ca8cd 100644 --- a/hal/wifi3.0/qcn6122/hal_qcn6122.c +++ b/hal/wifi3.0/qcn6122/hal_qcn6122.c @@ -410,16 +410,18 @@ void hal_rx_get_rtt_info_6122(void *rx_tlv, /** * hal_rx_dump_msdu_start_tlv_6122() - dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_6122(void *msdustart, +static void hal_rx_dump_msdu_start_tlv_6122(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_start tlv - " @@ -485,16 +487,17 @@ static void hal_rx_dump_msdu_start_tlv_6122(void *msdustart, /** * hal_rx_dump_msdu_end_tlv_6122() - dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_6122(void *msduend, +static void hal_rx_dump_msdu_end_tlv_6122(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_end tlv - " @@ -1832,9 +1835,19 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6122; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_6122; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6122; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_6122; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6122; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6122; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_6122; @@ -1852,8 +1865,6 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1976,6 +1987,14 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc) hal_compute_reo_remap_ix2_ix3_6122; hal_soc->ops->hal_setup_link_idle_list = hal_setup_link_idle_list_generic_li; + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = NULL; hal_soc->ops->hal_rx_tlv_msdu_len_get = hal_rx_msdu_start_get_len_6122; diff --git a/hal/wifi3.0/qcn9000/hal_9000.c b/hal/wifi3.0/qcn9000/hal_9000.c index 66ecf0a043..77fa6ad149 100644 --- a/hal/wifi3.0/qcn9000/hal_9000.c +++ b/hal/wifi3.0/qcn9000/hal_9000.c @@ -406,18 +406,21 @@ void hal_rx_get_rtt_info_9000(void *rx_tlv, void *ppdu_info_hdl) RTT_GI_TYPE); } #endif + /** * hal_rx_dump_msdu_start_tlv_9000() - dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_9000(void *msdustart, +static void hal_rx_dump_msdu_start_tlv_9000(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_start tlv - " @@ -482,17 +485,18 @@ static void hal_rx_dump_msdu_start_tlv_9000(void *msdustart, } /** - * hal_rx_dump_msdu_end_tlv_9000() - dump RX msdu_end TLV in structured human - * readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * hal_rx_dump_msdu_end_tlv_9000() - dump RX msdu_end TLV in structured + * human readable format. + * @pkttlvs: pointer to the pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_9000(void *msduend, +static void hal_rx_dump_msdu_end_tlv_9000(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; QDF_TRACE(QDF_MODULE_ID_DP, dbg_level, "rx_msdu_end tlv - " @@ -1828,9 +1832,19 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_9000; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_9000; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_9000; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_li; hal_soc->ops->hal_rx_dump_msdu_start_tlv = hal_rx_dump_msdu_start_tlv_9000; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_9000; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_li; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_li; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_li; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_9000; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_9000; @@ -1848,8 +1862,6 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_li; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_generic_li; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_li; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_li; @@ -1973,6 +1985,14 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc) hal_compute_reo_remap_ix2_ix3_9000; hal_soc->ops->hal_setup_link_idle_list = hal_setup_link_idle_list_generic_li; + hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li; + hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li; + hal_soc->ops->hal_rx_tlv_decrypt_err_get = + hal_rx_tlv_decrypt_err_get_li; + hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags = + hal_rx_tlv_get_pkt_capture_flags_li; + hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get = + hal_rx_mpdu_info_ampdu_flag_get_li; hal_soc->ops->hal_compute_reo_remap_ix0 = NULL; hal_soc->ops->hal_rx_tlv_msdu_len_get = hal_rx_msdu_start_get_len_9000; diff --git a/hal/wifi3.0/rh/hal_rh_generic_api.c b/hal/wifi3.0/rh/hal_rh_generic_api.c index 1815f741b9..2293edc26c 100644 --- a/hal/wifi3.0/rh/hal_rh_generic_api.c +++ b/hal/wifi3.0/rh/hal_rh_generic_api.c @@ -240,21 +240,14 @@ static void hal_rx_dump_pkt_tlvs_rh(hal_soc_handle_t hal_soc_hdl, uint8_t *buf, uint8_t dbg_level) { struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf; - struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn; - struct rx_mpdu_start *mpdu_start = - &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start; - struct rx_msdu_start *msdu_start = - &pkt_tlvs->msdu_start_tlv.rx_msdu_start; - struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; - struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl; - hal_rx_dump_rx_attention_tlv(rx_attn, dbg_level); - hal_rx_dump_mpdu_start_tlv(mpdu_start, dbg_level, hal_soc); - hal_rx_dump_msdu_start_tlv(hal_soc, msdu_start, dbg_level); - hal_rx_dump_mpdu_end_tlv(mpdu_end, dbg_level); - hal_rx_dump_msdu_end_tlv(hal_soc, msdu_end, dbg_level); - hal_rx_dump_pkt_hdr_tlv(pkt_tlvs, dbg_level); + hal_rx_dump_msdu_end_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_rx_attention_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_msdu_start_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_mpdu_start_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_mpdu_end_tlv(hal_soc, pkt_tlvs, dbg_level); + hal_rx_dump_pkt_hdr_tlv(hal_soc, pkt_tlvs, dbg_level); } /** diff --git a/hal/wifi3.0/rh/hal_rh_generic_api.h b/hal/wifi3.0/rh/hal_rh_generic_api.h index 0ffb6970cb..35eb8e933a 100644 --- a/hal/wifi3.0/rh/hal_rh_generic_api.h +++ b/hal/wifi3.0/rh/hal_rh_generic_api.h @@ -1629,17 +1629,215 @@ hal_rx_status_get_tlv_info_generic_rh(void *rx_tlv_hdr, void *ppduinfo, } /** - * hal_rx_dump_mpdu_start_tlv_generic_rh: dump RX mpdu_start TLV in structured - * human readable format. - * @mpdustart: pointer the rx_attention TLV in pkt. + * hal_rx_dump_rx_attention_tlv_generic_rh: dump RX attention TLV in structured + * humman readable format. + * @pkttlvs: pointer to pkttlvs. * @dbg_level: log level. * * Return: void */ -static inline void hal_rx_dump_mpdu_start_tlv_generic_rh(void *mpdustart, +static inline void hal_rx_dump_rx_attention_tlv_generic_rh(void *pkttlvs, + uint8_t dbg_level) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn; + + hal_verbose_debug("rx_attention tlv (1/2) - " + "rxpcu_mpdu_filter_in_category: %x " + "sw_frame_group_id: %x " + "reserved_0: %x " + "phy_ppdu_id: %x " + "first_mpdu : %x " + "reserved_1a: %x " + "mcast_bcast: %x " + "ast_index_not_found: %x " + "ast_index_timeout: %x " + "power_mgmt: %x " + "non_qos: %x " + "null_data: %x " + "mgmt_type: %x " + "ctrl_type: %x " + "more_data: %x " + "eosp: %x " + "a_msdu_error: %x " + "fragment_flag: %x " + "order: %x " + "cce_match: %x " + "overflow_err: %x " + "msdu_length_err: %x " + "tcp_udp_chksum_fail: %x " + "ip_chksum_fail: %x " + "sa_idx_invalid: %x " + "da_idx_invalid: %x " + "reserved_1b: %x " + "rx_in_tx_decrypt_byp: %x ", + rx_attn->rxpcu_mpdu_filter_in_category, + rx_attn->sw_frame_group_id, + rx_attn->reserved_0, + rx_attn->phy_ppdu_id, + rx_attn->first_mpdu, + rx_attn->reserved_1a, + rx_attn->mcast_bcast, + rx_attn->ast_index_not_found, + rx_attn->ast_index_timeout, + rx_attn->power_mgmt, + rx_attn->non_qos, + rx_attn->null_data, + rx_attn->mgmt_type, + rx_attn->ctrl_type, + rx_attn->more_data, + rx_attn->eosp, + rx_attn->a_msdu_error, + rx_attn->fragment_flag, + rx_attn->order, + rx_attn->cce_match, + rx_attn->overflow_err, + rx_attn->msdu_length_err, + rx_attn->tcp_udp_chksum_fail, + rx_attn->ip_chksum_fail, + rx_attn->sa_idx_invalid, + rx_attn->da_idx_invalid, + rx_attn->reserved_1b, + rx_attn->rx_in_tx_decrypt_byp); + + hal_verbose_debug("rx_attention tlv (2/2) - " + "encrypt_required: %x " + "directed: %x " + "buffer_fragment: %x " + "mpdu_length_err: %x " + "tkip_mic_err: %x " + "decrypt_err: %x " + "unencrypted_frame_err: %x " + "fcs_err: %x " + "flow_idx_timeout: %x " + "flow_idx_invalid: %x " + "wifi_parser_error: %x " + "amsdu_parser_error: %x " + "sa_idx_timeout: %x " + "da_idx_timeout: %x " + "msdu_limit_error: %x " + "da_is_valid: %x " + "da_is_mcbc: %x " + "sa_is_valid: %x " + "decrypt_status_code: %x " + "rx_bitmap_not_updated: %x " + "reserved_2: %x " + "msdu_done: %x ", + rx_attn->encrypt_required, + rx_attn->directed, + rx_attn->buffer_fragment, + rx_attn->mpdu_length_err, + rx_attn->tkip_mic_err, + rx_attn->decrypt_err, + rx_attn->unencrypted_frame_err, + rx_attn->fcs_err, + rx_attn->flow_idx_timeout, + rx_attn->flow_idx_invalid, + rx_attn->wifi_parser_error, + rx_attn->amsdu_parser_error, + rx_attn->sa_idx_timeout, + rx_attn->da_idx_timeout, + rx_attn->msdu_limit_error, + rx_attn->da_is_valid, + rx_attn->da_is_mcbc, + rx_attn->sa_is_valid, + rx_attn->decrypt_status_code, + rx_attn->rx_bitmap_not_updated, + rx_attn->reserved_2, + rx_attn->msdu_done); +} + +/** + * hal_rx_dump_mpdu_end_tlv_generic_rh: dump RX mpdu_end TLV in structured + * human readable format. + * @pkttlvs: pointer to pkttlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_mpdu_end_tlv_generic_rh(void *pkttlvs, + uint8_t dbg_level) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end; + + hal_verbose_debug("rx_mpdu_end tlv - " + "rxpcu_mpdu_filter_in_category: %x " + "sw_frame_group_id: %x " + "phy_ppdu_id: %x " + "unsup_ktype_short_frame: %x " + "rx_in_tx_decrypt_byp: %x " + "overflow_err: %x " + "mpdu_length_err: %x " + "tkip_mic_err: %x " + "decrypt_err: %x " + "unencrypted_frame_err: %x " + "pn_fields_contain_valid_info: %x " + "fcs_err: %x " + "msdu_length_err: %x " + "rxdma0_destination_ring: %x " + "rxdma1_destination_ring: %x " + "decrypt_status_code: %x " + "rx_bitmap_not_updated: %x ", + mpdu_end->rxpcu_mpdu_filter_in_category, + mpdu_end->sw_frame_group_id, + mpdu_end->phy_ppdu_id, + mpdu_end->unsup_ktype_short_frame, + mpdu_end->rx_in_tx_decrypt_byp, + mpdu_end->overflow_err, + mpdu_end->mpdu_length_err, + mpdu_end->tkip_mic_err, + mpdu_end->decrypt_err, + mpdu_end->unencrypted_frame_err, + mpdu_end->pn_fields_contain_valid_info, + mpdu_end->fcs_err, + mpdu_end->msdu_length_err, + mpdu_end->rxdma0_destination_ring, + mpdu_end->rxdma1_destination_ring, + mpdu_end->decrypt_status_code, + mpdu_end->rx_bitmap_not_updated); +} + +#ifdef NO_RX_PKT_HDR_TLV +static inline void hal_rx_dump_pkt_hdr_tlv_generic_rh(void *pkttlvs, + uint8_t dbg_level) +{ +} +#else +/** + * hal_rx_dump_pkt_hdr_tlv_generic_rh: dump RX pkt header TLV in hex format + * @pkttlvs: pointer to pkttlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_pkt_hdr_tlv_generic_rh(void *pkttlvs, + uint8_t dbg_level) +{ + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv; + + hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv" + "\n---------------\nphy_ppdu_id %d ", + pkt_hdr_tlv->phy_ppdu_id); + hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128); +} +#endif + +/** + * hal_rx_dump_mpdu_start_tlv_generic_rh: dump RX mpdu_start TLV in structured + * human readable format. + * @pkttlvs: pointer to pkttlvs. + * @dbg_level: log level. + * + * Return: void + */ +static inline void hal_rx_dump_mpdu_start_tlv_generic_rh(void *pkttlvs, uint8_t dbg_level) { - struct rx_mpdu_start *mpdu_start = (struct rx_mpdu_start *)mpdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_mpdu_start *mpdu_start = + &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start; struct rx_mpdu_info *mpdu_info = (struct rx_mpdu_info *)&mpdu_start->rx_mpdu_info_details; diff --git a/hal/wifi3.0/rh/hal_rh_rx.h b/hal/wifi3.0/rh/hal_rh_rx.h index 044342ac31..ee95d10e61 100644 --- a/hal/wifi3.0/rh/hal_rh_rx.h +++ b/hal/wifi3.0/rh/hal_rh_rx.h @@ -577,195 +577,6 @@ hal_rx_mpdu_peer_meta_data_get_rh(uint8_t *buf) RX_MPDU_END_1_TKIP_MIC_ERR_MASK, \ RX_MPDU_END_1_TKIP_MIC_ERR_LSB)) -/** - * hal_rx_dump_rx_attention_tlv: dump RX attention TLV in structured - * humman readable format. - * @rx_attn: pointer the rx_attention TLV in pkt. - * @dbg_level: log level. - * - * Return: void - */ -static inline void hal_rx_dump_rx_attention_tlv(struct rx_attention *rx_attn, - uint8_t dbg_level) -{ - hal_verbose_debug("rx_attention tlv (1/2) - " - "rxpcu_mpdu_filter_in_category: %x " - "sw_frame_group_id: %x " - "reserved_0: %x " - "phy_ppdu_id: %x " - "first_mpdu : %x " - "reserved_1a: %x " - "mcast_bcast: %x " - "ast_index_not_found: %x " - "ast_index_timeout: %x " - "power_mgmt: %x " - "non_qos: %x " - "null_data: %x " - "mgmt_type: %x " - "ctrl_type: %x " - "more_data: %x " - "eosp: %x " - "a_msdu_error: %x " - "fragment_flag: %x " - "order: %x " - "cce_match: %x " - "overflow_err: %x " - "msdu_length_err: %x " - "tcp_udp_chksum_fail: %x " - "ip_chksum_fail: %x " - "sa_idx_invalid: %x " - "da_idx_invalid: %x " - "reserved_1b: %x " - "rx_in_tx_decrypt_byp: %x ", - rx_attn->rxpcu_mpdu_filter_in_category, - rx_attn->sw_frame_group_id, - rx_attn->reserved_0, - rx_attn->phy_ppdu_id, - rx_attn->first_mpdu, - rx_attn->reserved_1a, - rx_attn->mcast_bcast, - rx_attn->ast_index_not_found, - rx_attn->ast_index_timeout, - rx_attn->power_mgmt, - rx_attn->non_qos, - rx_attn->null_data, - rx_attn->mgmt_type, - rx_attn->ctrl_type, - rx_attn->more_data, - rx_attn->eosp, - rx_attn->a_msdu_error, - rx_attn->fragment_flag, - rx_attn->order, - rx_attn->cce_match, - rx_attn->overflow_err, - rx_attn->msdu_length_err, - rx_attn->tcp_udp_chksum_fail, - rx_attn->ip_chksum_fail, - rx_attn->sa_idx_invalid, - rx_attn->da_idx_invalid, - rx_attn->reserved_1b, - rx_attn->rx_in_tx_decrypt_byp); - - hal_verbose_debug("rx_attention tlv (2/2) - " - "encrypt_required: %x " - "directed: %x " - "buffer_fragment: %x " - "mpdu_length_err: %x " - "tkip_mic_err: %x " - "decrypt_err: %x " - "unencrypted_frame_err: %x " - "fcs_err: %x " - "flow_idx_timeout: %x " - "flow_idx_invalid: %x " - "wifi_parser_error: %x " - "amsdu_parser_error: %x " - "sa_idx_timeout: %x " - "da_idx_timeout: %x " - "msdu_limit_error: %x " - "da_is_valid: %x " - "da_is_mcbc: %x " - "sa_is_valid: %x " - "decrypt_status_code: %x " - "rx_bitmap_not_updated: %x " - "reserved_2: %x " - "msdu_done: %x ", - rx_attn->encrypt_required, - rx_attn->directed, - rx_attn->buffer_fragment, - rx_attn->mpdu_length_err, - rx_attn->tkip_mic_err, - rx_attn->decrypt_err, - rx_attn->unencrypted_frame_err, - rx_attn->fcs_err, - rx_attn->flow_idx_timeout, - rx_attn->flow_idx_invalid, - rx_attn->wifi_parser_error, - rx_attn->amsdu_parser_error, - rx_attn->sa_idx_timeout, - rx_attn->da_idx_timeout, - rx_attn->msdu_limit_error, - rx_attn->da_is_valid, - rx_attn->da_is_mcbc, - rx_attn->sa_is_valid, - rx_attn->decrypt_status_code, - rx_attn->rx_bitmap_not_updated, - rx_attn->reserved_2, - rx_attn->msdu_done); -} - -/** - * hal_rx_dump_mpdu_end_tlv: dump RX mpdu_end TLV in structured - * human readable format. - * @mpdu_end: pointer the mpdu_end TLV in pkt. - * @dbg_level: log level. - * - * Return: void - */ -static inline void hal_rx_dump_mpdu_end_tlv(struct rx_mpdu_end *mpdu_end, - uint8_t dbg_level) -{ - hal_verbose_debug("rx_mpdu_end tlv - " - "rxpcu_mpdu_filter_in_category: %x " - "sw_frame_group_id: %x " - "phy_ppdu_id: %x " - "unsup_ktype_short_frame: %x " - "rx_in_tx_decrypt_byp: %x " - "overflow_err: %x " - "mpdu_length_err: %x " - "tkip_mic_err: %x " - "decrypt_err: %x " - "unencrypted_frame_err: %x " - "pn_fields_contain_valid_info: %x " - "fcs_err: %x " - "msdu_length_err: %x " - "rxdma0_destination_ring: %x " - "rxdma1_destination_ring: %x " - "decrypt_status_code: %x " - "rx_bitmap_not_updated: %x ", - mpdu_end->rxpcu_mpdu_filter_in_category, - mpdu_end->sw_frame_group_id, - mpdu_end->phy_ppdu_id, - mpdu_end->unsup_ktype_short_frame, - mpdu_end->rx_in_tx_decrypt_byp, - mpdu_end->overflow_err, - mpdu_end->mpdu_length_err, - mpdu_end->tkip_mic_err, - mpdu_end->decrypt_err, - mpdu_end->unencrypted_frame_err, - mpdu_end->pn_fields_contain_valid_info, - mpdu_end->fcs_err, - mpdu_end->msdu_length_err, - mpdu_end->rxdma0_destination_ring, - mpdu_end->rxdma1_destination_ring, - mpdu_end->decrypt_status_code, - mpdu_end->rx_bitmap_not_updated); -} - -#ifdef NO_RX_PKT_HDR_TLV -static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs, - uint8_t dbg_level) -{ -} -#else -/** - * hal_rx_dump_pkt_hdr_tlv: dump RX pkt header TLV in hex format - * @pkt_tlvs: pointer the pkt_hdr_tlv in pkt. - * @dbg_level: log level. - * - * Return: void - */ -static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs, - uint8_t dbg_level) -{ - struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv; - - hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv" - "\n---------------\nphy_ppdu_id %d ", - pkt_hdr_tlv->phy_ppdu_id); - hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128); -} -#endif - #define HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(_rx_mpdu_info) \ (_HAL_MS((*_OFFSET_TO_WORD_PTR(_rx_mpdu_info, \ RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_OFFSET)), \ diff --git a/hal/wifi3.0/wcn6450/hal_wcn6450.c b/hal/wifi3.0/wcn6450/hal_wcn6450.c index 3c62cc1f4c..78e506f1ae 100644 --- a/hal/wifi3.0/wcn6450/hal_wcn6450.c +++ b/hal/wifi3.0/wcn6450/hal_wcn6450.c @@ -533,15 +533,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6450(void *rx_tlv_hdr, /** * hal_rx_dump_msdu_start_tlv_6450() : dump RX msdu_start TLV in structured - * human readable format. - * @msdustart: pointer the msdu_start TLV in pkt. + * human readable format. + * @pkttlvs: pointer to pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_start_tlv_6450(void *msdustart, uint8_t dbg_level) +static void hal_rx_dump_msdu_start_tlv_6450(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_start *msdu_start = + &pkt_tlvs->msdu_start_tlv.rx_msdu_start; hal_verbose_debug( "rx_msdu_start tlv (1/2) - " @@ -610,16 +612,17 @@ static void hal_rx_dump_msdu_start_tlv_6450(void *msdustart, uint8_t dbg_level) /** * hal_rx_dump_msdu_end_tlv_6450: dump RX msdu_end TLV in structured - * human readable format. - * @msduend: pointer the msdu_end TLV in pkt. + * human readable format. + * @pkttlvs: pointer to pkttlvs. * @dbg_level: log level. * * Return: void */ -static void hal_rx_dump_msdu_end_tlv_6450(void *msduend, +static void hal_rx_dump_msdu_end_tlv_6450(void *pkttlvs, uint8_t dbg_level) { - struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend; + struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs; + struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end; __QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP, "rx_msdu_end tlv (1/3) - " @@ -1813,9 +1816,20 @@ static void hal_hw_txrx_ops_attach_wcn6450(struct hal_soc *hal_soc) hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6450; hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv = hal_rx_proc_phyrx_other_receive_info_tlv_6450; + + hal_soc->ops->hal_rx_dump_msdu_end_tlv = + hal_rx_dump_msdu_end_tlv_6450; + hal_soc->ops->hal_rx_dump_rx_attention_tlv = + hal_rx_dump_rx_attention_tlv_generic_rh; hal_soc->ops->hal_rx_dump_msdu_start_tlv = - hal_rx_dump_msdu_start_tlv_6450; - hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6450; + hal_rx_dump_msdu_start_tlv_6450; + hal_soc->ops->hal_rx_dump_mpdu_start_tlv = + hal_rx_dump_mpdu_start_tlv_generic_rh; + hal_soc->ops->hal_rx_dump_mpdu_end_tlv = + hal_rx_dump_mpdu_end_tlv_generic_rh; + hal_soc->ops->hal_rx_dump_pkt_hdr_tlv = + hal_rx_dump_pkt_hdr_tlv_generic_rh; + hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6450; hal_soc->ops->hal_rx_mpdu_start_tid_get = hal_rx_mpdu_start_tid_get_6450; @@ -1833,8 +1847,6 @@ static void hal_hw_txrx_ops_attach_wcn6450(struct hal_soc *hal_soc) hal_rx_status_get_tlv_info_generic_rh; hal_soc->ops->hal_rx_wbm_err_info_get = hal_rx_wbm_err_info_get_6450; - hal_soc->ops->hal_rx_dump_mpdu_start_tlv = - hal_rx_dump_mpdu_start_tlv_generic_rh; hal_soc->ops->hal_tx_set_pcp_tid_map = hal_tx_set_pcp_tid_map_generic_rh; hal_soc->ops->hal_tx_update_pcp_tid_map =