diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index 61e9d33265..d02eef2a76 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -1205,6 +1205,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_icmp_offload_fixed_param, WMITLV_TAG_STRUC_WMI_IPV6_ADDR, WMITLV_TAG_STRUC_wmi_dbs_or_sbs_cap_ext, + WMITLV_TAG_STRUC_wmi_roam_set_param_cmd_fixed_param, } WMITLV_TAG_ID; /* @@ -1682,6 +1683,7 @@ typedef enum { OP(WMI_PDEV_SET_BIOS_INTERFACE_CMDID) \ OP(WMI_VDEV_SET_MU_SNIF_CMDID) \ OP(WMI_VDEV_ICMP_OFFLOAD_CMDID) \ + OP(WMI_ROAM_SET_PARAM_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -4824,6 +4826,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_SET_MU_SNIF_CMDID); WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_ARRAY_FIXED_STRUC, WMI_IPV6_ADDR, ipv6_addr, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_VDEV_ICMP_OFFLOAD_CMDID); +/* Roam set param Cmd */ +#define WMITLV_TABLE_WMI_ROAM_SET_PARAM_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_set_param_cmd_fixed_param, wmi_roam_set_param_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SET_PARAM_CMDID); + /************************** TLV definitions of WMI events *******************************/ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 0b08bb01ca..0c96befae2 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -809,6 +809,8 @@ typedef enum { WMI_ROAM_GET_SCAN_CHANNEL_LIST_CMDID, /** configure MLO parameters for roaming */ WMI_ROAM_MLO_CONFIG_CMDID, + /** set roam params **/ + WMI_ROAM_SET_PARAM_CMDID, /** offload scan specific commands */ /** set offload scan AP profile */ @@ -16755,6 +16757,7 @@ typedef enum #define WMI_ROAM_NOTIF_DISASSOC_RECV 0xa /** indicate disassoc received, notif_params to be sent as reason code, notif_params1 to be sent as frame length */ #define WMI_ROAM_NOTIF_SCAN_MODE_SUCCESS_WITH_HO_FAIL 0xb /** indicate that roaming scan mode is successful but cause disconnection and subsequent ** WMI_ROAM_REASON_HO_FAILED is event expected */ +#define WMI_ROAM_NOTIF_SCAN_END 0xc /** indicate roam scan end, notif_params to be sent as WMI_ROAM_TRIGGER_REASON_ID */ /**whenever RIC request information change, host driver should pass all ric related information to firmware (now only support tsepc) * Once, 11r roaming happens, firmware can generate RIC request in reassoc request based on these informations @@ -17462,6 +17465,7 @@ typedef enum event_type_e { WOW_VDEV_DISCONNECT_EVENT, /* 32 + 9 */ WOW_TWT_EVENT, /* 32 + 10 */ WOW_DCS_INTERFERENCE_DET, /* 32 + 11 */ + WOW_ROAM_STATS_EVENT, /* 32 + 12 */ } WOW_WAKE_EVENT_TYPE; typedef enum wake_reason_e { @@ -17537,6 +17541,7 @@ typedef enum wake_reason_e { WOW_REASON_TWT, WOW_REASON_FATAL_EVENT_WAKE, WOW_REASON_DCS_INT_DET, + WOW_REASON_ROAM_STATS, /* add new WOW_REASON_ defs before this line */ WOW_REASON_MAX, @@ -29754,6 +29759,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PDEV_SET_BIOS_INTERFACE_CMDID); WMI_RETURN_STRING(WMI_VDEV_SET_MU_SNIF_CMDID); WMI_RETURN_STRING(WMI_VDEV_ICMP_OFFLOAD_CMDID); + WMI_RETURN_STRING(WMI_ROAM_SET_PARAM_CMDID); } return (A_UINT8 *) "Invalid WMI cmd"; @@ -32219,6 +32225,7 @@ typedef struct { A_UINT32 timestamp; /* Timestamp in milli seconds */ A_UINT32 roam_status; /* 0 - Roaming is success, 1 - Roaming is failed */ A_UINT32 roam_fail_reason; /* from WMI_ROAM_FAIL_REASON_ID */ + wmi_mac_addr bssid; /* bssid corresponds to roam_fail_reason */ } wmi_roam_result; typedef struct { @@ -32457,6 +32464,29 @@ typedef struct { wmi_mac_addr partner_link_addr; /* Assigned link address which can be used as self link addr when vdev is not created */ } wmi_roam_mlo_config_cmd_fixed_param; +typedef struct { + A_UINT32 tlv_header; /** TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_set_param_cmd_fixed_param */ + /** unique id identifying the VDEV, generated by the caller */ + A_UINT32 vdev_id; + /** parameter id - see WMI_ROAM_PARAM */ + A_UINT32 param_id; + /** parameter value */ + A_UINT32 param_value; +} wmi_roam_set_param_cmd_fixed_param; + +/** the definition of different ROAM parameters */ +typedef enum { + /* roam param to configure below roam events + * Bit : 0 disabled - do not send WMI_ROAM_NOTIF_SCAN_END in WMI_ROAM_EVENTID + * Bit : 0 enabled - send WMI_ROAM_NOTIF_SCAN_END in WMI_ROAM_EVENTID + * Bit : 1 disabled - do not send 1) WMI_ROAM_STATS_EVENTID 2) WMI_ROAM_NOTIF_SCAN_START and WMI_ROAM_NOTIF_SCAN_END notifs in WMI_ROAM_EVENTID in suspend mode + * Bit : 1 enabled - send 1) WMI_ROAM_STATS_EVENTID 2) WMI_ROAM_NOTIF_SCAN_START and WMI_ROAM_NOTIF_SCAN_END notifs in WMI_ROAM_EVENTID in suspend mode + * Bit : 2-31 - reserved + */ + WMI_ROAM_PARAM_ROAM_EVENTS_CONFIG = 0x1, + /*=== END ROAM_PARAM_PROTOTYPE SECTION ===*/ +} WMI_ROAM_PARAM; + typedef struct { A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_vdev_get_big_data_cmd_fixed_param */ A_UINT32 vdev_id; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index c7f6db9c35..cb495d1372 100644 --- a/fw/wmi_version.h +++ b/fw/wmi_version.h @@ -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_ 1067 +#define __WMI_REVISION_ 1068 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work