diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index 44b9a96e39..19df42ac4e 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -550,7 +550,8 @@ int htt_srng_setup(struct htt_soc *soc, int mac_id, (uint64_t)tp_addr); break; case RXDMA_MONITOR_BUF: - htt_ring_id = HTT_RXDMA_MONITOR_BUF_RING; + htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc, + RXDMA_MONITOR_BUF); htt_ring_type = HTT_SW_TO_HW_RING; break; case RXDMA_MONITOR_STATUS: @@ -558,7 +559,8 @@ int htt_srng_setup(struct htt_soc *soc, int mac_id, htt_ring_type = HTT_SW_TO_HW_RING; break; case RXDMA_MONITOR_DST: - htt_ring_id = HTT_RXDMA_MONITOR_DEST_RING; + htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc, + RXDMA_MONITOR_DST); htt_ring_type = HTT_HW_TO_SW_RING; break; case RXDMA_MONITOR_DESC: @@ -905,7 +907,8 @@ int htt_h2t_rx_ring_cfg(struct htt_soc *htt_soc, int pdev_id, htt_ring_type = HTT_SW_TO_HW_RING; break; case RXDMA_MONITOR_BUF: - htt_ring_id = HTT_RXDMA_MONITOR_BUF_RING; + htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc, + RXDMA_MONITOR_BUF); htt_ring_type = HTT_SW_TO_HW_RING; break; case RXDMA_MONITOR_STATUS: @@ -913,7 +916,8 @@ int htt_h2t_rx_ring_cfg(struct htt_soc *htt_soc, int pdev_id, htt_ring_type = HTT_SW_TO_HW_RING; break; case RXDMA_MONITOR_DST: - htt_ring_id = HTT_RXDMA_MONITOR_DEST_RING; + htt_ring_id = dp_htt_get_mon_htt_ring_id(soc->dp_soc, + RXDMA_MONITOR_DST); htt_ring_type = HTT_HW_TO_SW_RING; break; case RXDMA_MONITOR_DESC: diff --git a/dp/wifi3.0/dp_htt.h b/dp/wifi3.0/dp_htt.h index cce061287a..1cc0817ea5 100644 --- a/dp/wifi3.0/dp_htt.h +++ b/dp/wifi3.0/dp_htt.h @@ -935,4 +935,39 @@ int htt_h2t_full_mon_cfg(struct htt_soc *htt_soc, QDF_STATUS dp_h2t_hw_vdev_stats_config_send(struct dp_soc *dpsoc, uint8_t pdev_id, bool enable, bool reset, uint64_t reset_bitmask); + +static inline enum htt_srng_ring_id +dp_htt_get_mon_htt_ring_id(struct dp_soc *soc, + enum hal_ring_type hal_ring_type) +{ + enum htt_srng_ring_id htt_srng_id = 0; + + if (wlan_cfg_get_txmon_hw_support(soc->wlan_cfg_ctx)) { + switch (hal_ring_type) { + case RXDMA_MONITOR_BUF: + htt_srng_id = HTT_RX_MON_HOST2MON_BUF_RING; + break; + case RXDMA_MONITOR_DST: + htt_srng_id = HTT_RX_MON_MON2HOST_DEST_RING; + break; + default: + dp_err("Invalid ring type %d ", hal_ring_type); + break; + } + } else { + switch (hal_ring_type) { + case RXDMA_MONITOR_BUF: + htt_srng_id = HTT_RXDMA_MONITOR_BUF_RING; + break; + case RXDMA_MONITOR_DST: + htt_srng_id = HTT_RXDMA_MONITOR_DEST_RING; + break; + default: + dp_err("Invalid ring type %d ", hal_ring_type); + break; + } + } + + return htt_srng_id; +} #endif /* _DP_HTT_H_ */