diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index 6513c4f478..695b0a6855 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/dp/wifi3.0/dp_htt.c @@ -346,7 +346,7 @@ int htt_srng_setup(void *htt_soc, int mac_id, void *hal_srng, HTT_H2T_MSG_TYPE_SET(*msg_word, HTT_H2T_MSG_TYPE_SRING_SETUP); if ((htt_ring_type == HTT_SW_TO_HW_RING) || - (htt_ring_type == HTT_HW_TO_SW_RING)) + (htt_ring_type == HTT_HW_TO_SW_RING)) HTT_SRING_SETUP_PDEV_ID_SET(*msg_word, DP_SW2HW_MACID(mac_id)); else @@ -572,8 +572,16 @@ int htt_h2t_rx_ring_cfg(void *htt_soc, int pdev_id, void *hal_srng, /* word 0 */ *msg_word = 0; HTT_H2T_MSG_TYPE_SET(*msg_word, HTT_H2T_MSG_TYPE_RX_RING_SELECTION_CFG); - HTT_RX_RING_SELECTION_CFG_PDEV_ID_SET(*msg_word, - DP_SW2HW_MACID(pdev_id)); + + /* + * pdev_id is indexed from 0 whereas mac_id is indexed from 1 + * SW_TO_SW and SW_TO_HW rings are unaffected by this + */ + if (htt_ring_type == HTT_SW_TO_SW_RING || + htt_ring_type == HTT_SW_TO_HW_RING) + HTT_RX_RING_SELECTION_CFG_PDEV_ID_SET(*msg_word, + DP_SW2HW_MACID(pdev_id)); + /* TODO: Discuss with FW on changing this to unique ID and using * htt_ring_type to send the type of ring */ diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 74204fee6b..b6d0558d5e 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -1616,6 +1616,23 @@ static void dp_rxdma_ring_config(struct dp_soc *soc) RXDMA_BUF); mac_id++; } + + /* Configure monitor mode rings */ + htt_srng_setup(soc->htt_handle, i, + pdev->rxdma_mon_buf_ring.hal_srng, + RXDMA_MONITOR_BUF); + + htt_srng_setup(soc->htt_handle, i, + pdev->rxdma_mon_dst_ring.hal_srng, + RXDMA_MONITOR_DST); + + htt_srng_setup(soc->htt_handle, i, + pdev->rxdma_mon_status_ring.hal_srng, + RXDMA_MONITOR_STATUS); + + htt_srng_setup(soc->htt_handle, i, + pdev->rxdma_mon_desc_ring.hal_srng, + RXDMA_MONITOR_DESC); } } }