qcacld-3.0: 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. And
user space configs these APs to firmware when the DUT
starts up next time.

CRs-Fixed: 2425202
Change-Id: I2e828d521f0e04862a01fa1c90626f51b7f65796
This commit is contained in:
Paul Zhang
2019-05-14 11:20:14 +08:00
committed by nshrivas
parent 55902294cf
commit 3718567245
15 changed files with 1358 additions and 1 deletions

View File

@@ -0,0 +1,74 @@
/*
* 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: contains interop issues ap structure definations
*/
#ifndef _WLAN_INTEROP_ISSUES_AP_STRUCTS_H_
#define _WLAN_INTEROP_ISSUES_AP_STRUCTS_H_
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
#include <qdf_types.h>
#include <wlan_objmgr_psoc_obj.h>
#define MAX_INTEROP_ISSUES_AP_NUM 20
/**
* struct wlan_interop_issues_ap_info - interop issues ap info
* @count: the number of interop issues ap
* @rap_items: interop issues ap items
*/
struct wlan_interop_issues_ap_info {
uint32_t count;
struct qdf_mac_addr rap_items[MAX_INTEROP_ISSUES_AP_NUM];
};
/**
* struct wlan_interop_issues_ap_event - interop issues ap event
* @pdev: pdev object
* @psoc: psoc object
* @pdev_id: pdev id number
* @rap_addr: interop issues ap mac address
*/
struct wlan_interop_issues_ap_event {
struct wlan_objmgr_pdev *pdev;
struct wlan_objmgr_psoc *psoc;
uint32_t pdev_id;
struct qdf_mac_addr rap_addr;
};
/**
* struct wlan_interop_issues_ap_callbacks - interop issues ap callbacks
* @os_if_interop_issues_ap_event_handler: OS IF callback for handling events
*/
struct wlan_interop_issues_ap_callbacks {
void (*os_if_interop_issues_ap_event_handler)
(struct wlan_interop_issues_ap_event *event);
};
/**
* struct wlan_interop_issues_ap_tx_ops - structure of tx func pointers
* @set_rap_ps: handler for TX operations for the interop issues ap ps config
*/
struct wlan_interop_issues_ap_tx_ops {
QDF_STATUS (*set_rap_ps)(struct wlan_objmgr_psoc *psoc,
struct wlan_interop_issues_ap_info *rap);
};
#endif
#endif /* _WLAN_INTEROP_ISSUES_AP_STRUCTS_H_ */

View File

@@ -0,0 +1,50 @@
/*
* 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: wlan_interop_issues_ap_tgt_api.h
*
* This header file provide with API declarations to interface with Southbound
*/
#ifndef __WLAN_INTEROP_ISSUES_AP_TGT_API_H__
#define __WLAN_INTEROP_ISSUES_AP_TGT_API_H__
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
/**
* tgt_interop_issues_ap_info_callback() - interop issues ap info callback
* @psoc: the pointer to psoc object manager
* @rap: the interop issues ap mac address
*
* Return: QDF_STATUS
*/
QDF_STATUS
tgt_interop_issues_ap_info_callback(struct wlan_objmgr_psoc *psoc,
struct wlan_interop_issues_ap_event *rap);
/**
* tgt_set_interop_issues_ap_req(): API to set interop issues ap to lmac
* @rx_ops: rx ops struct
* @rap: the pointer to interop issues ap info
*
* Return: status of operation
*/
QDF_STATUS
tgt_set_interop_issues_ap_req(struct wlan_objmgr_psoc *psoc,
struct wlan_interop_issues_ap_info *rap);
#endif
#endif /* __WLAN_INTEROP_ISSUES_AP_TGT_API_H__ */

View File

@@ -0,0 +1,100 @@
/*
* 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: wlan_interop_issues_ap_ucfg_api.h
*
* This header file maintain API declaration required for northbound interaction
*/
#ifndef __WLAN_INTEROP_ISSUES_AP_UCFG_API_H__
#define __WLAN_INTEROP_ISSUES_AP_UCFG_API_H__
#ifdef WLAN_FEATURE_INTEROP_ISSUES_AP
#include <qdf_status.h>
#include <qdf_types.h>
#include <wlan_interop_issues_ap_public_structs.h>
/**
* ucfg_interop_issues_ap_psoc_enable() - interop issues ap component enable
* @psoc: the point to psoc object
*
* Return: QDF_STATUS_SUCCESS - in case of success
*/
QDF_STATUS ucfg_interop_issues_ap_psoc_enable(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_interop_issues_ap_psoc_disable() - interop issues ap component disable
* @psoc: the point to psoc object
*
* Return: QDF_STATUS_SUCCESS - in case of success
*/
QDF_STATUS ucfg_interop_issues_ap_psoc_disable(struct wlan_objmgr_psoc *psoc);
/**
* ucfg_interop_issues_ap_init() - interop issues ap component initialization
*
* Return: QDF_STATUS_SUCCESS - in case of success
*/
QDF_STATUS ucfg_interop_issues_ap_init(void);
/**
* ucfg_interop_issues_ap_deinit() - interop issues ap component de-init
*
* Return: QDF_STATUS_SUCCESS - in case of success
*/
QDF_STATUS ucfg_interop_issues_ap_deinit(void);
/**
* ucfg_register_interop_issues_ap_callback() - API to register callback
* @cbs: pointer to callback structure
*
* Return: none
*/
void ucfg_register_interop_issues_ap_callback(struct wlan_objmgr_pdev *pdev,
struct wlan_interop_issues_ap_callbacks *cbs);
/**
* ucfg_set_interop_issues_ap_config() - API to set interop issues ap
* @vdev: the pointer of vdev object
* @rap: the pointer of interop issues ap info
*
* Return: none
*/
QDF_STATUS ucfg_set_interop_issues_ap_config(struct wlan_objmgr_vdev *vdev,
struct wlan_interop_issues_ap_info *rap);
#else
static inline
QDF_STATUS ucfg_interop_issues_ap_psoc_enable(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS ucfg_interop_issues_ap_psoc_disable(struct wlan_objmgr_psoc *psoc)
{
return QDF_STATUS_SUCCESS;
}
static inline
QDF_STATUS ucfg_interop_issues_ap_init(void) { return QDF_STATUS_SUCCESS; }
static inline
QDF_STATUS ucfg_interop_issues_ap_deinit(void) { return QDF_STATUS_SUCCESS; }
#endif /* WLAN_FEATURE_INTEROP_ISSUES_AP */
#endif /* __WLAN_RAP_PS_UCFG_API_H__ */