qcacmn: Implement api for interop issues ap

Implement the interface to transfer the info between
host driver and firmware about the ap which has interop
issues with the DUT. It is detected by firmware and
forwarded to user sapce for persistent storage. User
space configs these APs to firmware when the DUT
starts up next time.

CRs-Fixed: 2425197
Change-Id: I3857d2a605baa2673af333a7a0412f1690b59769
This commit is contained in:
Paul Zhang 2019-05-14 11:33:31 +08:00 • committed by nshrivas
commit 5ea0a91a89
10 changed files with 265 additions and 0 deletions

View file

@ -0,0 +1,48 @@
/*
* Copyright (c) 2019 The Linux Foundation. All rights reserved.
*
* Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
* WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
* AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
* DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
* PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
* TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
* PERFORMANCE OF THIS SOFTWARE.
*/
/**
* DOC: Implement API's specific to interop issues ap component.
*/
#ifndef _WMI_UNIFIED_INTEROP_ISSUES_AP_API_H_
#define _WMI_UNIFIED_INTEROP_ISSUES_AP_API_H_
#include <wmi_unified_param.h>
#include <wlan_interop_issues_ap_public_structs.h>
/**
* wmi_extract_interop_issues_ap_ev_param() - extract info from event
* @wmi_handle: wmi handle
* @evt_buf: event buffer
* @param: pointer to interop issues ap event structure
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS
wmi_extract_interop_issues_ap_ev_param(wmi_unified_t wmi_handle, void *evt_buf,
struct wlan_interop_issues_ap_event *param);
/**
* wmi_unified_set_rap_ps_cmd() - set interop issues ap for ps in fw
* @wmi_handle: wmi handle
* @rap: interop issues ap info
*
* Return: QDF_STATUS_SUCCESS on success and QDF_STATUS_E_FAILURE for failure
*/
QDF_STATUS wmi_unified_set_rap_ps_cmd(wmi_unified_t wmi_handle,
struct wlan_interop_issues_ap_info *rap);
#endif

View file

@ -4835,6 +4835,9 @@ typedef enum {
wmi_vdev_get_mws_coex_tdm_state_eventid,
wmi_vdev_get_mws_coex_idrx_state_eventid,
wmi_vdev_get_mws_coex_antenna_sharing_state_eventid,
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
wmi_pdev_interop_issues_ap_event_id,
#endif
wmi_events_max,
} wmi_conv_event_id;

View file

@ -60,6 +60,10 @@
#include "wmi_unified_atf_param.h"
#endif
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
#include <wlan_interop_issues_ap_public_structs.h>
#endif
#define WMI_UNIFIED_MAX_EVENT 0x100
#ifdef WMI_EXT_DBG
@ -1487,6 +1491,15 @@ QDF_STATUS
struct p2p_set_mac_filter_evt *param);
#endif
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
QDF_STATUS
(*extract_interop_issues_ap_ev_param)(wmi_unified_t wmi_handle, void *evt_buf,
struct wlan_interop_issues_ap_event *param);
QDF_STATUS
(*send_set_rap_ps_cmd)(wmi_unified_t wmi_handle,
struct wlan_interop_issues_ap_info *interop_issues_ap);
#endif
QDF_STATUS (*extract_peer_sta_ps_statechange_ev)(wmi_unified_t wmi_handle,
void *evt_buf, wmi_host_peer_sta_ps_statechange_event *ev);
@ -2166,6 +2179,15 @@ static inline void wmi_p2p_attach_tlv(struct wmi_unified *wmi_handle)
}
#endif
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
void wmi_interop_issues_ap_attach_tlv(wmi_unified_t wmi_handle);
#else
static inline void
wmi_interop_issues_ap_attach_tlv(struct wmi_unified *wmi_handle)
{
}
#endif
#ifdef FEATURE_LFR_SUBNET_DETECTION
void wmi_lfr_subnet_detection_attach_tlv(wmi_unified_t wmi_handle);
#else