diff --git a/fw/wmi_services.h b/fw/wmi_services.h index bfb539210f..333b83b617 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2011-2020 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -424,6 +424,7 @@ typedef enum { WMI_SERVICE_DUAL_STA_ROAM_SUPPORT = 233, /* Indidate FW support dual STA roaming */ WMI_SERVICE_PEER_CREATE_CONF = 234, /* Target will send WMI_PEER_CREATE_CONF_EVENTID after WMI_PEER_CREATE_CMDID is processed */ WMI_SERVICE_MULTIPLE_VDEV_RESTART_RESPONSE_SUPPORT = 235, /* indicates firmware supports Multiple vdev restart response */ + WMI_SERVICE_ROAM_SCAN_CHANNEL_LIST_TO_HOST_SUPPORT = 236, /* Indicates firmware supports sending roam scan channel list to host */ /******* ADD NEW SERVICES HERE *******/ diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 6414c94c67..ace268fd7d 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2010-2020 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -1044,6 +1044,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_vdev_set_pcl_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_peer_create_conf_event_fixed_param, WMITLV_TAG_STRUC_wmi_pdev_multiple_vdev_restart_resp_event_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_get_scan_channel_list_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_roam_scan_channel_list_event_fixed_param, } WMITLV_TAG_ID; /* @@ -1471,6 +1473,7 @@ typedef enum { OP(WMI_VDEV_AUDIO_SYNC_TRIGGER_CMDID) \ OP(WMI_VDEV_AUDIO_SYNC_QTIMER_CMDID) \ OP(WMI_VDEV_SET_PCL_CMDID) \ + OP(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1714,6 +1717,7 @@ typedef enum { OP(WMI_VDEV_AUDIO_SYNC_Q_MASTER_SLAVE_OFFSET_EVENTID) \ OP(WMI_PEER_CREATE_CONF_EVENTID) \ OP(WMI_PDEV_MULTIPLE_VDEV_RESTART_RESP_EVENTID) \ + OP(WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -4273,6 +4277,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_AUDIO_SYNC_QTIMER_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_weight, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_PCL_CMDID); +/* Get roam scan channel list */ +#define WMITLV_TABLE_WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_get_scan_channel_list_cmd_fixed_param, wmi_roam_get_scan_channel_list_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID); + /************************** TLV definitions of WMI events *******************************/ @@ -5748,6 +5757,12 @@ WMITLV_CREATE_PARAM_STRUC(WMI_GET_CHANNEL_ANI_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, vdev_ids_bitmap, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_MULTIPLE_VDEV_RESTART_RESP_EVENTID); +/* Roam scan channel list event */ +#define WMITLV_TABLE_WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_scan_channel_list_event_fixed_param, wmi_roam_scan_channel_list_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_UINT32, A_UINT32, channel_list, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID); + #ifdef __cplusplus } #endif diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 8b53dea107..53d4a65356 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2010-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2010-2020 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -728,6 +728,8 @@ typedef enum { WMI_ROAM_ENABLE_DISABLE_TRIGGER_REASON_CMDID, /** Pre-Authentication completion status command */ WMI_ROAM_PREAUTH_STATUS_CMDID, + /** Command to get roam scan channels list */ + WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID, /** offload scan specific commands */ /** set offload scan AP profile */ @@ -1603,6 +1605,8 @@ typedef enum { WMI_ROAM_PMKID_REQUEST_EVENTID, /** roam stats */ WMI_ROAM_STATS_EVENTID, + /** Roam scan channels list */ + WMI_ROAM_SCAN_CHANNEL_LIST_EVENTID, /** P2P disc found */ WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P), @@ -12785,6 +12789,9 @@ typedef struct { #define WMI_ROAM_SCAN_CHAN_LIST_TYPE_NONE 0x1 #define WMI_ROAM_SCAN_CHAN_LIST_TYPE_STATIC 0x2 #define WMI_ROAM_SCAN_CHAN_LIST_TYPE_DYNAMIC 0x3 + +#define WMI_ROAM_SCAN_LIST_FLAG_FLUSH 0x1 /* Flush roam scan channel list in FW */ + /** * TLV for roaming channel list */ @@ -12796,6 +12803,7 @@ typedef struct { A_UINT32 chan_list_type; /** # if channels to scan */ A_UINT32 num_chan; + A_UINT32 flags; /* refer to WMI_ROAM_SCAN_LIST_FLAG_xxx defs */ /** * TLV (tag length value) parameters follow the wmi_roam_chan_list * structure. The TLV's are: @@ -25155,6 +25163,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_AUDIO_AGGR_SET_GROUP_PROBE_CMDID); WMI_RETURN_STRING(WMI_VDEV_AUDIO_SYNC_TRIGGER_CMDID); WMI_RETURN_STRING(WMI_VDEV_AUDIO_SYNC_QTIMER_CMDID); + WMI_RETURN_STRING(WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID); } return "Invalid WMI cmd"; @@ -26832,6 +26841,32 @@ typedef struct { A_UINT32 roam_scan_trigger_count; /* Number of roam scans triggered */ } wmi_roam_stats_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_get_scan_channel_list_cmd_fixed_param */ + A_UINT32 vdev_id; +} wmi_roam_get_scan_channel_list_cmd_fixed_param; + +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_scan_channel_list_event_fixed_param */ + A_UINT32 vdev_id; + wmi_ssid ssid; /* SSID of connected AP */ + /* + * This event can be sent as a response to + * WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID or + * can be sent asynchronously during disconnection. + * command_response = 1, when it is sent as a response to + * WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID + * = 0, for other cases + */ + A_UINT32 command_response; +/* + * This fixed_param TLV is followed by the below TLVs: + * + * List of roam scan channel frequencies in MHz + * A_UINT32 channel_list[]; + */ +} wmi_roam_scan_channel_list_event_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals wmi_txpower_query_cmd_fixed_param */ A_UINT32 request_id; /* unique request ID to distinguish the command / event set */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 236f6bf36b..df09257d97 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2012-2019 The Linux Foundation. All rights reserved. + * Copyright (c) 2012-2020 The Linux Foundation. All rights reserved. * * Previously licensed under the ISC license by Qualcomm Atheros, Inc. * @@ -36,7 +36,7 @@ #define __WMI_VER_MINOR_ 0 /** WMI revision number has to be incremented when there is a * change that may or may not break compatibility. */ -#define __WMI_REVISION_ 762 +#define __WMI_REVISION_ 763 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work