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
This commit is contained in:
Chetan Kumar Sanga
2022-12-08 09:14:52 +05:30
committed by Madan Koyyalamudi
parent 5c2acdff8d
commit 176650cce4
6 changed files with 21 additions and 12 deletions

View File

@@ -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 */

View File

@@ -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 =

View File

@@ -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;
}

View File

@@ -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;
};
/**

View File

@@ -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

View File

@@ -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] =