Răsfoiți Sursa

qcacmn: Set default REO of radio through ini

Set default REO of radio through ini parameter

Change-Id: I576f3ddffe4d18b955099e0b75ecb297228475da
Radha Krishna Simha Jiguru 4 ani în urmă
părinte
comite
3048f53867
4 a modificat fișierele cu 107 adăugiri și 2 ștergeri
  1. 28 1
      dp/wifi3.0/dp_main.c
  2. 32 1
      wlan_cfg/cfg_dp.h
  3. 20 0
      wlan_cfg/wlan_cfg.c
  4. 27 0
      wlan_cfg/wlan_cfg.h

+ 28 - 1
dp/wifi3.0/dp_main.c

@@ -13400,6 +13400,33 @@ static void dp_soc_cfg_attach(struct dp_soc *soc)
 	}
 }
 
+static inline  void dp_pdev_set_default_reo(struct dp_pdev *pdev)
+{
+	struct dp_soc *soc = pdev->soc;
+
+	switch (pdev->pdev_id) {
+	case 0:
+		pdev->reo_dest =
+			wlan_cfg_radio0_default_reo_get(soc->wlan_cfg_ctx);
+		break;
+
+	case 1:
+		pdev->reo_dest =
+			wlan_cfg_radio1_default_reo_get(soc->wlan_cfg_ctx);
+		break;
+
+	case 2:
+		pdev->reo_dest =
+			wlan_cfg_radio2_default_reo_get(soc->wlan_cfg_ctx);
+		break;
+
+	default:
+		QDF_TRACE(QDF_MODULE_ID_DP, QDF_TRACE_LEVEL_ERROR,
+			  "Invalid pdev_id %d for reo selection", pdev->pdev_id);
+		break;
+	}
+}
+
 static inline QDF_STATUS dp_pdev_init(struct cdp_soc_t *txrx_soc,
 				      HTC_HANDLE htc_handle,
 				      qdf_device_t qdf_osdev,
@@ -13519,7 +13546,7 @@ static inline QDF_STATUS dp_pdev_init(struct cdp_soc_t *txrx_soc,
 	dp_pcp_tid_map_setup(pdev);
 
 	/* set the reo destination during initialization */
-	pdev->reo_dest = pdev->pdev_id + 1;
+	dp_pdev_set_default_reo(pdev);
 
 	/*
 	 * initialize ppdu tlv list

+ 32 - 1
wlan_cfg/cfg_dp.h

@@ -367,6 +367,13 @@
 #define WLAN_CFG_NUM_REO_RINGS_MAP_MIN 0x1
 #define WLAN_CFG_NUM_REO_RINGS_MAP_MAX 0xF
 
+#define WLAN_CFG_RADIO_0_DEFAULT_REO 0x1
+#define WLAN_CFG_RADIO_1_DEFAULT_REO 0x2
+#define WLAN_CFG_RADIO_2_DEFAULT_REO 0x3
+
+#define WLAN_CFG_RADIO_DEFAULT_REO_MIN 0x1
+#define WLAN_CFG_RADIO_DEFAULT_REO_MAX 0x4
+
 /* DP INI Declerations */
 #define CFG_DP_HTT_PACKET_TYPE \
 		CFG_INI_UINT("dp_htt_packet_type", \
@@ -946,6 +953,27 @@
 		WLAN_CFG_NUM_REO_RINGS_MAP, \
 		CFG_VALUE_OR_DEFAULT, "REO Destination Rings Mapping")
 
+#define CFG_DP_RX_RADIO_0_DEFAULT_REO \
+		CFG_INI_UINT("dp_rx_radio0_default_reo", \
+		WLAN_CFG_RADIO_DEFAULT_REO_MIN, \
+		WLAN_CFG_RADIO_DEFAULT_REO_MAX, \
+		WLAN_CFG_RADIO_0_DEFAULT_REO, \
+		CFG_VALUE_OR_DEFAULT, "Radio0 to REO destination default mapping")
+
+#define CFG_DP_RX_RADIO_1_DEFAULT_REO \
+		CFG_INI_UINT("dp_rx_radio1_default_reo", \
+		WLAN_CFG_RADIO_DEFAULT_REO_MIN, \
+		WLAN_CFG_RADIO_DEFAULT_REO_MAX, \
+		WLAN_CFG_RADIO_1_DEFAULT_REO, \
+		CFG_VALUE_OR_DEFAULT, "Radio1 to REO destination default mapping")
+
+#define CFG_DP_RX_RADIO_2_DEFAULT_REO \
+		CFG_INI_UINT("dp_rx_radio2_default_reo", \
+		WLAN_CFG_RADIO_DEFAULT_REO_MIN, \
+		WLAN_CFG_RADIO_DEFAULT_REO_MAX, \
+		WLAN_CFG_RADIO_2_DEFAULT_REO, \
+		CFG_VALUE_OR_DEFAULT, "Radio2 to REO destination default mapping")
+
 #define CFG_DP_PEER_EXT_STATS \
 		CFG_INI_BOOL("peer_ext_stats", \
 		false, "Peer extended stats")
@@ -1086,5 +1114,8 @@
 		CFG(CFG_DP_POLL_MODE_ENABLE) \
 		CFG(CFG_DP_SWLM_ENABLE) \
 		CFG(CFG_DP_TX_PER_PKT_VDEV_ID_CHECK) \
-		CFG(CFG_DP_RX_FST_IN_CMEM)
+		CFG(CFG_DP_RX_FST_IN_CMEM) \
+		CFG(CFG_DP_RX_RADIO_0_DEFAULT_REO) \
+		CFG(CFG_DP_RX_RADIO_1_DEFAULT_REO) \
+		CFG(CFG_DP_RX_RADIO_2_DEFAULT_REO)
 #endif /* _CFG_DP_H_ */

+ 20 - 0
wlan_cfg/wlan_cfg.c

@@ -624,6 +624,12 @@ wlan_cfg_soc_attach(struct cdp_ctrl_objmgr_psoc *psoc)
 	wlan_cfg_ctx->fst_in_cmem = cfg_get(psoc, CFG_DP_RX_FST_IN_CMEM);
 	wlan_cfg_ctx->tx_per_pkt_vdev_id_check =
 			cfg_get(psoc, CFG_DP_TX_PER_PKT_VDEV_ID_CHECK);
+	wlan_cfg_ctx->radio0_rx_default_reo =
+			cfg_get(psoc, CFG_DP_RX_RADIO_0_DEFAULT_REO);
+	wlan_cfg_ctx->radio1_rx_default_reo =
+			cfg_get(psoc, CFG_DP_RX_RADIO_1_DEFAULT_REO);
+	wlan_cfg_ctx->radio2_rx_default_reo =
+			cfg_get(psoc, CFG_DP_RX_RADIO_2_DEFAULT_REO);
 
 	return wlan_cfg_ctx;
 }
@@ -1459,3 +1465,17 @@ bool wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt *cfg)
 	return false;
 }
 #endif
