diff --git a/wmi_unified_api.h b/wmi_unified_api.h index 44d431b141..9aa0c512b2 100644 --- a/wmi_unified_api.h +++ b/wmi_unified_api.h @@ -1911,4 +1911,22 @@ QDF_STATUS wmi_unified_send_btm_config(void *wmi_hdl, QDF_STATUS wmi_unified_send_obss_detection_cfg_cmd(void *wmi_hdl, struct wmi_obss_detection_cfg_param *cfg); + +/** + * wmi_unified_extract_obss_detection_info() - WMI function to extract obss + * detection info from FW. + * @wmi_hdl: wmi handle + * @data: event data from firmware + * @info: Pointer to hold obss detection info + * + * This function is used to extract obss info from firmware. + * + * Return: QDF_STATUS + */ + +QDF_STATUS wmi_unified_extract_obss_detection_info(void *wmi_hdl, + uint8_t *data, + struct wmi_obss_detect_info + *info); + #endif /* _WMI_UNIFIED_API_H_ */ diff --git a/wmi_unified_param.h b/wmi_unified_param.h index d0eae3e0a2..a84d9e95ce 100644 --- a/wmi_unified_param.h +++ b/wmi_unified_param.h @@ -8297,4 +8297,33 @@ struct wmi_obss_detection_cfg_param { uint32_t obss_ht_20mhz_detect_mode; }; +/** + * enum sap_obss_detection_reason - obss detection event reasons + * @OBSS_OFFLOAD_DETECTION_DISABLED: OBSS detection disabled + * @OBSS_OFFLOAD_DETECTION_PRESENT: OBSS present detection + * @OBSS_OFFLOAD_DETECTION_ABSENT: OBSS absent detection + * + * Defines different types of reasons for obss detection event from firmware. + */ +enum wmi_obss_detection_reason { + OBSS_OFFLOAD_DETECTION_DISABLED = 0, + OBSS_OFFLOAD_DETECTION_PRESENT = 1, + OBSS_OFFLOAD_DETECTION_ABSENT = 2, +}; + +/** + * struct wmi_obss_detect_info - OBSS detection info from firmware + * @vdev_id: IDof the vdev to which this info belongs. + * @reason: Indicate if present or Absent detection, + * also if not supported offload for this vdev. + * @matched_detection_masks: Detection bit map. + * @matched_bssid_addr: MAC address valid for only if info is present detection. + */ +struct wmi_obss_detect_info { + uint32_t vdev_id; + enum wmi_obss_detection_reason reason; + uint32_t matched_detection_masks; + uint8_t matched_bssid_addr[IEEE80211_ADDR_LEN]; +}; + #endif /* _WMI_UNIFIED_PARAM_H_ */ diff --git a/wmi_unified_priv.h b/wmi_unified_priv.h index cc231d196a..5f426c7b87 100644 --- a/wmi_unified_priv.h +++ b/wmi_unified_priv.h @@ -1496,6 +1496,8 @@ QDF_STATUS (*send_btm_config)(wmi_unified_t wmi_handle, struct wmi_btm_config *params); QDF_STATUS (*send_obss_detection_cfg_cmd)(wmi_unified_t wmi_handle, struct wmi_obss_detection_cfg_param *obss_cfg_param); +QDF_STATUS (*extract_obss_detection_info)(uint8_t *evt_buf, + struct wmi_obss_detect_info *info); }; /* Forward declartion for psoc*/