Ver Fonte

qcacmn: Extract Hw mode Id and band info

Extract/Save the Hw mode ID and Mac0 band info
to hw mode list.
This helps to identify the 2x2 5G + 1x1 2G and
2x2 2G + 1x1 5G.

Change-Id: I0682337b1a80c1b502c3307e0847aaa99479d2d3
CRs-Fixed: 2256152
Liangwei Dong há 6 anos atrás
pai
commit
bf9efa7561

+ 4 - 2
umac/cmn_services/policy_mgr/inc/wlan_policy_mgr_public_struct.h

@@ -855,8 +855,9 @@ struct policy_mgr_conc_connection_info {
  * @mac1_rx_ss: MAC1 Rx spatial stream
  * @mac0_bw: MAC0 bandwidth
  * @mac1_bw: MAC1 bandwidth
- * @dbs_cap: DBS capabality
- * @agile_dfs_cap: Agile DFS capabality
+ * @mac0_band_cap: mac0 band (5g/2g) capability
+ * @dbs_cap: DBS capability
+ * @agile_dfs_cap: Agile DFS capability
  */
 struct policy_mgr_hw_mode_params {
 	uint8_t mac0_tx_ss;
@@ -865,6 +866,7 @@ struct policy_mgr_hw_mode_params {
 	uint8_t mac1_rx_ss;
 	uint8_t mac0_bw;
 	uint8_t mac1_bw;
+	uint8_t mac0_band_cap;
 	uint8_t dbs_cap;
 	uint8_t agile_dfs_cap;
 	uint8_t sbs_cap;

+ 7 - 4
umac/cmn_services/policy_mgr/src/wlan_policy_mgr_action.c

@@ -72,12 +72,15 @@ void policy_mgr_hw_mode_transition_cb(uint32_t old_hw_mode_index,
 		return;
 	}
 
-	policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d",
-		hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss, hw_mode.mac0_bw);
+	policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d band_cap:%d",
+			 hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss,
+			 hw_mode.mac0_bw, hw_mode.mac0_band_cap);
 	policy_mgr_debug("MAC1: TxSS:%d, RxSS:%d, Bw:%d",
-		hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss, hw_mode.mac1_bw);
+			 hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss,
+			 hw_mode.mac1_bw);
 	policy_mgr_debug("DBS:%d, Agile DFS:%d, SBS:%d",
-		hw_mode.dbs_cap, hw_mode.agile_dfs_cap, hw_mode.sbs_cap);
+			 hw_mode.dbs_cap, hw_mode.agile_dfs_cap,
+			 hw_mode.sbs_cap);
 
 	/* update pm_conc_connection_list */
 	policy_mgr_update_hw_mode_conn_info(context, num_vdev_mac_entries,

+ 8 - 4
umac/cmn_services/policy_mgr/src/wlan_policy_mgr_core.c

@@ -477,6 +477,7 @@ QDF_STATUS policy_mgr_get_hw_mode_from_idx(
 	hw_mode->mac1_tx_ss = POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(param);
 	hw_mode->mac1_rx_ss = POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(param);
 	hw_mode->mac1_bw = POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(param);
+	hw_mode->mac0_band_cap = POLICY_MGR_HW_MODE_MAC0_BAND_GET(param);
 	hw_mode->dbs_cap = POLICY_MGR_HW_MODE_DBS_MODE_GET(param);
 	hw_mode->agile_dfs_cap = POLICY_MGR_HW_MODE_AGILE_DFS_GET(param);
 	hw_mode->sbs_cap = POLICY_MGR_HW_MODE_SBS_MODE_GET(param);
@@ -815,12 +816,15 @@ void policy_mgr_pdev_set_hw_mode_cb(uint32_t status,
 		return;
 	}
 
-	policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d",
-		hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss, hw_mode.mac0_bw);
+	policy_mgr_debug("MAC0: TxSS:%d, RxSS:%d, Bw:%d, band_cap %d",
+			 hw_mode.mac0_tx_ss, hw_mode.mac0_rx_ss,
+			 hw_mode.mac0_bw, hw_mode.mac0_band_cap);
 	policy_mgr_debug("MAC1: TxSS:%d, RxSS:%d, Bw:%d",
-		hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss, hw_mode.mac1_bw);
+			 hw_mode.mac1_tx_ss, hw_mode.mac1_rx_ss,
+			 hw_mode.mac1_bw);
 	policy_mgr_debug("DBS:%d, Agile DFS:%d, SBS:%d",
-		hw_mode.dbs_cap, hw_mode.agile_dfs_cap, hw_mode.sbs_cap);
+			 hw_mode.dbs_cap, hw_mode.agile_dfs_cap,
+			 hw_mode.sbs_cap);
 
 	/* update pm_conc_connection_list */
 	policy_mgr_update_hw_mode_conn_info(context, num_vdev_mac_entries,

+ 26 - 15
umac/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c

@@ -154,6 +154,7 @@ static void policy_mgr_get_hw_mode_params(
 	info->mac_bw = policy_mgr_map_wmi_channel_width_to_hw_mode_bw(
 		QDF_MAX(caps->max_bw_supported_2G,
 		caps->max_bw_supported_5G));
+	info->mac_band_cap = caps->supported_bands;
 }
 
 /**
@@ -162,7 +163,8 @@ static void policy_mgr_get_hw_mode_params(
  * @wma_handle: pointer to wma global structure
  * @mac0_ss_bw_info: TX-RX streams, BW for MAC0
  * @mac1_ss_bw_info: TX-RX streams, BW for MAC1
- * @pos: refers to hw_mode_index
+ * @pos: refers to hw_mode_list array index
+ * @hw_mode_id: hw mode id value used by firmware
  * @dbs_mode: dbs_mode for the dbs_hw_mode
  * @sbs_mode: sbs_mode for the sbs_hw_mode
  *
@@ -174,7 +176,7 @@ static void policy_mgr_get_hw_mode_params(
 static void policy_mgr_set_hw_mode_params(struct wlan_objmgr_psoc *psoc,
 			struct policy_mgr_mac_ss_bw_info mac0_ss_bw_info,
 			struct policy_mgr_mac_ss_bw_info mac1_ss_bw_info,
-			uint32_t pos, uint32_t dbs_mode,
+			uint32_t pos, uint32_t hw_mode_id, uint32_t dbs_mode,
 			uint32_t sbs_mode)
 {
 	struct policy_mgr_psoc_priv_obj *pm_ctx;
@@ -212,6 +214,12 @@ static void policy_mgr_set_hw_mode_params(struct wlan_objmgr_psoc *psoc,
 	POLICY_MGR_HW_MODE_SBS_MODE_SET(
 		pm_ctx->hw_mode.hw_mode_list[pos],
 		sbs_mode);
+	POLICY_MGR_HW_MODE_MAC0_BAND_SET(
+		pm_ctx->hw_mode.hw_mode_list[pos],
+		mac0_ss_bw_info.mac_band_cap);
+	POLICY_MGR_HW_MODE_ID_SET(
+		pm_ctx->hw_mode.hw_mode_list[pos],
+		hw_mode_id);
 }
 
 QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
@@ -287,7 +295,8 @@ QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
 
 		/* Updating HW mode list */
 		policy_mgr_set_hw_mode_params(psoc, mac0_ss_bw_info,
-			mac1_ss_bw_info, i, dbs_mode, sbs_mode);
+			mac1_ss_bw_info, i, tmp->hw_mode_id, dbs_mode,
+			sbs_mode);
 	}
 	return QDF_STATUS_SUCCESS;
 }
