diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index b51356b6abcb..0c9fbb88dd01 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -860,6 +860,7 @@ typedef enum { WMITLV_TAG_STRUC_wmi_roam_cnd_scoring_param, WMITLV_TAG_STRUC_wmi_pdev_config_vendor_oui_action_fixed_param, WMITLV_TAG_STRUC_wmi_vendor_oui_ext, + WMITLV_TAG_STRUC_wmi_roam_synch_frame_event_fixed_param, } WMITLV_TAG_ID; /* @@ -3707,6 +3708,14 @@ WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_STRUC, wmi_roam_fils_synch_tlv_param, roam_fils_synch_info, WMITLV_SIZE_VAR) WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SYNCH_EVENTID); +/* Roam Synch frame Event */ +#define WMITLV_TABLE_WMI_ROAM_SYNCH_FRAME_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_roam_synch_frame_event_fixed_param, wmi_roam_synch_frame_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, bcn_probe_rsp_frame, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, reassoc_rsp_frame, WMITLV_SIZE_VAR) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_ARRAY_BYTE, A_UINT8, reassoc_req_frame, WMITLV_SIZE_VAR) +WMITLV_CREATE_PARAM_STRUC(WMI_ROAM_SYNCH_FRAME_EVENTID); + /* WOW Wakeup Host Event */ /* NOTE: Make sure wow_bitmap_info can be zero or one elements only */ #define WMITLV_TABLE_WMI_WOW_WAKEUP_HOST_EVENTID(id,op,buf,len) \ diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 8952d3bcce4c..bb5b88f0194c 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1277,6 +1277,8 @@ typedef enum { WMI_PROFILE_MATCH, /** roam synch event */ WMI_ROAM_SYNCH_EVENTID, + /** roam synch frame event */ + WMI_ROAM_SYNCH_FRAME_EVENTID, /** P2P disc found */ WMI_P2P_DISC_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_P2P), @@ -15265,6 +15267,39 @@ typedef struct { **/ } wmi_roam_synch_event_fixed_param; +/** + * The WMI_ROAM_SYNCH_FRAME_EVENTID message is used in conjunction with the + * WMI_ROAM_SYNCH_EVENTID message. The former will be sent 1st followed by + * the latter for cases where the WMI_ROAM_SYNCH_EVENTID message size would + * exceed 2K. The more_frag field in the WMI_ROAM_SYNCH_FRAME_EVENTID informs + * the host whether more WMI_ROAM_SYNCH_FRAME_EVENTID messages would follow; + * after the WMI_ROAM_SYNCH_FRAME_EVENTID messages the target sends the + * WMI_ROAM_SYNCH_EVENTID with bcn_probe_rsp_len, reassoc_rsp_len, and + * reassoc_rsp_len set to 0. + */ +typedef struct { + A_UINT32 tlv_header; /* TLV tag and len; tag equals WMITLV_TAG_STRUC_wmi_roam_synch_frame_event_fixed_param */ + /** Unique id identifying the VDEV on which roaming is done by firmware */ + A_UINT32 vdev_id; + /** More frags to follow? */ + A_UINT32 more_frag; + /** whether the frame is beacon or probe rsp */ + A_UINT32 is_beacon; + /** the length of beacon/probe rsp */ + A_UINT32 bcn_probe_rsp_len; + /** the length of reassoc rsp */ + A_UINT32 reassoc_rsp_len; + /** the length of reassoc req */ + A_UINT32 reassoc_req_len; + /** + * TLV (tag length value) parameters follows roam_synch_event + * The TLV's are: + * A_UINT8 bcn_probe_rsp_frame[bcn_probe_rsp_len]; + * A_UINT8 reassoc_rsp_frame[reassoc_rsp_len]; + * A_UINT8 reassoc_req_frame[reassoc_req_len]; + */ +} wmi_roam_synch_frame_event_fixed_param; + #define WMI_PEER_ESTIMATED_LINKSPEED_INVALID 0xFFFFFFFF typedef struct { diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 3620b5cf6e7f..b652533ff01b 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_ 447 +#define __WMI_REVISION_ 448 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work