diff --git a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h b/umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h index 335797b693..817de4398d 100644 --- a/umac/cmn_services/obj_mgr/inc/wlan_objmgr_pdev_obj.h +++ b/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 */ diff --git a/umac/cmn_services/serialization/src/wlan_serialization_main.c b/umac/cmn_services/serialization/src/wlan_serialization_main.c index 6a91859e71..db2241989a 100644 --- a/umac/cmn_services/serialization/src/wlan_serialization_main.c +++ b/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 = diff --git a/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c b/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c index 8fd72b6f35..b7e0bda237 100644 --- a/umac/mlme/vdev_mgr/core/src/vdev_mgr_ops.c +++ b/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(¶m->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; } diff --git a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h b/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h index 840c294773..df35efd165 100644 --- a/umac/mlme/vdev_mgr/dispatcher/inc/wlan_vdev_mgr_tgt_if_tx_defs.h +++ b/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; }; /** diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 2c39c9dbfc..1664bb9546 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/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 diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index cbae3b63eb..8bdcb84032 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/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] =