@@ -331,19 +340,21 @@ void policy_mgr_dump_dbs_hw_mode(struct wlan_objmgr_psoc *psoc)
 
 	for (i = 0; i < pm_ctx->num_dbs_hw_modes; i++) {
 		param = pm_ctx->hw_mode.hw_mode_list[i];
-		policy_mgr_debug("[%d]-MAC0: tx_ss:%d rx_ss:%d bw_idx:%d",
-			i,
-			POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_GET(param),
-			POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_GET(param),
-			POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_GET(param));
+		policy_mgr_debug("[%d]-MAC0: tx_ss:%d rx_ss:%d bw_idx:%d band_cap:%d",
+				 i,
+				 POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_GET(param),
+				 POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_GET(param),
+				 POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_GET(param),
+				 POLICY_MGR_HW_MODE_MAC0_BAND_GET(param));
 		policy_mgr_debug("[%d]-MAC1: tx_ss:%d rx_ss:%d bw_idx:%d",
-			i,
-			POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(param),
-			POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(param),
-			POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(param));
-		policy_mgr_debug("[%d] DBS:%d SBS:%d", i,
-			POLICY_MGR_HW_MODE_DBS_MODE_GET(param),
-			POLICY_MGR_HW_MODE_SBS_MODE_GET(param));
+				 i,
+				 POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(param),
+				 POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(param),
+				 POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(param));
+		policy_mgr_debug("[%d] DBS:%d SBS:%d hw_mode_id:%d", i,
+				 POLICY_MGR_HW_MODE_DBS_MODE_GET(param),
+				 POLICY_MGR_HW_MODE_SBS_MODE_GET(param),
+				 POLICY_MGR_HW_MODE_ID_GET(param));
 	}
 }
 

