Просмотр исходного кода

qcacmn: Add a configure interface to get max_peers from OL_IF to DP

Currently max_peer value is hardcoded with DP wlan_cfg. This change adds
a generic interface to obtain a configuration parameter from OL_IF and
store in DP

Change-Id: Id437ab3bcd02fb1cbcbe8b56d55d19780af87066
CRs-Fixed: 2004658
Pamidipati, Vijay 7 лет назад
Родитель
Сommit
6b0d2a800c
6 измененных файлов с 36 добавлено и 2 удалено
  1. 5 0
      dp/inc/cdp_txrx_cfg.h
  2. 9 0
      dp/inc/cdp_txrx_cmn_struct.h
  3. 1 0
      dp/inc/cdp_txrx_ops.h
  4. 10 0
      dp/wifi3.0/dp_main.c
  5. 8 2
      wlan_cfg/wlan_cfg.c
  6. 3 0
      wlan_cfg/wlan_cfg.h

+ 5 - 0
dp/inc/cdp_txrx_cfg.h

@@ -254,4 +254,9 @@ static inline void cdp_cfg_set_flow_steering(ol_txrx_soc_handle soc,
 
 	return;
 }
+
+static inline void cdp_cfg_get_max_peer_id(ol_txrx_soc_handle soc,
+		struct cdp_cfg *cfg_pdev)
+{
+}
 #endif /* _CDP_TXRX_CFG_H_ */

+ 9 - 0
dp/inc/cdp_txrx_cmn_struct.h

@@ -89,6 +89,15 @@
 		WME_AC_VO)
 
 #define CDP_MAX_RX_RINGS 4
+
+/*
+ * DP configuration parameters
+ */
+enum cdp_cfg_param_type {
+	CDP_CFG_MAX_PEER_ID,
+	CDP_CFG_NUM_PARAMS
+};
+
 /*
  * htt_dbg_stats_type -
  * bit positions for each stats type within a stats type bitmask

+ 1 - 0
dp/inc/cdp_txrx_ops.h

@@ -615,6 +615,7 @@ struct ol_if_ops {
 			uint8_t vdev_id, uint8_t *peer_mac_addr);
 	int (*peer_unmap_event)(void *ol_soc_handle, uint16_t peer_id);
 
+	int (*get_dp_cfg_param)(void *ol_soc_handle, enum cdp_cfg_param_type param_num);
 
 	/* TODO: Add any other control path calls required to OL_IF/WMA layer */
 };

+ 10 - 0
dp/wifi3.0/dp_main.c

@@ -4037,6 +4037,16 @@ void *dp_soc_attach_wifi3(void *osif_soc, void *hif_handle,
 				FL("wlan_cfg_soc_attach failed"));
 		goto fail2;
 	}
+
+	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);
+
+		if (ret != -EINVAL) {
+			wlan_cfg_set_max_peer_id(soc->wlan_cfg_ctx, ret);
+		}
+	}
+
 	qdf_spinlock_create(&soc->peer_ref_mutex);
 
 	qdf_spinlock_create(&soc->reo_desc_freelist_lock);

+ 8 - 2
wlan_cfg/wlan_cfg.c

@@ -182,9 +182,10 @@ struct wlan_cfg_dp_pdev_ctxt {
  *
  * Return: wlan_cfg_ctx - Handle to Configuration context
  */
-struct wlan_cfg_dp_soc_ctxt *wlan_cfg_soc_attach(void)
+struct wlan_cfg_dp_soc_ctxt *wlan_cfg_soc_attach()
 {
 	int i = 0;
+
 	struct wlan_cfg_dp_soc_ctxt *wlan_cfg_ctx =
 		qdf_mem_malloc(sizeof(struct wlan_cfg_dp_soc_ctxt));
 
@@ -202,8 +203,8 @@ struct wlan_cfg_dp_soc_ctxt *wlan_cfg_soc_attach(void)
 	wlan_cfg_ctx->num_tx_ext_desc_pool = WLAN_CFG_NUM_TXEXT_DESC_POOL;
 	wlan_cfg_ctx->num_tx_desc = WLAN_CFG_NUM_TX_DESC;
 	wlan_cfg_ctx->num_tx_ext_desc = WLAN_CFG_NUM_TX_EXT_DESC;
-	wlan_cfg_ctx->max_peer_id = WLAN_CFG_MAX_PEER_ID;
 	wlan_cfg_ctx->htt_packet_type = WLAN_CFG_HTT_PKT_TYPE;
+	wlan_cfg_ctx->max_peer_id = WLAN_CFG_MAX_PEER_ID;
 
 	for (i = 0; i < WLAN_CFG_INT_NUM_CONTEXTS; i++) {
 		wlan_cfg_ctx->int_tx_ring_mask[i] = tx_ring_mask[i];
@@ -249,6 +250,11 @@ void wlan_cfg_set_num_contexts(struct wlan_cfg_dp_soc_ctxt *cfg, int num)
 	cfg->num_int_ctxts = num;
 }
 
+void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val)
+{
+	cfg->max_peer_id = val;;
+}
+
 void wlan_cfg_set_tx_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
 		int context, int mask)
 {

+ 3 - 0
wlan_cfg/wlan_cfg.h

@@ -106,6 +106,9 @@ void wlan_cfg_set_ce_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg,
 			       int context, int mask);
 void wlan_cfg_set_rxbuf_ring_mask(struct wlan_cfg_dp_soc_ctxt *cfg, int context,
 				  int mask);
+
+void wlan_cfg_set_max_peer_id(struct wlan_cfg_dp_soc_ctxt *cfg, uint32_t val);
+
 /**
  * wlan_cfg_get_num_contexts() - Number of interrupt contexts to be registered
  * @wlan_cfg_ctx - Configuration Handle