Browse Source

qcacmn: Add Bitmap support for Multi-Vdev-Restart

Update MVR handlers and init to setup/use MVR bitmap
depending on bitmap MVR support by FW.

Change-Id: I3a73ddefeae85d8f6b4fc31f9c1f1164fa5346c7
CRs-Fixed: 3355001
Chetan Kumar Sanga 2 years ago
parent
commit
176650cce4

+ 2 - 2
umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h

@@ -79,8 +79,8 @@
 #define WLAN_PDEV_F_STA_AMPDU_DIS           0x01000000
 /* do not send probe request in passive channel */
 #define WLAN_PDEV_F_STRICT_PSCAN_EN         0x02000000
-  /* dupie (ANA,pre ANA ) */
-/*#define WLAN_PDEV_F_DUPIE                 0x00200000*/
+/* Multivdev restart enabled with Bitmap */
+#define WLAN_PDEV_F_MULTIVDEV_RESTART_BMAP  0x04000000
 /* Chan concurrency enabled */
 #define WLAN_PDEV_F_CHAN_CONCURRENCY        0x08000000
 /* Multivdev restart enabled */

+ 3 - 3
umac/cmn_services/serialization/src/wlan_serialization_main.c

@@ -181,7 +181,7 @@ wlan_serialization_create_cmd_pool(
 		uint16_t cmd_pool_size)
 {
 	struct wlan_serialization_command_list *cmd_list_ptr;
-	uint8_t i;
+	uint16_t i;
 	QDF_STATUS status = QDF_STATUS_E_NOMEM;
 
 	qdf_list_create(&pdev_queue->cmd_pool_list, cmd_pool_size);
@@ -230,8 +230,8 @@ static QDF_STATUS wlan_serialization_pdev_create_handler(
 	QDF_STATUS status = QDF_STATUS_E_NOMEM;
 	uint8_t index;
 	uint8_t free_index;
-	uint8_t max_active_cmds;
-	uint8_t max_pending_cmds;
+	uint16_t max_active_cmds;
+	uint16_t max_pending_cmds;
 	uint16_t cmd_pool_size;
 
 	ser_pdev_obj =

+ 6 - 4
umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c

@@ -802,12 +802,14 @@ static QDF_STATUS vdev_mgr_multiple_restart_param_update(
 	param->cac_duration_ms = WLAN_DFS_WAIT_MS;
 	param->num_vdevs = num_vdevs;
 
-	qdf_mem_copy(param->vdev_ids, vdev_ids,
-		     sizeof(uint32_t) * (param->num_vdevs));
 	qdf_mem_copy(&param->ch_param, chan,
 		     sizeof(struct mlme_channel_param));
-	qdf_mem_copy(param->mvr_param, mvr_param,
-		     sizeof(*mvr_param) * (param->num_vdevs));
+
+	param->vdev_ids = vdev_ids;
+	param->mvr_param = mvr_param;
+	param->max_vdevs = wlan_pdev_get_max_vdev_count(pdev);
+	param->mvr_bmap_enabled = wlan_pdev_nif_feat_cap_get(pdev,
+				    WLAN_PDEV_F_MULTIVDEV_RESTART_BMAP);
 
 	return QDF_STATUS_SUCCESS;
 }

+ 7 - 3
umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h

@@ -411,7 +411,9 @@ struct vdev_mlme_mvr_param {
  * @num_vdevs: No. of vdevs that need to be restarted
  * @ch_param: Pointer to channel_param
  * @vdev_ids: Pointer to array of vdev_ids
- * @mvr_param: array holding multi vdev restart param
+ * @mvr_param: Pointer to array of multi vdev restart param
+ * @max_vdevs: Maximum vdev count of this pdev
+ * @mvr_bmap_enabled: flag indicating mvr-bitmap support
  */
 struct multiple_vdev_restart_params {
 	uint32_t pdev_id;
@@ -420,8 +422,10 @@ struct multiple_vdev_restart_params {
 	uint32_t cac_duration_ms;
 	uint32_t num_vdevs;
 	struct mlme_channel_param ch_param;
-	uint32_t vdev_ids[WLAN_UMAC_PDEV_MAX_VDEVS];
-	struct vdev_mlme_mvr_param mvr_param[WLAN_UMAC_PDEV_MAX_VDEVS];
+	uint32_t *vdev_ids;
+	struct vdev_mlme_mvr_param *mvr_param;
+	uint32_t max_vdevs;
+	uint8_t mvr_bmap_enabled;
 };
 
 /**

+ 1 - 0
wmi/inc/wmi_unified_param.h

@@ -6230,6 +6230,7 @@ typedef enum {
 	wmi_service_obss_per_packet_sr_support,
 #endif
 	wmi_service_wpa3_sha384_roam_support,
+	wmi_service_multiple_vdev_restart_bmap,
 	wmi_services_max,
 } wmi_conv_service_ids;
 #define WMI_SERVICE_UNAVAILABLE 0xFFFF

+ 2 - 0
wmi/src/wmi_unified_tlv.c

@@ -21119,6 +21119,8 @@ static void populate_tlv_service(uint32_t *wmi_service)
 	wmi_service[wmi_service_mawc] = WMI_SERVICE_MAWC;
 	wmi_service[wmi_service_multiple_vdev_restart] =
 			WMI_SERVICE_MULTIPLE_VDEV_RESTART;
+	wmi_service[wmi_service_multiple_vdev_restart_bmap] =
+			WMI_SERVICE_MULTIPLE_VDEV_RESTART_BITMAP_SUPPORT;
 	wmi_service[wmi_service_smart_antenna_sw_support] =
 				WMI_SERVICE_SMART_ANTENNA_SW_SUPPORT;
 	wmi_service[wmi_service_smart_antenna_hw_support] =