diff --git a/dp/wifi3.0/dp_rx_mon_dest.c b/dp/wifi3.0/dp_rx_mon_dest.c index 501b7cb170..feeb81bdc1 100644 --- a/dp/wifi3.0/dp_rx_mon_dest.c +++ b/dp/wifi3.0/dp_rx_mon_dest.c @@ -37,11 +37,25 @@ dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev, { struct hal_rx_ppdu_info *ppdu_info = &pdev->ppdu_info; - if (pdev->tx_capture_enabled != CDP_TX_ENH_CAPTURE_DISABLED && - ppdu_info->sw_frame_group_id == HAL_MPDU_SW_FRAME_GROUP_CTRL_NDPA) + if (pdev->tx_capture_enabled + == CDP_TX_ENH_CAPTURE_DISABLED) + return; + + if ((ppdu_info->sw_frame_group_id == + HAL_MPDU_SW_FRAME_GROUP_CTRL_NDPA) || + (ppdu_info->sw_frame_group_id == + HAL_MPDU_SW_FRAME_GROUP_CTRL_BAR)) dp_handle_tx_capture_from_dest(soc, pdev, mon_mpdu); } +static void +dp_tx_capture_get_user_id(struct dp_pdev *dp_pdev, void *rx_desc_tlv) +{ + if (dp_pdev->tx_capture_enabled + != CDP_TX_ENH_CAPTURE_DISABLED) + dp_pdev->ppdu_info.rx_info.user_id = + HAL_RX_HW_DESC_MPDU_USER_ID(rx_desc_tlv); +} #else static inline void dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev, @@ -49,6 +63,10 @@ dp_handle_tx_capture(struct dp_soc *soc, struct dp_pdev *pdev, { } +static void +dp_tx_capture_get_user_id(struct dp_pdev *dp_pdev, void *rx_desc_tlv) +{ +} #endif @@ -299,6 +317,10 @@ dp_rx_mon_mpdu_pop(struct dp_soc *soc, uint32_t mac_id, *ppdu_id = msdu_ppdu_id; return rx_bufs_used; } + + dp_tx_capture_get_user_id(dp_pdev, + rx_desc_tlv); + dp_pdev->mon_last_linkdesc_paddr = buf_info.paddr; } diff --git a/hal/wifi3.0/hal_api_mon.h b/hal/wifi3.0/hal_api_mon.h index 5913d9a7ab..eff3a7aced 100644 --- a/hal/wifi3.0/hal_api_mon.h +++ b/hal/wifi3.0/hal_api_mon.h @@ -224,6 +224,25 @@ bool HAL_RX_HW_DESC_MPDU_VALID(void *hw_desc_addr) return tlv_tag == WIFIRX_MPDU_START_E ? true : false; } +/* + * HAL_RX_HW_DESC_MPDU_VALID() - check MPDU start TLV user id in MPDU + * start TLV of Hardware TLV descriptor + * @hw_desc_addr: Hardware desciptor address + * + * Return: unit32_t: user id + */ +static inline +uint32_t HAL_RX_HW_DESC_MPDU_USER_ID(void *hw_desc_addr) +{ + struct rx_mon_pkt_tlvs *rx_desc = + (struct rx_mon_pkt_tlvs *)hw_desc_addr; + uint32_t user_id; + + user_id = HAL_RX_GET_USER_TLV32_USERID( + &rx_desc->mpdu_start_tlv); + + return user_id; +} /* TODO: Move all Rx descriptor functions to hal_rx.h to avoid duplication */ @@ -544,12 +563,12 @@ struct mon_rx_info { uint16_t qos_control; uint8_t mac_addr1_valid; uint8_t mac_addr1[QDF_MAC_ADDR_SIZE]; + uint32_t user_id; }; struct mon_rx_user_info { uint16_t qos_control; uint8_t qos_control_info_valid; - uint32_t bar_frame:1; }; struct hal_rx_ppdu_info {