+ 33 - 12
umac/cmn_services/policy_mgr/src/wlan_policy_mgr_i.h

@@ -57,6 +57,8 @@
 #define POLICY_MGR_HW_MODE_DBS_MODE_BITPOS         (7)
 #define POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS   (6)
 #define POLICY_MGR_HW_MODE_SBS_MODE_BITPOS         (5)
+#define POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS        (3)
+#define POLICY_MGR_HW_MODE_ID_BITPOS               (0)
 
 #define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK    \
 	(0xf << POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS)
@@ -76,6 +78,10 @@
 	(0x1 << POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS)
 #define POLICY_MGR_HW_MODE_SBS_MODE_MASK           \
 	(0x1 << POLICY_MGR_HW_MODE_SBS_MODE_BITPOS)
+#define POLICY_MGR_HW_MODE_MAC0_BAND_MASK           \
+			(0x3 << POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS)
+#define POLICY_MGR_HW_MODE_ID_MASK           \
+			(0x7 << POLICY_MGR_HW_MODE_ID_BITPOS)
 
 #define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_SET(hw_mode, value) \
 	WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS,\
@@ -104,34 +110,46 @@
 #define POLICY_MGR_HW_MODE_SBS_MODE_SET(hw_mode, value)        \
 	WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_SBS_MODE_BITPOS,\
 	1, value)
+#define POLICY_MGR_HW_MODE_MAC0_BAND_SET(hw_mode, value)        \
+	WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS,\
+	2, value)
+#define POLICY_MGR_HW_MODE_ID_SET(hw_mode, value)        \
+	WMI_SET_BITS(hw_mode, POLICY_MGR_HW_MODE_ID_BITPOS,\
+	3, value)
 
 #define POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_GET(hw_mode)                \
-		((hw_mode & POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK) >>        \
+		(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_MASK) >>    \
 		POLICY_MGR_HW_MODE_MAC0_TX_STREAMS_BITPOS)
 #define POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_GET(hw_mode)                \
-		((hw_mode & POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_MASK) >>        \
+		(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_MASK) >>    \
 		POLICY_MGR_HW_MODE_MAC0_RX_STREAMS_BITPOS)
 #define POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_GET(hw_mode)                \
