diff --git a/dp/wifi3.0/dp_main.c b/dp/wifi3.0/dp_main.c index 472d0d6b44..34263b5368 100644 --- a/dp/wifi3.0/dp_main.c +++ b/dp/wifi3.0/dp_main.c @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -75,6 +76,9 @@ module_param(napi_budget, uint, 0644); MODULE_PARM_DESC(napi_budget, "tasklet mode: more than 0xffff , napi budget if <= 0xffff"); +bool rx_hash = 1; +qdf_declare_param(rx_hash, bool); + /** * default_dscp_tid_map - Default DSCP-TID mapping * @@ -5277,6 +5281,8 @@ void *dp_soc_attach_wifi3(void *osif_soc, void *hif_handle, goto fail2; } + wlan_cfg_set_rx_hash(soc->wlan_cfg_ctx, rx_hash); + if (soc->cdp_soc.ol_ops->get_dp_cfg_param) { int ret = soc->cdp_soc.ol_ops->get_dp_cfg_param(soc, CDP_CFG_MAX_PEER_ID); diff --git a/hal/wifi3.0/hal_rx.c b/hal/wifi3.0/hal_rx.c index d1fef97357..a3da231215 100644 --- a/hal/wifi3.0/hal_rx.c +++ b/hal/wifi3.0/hal_rx.c @@ -276,6 +276,28 @@ void hal_reo_setup(void *hal_soc, * 7: NOT_USED. */ if (reo_params->rx_hash_enabled) { + HAL_REG_WRITE(soc, + HWIO_REO_R0_DESTINATION_RING_CTRL_IX_0_ADDR( + SEQ_WCSS_UMAC_REO_REG_OFFSET), + reo_params->remap1); + + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, + FL("HWIO_REO_R0_DESTINATION_RING_CTRL_IX_0_ADDR 0x%x\n"), + HAL_REG_READ(soc, + HWIO_REO_R0_DESTINATION_RING_CTRL_IX_0_ADDR( + SEQ_WCSS_UMAC_REO_REG_OFFSET))); + + HAL_REG_WRITE(soc, + HWIO_REO_R0_DESTINATION_RING_CTRL_IX_1_ADDR( + SEQ_WCSS_UMAC_REO_REG_OFFSET), + reo_params->remap2); + + QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR, + FL("HWIO_REO_R0_DESTINATION_RING_CTRL_IX_1_ADDR 0x%x\n"), + HAL_REG_READ(soc, + HWIO_REO_R0_DESTINATION_RING_CTRL_IX_1_ADDR( + SEQ_WCSS_UMAC_REO_REG_OFFSET))); + HAL_REG_WRITE(soc, HWIO_REO_R0_DESTINATION_RING_CTRL_IX_2_ADDR( SEQ_WCSS_UMAC_REO_REG_OFFSET), diff --git a/wlan_cfg/wlan_cfg.c b/wlan_cfg/wlan_cfg.c index 81a7d0ed7e..645675b7d8 100644 --- a/wlan_cfg/wlan_cfg.c +++ b/wlan_cfg/wlan_cfg.c @@ -605,6 +605,11 @@ bool wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg) return cfg->lro_enabled; } +void wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt *cfg, bool val) +{ + cfg->rx_hash = val; +} + bool wlan_cfg_is_rx_hash_enabled(struct wlan_cfg_dp_soc_ctxt *cfg) { return cfg->rx_hash; diff --git a/wlan_cfg/wlan_cfg.h b/wlan_cfg/wlan_cfg.h index 6a439c41ea..0854a2570f 100644 --- a/wlan_cfg/wlan_cfg.h +++ b/wlan_cfg/wlan_cfg.h @@ -503,6 +503,13 @@ bool wlan_cfg_is_lro_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); */ bool wlan_cfg_is_rx_hash_enabled(struct wlan_cfg_dp_soc_ctxt *cfg); +/* + * wlan_cfg_set_rx_hash - set rx hash enabled/disabled + * @wlan_cfg_soc_ctx + * @rx_hash + */ +void wlan_cfg_set_rx_hash(struct wlan_cfg_dp_soc_ctxt *cfg, bool rx_hash); + /* * wlan_cfg_get_dp_pdev_nss_enabled - Return pdev nss enabled/disabled * @wlan_cfg_pdev_ctx