From 4c183b84c63905b67539b3995596c11eb4fbc908 Mon Sep 17 00:00:00 2001 From: Tallapragada Kalyan Date: Wed, 13 Sep 2017 23:48:14 +0530 Subject: [PATCH] qcacmn: Configure REO dest ring ctrl register to address rng mapping non UDP TCP flows earlier we configured only REO_R0_DESTINATION_RING_CTRL_IX_2 and REO_R0_DESTINATION_RING_CTRL_IX_3, but we now configure REO_R0_DESTINATION_RING_CTRL_IX_0 and REO_R0_DESTINATION_RING_CTRL_IX_1. Also added module param for rx hash steering. Change-Id: I690aa395bc19e49df3687be2e70eaaad4994003e --- dp/wifi3.0/dp_main.c | 6 ++++++ hal/wifi3.0/hal_rx.c | 22 ++++++++++++++++++++++ wlan_cfg/wlan_cfg.c | 5 +++++ wlan_cfg/wlan_cfg.h | 7 +++++++ 4 files changed, 40 insertions(+) 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