diff --git a/dp/wifi3.0/dp_ipa.c b/dp/wifi3.0/dp_ipa.c index af27dc554e..9f9cc900f3 100644 --- a/dp/wifi3.0/dp_ipa.c +++ b/dp/wifi3.0/dp_ipa.c @@ -403,6 +403,7 @@ int dp_ipa_ring_resource_setup(struct dp_soc *soc, struct hal_srng_params srng_params; qdf_dma_addr_t hp_addr; unsigned long addr_offset, dev_base_paddr; + uint32_t ix0; if (!wlan_cfg_is_ipa_enabled(soc->wlan_cfg_ctx)) return QDF_STATUS_SUCCESS; @@ -518,6 +519,21 @@ int dp_ipa_ring_resource_setup(struct dp_soc *soc, srng_params.num_entries, soc->ipa_uc_rx_rsc.ipa_rx_refill_buf_ring_size); + /* + * Set DEST_RING_MAPPING_4 to SW2 as default value for + * DESTINATION_RING_CTRL_IX_0. + */ + ix0 = HAL_REO_REMAP_IX0(REO_REMAP_TCL, 0) | + HAL_REO_REMAP_IX0(REO_REMAP_SW1, 1) | + HAL_REO_REMAP_IX0(REO_REMAP_SW2, 2) | + HAL_REO_REMAP_IX0(REO_REMAP_SW3, 3) | + HAL_REO_REMAP_IX0(REO_REMAP_SW2, 4) | + HAL_REO_REMAP_IX0(REO_REMAP_RELEASE, 5) | + HAL_REO_REMAP_IX0(REO_REMAP_FW, 6) | + HAL_REO_REMAP_IX0(REO_REMAP_FW, 7); + + hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, NULL, NULL); + return 0; } @@ -776,10 +792,13 @@ QDF_STATUS dp_ipa_enable_autonomy(struct cdp_pdev *ppdev) HAL_REO_REMAP_IX2(REO_REMAP_SW4, 21) | HAL_REO_REMAP_IX2(REO_REMAP_SW4, 22) | HAL_REO_REMAP_IX2(REO_REMAP_SW4, 23); - } - hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, - &ix2, &ix2); + hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, + &ix2, &ix2); + } else { + hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, + NULL, NULL); + } return QDF_STATUS_SUCCESS; } @@ -818,6 +837,9 @@ QDF_STATUS dp_ipa_disable_autonomy(struct cdp_pdev *ppdev) hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, &ix2, &ix3); + } else { + hal_reo_read_write_ctrl_ix(soc->hal_soc, false, &ix0, NULL, + NULL, NULL); } return QDF_STATUS_SUCCESS;