diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 8408c5d6ec..bb1048adf6 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -12181,6 +12181,9 @@ void *dp_soc_init(struct dp_soc *soc, HTC_HANDLE htc_handle, */ dp_reo_frag_dst_set(soc, &reo_params.frag_dst_ring); + if (wlan_cfg_get_dp_soc_nss_cfg(soc->wlan_cfg_ctx)) + reo_params.alt_dst_ind_0 = REO_REMAP_RELEASE; + hal_reo_setup(soc->hal_soc, &reo_params); hal_reo_set_err_dst_remap(soc->hal_soc); diff --git a/hal/wifi3.0/hal_internal.h b/hal/wifi3.0/hal_internal.h index c6fc8c910c..1c3bcc069c 100644 --- a/hal/wifi3.0/hal_internal.h +++ b/hal/wifi3.0/hal_internal.h @@ -471,8 +471,10 @@ struct hal_reo_params { uint32_t remap2; /** fragment destination ring */ uint8_t frag_dst_ring; + /* Destination for alternate */ + uint8_t alt_dst_ind_0; /** padding */ - uint8_t padding[3]; + uint8_t padding[2]; }; struct hal_hw_txrx_ops { diff --git a/hal/wifi3.0/qca5018/hal_5018_rx.h b/hal/wifi3.0/qca5018/hal_5018_rx.h index 785caaff66..8fc28d032b 100644 --- a/hal/wifi3.0/qca5018/hal_5018_rx.h +++ b/hal/wifi3.0/qca5018/hal_5018_rx.h @@ -80,6 +80,20 @@ HWIO_REO_R0_MISC_CTL_ADDR( \ SEQ_WCSS_UMAC_REO_REG_OFFSET), \ (reg_val)); \ + (reg_val) = \ + HAL_REG_READ((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET)); \ + (reg_val) &= \ + ~(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_DEST_RING_ALT_MAPPING_0_BMSK); \ + (reg_val) |= \ + HAL_SM(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0, \ + DEST_RING_ALT_MAPPING_0, \ + (reo_params)->alt_dst_ind_0); \ + HAL_REG_WRITE((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET), \ + (reg_val)); \ } while (0) #define HAL_RX_MSDU_DESC_INFO_GET(msdu_details_ptr) \ diff --git a/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h b/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h index 6df3e2d799..b900846bfd 100644 --- a/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h +++ b/hal/wifi3.0/qca8074v1/hal_8074v1_rx.h @@ -277,6 +277,20 @@ HWIO_REO_R0_GENERAL_ENABLE_ADDR( \ SEQ_WCSS_UMAC_REO_REG_OFFSET),\ (reg_val)); \ + (reg_val) = \ + HAL_REG_READ((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET)); \ + (reg_val) &= \ + ~(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_DEST_RING_ALT_MAPPING_0_BMSK); \ + (reg_val) |= \ + HAL_SM(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0, \ + DEST_RING_ALT_MAPPING_0, \ + (reo_params)->alt_dst_ind_0); \ + HAL_REG_WRITE((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET), \ + (reg_val)); \ } while (0) #define HAL_RX_MSDU_DESC_INFO_GET(msdu_details_ptr) \ diff --git a/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h b/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h index 8ceae38232..3639ecfd84 100644 --- a/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h +++ b/hal/wifi3.0/qca8074v2/hal_8074v2_rx.h @@ -286,6 +286,20 @@ HWIO_REO_R0_GENERAL_ENABLE_ADDR( \ SEQ_WCSS_UMAC_REO_REG_OFFSET), \ (reg_val)); \ + (reg_val) = \ + HAL_REG_READ((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET)); \ + (reg_val) &= \ + ~(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_DEST_RING_ALT_MAPPING_0_BMSK); \ + (reg_val) |= \ + HAL_SM(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0, \ + DEST_RING_ALT_MAPPING_0, \ + (reo_params)->alt_dst_ind_0); \ + HAL_REG_WRITE((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET), \ + (reg_val)); \ } while (0) #define HAL_RX_MSDU_DESC_INFO_GET(msdu_details_ptr) \ diff --git a/hal/wifi3.0/qcn9000/hal_9000_rx.h b/hal/wifi3.0/qcn9000/hal_9000_rx.h index 6d2ba46060..3e6a166d46 100644 --- a/hal/wifi3.0/qcn9000/hal_9000_rx.h +++ b/hal/wifi3.0/qcn9000/hal_9000_rx.h @@ -75,6 +75,20 @@ HWIO_REO_R0_GENERAL_ENABLE_ADDR( \ SEQ_WCSS_UMAC_REO_REG_OFFSET), \ (reg_val)); \ + (reg_val) = \ + HAL_REG_READ((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET)); \ + (reg_val) &= \ + ~(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_DEST_RING_ALT_MAPPING_0_BMSK); \ + (reg_val) |= \ + HAL_SM(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0, \ + DEST_RING_ALT_MAPPING_0, \ + (reo_params)->alt_dst_ind_0); \ + HAL_REG_WRITE((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET), \ + (reg_val)); \ } while (0) #define HAL_RX_MSDU_DESC_INFO_GET(msdu_details_ptr) \ diff --git a/hal/wifi3.0/qcn9100/hal_qcn9100_rx.h b/hal/wifi3.0/qcn9100/hal_qcn9100_rx.h index 31f2c11262..cd544050ae 100644 --- a/hal/wifi3.0/qcn9100/hal_qcn9100_rx.h +++ b/hal/wifi3.0/qcn9100/hal_qcn9100_rx.h @@ -87,6 +87,20 @@ HWIO_REO_R0_MISC_CTL_ADDR( \ SEQ_WCSS_UMAC_REO_REG_OFFSET), \ (reg_val)); \ + (reg_val) = \ + HAL_REG_READ((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET)); \ + (reg_val) &= \ + ~(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_DEST_RING_ALT_MAPPING_0_BMSK); \ + (reg_val) |= \ + HAL_SM(HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0, \ + DEST_RING_ALT_MAPPING_0, \ + (reo_params)->alt_dst_ind_0); \ + HAL_REG_WRITE((soc), \ + HWIO_REO_R0_DESTINATION_RING_ALT_CTRL_IX_0_ADDR( \ + SEQ_WCSS_UMAC_REO_REG_OFFSET), \ + (reg_val)); \ } while (0) #define HAL_RX_MSDU_DESC_INFO_GET(msdu_details_ptr) \