diff --git a/fw/wmi_services.h b/fw/wmi_services.h index e2392e383174..6fc95d2b5a83 100644 --- a/fw/wmi_services.h +++ b/fw/wmi_services.h @@ -780,6 +780,7 @@ typedef enum { WMI_SERVICE_RADAR_FLAGS_TYPE_SUPPORT = 499, /* Indicates FW support to perform Master migration when master peer gets deleted */ WMI_SERVICE_ML_PEER_MASTER_MIGRATION_SUPPORT = 500, + WMI_SERVICE_NAN_AP_ASSISTED_DFS_OPERATION_SUPPORT = 501, /* Indicates FW supports NAN DFS operation */ WMI_MAX_EXT2_SERVICE diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 01d9a549787d..3a87f1569949 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1616,6 +1616,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_ndp_channel_info_event_fixed_param, WMITLV_TAG_STRUC_wmi_peer_uhr_omp_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_peer_uhr_omp_npca_params, + WMITLV_TAG_STRUC_wmi_nan_dfs_channel_availability_ind_event_fixed_param, } WMITLV_TAG_ID; /* * IMPORTANT: Please add _ALL_ WMI Commands Here. @@ -2585,6 +2586,7 @@ typedef enum { OP(WMI_COEX_GET_POLICY_STATS_EVENTID) \ OP(WMI_PDEV_SET_CUMAC_CHIP_ID_CONFIRMATION_EVENTID) \ OP(WMI_NDP_CHANNEL_INFO_EVENTID) \ + OP(WMI_NAN_DFS_CHANNEL_AVAILABILITY_IND_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -4434,7 +4436,8 @@ WMITLV_CREATE_PARAM_STRUC(WMI_NAN_ENABLE_CMDID); #define WMITLV_TABLE_WMI_NAN_CONFIG_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_nan_config_cmd_fixed_param, wmi_nan_config_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_nan_ctrl_config_param, nan_ctrl_config, WMITLV_SIZE_VAR) \ - WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_nan_disc_band_config_param, nan_disc_band_config, WMITLV_SIZE_VAR) + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_nan_disc_band_config_param, nan_disc_band_config, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, nan_availability_attributes_data, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_NAN_CONFIG_CMDID); /* NAN Disable Command */ @@ -8834,6 +8837,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_COEX_GET_POLICY_STATS_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_pdev_set_cumac_chip_id_confirmation_event_fixed_param, wmi_pdev_set_cumac_chip_id_confirmation_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_PDEV_SET_CUMAC_CHIP_ID_CONFIRMATION_EVENTID); +/* NAN DFS Channel Availability Indication Event */ +#define WMITLV_TABLE_WMI_NAN_DFS_CHANNEL_AVAILABILITY_IND_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_nan_dfs_channel_availability_ind_event_fixed_param, wmi_nan_dfs_channel_availability_ind_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_NAN_DFS_CHANNEL_AVAILABILITY_IND_EVENTID); + #ifdef __cplusplus } diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 024476b04c8d..4fd435bdbe62 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -2671,6 +2671,8 @@ typedef enum { WMI_NAN_PEER_PARAMS_CNF_EVENTID, /* Indicate negotiated committed NDP channels information. */ WMI_NDP_CHANNEL_INFO_EVENTID, + /* Event to indicate availability of STA AP connection on DFS channel */ + WMI_NAN_DFS_CHANNEL_AVAILABILITY_IND_EVENTID, /* Coex Event */ WMI_COEX_REPORT_ANTENNA_ISOLATION_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_COEX), @@ -31652,10 +31654,21 @@ typedef struct { * specific parameter defined in WMI_NAN_CONFIG_CHANGE_PARAM. */ A_UINT32 nan_conf_change_bitmap; + /* nan_availability_attributes_len: + * number of valid bytes (i.e. excluding final alignment-padding) + * in the TLV nan_availability_attributes_data[] + */ + A_UINT32 nan_availability_attributes_len; /* * TLVs following this structure: * wmi_nan_ctrl_config_param nan_ctrl_config[]; * wmi_nan_disc_band_config_param nan_disc_band_config[]; + * A_UINT8 nan_availability_attributes_data[]: + * NAN availability attributes sent down (along with header) + * are sent in stream of bytes (ieee80211 protocol order). + * The host must manually byteswap these bytes within each 4-byte word + * if the host's endianness doesn't match the target's, to ensure the + * expected byte order is maintained. */ } wmi_nan_config_cmd_fixed_param; @@ -31766,6 +31779,12 @@ typedef struct { */ } wmi_nan_peer_params_cmd_fixed_param; +typedef enum { + WMI_NAN_STATUS_NO_NAN_AVAIL_DFS_CHANNEL_DETECTED = 0x1, + WMI_NAN_STATUS_NO_DFS_BEACONS_RECEIVED = 0x2, + WMI_NAN_STATUS_STA_DISCONNECTED_FROM_DFS = 0x3, +} WMI_NAN_DFS_CHANNEL_AVAILABILITY_STATUS_TYPE; + #define WMI_NAN_GET_RANGING_INITIATOR_ROLE(flag) WMI_GET_BITS(flag, 0, 1) #define WMI_NAN_SET_RANGING_INITIATOR_ROLE(flag, val) WMI_SET_BITS(flag, 0, 1, val) #define WMI_NAN_GET_RANGING_RESPONDER_ROLE(flag) WMI_GET_BITS(flag, 1, 1) @@ -31946,6 +31965,16 @@ typedef struct { A_UINT32 status; } wmi_nan_peer_params_cnf_event_fixed_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals + * WMITLV_TAG_STRUC_wmi_nan_dfs_channel_availability_ind_event_fixed_param */ + A_UINT32 vdev_id; + /** status: + * Status code; see WMI_NAN_DFS_CHANNEL_AVAILABILITY_STATUS_TYPE + */ + A_UINT32 status; +} wmi_nan_dfs_channel_availability_ind_event_fixed_param; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_ndp_channel_info_event_fixed_param */ diff --git a/fw/wmi_version.h b/fw/wmi_version.h index af5abece2106..f8ef4b026c67 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -37,7 +37,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_ 1743 +#define __WMI_REVISION_ 1744 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work