From b42ee01aec727908e3a62303336341e226e8c6fe Mon Sep 17 00:00:00 2001 From: Aniruddha Paul Date: Thu, 19 Nov 2020 13:14:19 +0530 Subject: [PATCH] qcacmn: Change the DST_ALT_IND_0 to WBM from REO2TCL Change the alternate indication_0 to WBM instead of REO2TCL. This is done such that, WBM takes care of the of the de-linking of the link descriptors and release the buffers to the respective WBM rings. WBM should take care of the NULL entries if present in link descriptor as WBM internal errors. Change-Id: Ie084e54861bb4611a45cd724bb32d211c62f4f21 --- dp/wifi3.0/dp_main.c | 3 +++ hal/wifi3.0/hal_internal.h | 4 +++- hal/wifi3.0/qca5018/hal_5018_rx.h | 14 ++++++++++++++ hal/wifi3.0/qca8074v1/hal_8074v1_rx.h | 14 ++++++++++++++ hal/wifi3.0/qca8074v2/hal_8074v2_rx.h | 14 ++++++++++++++ hal/wifi3.0/qcn9000/hal_9000_rx.h | 14 ++++++++++++++ hal/wifi3.0/qcn9100/hal_qcn9100_rx.h | 14 ++++++++++++++ 7 files changed, 76 insertions(+), 1 deletion(-) 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) \