diff --git a/fw/wmi_tlv_defs.h b/fw/wmi_tlv_defs.h index c215166c97fd..8eb4ebbec5c6 100644 --- a/fw/wmi_tlv_defs.h +++ b/fw/wmi_tlv_defs.h @@ -873,6 +873,8 @@ typedef enum { WMITLV_TAG_STRUC_wmi_pdev_set_rx_filter_promiscuous_cmd_fixed_param, WMITLV_TAG_STRUC_wmi_sar2_result_event_fixed_param, WMITLV_TAG_STRUC_WMI_SAR_CAPABILITIES, + WMITLV_TAG_STRUC_wmi_sap_obss_detection_cfg_cmd_fixed_param, + WMITLV_TAG_STRUC_wmi_sap_obss_detection_info_evt_fixed_param, } WMITLV_TAG_ID; /* @@ -1224,6 +1226,7 @@ typedef enum { OP(WMI_PDEV_SET_AC_TX_QUEUE_OPTIMIZED_CMDID) \ OP(WMI_PEER_TID_MSDUQ_QDEPTH_THRESH_UPDATE_CMDID) \ OP(WMI_PDEV_SET_RX_FILTER_PROMISCUOUS_CMDID) \ + OP(WMI_SAP_OBSS_DETECTION_CFG_CMDID) \ /* add new CMD_LIST elements above this line */ @@ -1416,6 +1419,7 @@ typedef enum { OP(WMI_PDEV_UPDATE_CTLTABLE_EVENTID) \ OP(WMI_HOST_SWFDA_EVENTID) \ OP(WMI_NDL_SCHEDULE_UPDATE_EVENTID) \ + OP(WMI_SAP_OBSS_DETECTION_REPORT_EVENTID) \ /* add new EVT_LIST elements above this line */ @@ -3022,6 +3026,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SAP_OFL_ENABLE_CMDID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sap_set_blacklist_param_cmd_fixed_param, wmi_sap_set_blacklist_param_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_SAP_SET_BLACKLIST_PARAM_CMDID); +/* SAP OBSS detection offload param Cmd */ +#define WMITLV_TABLE_WMI_SAP_OBSS_DETECTION_CFG_CMDID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sap_obss_detection_cfg_cmd_fixed_param, wmi_sap_obss_detection_cfg_cmd_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SAP_OBSS_DETECTION_CFG_CMDID); + /* APFIND Request */ #define WMITLV_TABLE_WMI_APFIND_CMDID(id,op,buf,len) \ WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_apfind_cmd_param, wmi_apfind_cmd_param, fixed_param, WMITLV_SIZE_FIX) \ @@ -4327,6 +4336,11 @@ WMITLV_CREATE_PARAM_STRUC(WMI_SAP_OFL_ADD_STA_EVENTID); WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sap_ofl_del_sta_event_fixed_param, wmi_sap_ofl_del_sta_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) WMITLV_CREATE_PARAM_STRUC(WMI_SAP_OFL_DEL_STA_EVENTID); +/* SAP OBSS detection offload event */ +#define WMITLV_TABLE_WMI_SAP_OBSS_DETECTION_REPORT_EVENTID(id,op,buf,len) \ + WMITLV_ELEM(id,op,buf,len, WMITLV_TAG_STRUC_wmi_sap_obss_detection_info_evt_fixed_param, wmi_sap_obss_detection_info_evt_fixed_param, fixed_param, WMITLV_SIZE_FIX) +WMITLV_CREATE_PARAM_STRUC(WMI_SAP_OBSS_DETECTION_REPORT_EVENTID); + /* Set OCB schedule event, DEPRECATED */ #define WMITLV_TABLE_WMI_OCB_SET_SCHED_EVENTID(id,op,buf,len) \ WMITLV_ELEM(id, op, buf, len, WMITLV_TAG_STRUC_wmi_ocb_set_sched_event_fixed_param, wmi_ocb_set_sched_event_fixed_param, fixed_param, WMITLV_SIZE_FIX) diff --git a/fw/wmi_unified.h b/fw/wmi_unified.h index 23af74b07579..6d1b2330ab50 100644 --- a/fw/wmi_unified.h +++ b/fw/wmi_unified.h @@ -1025,6 +1025,7 @@ typedef enum { /* enable/disable AP Authentication offload */ WMI_SAP_OFL_ENABLE_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_SAP_OFL), WMI_SAP_SET_BLACKLIST_PARAM_CMDID, + WMI_SAP_OBSS_DETECTION_CFG_CMDID, /** Out-of-context-of-BSS (OCB) commands */ WMI_OCB_SET_CONFIG_CMDID = WMI_CMD_GRP_START_ID(WMI_GRP_OCB), @@ -1550,6 +1551,7 @@ typedef enum { /* SAP Authentication offload events */ WMI_SAP_OFL_ADD_STA_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_SAP_OFL), WMI_SAP_OFL_DEL_STA_EVENTID, + WMI_SAP_OBSS_DETECTION_REPORT_EVENTID, /** Out-of-context-of-bss (OCB) events */ WMI_OCB_SET_CONFIG_RESP_EVENTID = WMI_EVT_GRP_START_ID(WMI_GRP_OCB), @@ -11336,6 +11338,7 @@ typedef enum event_type_e { WOW_CRITICAL_LOG_EVENT, WOW_CHIP_POWER_FAILURE_DETECT_EVENT, WOW_11D_SCAN_EVENT, + WOW_SAP_OBSS_DETECTION_EVENT, } WOW_WAKE_EVENT_TYPE; typedef enum wake_reason_e { @@ -11392,6 +11395,7 @@ typedef enum wake_reason_e { WOW_REASON_THERMAL_CHANGE, WOW_REASON_OIC_PING_OFFLOAD, WOW_REASON_WLAN_DHCP_RENEW, + WOW_REASON_SAP_OBSS_DETECTION, WOW_REASON_DEBUG_TEST = 0xFF, } WOW_WAKE_REASON_TYPE; @@ -17100,6 +17104,63 @@ typedef struct { */ } wmi_apfind_event_hdr; +/* SAP obss detection offload types */ +typedef enum { + WMI_SAP_OBSS_DETECTION_MODE_DISABLED = 0, /* fw to disable the detection */ + WMI_SAP_OBSS_DETECTION_MODE_PRESENT_NOTIFY = 1, /* if the matching beacon is present, notify host immediately */ + WMI_SAP_OBSS_DETECTION_MODE_ABSENT_TIMEOUT_NOTIFY = 2,/* if the matching beacon is absent for the timeout period, notify host */ +} WMI_SAP_OBSS_DETECTION_MODE; + +typedef struct wmi_sap_obss_detection_cfg_cmd_s { + A_UINT32 tlv_header; /* tag = WMITLV_TAG_STRUC_wmi_sap_obss_detection_cfg_cmd_fixed_param */ + A_UINT32 vdev_id; + A_UINT32 detect_period_ms; + + /* detect whether there is 11b ap/ibss */ + A_UINT32 b_ap_detect_mode; /* refer WMI_SAP_OBSS_DETECTION_MODE */ + + /* detect whether there is 11b sta connected with other APs */ + A_UINT32 b_sta_detect_mode; + + /* detect whether there is 11g AP */ + A_UINT32 g_ap_detect_mode; + + /* detect whether there is legacy 11a traffic */ + A_UINT32 a_detect_mode; + + /* detect whether there is ap which is ht legacy mode */ + A_UINT32 ht_legacy_detect_mode; + + /* detect whether there is ap which is ht mixed mode : has 11b/11g sta */ + A_UINT32 ht_mixed_detect_mode; + + /* detect whether there is ap which has 20M only station */ + A_UINT32 ht_20mhz_detect_mode; + +} wmi_sap_obss_detection_cfg_cmd_fixed_param; + +typedef enum { + WMI_SAP_OBSS_DETECTION_EVENT_REASON_NOT_SUPPORT = 0, + WMI_SAP_OBSS_DETECTION_EVENT_REASON_PRESENT_NOTIFY, + WMI_SAP_OBSS_DETECTION_EVENT_REASON_ABSENT_TIMEOUT, +} WMI_SAP_OBSS_DETECTION_EVENT_REASON; + +/* WMI_SAP_OBSS_DETECTION_MATCH_MASK is one or more of the following shift bits */ +#define WMI_SAP_OBSS_DETECTION_MATCH_BIT_11B_AP_S 0 +#define WMI_SAP_OBSS_DETECTION_MATCH_BIT_11B_STA_S 1 +#define WMI_SAP_OBSS_DETECTION_MATCH_BIT_11G_AP_S 2 +#define WMI_SAP_OBSS_DETECTION_MATCH_BIT_11A_S 3 +#define WMI_SAP_OBSS_DETECTION_MATCH_BIT_HT_LEGACY_S 4 +#define WMI_SAP_OBSS_DETECTION_MATCH_BIT_HT_MIXED_S 5 +#define WMI_SAP_OBSS_DETECTION_MATCH_BIT_HT_20MHZ_S 6 + +typedef struct wmi_sap_obss_detection_info_evt_s { + A_UINT32 tlv_header; /* tag = WMITLV_TAG_STRUC_wmi_sap_obss_detection_info_evt_fixed_param */ + A_UINT32 vdev_id; + A_UINT32 reason; /* refer WMI_SAP_OBSS_DETECTION_EVENT_REASON */ + A_UINT32 matched_detection_masks; /* bit(s) from WMI_SAP_OBSS_DETECTION_MATCH_MASK */ + wmi_mac_addr matched_bssid_addr; /* valid when reason is WMI_SAP_OBSS_DETECTION_EVENT_REASON_PRESENT_NOTIFY */ +} wmi_sap_obss_detection_info_evt_fixed_param; /** * OCB DCC types and structures. @@ -20870,6 +20931,7 @@ static INLINE A_UINT8 *wmi_id_to_name(A_UINT32 wmi_command) WMI_RETURN_STRING(WMI_PDEV_SET_AC_TX_QUEUE_OPTIMIZED_CMDID); WMI_RETURN_STRING(WMI_PEER_TID_MSDUQ_QDEPTH_THRESH_UPDATE_CMDID); WMI_RETURN_STRING(WMI_PDEV_SET_RX_FILTER_PROMISCUOUS_CMDID); + WMI_RETURN_STRING(WMI_SAP_OBSS_DETECTION_CFG_CMDID); } return "Invalid WMI cmd"; diff --git a/fw/wmi_version.h b/fw/wmi_version.h index 223b745d20f5..ef8fc5256f95 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_ 478 +#define __WMI_REVISION_ 479 /** The Version Namespace should not be normally changed. Only * host and firmware of the same WMI namespace will work