qcacmn: Spectral control path changes

Add a new request structure for Specteral control path.
This structure packages all the commands and their
required inputs. Response to the commands are filled
in this structure by the command handlers in lower
layers.

CRs-Fixed: 2446466
Change-Id: I3113e8721382d284b4e03e0f8fdab1e68d5cfaa1
This commit is contained in:
Edayilliam Jayadev
2019-05-03 14:30:54 +05:30
committad av nshrivas
förälder 327257e9dd
incheckning 14f9bd4194
9 ändrade filer med 426 tillägg och 343 borttagningar

Visa fil

@@ -1,5 +1,5 @@
/*
* Copyright (c) 2017-2018 The Linux Foundation. All rights reserved.
* Copyright (c) 2017-2019 The Linux Foundation. All rights reserved.
*
*
* Permission to use, copy, modify, and/or distribute this software for
@@ -85,12 +85,8 @@ QDF_STATUS wlan_spectral_pdev_obj_destroy_handler(struct wlan_objmgr_pdev *pdev,
/**
* spectral_control_cmn()- common handler for demultiplexing requests from
* higher layer
* @pdev: reference to global pdev object
* @id: spectral config command id
* @indata: reference to input data
* @insize: input data size
* @outdata: reference to output data
* @outsize: reference to output data size
* @pdev: reference to global pdev object
* @sscan_req: pointer to Spectral scan request
*
* This function processes the spectral config command
* and appropriate handlers are invoked.
@@ -98,9 +94,7 @@ QDF_STATUS wlan_spectral_pdev_obj_destroy_handler(struct wlan_objmgr_pdev *pdev,
* Return: 0 success else failure
*/
int spectral_control_cmn(struct wlan_objmgr_pdev *pdev,
u_int id,
void *indata,
uint32_t insize, void *outdata, uint32_t *outsize);
struct spectral_cp_request *sscan_req);
/**
* spectral_control_ol(): Offload handler for demultiplexing requests from

Visa fil

@@ -113,9 +113,7 @@ spectral_register_cfg80211_handlers(struct wlan_objmgr_pdev *pdev)
int
spectral_control_cmn(struct wlan_objmgr_pdev *pdev,
u_int id,
void *indata,
uint32_t insize, void *outdata, uint32_t *outsize)
struct spectral_cp_request *sscan_req)
{
int error = 0;
int temp_debug;
@@ -138,15 +136,10 @@ spectral_control_cmn(struct wlan_objmgr_pdev *pdev,
goto bad;
}
switch (id) {
switch (sscan_req->req_id) {
case SPECTRAL_SET_CONFIG:
{
if (insize < sizeof(struct spectral_config) ||
!indata) {
error = -EINVAL;
break;
}
sp_in = (struct spectral_config *)indata;
sp_in = &sscan_req->config_req.sscan_config;
if (sp_in->ss_count !=
SPECTRAL_PHYERR_PARAM_NOVAL) {
if (sc->sptrlc_set_spectral_config(
@@ -345,14 +338,8 @@ spectral_control_cmn(struct wlan_objmgr_pdev *pdev,
case SPECTRAL_GET_CONFIG:
{
if (!outdata || !outsize ||
(*outsize < sizeof(struct spectral_config))) {
error = -EINVAL;
break;
}
*outsize = sizeof(struct spectral_config);
sc->sptrlc_get_spectral_config(pdev, &sp_out);
spectralparams = (struct spectral_config *)outdata;
spectralparams = &sscan_req->config_req.sscan_config;
spectralparams->ss_fft_period = sp_out.ss_fft_period;
spectralparams->ss_period = sp_out.ss_period;
spectralparams->ss_count = sp_out.ss_count;
@@ -382,51 +369,29 @@ spectral_control_cmn(struct wlan_objmgr_pdev *pdev,
case SPECTRAL_IS_ACTIVE:
{
if (!outdata || !outsize ||
*outsize < sizeof(uint32_t)) {
error = -EINVAL;
break;
}
*outsize = sizeof(uint32_t);
*((uint32_t *)outdata) =
(uint32_t)sc->sptrlc_is_spectral_active(pdev);
sscan_req->status_req.is_active =
(bool)sc->sptrlc_is_spectral_active(pdev);
}
break;
case SPECTRAL_IS_ENABLED:
{
if (!outdata || !outsize ||
*outsize < sizeof(uint32_t)) {
error = -EINVAL;
break;
}
*outsize = sizeof(uint32_t);
*((uint32_t *)outdata) =
(uint32_t)sc->sptrlc_is_spectral_enabled(pdev);
sscan_req->status_req.is_enabled =
(bool)sc->sptrlc_is_spectral_enabled(pdev);
}
break;
case SPECTRAL_SET_DEBUG_LEVEL:
{
if (insize < sizeof(uint32_t) || !indata) {
error = -EINVAL;
break;
}
temp_debug = *(uint32_t *)indata;
temp_debug = sscan_req->debug_req.spectral_dbg_level;
sc->sptrlc_set_debug_level(pdev, temp_debug);
}
break;
case SPECTRAL_GET_DEBUG_LEVEL:
{
if (!outdata || !outsize ||
*outsize < sizeof(uint32_t)) {
error = -EINVAL;
break;
}
*outsize = sizeof(uint32_t);
*((uint32_t *)outdata) =
(uint32_t)sc->sptrlc_get_debug_level(pdev);
sscan_req->debug_req.spectral_dbg_level =
(uint32_t)sc->sptrlc_get_debug_level(pdev);
}
break;
@@ -444,25 +409,19 @@ spectral_control_cmn(struct wlan_objmgr_pdev *pdev,
case SPECTRAL_GET_CAPABILITY_INFO:
{
if (!outdata || !outsize ||
*outsize < sizeof(struct spectral_caps)) {
error = -EINVAL;
break;
}
*outsize = sizeof(struct spectral_caps);
sc->sptrlc_get_spectral_capinfo(pdev, outdata);
struct spectral_caps *caps;
caps = &sscan_req->caps_req.sscan_caps;
sc->sptrlc_get_spectral_capinfo(pdev, caps);
}
break;
case SPECTRAL_GET_DIAG_STATS:
{
if (!outdata || !outsize ||
(*outsize < sizeof(struct spectral_diag_stats))) {
error = -EINVAL;
break;
}
*outsize = sizeof(struct spectral_diag_stats);
sc->sptrlc_get_spectral_diagstats(pdev, outdata);
struct spectral_diag_stats *diag;
diag = &sscan_req->diag_req.sscan_diag;
sc->sptrlc_get_spectral_diagstats(pdev, diag);
}
break;
@@ -477,13 +436,8 @@ spectral_control_cmn(struct wlan_objmgr_pdev *pdev,
chan_width = spectral_vdev_get_ch_width(vdev);
wlan_objmgr_vdev_release_ref(vdev, WLAN_SPECTRAL_ID);
if (!outdata || !outsize ||
*outsize < sizeof(chan_width)) {
error = -EINVAL;
break;
}
*outsize = sizeof(chan_width);
*((uint32_t *)outdata) = (uint32_t)chan_width;
sscan_req->chan_width_req.chan_width =
(uint32_t)chan_width;
}
break;

Visa fil

@@ -123,9 +123,7 @@ struct spectral_context {
struct wlan_objmgr_psoc *psoc_obj;
struct spectral_legacy_cbacks legacy_cbacks;
int (*sptrlc_spectral_control)(struct wlan_objmgr_pdev *pdev,
u_int id, void *indata,
uint32_t insize, void *outdata,
uint32_t *outsize);
struct spectral_cp_request *sscan_req);
int (*sptrlc_ucfg_phyerr_config)(struct wlan_objmgr_pdev *pdev,
void *ad);
void * (*sptrlc_pdev_spectral_init)(struct wlan_objmgr_pdev *pdev);