-		((hw_mode & POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_MASK) >>        \
+		(((hw_mode) & POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_MASK) >>    \
 		POLICY_MGR_HW_MODE_MAC1_TX_STREAMS_BITPOS)
 #define POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_GET(hw_mode)                \
-		((hw_mode & POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_MASK) >>        \
+		(((hw_mode) & POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_MASK) >>    \
 		POLICY_MGR_HW_MODE_MAC1_RX_STREAMS_BITPOS)
 #define POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_GET(hw_mode)                 \
-		((hw_mode & POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_MASK) >>         \
+		(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_MASK) >>     \
 		POLICY_MGR_HW_MODE_MAC0_BANDWIDTH_BITPOS)
 #define POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_GET(hw_mode)                 \
-		((hw_mode & POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_MASK) >>         \
+		(((hw_mode) & POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_MASK) >>     \
 		POLICY_MGR_HW_MODE_MAC1_BANDWIDTH_BITPOS)
 #define POLICY_MGR_HW_MODE_DBS_MODE_GET(hw_mode)                       \
-		((hw_mode & POLICY_MGR_HW_MODE_DBS_MODE_MASK) >>               \
+		(((hw_mode) & POLICY_MGR_HW_MODE_DBS_MODE_MASK) >>           \
 		POLICY_MGR_HW_MODE_DBS_MODE_BITPOS)
 #define POLICY_MGR_HW_MODE_AGILE_DFS_GET(hw_mode)                      \
-		((hw_mode & POLICY_MGR_HW_MODE_AGILE_DFS_MODE_MASK) >>         \
+		(((hw_mode) & POLICY_MGR_HW_MODE_AGILE_DFS_MODE_MASK) >>     \
 		POLICY_MGR_HW_MODE_AGILE_DFS_MODE_BITPOS)
 #define POLICY_MGR_HW_MODE_SBS_MODE_GET(hw_mode)                       \
-		((hw_mode & POLICY_MGR_HW_MODE_SBS_MODE_MASK) >>               \
+		(((hw_mode) & POLICY_MGR_HW_MODE_SBS_MODE_MASK) >>           \
 		POLICY_MGR_HW_MODE_SBS_MODE_BITPOS)
+#define POLICY_MGR_HW_MODE_MAC0_BAND_GET(hw_mode)                       \
+		(((hw_mode) & POLICY_MGR_HW_MODE_MAC0_BAND_MASK) >> \
+		POLICY_MGR_HW_MODE_MAC0_BAND_BITPOS)
+#define POLICY_MGR_HW_MODE_ID_GET(hw_mode)                       \
+		(((hw_mode) & POLICY_MGR_HW_MODE_ID_MASK) >> \
+		POLICY_MGR_HW_MODE_ID_BITPOS)
 
 #define POLICY_MGR_DEFAULT_HW_MODE_INDEX 0xFFFF
 
@@ -273,14 +291,17 @@ struct policy_mgr_psoc_priv_obj {
 
 /**
  * struct policy_mgr_mac_ss_bw_info - hw_mode_list PHY/MAC params for each MAC
- * @mac_tx_stream: Max TX stream
- * @mac_rx_stream: Max RX stream
- * @mac_bw: Max bandwidth
+ * @mac_tx_stream: Max TX stream number supported on MAC
+ * @mac_rx_stream: Max RX stream number supported on MAC
+ * @mac_bw: Max bandwidth(wmi_channel_width enum type)
+ * @mac_band_cap: supported Band bit map(WLAN_2G_CAPABILITY = 0x1,
+ *                            WLAN_5G_CAPABILITY = 0x2)
  */
 struct policy_mgr_mac_ss_bw_info {
 	uint32_t mac_tx_stream;
 	uint32_t mac_rx_stream;
 	uint32_t mac_bw;
+	uint32_t mac_band_cap;
 };
 
 struct policy_mgr_psoc_priv_obj *policy_mgr_get_context(