+uint8_t wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg)
+{
+	return cfg->radio0_rx_default_reo;
+}
+
+uint8_t wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg)
+{
+	return cfg->radio1_rx_default_reo;
+}
+
+uint8_t wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg)
+{
+	return cfg->radio2_rx_default_reo;
+}

+ 27 - 0
wlan_cfg/wlan_cfg.h

@@ -303,6 +303,9 @@ struct wlan_cfg_dp_soc_ctxt {
 	uint8_t is_swlm_enabled;
 	bool fst_in_cmem;
 	bool tx_per_pkt_vdev_id_check;
+	uint8_t radio0_rx_default_reo;
+	uint8_t radio1_rx_default_reo;
+	uint8_t radio2_rx_default_reo;
 };
 
 /**
@@ -1475,3 +1478,27 @@ bool wlan_cfg_is_fst_in_cmem_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
 bool wlan_cfg_is_swlm_enabled(struct wlan_cfg_dp_soc_ctxt *cfg);
 
 #endif
+
+/**
+ * wlan_cfg_radio0_default_reo_get -  Get Radio0 default REO
+ * @cfg: soc configuration context
+ *
+ * Return: .
+ */
+uint8_t wlan_cfg_radio0_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
+
+/**
+ * wlan_cfg_radio1_default_reo_get - Get Radio1 default REO
+ * @cfg: soc configuration context
+ *
+ * Return: .
+ */
+uint8_t wlan_cfg_radio1_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);
+
+/**
+ * wlan_cfg_radio2_default_reo_get() - Get Radio2 default REO
+ * @cfg: soc configuration context
+ *
+ * Return: .
+ */
+uint8_t wlan_cfg_radio2_default_reo_get(struct wlan_cfg_dp_soc_ctxt *cfg);