qcacld-3.0: Add 11K offload param to converged CFG component
Update driver to move 11K offload params to converged CFG component and remove redundant entries from HDD config. Change-Id: I7703ca5b23d5fa95a3b5dc5ccd9690771a4bf43d CRs-fixed: 2357708
This commit is contained in:

committed by
nshrivas

parent
7165bc3ab0
commit
06d38d8c48
@@ -109,11 +109,34 @@ struct wlan_fwol_ie_whitelist {
|
|||||||
uint32_t probe_req_voui[MAX_PROBE_REQ_OUIS];
|
uint32_t probe_req_voui[MAX_PROBE_REQ_OUIS];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* struct wlan_fwol_neighbor_report_cfg - Neighbor report config params
|
||||||
|
* @enable_bitmask: Neighbor report offload bitmask control
|
||||||
|
* @params_bitmask: Param validity bitmask
|
||||||
|
* @time_offset: Neighbor report frame time offset
|
||||||
|
* @low_rssi_offset: Low RSSI offset
|
||||||
|
* @bmiss_count_trigger: Beacon miss trigger count
|
||||||
|
* @per_threshold_offset: PER Threshold offset
|
||||||
|
* @cache_timeout: Cache timeout
|
||||||
|
* @max_req_cap: Max request per peer
|
||||||
|
*/
|
||||||
|
struct wlan_fwol_neighbor_report_cfg {
|
||||||
|
uint32_t enable_bitmask;
|
||||||
|
uint32_t params_bitmask;
|
||||||
|
uint32_t time_offset;
|
||||||
|
uint32_t low_rssi_offset;
|
||||||
|
uint32_t bmiss_count_trigger;
|
||||||
|
uint32_t per_threshold_offset;
|
||||||
|
uint32_t cache_timeout;
|
||||||
|
uint32_t max_req_cap;
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* struct wlan_fwol_cfg - fwol config items
|
* struct wlan_fwol_cfg - fwol config items
|
||||||
* coex_config: coex config items
|
* @coex_config: coex config items
|
||||||
* thermal_temp_cfg: Thermal temperature related config items
|
* @thermal_temp_cfg: Thermal temperature related config items
|
||||||
* ie_whitelist_cfg: IE Whitelist related config items
|
* @ie_whitelist_cfg: IE Whitelist related config items
|
||||||
|
* @neighbor_report_cfg: 11K neighbor report config
|
||||||
* @ani_enabled: ANI enable/disable
|
* @ani_enabled: ANI enable/disable
|
||||||
* @enable_rts_sifsbursting: Enable RTS SIFS Bursting
|
* @enable_rts_sifsbursting: Enable RTS SIFS Bursting
|
||||||
* @max_mpdus_inampdu: Max number of MPDUS
|
* @max_mpdus_inampdu: Max number of MPDUS
|
||||||
@@ -139,6 +162,7 @@ struct wlan_fwol_cfg {
|
|||||||
struct wlan_fwol_coex_config coex_config;
|
struct wlan_fwol_coex_config coex_config;
|
||||||
struct wlan_fwol_thermal_temp thermal_temp_cfg;
|
struct wlan_fwol_thermal_temp thermal_temp_cfg;
|
||||||
struct wlan_fwol_ie_whitelist ie_whitelist_cfg;
|
struct wlan_fwol_ie_whitelist ie_whitelist_cfg;
|
||||||
|
struct wlan_fwol_neighbor_report_cfg neighbor_report_cfg;
|
||||||
bool ani_enabled;
|
bool ani_enabled;
|
||||||
bool enable_rts_sifsbursting;
|
bool enable_rts_sifsbursting;
|
||||||
uint8_t max_mpdus_inampdu;
|
uint8_t max_mpdus_inampdu;
|
||||||
@@ -201,4 +225,15 @@ QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc);
|
|||||||
* Return: QDF_STATUS
|
* Return: QDF_STATUS
|
||||||
*/
|
*/
|
||||||
QDF_STATUS fwol_cfg_on_psoc_disable(struct wlan_objmgr_psoc *psoc);
|
QDF_STATUS fwol_cfg_on_psoc_disable(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* fwol_init_neighbor_report_cfg() - Populate default neighbor report CFG values
|
||||||
|
* @psoc: pointer to the psoc object
|
||||||
|
* @fwol_neighbor_report_cfg: Pointer to Neighbor report config data structure
|
||||||
|
*
|
||||||
|
* Return: QDF_STATUS
|
||||||
|
*/
|
||||||
|
QDF_STATUS fwol_init_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_fwol_neighbor_report_cfg
|
||||||
|
*fwol_neighbor_report_cfg);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -87,6 +87,35 @@ fwol_init_thermal_temp_in_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
cfg_get(psoc, CFG_THROTTLE_DUTY_CYCLE_LEVEL3);
|
cfg_get(psoc, CFG_THROTTLE_DUTY_CYCLE_LEVEL3);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS fwol_init_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_fwol_neighbor_report_cfg
|
||||||
|
*fwol_neighbor_report_cfg)
|
||||||
|
{
|
||||||
|
if (!fwol_neighbor_report_cfg) {
|
||||||
|
fwol_err("Neighbor report config pointer null");
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
fwol_neighbor_report_cfg->enable_bitmask =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_11K_ENABLE_BITMASK);
|
||||||
|
fwol_neighbor_report_cfg->params_bitmask =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK);
|
||||||
|
fwol_neighbor_report_cfg->time_offset =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET);
|
||||||
|
fwol_neighbor_report_cfg->low_rssi_offset =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET);
|
||||||
|
fwol_neighbor_report_cfg->bmiss_count_trigger =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER);
|
||||||
|
fwol_neighbor_report_cfg->per_threshold_offset =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET);
|
||||||
|
fwol_neighbor_report_cfg->cache_timeout =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT);
|
||||||
|
fwol_neighbor_report_cfg->max_req_cap =
|
||||||
|
cfg_get(psoc, CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* fwol_parse_probe_req_ouis - form ouis from ini gProbeReqOUIs
|
* fwol_parse_probe_req_ouis - form ouis from ini gProbeReqOUIs
|
||||||
* @psoc: Pointer to struct wlan_objmgr_psoc context
|
* @psoc: Pointer to struct wlan_objmgr_psoc context
|
||||||
@@ -280,6 +309,7 @@ QDF_STATUS fwol_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
|
|||||||
fwol_init_coex_config_in_cfg(psoc, &fwol_cfg->coex_config);
|
fwol_init_coex_config_in_cfg(psoc, &fwol_cfg->coex_config);
|
||||||
fwol_init_thermal_temp_in_cfg(psoc, &fwol_cfg->thermal_temp_cfg);
|
fwol_init_thermal_temp_in_cfg(psoc, &fwol_cfg->thermal_temp_cfg);
|
||||||
fwol_init_ie_whiltelist_in_cfg(psoc, &fwol_cfg->ie_whitelist_cfg);
|
fwol_init_ie_whiltelist_in_cfg(psoc, &fwol_cfg->ie_whitelist_cfg);
|
||||||
|
fwol_init_neighbor_report_cfg(psoc, &fwol_cfg->neighbor_report_cfg);
|
||||||
fwol_cfg->ani_enabled = cfg_get(psoc, CFG_ENABLE_ANI);
|
fwol_cfg->ani_enabled = cfg_get(psoc, CFG_ENABLE_ANI);
|
||||||
fwol_cfg->enable_rts_sifsbursting =
|
fwol_cfg->enable_rts_sifsbursting =
|
||||||
cfg_get(psoc, CFG_SET_RTS_FOR_SIFS_BURSTING);
|
cfg_get(psoc, CFG_SET_RTS_FOR_SIFS_BURSTING);
|
||||||
|
@@ -26,8 +26,10 @@
|
|||||||
#include "cfg_thermal_temp.h"
|
#include "cfg_thermal_temp.h"
|
||||||
#include "cfg_ie_whitelist.h"
|
#include "cfg_ie_whitelist.h"
|
||||||
#include "cfg_fwol_generic.h"
|
#include "cfg_fwol_generic.h"
|
||||||
|
#include "cfg_neighbor_roam.h"
|
||||||
|
|
||||||
#define CFG_FWOL_ALL \
|
#define CFG_FWOL_ALL \
|
||||||
|
CFG_11K_ALL \
|
||||||
CFG_COEX_ALL \
|
CFG_COEX_ALL \
|
||||||
CFG_FWOL_GENERIC_ALL \
|
CFG_FWOL_GENERIC_ALL \
|
||||||
CFG_IE_WHITELIST \
|
CFG_IE_WHITELIST \
|
||||||
|
225
components/fw_offload/dispatcher/inc/cfg_neighbor_roam.h
Normal file
225
components/fw_offload/dispatcher/inc/cfg_neighbor_roam.h
Normal file
@@ -0,0 +1,225 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2012 - 2018 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: This file contains centralized definitions of converged configuration.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __CFG_NR_H
|
||||||
|
#define __CFG_NR_H
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* 11k_offload_enable_bitmask - 11K offload bitmask feature control
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 1
|
||||||
|
* @Default: 1
|
||||||
|
*
|
||||||
|
* Disabled when 0 and enabled when 1
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_11K_ENABLE_BITMASK CFG_INI_BOOL( \
|
||||||
|
"11k_offload_enable_bitmask", \
|
||||||
|
1, \
|
||||||
|
"11K offload bitmask feature control")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* nr_offload_params_bitmask - bitmask to specify which of the
|
||||||
|
* neighbor report offload params are valid in the ini
|
||||||
|
* frame
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 63
|
||||||
|
* @Default: 63
|
||||||
|
*
|
||||||
|
* This ini specifies which of the neighbor report offload params are valid
|
||||||
|
* and should be considered by the FW. The bitmask is as follows
|
||||||
|
* B0: nr_offload_time_offset
|
||||||
|
* B1: nr_offload_low_rssi_offset
|
||||||
|
* B2: nr_offload_bmiss_count_trigger
|
||||||
|
* B3: nr_offload_per_threshold_offset
|
||||||
|
* B4: nr_offload_cache_timeout
|
||||||
|
* B5: nr_offload_max_req_cap
|
||||||
|
* B6-B7: Reserved
|
||||||
|
*
|
||||||
|
* Related : 11k_offload_enable_bitmask
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK CFG_INI_UINT( \
|
||||||
|
"nr_offload_params_bitmask", \
|
||||||
|
0, \
|
||||||
|
63, \
|
||||||
|
63, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Neighbor report offload params validity bitmask")
|
||||||
|
|
||||||
|
#define OFFLOAD_11K_BITMASK_NEIGHBOR_REPORT_REQUEST 0x1
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* nr_offload_time_offset - time interval in seconds after the
|
||||||
|
* neighbor report offload command to send the first neighbor report request
|
||||||
|
* frame
|
||||||
|
* @Min: 0
|
||||||
|
* @Max: 3600
|
||||||
|
* @Default: 30
|
||||||
|
*
|
||||||
|
* Related : nr_offload_params_bitmask
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET CFG_INI_UINT( \
|
||||||
|
"nr_offload_time_offset", \
|
||||||
|
0, \
|
||||||
|
3600, \
|
||||||
|
30, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Neighbor report time offset")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* nr_offload_low_rssi_offset - offset from the roam RSSI threshold
|
||||||
|
* to trigger the neighbor report request frame (in dBm)
|
||||||
|
* @Min: 4
|
||||||
|
* @Max: 10
|
||||||
|
* @Default: 4
|
||||||
|
*
|
||||||
|
* Related : nr_offload_params_bitmask
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET CFG_INI_UINT( \
|
||||||
|
"nr_offload_low_rssi_offset", \
|
||||||
|
4, \
|
||||||
|
10, \
|
||||||
|
4, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Neighbor report low RSSI offset")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* nr_offload_bmiss_count_trigger - Number of beacon miss events to
|
||||||
|
* trigger a neighbor report request frame
|
||||||
|
* @Min: 1
|
||||||
|
* @Max: 5
|
||||||
|
* @Default: 1
|
||||||
|
*
|
||||||
|
* Related : nr_offload_params_bitmask
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER CFG_INI_UINT( \
|
||||||
|
"nr_offload_bmiss_count_trigger", \
|
||||||
|
1, \
|
||||||
|
5, \
|
||||||
|
1, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Beacon miss count trigger for neighbor report req frame")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* nr_offload_per_threshold_offset - offset from PER threshold to
|
||||||
|
* trigger a neighbor report request frame (in %)
|
||||||
|
* @Min: 5
|
||||||
|
* @Max: 20
|
||||||
|
* @Default: 5
|
||||||
|
*
|
||||||
|
* This ini is used to set the neighbor report offload parameter:
|
||||||
|
*
|
||||||
|
* Related : nr_offload_params_bitmask
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET CFG_INI_UINT( \
|
||||||
|
"nr_offload_per_threshold_offset", \
|
||||||
|
5, \
|
||||||
|
20, \
|
||||||
|
5, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"PER threshold offset to trigger neighbor report req frame")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* nr_offload_cache_timeout - time in seconds after which the
|
||||||
|
* neighbor report cache is marked as timed out and any of the triggers would
|
||||||
|
* cause a neighbor report request frame to be sent.
|
||||||
|
* @Min: 5
|
||||||
|
* @Max: 86400
|
||||||
|
* @Default: 1200
|
||||||
|
*
|
||||||
|
* Related : nr_offload_params_bitmask
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT CFG_INI_UINT( \
|
||||||
|
"nr_offload_cache_timeout", \
|
||||||
|
5, \
|
||||||
|
86400, \
|
||||||
|
1200, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Neighbor report cache timeout to trigger report req frame")
|
||||||
|
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* nr_offload_max_req_cap - Max number of neighbor
|
||||||
|
* report requests that can be sent to a connected peer in the current session.
|
||||||
|
* This counter is reset once a successful roam happens or at cache timeout
|
||||||
|
* @Min: 3
|
||||||
|
* @Max: 300
|
||||||
|
* @Default: 3
|
||||||
|
*
|
||||||
|
* Related : nr_offload_params_bitmask
|
||||||
|
*
|
||||||
|
* Usage: External
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP CFG_INI_UINT( \
|
||||||
|
"nr_offload_max_req_cap", \
|
||||||
|
3, \
|
||||||
|
300, \
|
||||||
|
3, \
|
||||||
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
|
"Max neighbor report request to be sent to connected peer")
|
||||||
|
|
||||||
|
#define CFG_11K_ALL \
|
||||||
|
CFG(CFG_OFFLOAD_11K_ENABLE_BITMASK) \
|
||||||
|
CFG(CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK) \
|
||||||
|
CFG(CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET) \
|
||||||
|
CFG(CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET) \
|
||||||
|
CFG(CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER) \
|
||||||
|
CFG(CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET) \
|
||||||
|
CFG(CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT) \
|
||||||
|
CFG(CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP)
|
||||||
|
|
||||||
|
#endif
|
@@ -27,8 +27,6 @@
|
|||||||
#include <wlan_cmn.h>
|
#include <wlan_cmn.h>
|
||||||
#include "wlan_fw_offload_main.h"
|
#include "wlan_fw_offload_main.h"
|
||||||
|
|
||||||
#include "wlan_fw_offload_main.h"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_fwol_psoc_open() - FWOL component Open
|
* ucfg_fwol_psoc_open() - FWOL component Open
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
@@ -89,6 +87,29 @@ QDF_STATUS
|
|||||||
ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc,
|
ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc,
|
||||||
struct wlan_fwol_thermal_temp *thermal_temp);
|
struct wlan_fwol_thermal_temp *thermal_temp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_fwol_get_neighbor_report_cfg() - Get neighbor report config params
|
||||||
|
* @psoc: Pointer to psoc object
|
||||||
|
* @fwol_neighbor_report_cfg: Pointer to return neighbor report config
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_fwol_get_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_fwol_neighbor_report_cfg
|
||||||
|
*fwol_neighbor_report_cfg);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_fwol_get_neighbor_report_req() - Get neighbor report request bit
|
||||||
|
* @psoc: Pointer to psoc object
|
||||||
|
* @neighbor_report_req: Pointer to return value
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_fwol_is_neighbor_report_req_supported(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *neighbor_report_req);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_fwol_get_ie_whitelist() - Get IE whitelist param value
|
* ucfg_fwol_get_ie_whitelist() - Get IE whitelist param value
|
||||||
* @psoc: Pointer to psoc object
|
* @psoc: Pointer to psoc object
|
||||||
|
@@ -182,6 +182,52 @@ ucfg_fwol_get_thermal_temp(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_fwol_get_neighbor_report_cfg(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_fwol_neighbor_report_cfg
|
||||||
|
*fwol_neighbor_report_cfg)
|
||||||
|
{
|
||||||
|
struct wlan_fwol_psoc_obj *fwol_obj;
|
||||||
|
QDF_STATUS status = QDF_STATUS_SUCCESS;
|
||||||
|
|
||||||
|
if (!fwol_neighbor_report_cfg)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
fwol_obj = fwol_get_psoc_obj(psoc);
|
||||||
|
if (!fwol_obj) {
|
||||||
|
fwol_err("Failed to get fwol obj");
|
||||||
|
fwol_init_neighbor_report_cfg(psoc, fwol_neighbor_report_cfg);
|
||||||
|
status = QDF_STATUS_E_FAILURE;
|
||||||
|
} else {
|
||||||
|
fwol_neighbor_report_cfg = &fwol_obj->cfg.neighbor_report_cfg;
|
||||||
|
}
|
||||||
|
|
||||||
|
return status;
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_fwol_is_neighbor_report_req_supported(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *neighbor_report_req)
|
||||||
|
{
|
||||||
|
struct wlan_fwol_psoc_obj *fwol_obj;
|
||||||
|
|
||||||
|
fwol_obj = fwol_get_psoc_obj(psoc);
|
||||||
|
if (!fwol_obj) {
|
||||||
|
fwol_err("Failed to get fwol obj");
|
||||||
|
*neighbor_report_req =
|
||||||
|
!!(cfg_get(psoc,
|
||||||
|
CFG_OFFLOAD_11K_ENABLE_BITMASK) &
|
||||||
|
OFFLOAD_11K_BITMASK_NEIGHBOR_REPORT_REQUEST);
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*neighbor_report_req =
|
||||||
|
!!(fwol_obj->cfg.neighbor_report_cfg.enable_bitmask &
|
||||||
|
OFFLOAD_11K_BITMASK_NEIGHBOR_REPORT_REQUEST);
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
ucfg_fwol_get_ie_whitelist(struct wlan_objmgr_psoc *psoc, bool *ie_whitelist)
|
ucfg_fwol_get_ie_whitelist(struct wlan_objmgr_psoc *psoc, bool *ie_whitelist)
|
||||||
{
|
{
|
||||||
|
@@ -1652,189 +1652,6 @@ enum hdd_dot11_mode {
|
|||||||
#define CFG_ENABLE_GCMP_MAX (1)
|
#define CFG_ENABLE_GCMP_MAX (1)
|
||||||
#define CFG_ENABLE_GCMP_DEFAULT (1)
|
#define CFG_ENABLE_GCMP_DEFAULT (1)
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* 11k_offload_enable_bitmask - Bitmask to enable 11k offload to FW
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 1
|
|
||||||
* @Default: 1
|
|
||||||
*
|
|
||||||
* This ini is used to set which of the 11k features is offloaded to FW
|
|
||||||
* Currently Neighbor Report Request is supported for offload and is enabled
|
|
||||||
* by default
|
|
||||||
* B0: Offload 11k neighbor report requests
|
|
||||||
* B1-B31: Reserved
|
|
||||||
*
|
|
||||||
* Related : None
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CFG_OFFLOAD_11K_ENABLE_BITMASK_NAME "11k_offload_enable_bitmask"
|
|
||||||
#define CFG_OFFLOAD_11K_ENABLE_BITMASK_MIN (0)
|
|
||||||
#define CFG_OFFLOAD_11K_ENABLE_BITMASK_MAX (1)
|
|
||||||
#define CFG_OFFLOAD_11K_ENABLE_BITMASK_DEFAULT (1)
|
|
||||||
|
|
||||||
#define OFFLOAD_11K_BITMASK_NEIGHBOR_REPORT_REQUEST 0x1
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* nr_offload_params_bitmask - bitmask to specify which of the
|
|
||||||
* neighbor report offload params are valid in the ini
|
|
||||||
* frame
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 63
|
|
||||||
* @Default: 63
|
|
||||||
*
|
|
||||||
* This ini specifies which of the neighbor report offload params are valid
|
|
||||||
* and should be considered by the FW. The bitmask is as follows
|
|
||||||
* B0: nr_offload_time_offset
|
|
||||||
* B1: nr_offload_low_rssi_offset
|
|
||||||
* B2: nr_offload_bmiss_count_trigger
|
|
||||||
* B3: nr_offload_per_threshold_offset
|
|
||||||
* B4: nr_offload_cache_timeout
|
|
||||||
* B5: nr_offload_max_req_cap
|
|
||||||
* B6-B7: Reserved
|
|
||||||
*
|
|
||||||
* Related : 11k_offload_enable_bitmask
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_NAME \
|
|
||||||
"nr_offload_params_bitmask"
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_MIN (0)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_MAX (63)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_DEFAULT (63)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* nr_offload_time_offset - time interval in seconds after the
|
|
||||||
* neighbor report offload command to send the first neighbor report request
|
|
||||||
* frame
|
|
||||||
* @Min: 0
|
|
||||||
* @Max: 3600
|
|
||||||
* @Default: 30
|
|
||||||
*
|
|
||||||
* Related : nr_offload_params_bitmask
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_NAME \
|
|
||||||
"nr_offload_time_offset"
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_MIN (0)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_MAX (3600)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_DEFAULT (30)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* nr_offload_low_rssi_offset - offset from the roam RSSI threshold
|
|
||||||
* to trigger the neighbor report request frame (in dBm)
|
|
||||||
* @Min: 4
|
|
||||||
* @Max: 10
|
|
||||||
* @Default: 4
|
|
||||||
*
|
|
||||||
* Related : nr_offload_params_bitmask
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_NAME \
|
|
||||||
"nr_offload_low_rssi_offset"
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_MIN (4)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_MAX (10)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_DEFAULT (4)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* nr_offload_bmiss_count_trigger - Number of beacon miss events to
|
|
||||||
* trigger a neighbor report request frame
|
|
||||||
* @Min: 1
|
|
||||||
* @Max: 5
|
|
||||||
* @Default: 1
|
|
||||||
*
|
|
||||||
* Related : nr_offload_params_bitmask
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_NAME \
|
|
||||||
"nr_offload_bmiss_count_trigger"
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_MIN (1)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_MAX (5)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_DEFAULT (1)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* nr_offload_per_threshold_offset - offset from PER threshold to
|
|
||||||
* trigger a neighbor report request frame (in %)
|
|
||||||
* @Min: 5
|
|
||||||
* @Max: 20
|
|
||||||
* @Default: 5
|
|
||||||
*
|
|
||||||
* This ini is used to set the neighbor report offload parameter:
|
|
||||||
*
|
|
||||||
* Related : nr_offload_params_bitmask
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_NAME \
|
|
||||||
"nr_offload_per_threshold_offset"
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_MIN (5)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_MAX (20)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_DEFAULT (5)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* nr_offload_cache_timeout - time in seconds after which the
|
|
||||||
* neighbor report cache is marked as timed out and any of the triggers would
|
|
||||||
* cause a neighbor report request frame to be sent.
|
|
||||||
* @Min: 5
|
|
||||||
* @Max: 86400
|
|
||||||
* @Default: 1200
|
|
||||||
*
|
|
||||||
* Related : nr_offload_params_bitmask
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_NAME \
|
|
||||||
"nr_offload_cache_timeout"
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_MIN (5)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_MAX (86400)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_DEFAULT (1200)
|
|
||||||
|
|
||||||
/*
|
|
||||||
* <ini>
|
|
||||||
* nr_offload_max_req_cap - Max number of neighbor
|
|
||||||
* report requests that can be sent to a connected peer in the current session.
|
|
||||||
* This counter is reset once a successful roam happens or at cache timeout
|
|
||||||
* @Min: 3
|
|
||||||
* @Max: 300
|
|
||||||
* @Default: 3
|
|
||||||
*
|
|
||||||
* Related : nr_offload_params_bitmask
|
|
||||||
*
|
|
||||||
* Usage: External
|
|
||||||
*
|
|
||||||
* </ini>
|
|
||||||
*/
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_NAME \
|
|
||||||
"nr_offload_max_req_cap"
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_MIN (3)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_MAX (300)
|
|
||||||
#define CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_DEFAULT (3)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* gTxSchDelay - Enable/Disable Tx sch delay
|
* gTxSchDelay - Enable/Disable Tx sch delay
|
||||||
@@ -2052,14 +1869,6 @@ struct hdd_config {
|
|||||||
#endif
|
#endif
|
||||||
bool gcmp_enabled;
|
bool gcmp_enabled;
|
||||||
bool is_11k_offload_supported;
|
bool is_11k_offload_supported;
|
||||||
uint32_t offload_11k_enable_bitmask;
|
|
||||||
uint32_t neighbor_report_offload_params_bitmask;
|
|
||||||
uint32_t neighbor_report_offload_time_offset;
|
|
||||||
uint32_t neighbor_report_offload_low_rssi_offset;
|
|
||||||
uint32_t neighbor_report_offload_bmiss_count_trigger;
|
|
||||||
uint32_t neighbor_report_offload_per_threshold_offset;
|
|
||||||
uint32_t neighbor_report_offload_cache_timeout;
|
|
||||||
uint32_t neighbor_report_offload_max_req_cap;
|
|
||||||
bool action_oui_enable;
|
bool action_oui_enable;
|
||||||
uint8_t action_oui_str[ACTION_OUI_MAXIMUM_ID][ACTION_OUI_MAX_STR_LEN];
|
uint8_t action_oui_str[ACTION_OUI_MAXIMUM_ID][ACTION_OUI_MAX_STR_LEN];
|
||||||
uint8_t enable_tx_sch_delay;
|
uint8_t enable_tx_sch_delay;
|
||||||
|
@@ -546,72 +546,6 @@ struct reg_table_entry g_registry_table[] = {
|
|||||||
CFG_ENABLE_GCMP_MIN,
|
CFG_ENABLE_GCMP_MIN,
|
||||||
CFG_ENABLE_GCMP_MAX),
|
CFG_ENABLE_GCMP_MAX),
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_11K_ENABLE_BITMASK_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, offload_11k_enable_bitmask,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_11K_ENABLE_BITMASK_DEFAULT,
|
|
||||||
CFG_OFFLOAD_11K_ENABLE_BITMASK_MIN,
|
|
||||||
CFG_OFFLOAD_11K_ENABLE_BITMASK_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, neighbor_report_offload_params_bitmask,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_MIN,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_PARAMS_BITMASK_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, neighbor_report_offload_time_offset,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_MIN,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_TIME_OFFSET_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, neighbor_report_offload_low_rssi_offset,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_MIN,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_LOW_RSSI_OFFSET_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config,
|
|
||||||
neighbor_report_offload_bmiss_count_trigger,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_MIN,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_BMISS_COUNT_TRIGGER_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config,
|
|
||||||
neighbor_report_offload_per_threshold_offset,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_MIN,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_PER_THRESHOLD_OFFSET_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, neighbor_report_offload_cache_timeout,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_MIN,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_CACHE_TIMEOUT_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_NAME,
|
|
||||||
WLAN_PARAM_Integer,
|
|
||||||
struct hdd_config, neighbor_report_offload_max_req_cap,
|
|
||||||
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_DEFAULT,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_MIN,
|
|
||||||
CFG_OFFLOAD_NEIGHBOR_REPORT_MAX_REQ_CAP_MAX),
|
|
||||||
|
|
||||||
REG_VARIABLE(CFG_TX_SCH_DELAY_NAME,
|
REG_VARIABLE(CFG_TX_SCH_DELAY_NAME,
|
||||||
WLAN_PARAM_Integer,
|
WLAN_PARAM_Integer,
|
||||||
struct hdd_config, enable_tx_sch_delay,
|
struct hdd_config, enable_tx_sch_delay,
|
||||||
@@ -2002,36 +1936,6 @@ eCsrRoamWmmUserModeType hdd_to_csr_wmm_mode(uint8_t mode)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* hdd_update_11k_offload_params() - initializes the 11k offload related params
|
|
||||||
*
|
|
||||||
* @config: pointer to hdd_config structure
|
|
||||||
* @csr_config: pointer to the csr config structure
|
|
||||||
*
|
|
||||||
* Return: None
|
|
||||||
*/
|
|
||||||
static
|
|
||||||
void hdd_update_11k_offload_params(struct hdd_config *config,
|
|
||||||
tCsrConfigParam *csr_config)
|
|
||||||
{
|
|
||||||
csr_config->offload_11k_enable_bitmask =
|
|
||||||
config->offload_11k_enable_bitmask;
|
|
||||||
csr_config->neighbor_report_offload.params_bitmask =
|
|
||||||
config->neighbor_report_offload_params_bitmask;
|
|
||||||
csr_config->neighbor_report_offload.time_offset =
|
|
||||||
config->neighbor_report_offload_time_offset;
|
|
||||||
csr_config->neighbor_report_offload.low_rssi_offset =
|
|
||||||
config->neighbor_report_offload_low_rssi_offset;
|
|
||||||
csr_config->neighbor_report_offload.bmiss_count_trigger =
|
|
||||||
config->neighbor_report_offload_bmiss_count_trigger;
|
|
||||||
csr_config->neighbor_report_offload.per_threshold_offset =
|
|
||||||
config->neighbor_report_offload_per_threshold_offset;
|
|
||||||
csr_config->neighbor_report_offload.neighbor_report_cache_timeout =
|
|
||||||
config->neighbor_report_offload_cache_timeout;
|
|
||||||
csr_config->neighbor_report_offload.max_neighbor_report_req_cap =
|
|
||||||
config->neighbor_report_offload_max_req_cap;
|
|
||||||
}
|
|
||||||
|
|
||||||
static
|
static
|
||||||
QDF_STATUS hdd_set_sme_cfgs_related_to_plcy_mgr(struct hdd_context *hdd_ctx,
|
QDF_STATUS hdd_set_sme_cfgs_related_to_plcy_mgr(struct hdd_context *hdd_ctx,
|
||||||
tSmeConfigParams *sme_cfg)
|
tSmeConfigParams *sme_cfg)
|
||||||
@@ -2285,9 +2189,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
|
|||||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
hdd_err("hdd_set_sme_cfgs_related_to_plcy_mgr fail: %d",
|
hdd_err("hdd_set_sme_cfgs_related_to_plcy_mgr fail: %d",
|
||||||
status);
|
status);
|
||||||
hdd_update_11k_offload_params(hdd_ctx->config,
|
|
||||||
&smeConfig->csrConfig);
|
|
||||||
|
|
||||||
hdd_debug("dot11Mode=%d", pConfig->dot11Mode);
|
hdd_debug("dot11Mode=%d", pConfig->dot11Mode);
|
||||||
status = sme_update_config(mac_handle, smeConfig);
|
status = sme_update_config(mac_handle, smeConfig);
|
||||||
if (!QDF_IS_STATUS_SUCCESS(status))
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
|
@@ -111,6 +111,7 @@
|
|||||||
#include "cfg_mlme_threshold.h"
|
#include "cfg_mlme_threshold.h"
|
||||||
#include "wlan_pmo_cfg.h"
|
#include "wlan_pmo_cfg.h"
|
||||||
#include "wlan_pmo_ucfg_api.h"
|
#include "wlan_pmo_ucfg_api.h"
|
||||||
|
#include "wlan_fwol_ucfg_api.h"
|
||||||
|
|
||||||
/* Private ioctls and their sub-ioctls */
|
/* Private ioctls and their sub-ioctls */
|
||||||
#define WLAN_PRIV_SET_INT_GET_NONE (SIOCIWFIRSTPRIV + 0)
|
#define WLAN_PRIV_SET_INT_GET_NONE (SIOCIWFIRSTPRIV + 0)
|
||||||
@@ -5483,6 +5484,7 @@ static int __iw_setchar_getnone(struct net_device *dev,
|
|||||||
struct hdd_adapter *adapter = (netdev_priv(dev));
|
struct hdd_adapter *adapter = (netdev_priv(dev));
|
||||||
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
|
||||||
struct iw_point s_priv_data;
|
struct iw_point s_priv_data;
|
||||||
|
bool neighbor_report_req_support = false;
|
||||||
|
|
||||||
hdd_enter_dev(dev);
|
hdd_enter_dev(dev);
|
||||||
|
|
||||||
@@ -5559,9 +5561,13 @@ static int __iw_setchar_getnone(struct net_device *dev,
|
|||||||
* If 11k offload is supported by FW and enabled
|
* If 11k offload is supported by FW and enabled
|
||||||
* in the ini, set the offload to true
|
* in the ini, set the offload to true
|
||||||
*/
|
*/
|
||||||
|
if (QDF_IS_STATUS_ERROR(
|
||||||
|
ucfg_fwol_is_neighbor_report_req_supported(
|
||||||
|
hdd_ctx->psoc, &neighbor_report_req_support)))
|
||||||
|
hdd_err("Neighbor report req bit get fail");
|
||||||
|
|
||||||
if (hdd_ctx->config->is_11k_offload_supported &&
|
if (hdd_ctx->config->is_11k_offload_supported &&
|
||||||
(hdd_ctx->config->offload_11k_enable_bitmask &
|
neighbor_report_req_support) {
|
||||||
OFFLOAD_11K_BITMASK_NEIGHBOR_REPORT_REQUEST)) {
|
|
||||||
hdd_debug("Neighbor report offloaded to FW");
|
hdd_debug("Neighbor report offloaded to FW");
|
||||||
neighborReq.neighbor_report_offload = true;
|
neighborReq.neighbor_report_offload = true;
|
||||||
}
|
}
|
||||||
|
@@ -858,6 +858,43 @@ void sme_update_fine_time_measurement_capab(mac_handle_t mac_handle,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* sme_update_neighbor_report_config() - Update CSR config for 11k params
|
||||||
|
* @mac_handle: Pointer to MAC context
|
||||||
|
* @csr_config: Pointer to CSR config data structure
|
||||||
|
*
|
||||||
|
* Return: None
|
||||||
|
*/
|
||||||
|
static void sme_update_neighbor_report_config(struct mac_context *mac,
|
||||||
|
tCsrConfigParam *csr_config)
|
||||||
|
{
|
||||||
|
struct wlan_fwol_neighbor_report_cfg fwol_neighbor_report_cfg = {0};
|
||||||
|
QDF_STATUS status;
|
||||||
|
|
||||||
|
status = ucfg_fwol_get_neighbor_report_cfg(mac->psoc,
|
||||||
|
&fwol_neighbor_report_cfg);
|
||||||
|
if (!QDF_IS_STATUS_SUCCESS(status))
|
||||||
|
sme_err("Using defaults for 11K offload params: Error: %d",
|
||||||
|
status);
|
||||||
|
|
||||||
|
csr_config->offload_11k_enable_bitmask =
|
||||||
|
fwol_neighbor_report_cfg.enable_bitmask;
|
||||||
|
csr_config->neighbor_report_offload.params_bitmask =
|
||||||
|
fwol_neighbor_report_cfg.params_bitmask;
|
||||||
|
csr_config->neighbor_report_offload.time_offset =
|
||||||
|
fwol_neighbor_report_cfg.time_offset;
|
||||||
|
csr_config->neighbor_report_offload.low_rssi_offset =
|
||||||
|
fwol_neighbor_report_cfg.low_rssi_offset;
|
||||||
|
csr_config->neighbor_report_offload.bmiss_count_trigger =
|
||||||
|
fwol_neighbor_report_cfg.bmiss_count_trigger;
|
||||||
|
csr_config->neighbor_report_offload.per_threshold_offset =
|
||||||
|
fwol_neighbor_report_cfg.per_threshold_offset;
|
||||||
|
csr_config->neighbor_report_offload.neighbor_report_cache_timeout =
|
||||||
|
fwol_neighbor_report_cfg.cache_timeout;
|
||||||
|
csr_config->neighbor_report_offload.max_neighbor_report_req_cap =
|
||||||
|
fwol_neighbor_report_cfg.max_req_cap;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* sme_update_config() - Change configurations for all SME moduels
|
* sme_update_config() - Change configurations for all SME moduels
|
||||||
* The function updates some configuration for modules in SME, CSR, etc
|
* The function updates some configuration for modules in SME, CSR, etc
|
||||||
@@ -884,7 +921,7 @@ QDF_STATUS sme_update_config(mac_handle_t mac_handle, tpSmeConfigParams
|
|||||||
sme_err("SME config params empty");
|
sme_err("SME config params empty");
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
sme_update_neighbor_report_config(mac, &pSmeConfigParams->csrConfig);
|
||||||
status = csr_change_default_config_param(mac, &pSmeConfigParams->
|
status = csr_change_default_config_param(mac, &pSmeConfigParams->
|
||||||
csrConfig);
|
csrConfig);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user