qcacmn: Add QCA vendor commands for spectral scan

Add following vendor commands and their handlers.

 1) QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_START
        Set the spectral parameters and start scan.
 2) QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_STATUS
        Stop spectral scan.
 3) QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_CONFIG
        Get current values of spectral parameters.
 4) QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_DIAG_STATS
        Get stats for spectral scan debug.
 5) QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_CAP_INFO
        Get the spectral hardware capability.
 6) QCA_NL80211_VENDOR_SUBCMD_SPECTRAL_SCAN_GET_STATUS
        Get the current status of spectral scan.

CRs-Fixed: 2146272
Change-Id: I8e048d6c21e9fb1ed286c19df0edcad46f6e6414
这个提交包含在:
Edayilliam Jayadev
2017-11-17 12:21:52 +05:30
提交者 snandini
父节点 a3d50e8a85
当前提交 d8c6a467dd
修改 8 个文件,包含 974 行新增8 行删除

查看文件

@@ -25,6 +25,7 @@
#include <osif_private.h>
#include <wlan_spectral_public_structs.h>
#include <wlan_mlme_dispatcher.h>
#include <wlan_cfg80211_spectral.h>
/**
* spectral_get_vdev() - Get pointer to vdev to be used for Spectral
@@ -64,6 +65,34 @@ spectral_get_vdev(struct wlan_objmgr_pdev *pdev)
return vdev;
}
static void spectral_register_cfg80211_handlers(struct wlan_objmgr_pdev *pdev)
{
wlan_cfg80211_register_spectral_cmd_handler(
pdev,
SPECTRAL_SCAN_START_HANDLER_IDX,
wlan_cfg80211_spectral_scan_config_and_start);
wlan_cfg80211_register_spectral_cmd_handler(
pdev,
SPECTRAL_SCAN_STOP_HANDLER_IDX,
wlan_cfg80211_spectral_scan_stop);
wlan_cfg80211_register_spectral_cmd_handler(
pdev,
SPECTRAL_SCAN_GET_CONFIG_HANDLER_IDX,
wlan_cfg80211_spectral_scan_get_config);
wlan_cfg80211_register_spectral_cmd_handler(
pdev,
SPECTRAL_SCAN_GET_DIAG_STATS_HANDLER_IDX,
wlan_cfg80211_spectral_scan_get_diag_stats);
wlan_cfg80211_register_spectral_cmd_handler(
pdev,
SPECTRAL_SCAN_GET_CAP_HANDLER_IDX,
wlan_cfg80211_spectral_scan_get_cap);
wlan_cfg80211_register_spectral_cmd_handler(
pdev,
SPECTRAL_SCAN_GET_STATUS_HANDLER_IDX,
wlan_cfg80211_spectral_scan_get_status);
}
int spectral_control_cmn(
struct wlan_objmgr_pdev *pdev,
u_int id,
@@ -348,6 +377,18 @@ int spectral_control_cmn(
}
break;
case SPECTRAL_GET_DEBUG_LEVEL:
{
if (!outdata || !outsize || *outsize < sizeof(u_int32_t)) {
error = -EINVAL;
break;
}
*outsize = sizeof(u_int32_t);
*((u_int32_t *)outdata) =
(u_int32_t)sc->sptrlc_get_debug_level(pdev);
}
break;
case SPECTRAL_ACTIVATE_SCAN:
{
sc->sptrlc_start_spectral_scan(pdev);
@@ -511,6 +552,8 @@ wlan_spectral_pdev_obj_create_handler(struct wlan_objmgr_pdev *pdev, void *arg)
qdf_mem_zero(ps, sizeof(struct pdev_spectral));
ps->psptrl_pdev = pdev;
spectral_register_cfg80211_handlers(pdev);
if (sc->sptrlc_pdev_spectral_init) {
target_handle = sc->sptrlc_pdev_spectral_init(pdev);
if (!target_handle) {