blob: 530c9ff144e1d6e7f4bb4cd689d9c0624a50dab2 [file] [log] [blame]
/*
* Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
*
* Previously licensed under the ISC license by Qualcomm Atheros, Inc.
*
*
* 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.
*/
/*
* This file was originally distributed by Qualcomm Atheros, Inc.
* under proprietary terms before Copyright ownership was assigned
* to the Linux Foundation.
*/
#if !defined( __SME_API_H )
#define __SME_API_H
/**=========================================================================
\file smeApi.h
\brief prototype for SME APIs
========================================================================*/
/* $Header$ */
/*--------------------------------------------------------------------------
Include Files
------------------------------------------------------------------------*/
#include "ccmApi.h"
#include "csrApi.h"
#include "pmcApi.h"
#include "vos_mq.h"
#include "vos_lock.h"
#include "halTypes.h"
#include "sirApi.h"
#include "vos_nvitem.h"
#include "p2p_Api.h"
#include "smeInternal.h"
#include "regdomain.h"
#ifdef FEATURE_OEM_DATA_SUPPORT
#include "oemDataApi.h"
#endif
#if defined WLAN_FEATURE_VOWIFI
#include "smeRrmInternal.h"
#endif
/*--------------------------------------------------------------------------
Preprocessor definitions and constants
------------------------------------------------------------------------*/
#define SME_SUMMARY_STATS 1
#define SME_GLOBAL_CLASSA_STATS 2
#define SME_GLOBAL_CLASSB_STATS 4
#define SME_GLOBAL_CLASSC_STATS 8
#define SME_GLOBAL_CLASSD_STATS 16
#define SME_PER_STA_STATS 32
#define SME_PER_CHAIN_RSSI_STATS 64
#define SME_INVALID_COUNTRY_CODE "XX"
#define SME_2_4_GHZ_MAX_FREQ 3000
#define SME_SET_CHANNEL_REG_POWER(reg_info_1, val) do { \
reg_info_1 &= 0xff00ffff; \
reg_info_1 |= ((val & 0xff) << 16); \
} while(0)
#define SME_SET_CHANNEL_MAX_TX_POWER(reg_info_2, val) do { \
reg_info_2 &= 0xffff00ff; \
reg_info_2 |= ((val & 0xff) << 8); \
} while(0)
#define NUM_OF_BANDS 2
/*--------------------------------------------------------------------------
Type declarations
------------------------------------------------------------------------*/
typedef struct _smeConfigParams
{
tCsrConfigParam csrConfig;
#if defined WLAN_FEATURE_VOWIFI
struct rrm_config_param rrmConfig;
#endif
#if defined FEATURE_WLAN_LFR
tANI_U8 isFastRoamIniFeatureEnabled;
tANI_U8 MAWCEnabled;
#endif
#if defined FEATURE_WLAN_ESE
tANI_U8 isEseIniFeatureEnabled;
#endif
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
tANI_U8 isFastTransitionEnabled;
tANI_U8 RoamRssiDiff;
tANI_BOOLEAN isWESModeEnabled;
#endif
tANI_BOOLEAN fScanOffload;
tANI_U8 max_amsdu_num;
tANI_BOOLEAN fP2pListenOffload;
tANI_BOOLEAN pnoOffload;
tANI_U8 fEnableDebugLog;
tANI_U8 max_intf_count;
tANI_BOOLEAN enable5gEBT;
tANI_BOOLEAN enableSelfRecovery;
uint32_t f_sta_miracast_mcc_rest_time_val;
#ifdef FEATURE_AP_MCC_CH_AVOIDANCE
bool sap_channel_avoidance;
#endif /* FEATURE_AP_MCC_CH_AVOIDANCE */
uint8_t f_prefer_non_dfs_on_radar;
uint32_t fine_time_meas_cap;
int8_t first_scan_bucket_threshold;
bool snr_monitor_enabled;
uint8_t sub20_config_info;
uint8_t sub20_channelwidth;
uint8_t sub20_dynamic_channelwidth;
bool sta_change_cc_via_beacon;
} tSmeConfigParams, *tpSmeConfigParams;
typedef enum
{
eSME_ROAM_TRIGGER_NONE = 0,
eSME_ROAM_TRIGGER_SCAN = 1,
eSME_ROAM_TRIGGER_FAST_ROAM = 2,
eSME_ROAM_TRIGGER_MAX
} tSmeFastRoamTrigger;
#ifdef FEATURE_WLAN_TDLS
#define SME_TDLS_MAX_SUPP_CHANNELS 128
#define SME_TDLS_MAX_SUPP_OPER_CLASSES 32
typedef struct _smeTdlsPeerCapParams {
tANI_U8 isPeerResponder;
tANI_U8 peerUapsdQueue;
tANI_U8 peerMaxSp;
tANI_U8 peerBuffStaSupport;
tANI_U8 peerOffChanSupport;
tANI_U8 peerCurrOperClass;
tANI_U8 selfCurrOperClass;
tANI_U8 peerChanLen;
tANI_U8 peerChan[SME_TDLS_MAX_SUPP_CHANNELS];
tANI_U8 peerOperClassLen;
tANI_U8 peerOperClass[SME_TDLS_MAX_SUPP_OPER_CLASSES];
tANI_U8 prefOffChanNum;
tANI_U8 prefOffChanBandwidth;
tANI_U8 opClassForPrefOffChan;
} tSmeTdlsPeerCapParams;
typedef enum
{
eSME_TDLS_PEER_STATE_PEERING,
eSME_TDLS_PEER_STATE_CONNECTED,
eSME_TDLS_PEER_STATE_TEARDOWN,
/* Add peer mac into connection table */
eSME_TDLS_PEER_ADD_MAC_ADDR,
/* Remove peer mac from connection table */
eSME_TDLS_PEER_REMOVE_MAC_ADDR,
} eSmeTdlsPeerState;
typedef struct _smeTdlsPeerStateParams
{
tANI_U32 vdevId;
tSirMacAddr peerMacAddr;
tANI_U32 peerState;
tSmeTdlsPeerCapParams peerCap;
} tSmeTdlsPeerStateParams;
#define ENABLE_CHANSWITCH 1
#define DISABLE_CHANSWITCH 2
#define BW_20_OFFSET_BIT 0
#define BW_40_OFFSET_BIT 1
#define BW_80_OFFSET_BIT 2
#define BW_160_OFFSET_BIT 3
typedef struct _smeTdlsChanSwitchParams
{
tANI_U32 vdev_id;
tSirMacAddr peer_mac_addr;
tANI_U16 tdls_off_ch_bw_offset;/* Target Off Channel Bandwidth offset */
tANI_U8 tdls_off_channel; /* Target Off Channel */
tANI_U8 tdls_off_ch_mode; /* TDLS Off Channel Mode */
tANI_U8 is_responder; /* is peer responder or initiator */
uint8_t opclass; /* tdls operating class */
} tSmeTdlsChanSwitchParams;
#endif /* FEATURE_WLAN_TDLS */
/* Thermal Mitigation*/
typedef struct {
u_int16_t smeMinTempThreshold;
u_int16_t smeMaxTempThreshold;
} tSmeThermalLevelInfo;
enum sme_max_bad_peer_thresh_levels {
IEEE80211_B_LEVEL = 0,
IEEE80211_AG_LEVEL,
IEEE80211_N_LEVEL,
IEEE80211_AC_LEVEL,
IEEE80211_MAX_LEVEL,
};
struct sme_bad_peer_thresh{
uint32_t cond;
uint32_t delta;
uint32_t percentage;
uint32_t thresh;
uint32_t limit;
};
struct sme_bad_peer_txctl_param{
/* Array of thermal levels */
struct sme_bad_peer_thresh thresh[IEEE80211_MAX_LEVEL];
uint32_t enabled;
uint32_t period;
uint32_t txq_limit;
uint32_t tgt_backoff;
uint32_t tgt_report_prd;
};
#define SME_MAX_THERMAL_LEVELS (4)
#define SME_MAX_THROTTLE_LEVELS (4)
typedef struct {
/* Array of thermal levels */
tSmeThermalLevelInfo smeThermalLevels[SME_MAX_THERMAL_LEVELS];
u_int8_t smeThermalMgmtEnabled;
u_int32_t smeThrottlePeriod;
u_int8_t sme_throttle_duty_cycle_tbl[SME_MAX_THROTTLE_LEVELS];
#ifdef FEATURE_WLAN_THERMAL_SHUTDOWN
uint8_t thermal_shutdown_enabled;
uint8_t thermal_shutdown_auto_enabled;
uint16_t thermal_resume_threshold;
uint16_t thermal_warning_threshold;
uint16_t thermal_suspend_threshold;
uint16_t thermal_sample_rate;
#endif
} tSmeThermalParams;
typedef struct {
u_int32_t enable;
u_int32_t delta_degreeHigh;
u_int32_t delta_degreeLow;
u_int32_t cooling_time;
u_int32_t dpd_dur_max;
} tSmeDPDRecalParams;
#ifdef WLAN_FEATURE_APFIND
struct sme_ap_find_request_req{
u_int16_t request_data_len;
const u_int8_t* request_data;
};
#endif /* WLAN_FEATURE_APFIND */
/**
* struct sme_oem_capability - OEM capability to be exchanged between host
* and userspace
* @ftm_rr: FTM range report capability bit
* @lci_capability: LCI capability bit
* @reserved1: reserved
* @reserved2: reserved
*/
struct sme_oem_capability {
uint32_t ftm_rr:1;
uint32_t lci_capability:1;
uint32_t reserved1:30;
uint32_t reserved2;
};
/*
* struct sme_5g_pref_params : 5G preference params to be read from ini
* @rssi_boost_threshold_5g: RSSI threshold above which 5 GHz is favored
* @rssi_boost_factor_5g: Factor by which 5GHz RSSI is boosted
* @max_rssi_boost_5g: Maximum boost that can be applied to 5GHz RSSI
* @rssi_penalize_threshold_5g: RSSI threshold below which 5G is not favored
* @rssi_penalize_factor_5g: Factor by which 5GHz RSSI is penalized
* @max_rssi_penalize_5g: Maximum penalty that can be applied to 5G RSSI
*/
struct sme_5g_band_pref_params {
int8_t rssi_boost_threshold_5g;
uint8_t rssi_boost_factor_5g;
uint8_t max_rssi_boost_5g;
int8_t rssi_penalize_threshold_5g;
uint8_t rssi_penalize_factor_5g;
uint8_t max_rssi_penalize_5g;
};
struct sme_mnt_filter_type_req{
u_int32_t vdev_id;
u_int16_t request_data_len;
u_int8_t* request_data;
};
/*-------------------------------------------------------------------------
Function declarations and documentation
------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
\brief sme_Open() - Initialize all SME modules and put them at idle state
The function initializes each module inside SME, PMC, CCM, CSR, etc. . Upon
successfully return, all modules are at idle state ready to start.
smeOpen must be called before any other SME APIs can be involved.
smeOpen must be called after macOpen.
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME is successfully initialized.
Other status means SME is failed to be initialized
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_Open(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_init_chan_list() - Initialize sme channel info
This function initializes sme channel information which can
be known only after getting the regulatory information which, for discrete,
will come from target after the fw got downloaded. For ISOC, this information
will be available in nv.
\param hal - The handle returned by macOpen.
\param alpha2 - Country code passed by the hdd context.
\param cc_src - Country code source passed by the hdd context.
\return eHAL_STATUS_SUCCESS - SME is successfully initialized.
Other status means SME is failed to be initialized
\sa
---------------------------------------------------------------------------*/
eHalStatus sme_init_chan_list(tHalHandle hal, v_U8_t *alpha2,
COUNTRY_CODE_SOURCE cc_src);
/*--------------------------------------------------------------------------
\brief sme_Close() - Release all SME modules and their resources.
The function release each module in SME, PMC, CCM, CSR, etc. . Upon
return, all modules are at closed state.
No SME APIs can be involved after sme_Close except sme_Open.
sme_Close must be called before macClose.
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME is successfully close.
Other status means SME is failed to be closed but caller still cannot
call any other SME functions except smeOpen.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_Close(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_Start() - Put all SME modules at ready state.
The function starts each module in SME, PMC, CCM, CSR, etc. . Upon
successfully return, all modules are ready to run.
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME is ready.
Other status means SME is failed to start.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_Start(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_Stop() - Stop all SME modules and put them at idle state
The function stops each module in SME, PMC, CCM, CSR, etc. . Upon
return, all modules are at idle state ready to start.
\param hHal - The handle returned by macOpen.
\param tHalStopType - reason for stopping
\return eHAL_STATUS_SUCCESS - SME is stopped.
Other status means SME is failed to stop but caller should still consider
SME is stopped.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_Stop(tHalHandle hHal, tHalStopType stopType);
/*--------------------------------------------------------------------------
\brief sme_OpenSession() - Open a session for scan/roam operation.
This is a synchronous API.
\param hHal - The handle returned by macOpen.
\param callback - A pointer to the function caller specifies for roam/connect status indication
\param pContext - The context passed with callback
\param pSelfMacAddr - Caller allocated memory filled with self MAC address (6 bytes)
\param pbSessionId - pointer to a caller allocated buffer for returned session ID
\return eHAL_STATUS_SUCCESS - session is opened. sessionId returned.
Other status means SME is failed to open the session.
eHAL_STATUS_RESOURCES - no more session available.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_OpenSession(tHalHandle hHal, csrRoamCompleteCallback callback,
void *pContext, tANI_U8 *pSelfMacAddr,
tANI_U8 *pbSessionId, tANI_U32 type,
tANI_U32 subType);
/*--------------------------------------------------------------------------
\brief sme_SetCurrDeviceMode() - Sets the current operating device mode.
\param hHal - The handle returned by macOpen.
\param currDeviceMode - Current operating device mode.
--------------------------------------------------------------------------*/
void sme_SetCurrDeviceMode (tHalHandle hHal, tVOS_CON_MODE currDeviceMode);
/*--------------------------------------------------------------------------
\brief sme_CloseSession() - Open a session for scan/roam operation.
This is a synchronous API.
\param hHal - The handle returned by macOpen.
\param sessionId - A previous opened session's ID.
\return eHAL_STATUS_SUCCESS - session is closed.
Other status means SME is failed to open the session.
eHAL_STATUS_INVALID_PARAMETER - session is not opened.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_CloseSession(tHalHandle hHal, tANI_U8 sessionId,
csrRoamSessionCloseCallback callback, void *pContext);
eHalStatus sme_update_roam_params(tHalHandle hHal, uint8_t session_id,
struct roam_ext_params roam_params_src, int update_param);
/*--------------------------------------------------------------------------
\brief sme_UpdateConfig() - Change configurations for all SME modules
The function updates some configuration for modules in SME, CCM, CSR, etc
during SMEs close -> open sequence.
Modules inside SME apply the new configuration at the next transaction.
\param hHal - The handle returned by macOpen.
\Param pSmeConfigParams - a pointer to a caller allocated object of
typedef struct _smeConfigParams.
\return eHAL_STATUS_SUCCESS - SME update the config parameters successfully.
Other status means SME is failed to update the config parameters.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateConfig(tHalHandle hHal, tpSmeConfigParams pSmeConfigParams);
#ifdef FEATURE_WLAN_SCAN_PNO
/*--------------------------------------------------------------------------
\brief sme_UpdateChannelConfig() - Update channel configuration in RIVA.
It is used at driver start up to inform RIVA of the default channel
configuration.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update the channel config successfully.
Other status means SME is failed to update the channel config.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateChannelConfig(tHalHandle hHal);
#endif // FEATURE_WLAN_SCAN_PNLO
#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
/*--------------------------------------------------------------------------
\brief sme_SetPlmRequest() - send PLM request to firmware
It is used to initiate PLM request
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME could successfully sent PLM command
Other status means SME is failed to send plm command
--------------------------------------------------------------------------*/
eHalStatus sme_SetPlmRequest(tHalHandle hHal, tpSirPlmReq pPlm);
#endif
/*--------------------------------------------------------------------------
\brief sme_set11dinfo() - Set the 11d information about valid channels
and there power using information from nvRAM
This function is called only for AP.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\Param pSmeConfigParams - a pointer to a caller allocated object of
typedef struct _smeConfigParams.
\return eHAL_STATUS_SUCCESS - SME update the config parameters successfully.
Other status means SME is failed to update the config parameters.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_set11dinfo(tHalHandle hHal, tpSmeConfigParams pSmeConfigParams);
/*--------------------------------------------------------------------------
\brief sme_getSoftApDomain() - Get the current regulatory domain of softAp.
This is a synchronous call
\param hHal - The handle returned by HostapdAdapter.
\Param v_REGDOMAIN_t - The current Regulatory Domain requested for SoftAp.
\return eHAL_STATUS_SUCCESS - SME successfully completed the request.
Other status means, failed to get the current regulatory domain.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_getSoftApDomain(tHalHandle hHal, v_REGDOMAIN_t *domainIdSoftAp);
eHalStatus sme_setRegInfo(tHalHandle hHal, tANI_U8 *apCntryCode);
/* ---------------------------------------------------------------------------
\fn sme_ChangeConfigParams
\brief The SME API exposed for HDD to provide config params to SME during
SMEs stop -> start sequence.
If HDD changed the domain that will cause a reset. This function will
provide the new set of 11d information for the new domain. Currrently this
API provides info regarding 11d only at reset but we can extend this for
other params (PMC, QoS) which needs to be initialized again at reset.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\Param
pUpdateConfigParam - a pointer to a structure (tCsrUpdateConfigParam) that
currently provides 11d related information like Country code,
Regulatory domain, valid channel list, Tx power per channel, a
list with active/passive scan allowed per valid channel.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ChangeConfigParams(tHalHandle hHal,
tCsrUpdateConfigParam *pUpdateConfigParam);
/*--------------------------------------------------------------------------
\brief sme_HDDReadyInd() - SME sends eWNI_SME_SYS_READY_IND to PE to inform that the NIC
is ready tio run.
The function is called by HDD at the end of initialization stage so PE/HAL can enable the NIC
to running state.
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - eWNI_SME_SYS_READY_IND is sent to PE successfully.
Other status means SME failed to send the message to PE.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_HDDReadyInd(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_ProcessMsg() - The main message processor for SME.
The function is called by a message dispatcher when to process a message
targeted for SME.
\param hHal - The handle returned by macOpen.
\param pMsg - A pointer to a caller allocated object of tSirMsgQ.
\return eHAL_STATUS_SUCCESS - SME successfully process the message.
Other status means SME failed to process the message.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_ProcessMsg(tHalHandle hHal, vos_msg_t* pMsg);
v_VOID_t sme_FreeMsg( tHalHandle hHal, vos_msg_t* pMsg );
/* ---------------------------------------------------------------------------
\fn sme_ScanRequest
\brief a wrapper function to Request a 11d or full scan from CSR.
\param pScanRequestID - pointer to an object to get back the request ID
\param callback - a callback function that scan calls upon finish, will not
be called if csrScanRequest returns error
\param pContext - a pointer passed in for the callback
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ScanRequest(tHalHandle hHal, tANI_U8 sessionId, tCsrScanRequest *,
tANI_U32 *pScanRequestID,
csrScanCompleteCallback callback, void *pContext);
/* ---------------------------------------------------------------------------
\fn sme_ScanSetBGScanparams
\brief a wrapper function to request CSR to set BG scan params in PE
\param pScanReq - BG scan request structure
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ScanSetBGScanparams(tHalHandle hHal, tANI_U8 sessionId, tCsrBGScanRequest *pScanReq);
/* ---------------------------------------------------------------------------
\fn sme_ScanGetResult
\brief a wrapper function to request scan results from CSR.
\param pFilter - If pFilter is NULL, all cached results are returned
\param phResult - an object for the result.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ScanGetResult(tHalHandle hHal, tANI_U8 sessionId, tCsrScanResultFilter *pFilter,
tScanResultHandle *phResult);
VOS_STATUS sme_get_ap_channel_from_scan_cache(tHalHandle hHal,
tCsrRoamProfile *profile,
tScanResultHandle *scan_cache,
tANI_U8 *ap_chnl_id);
bool sme_store_joinreq_param(tHalHandle hal_handle,
tCsrRoamProfile *profile,
tScanResultHandle scan_cache,
uint32_t *roam_id,
uint32_t session_id);
bool sme_clear_joinreq_param(tHalHandle hal_handle,
uint32_t session_id);
VOS_STATUS sme_issue_stored_joinreq(tHalHandle hal_handle,
uint32_t *roam_id,
uint32_t session_id);
/* ---------------------------------------------------------------------------
\fn sme_ScanFlushResult
\brief a wrapper function to request CSR to clear scan results.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ScanFlushResult(tHalHandle hHal, tANI_U8 sessionId);
/*
* ---------------------------------------------------------------------------
* \fn sme_FilterScanResults
* \brief a wrapper function to request CSR to filter the scan results based
* on valid channel list.
* \param hHal - The handle returned by macOpen.
* \param sessionId - the sessionId returned by sme_OpenSession.
* \return eHalStatus
*---------------------------------------------------------------------------
*/
eHalStatus sme_FilterScanResults(tHalHandle hHal, tANI_U8 sessionId);
eHalStatus sme_ScanFlushP2PResult(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_ScanResultGetFirst
\brief a wrapper function to request CSR to returns the first element of
scan result.
\param hScanResult - returned from csrScanGetResult
\return tCsrScanResultInfo * - NULL if no result
---------------------------------------------------------------------------*/
tCsrScanResultInfo *sme_ScanResultGetFirst(tHalHandle,
tScanResultHandle hScanResult);
/* ---------------------------------------------------------------------------
\fn sme_ScanResultGetNext
\brief a wrapper function to request CSR to returns the next element of
scan result. It can be called without calling csrScanResultGetFirst
first
\param hScanResult - returned from csrScanGetResult
\return Null if no result or reach the end
---------------------------------------------------------------------------*/
tCsrScanResultInfo *sme_ScanResultGetNext(tHalHandle,
tScanResultHandle hScanResult);
/* ---------------------------------------------------------------------------
\fn sme_ScanResultPurge
\brief a wrapper function to request CSR to remove all items(tCsrScanResult)
in the list and free memory for each item
\param hScanResult - returned from csrScanGetResult. hScanResult is
considered gone by
calling this function and even before this function returns.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ScanResultPurge(tHalHandle hHal, tScanResultHandle hScanResult);
/* ---------------------------------------------------------------------------
\fn sme_ScanGetPMKIDCandidateList
\brief a wrapper function to return the PMKID candidate list
\param pPmkidList - caller allocated buffer point to an array of
tPmkidCandidateInfo
\param pNumItems - pointer to a variable that has the number of
tPmkidCandidateInfo allocated when returning, this is
either the number needed or number of items put into
pPmkidList
\return eHalStatus - when fail, it usually means the buffer allocated is not
big enough and pNumItems
has the number of tPmkidCandidateInfo.
\Note: pNumItems is a number of tPmkidCandidateInfo,
not sizeof(tPmkidCandidateInfo) * something
---------------------------------------------------------------------------*/
eHalStatus sme_ScanGetPMKIDCandidateList(tHalHandle hHal, tANI_U8 sessionId,
tPmkidCandidateInfo *pPmkidList,
tANI_U32 *pNumItems );
/*----------------------------------------------------------------------------
\fn sme_RoamRegisterLinkQualityIndCallback
\brief
a wrapper function to allow HDD to register a callback handler with CSR for
link quality indications.
Only one callback may be registered at any time.
In order to deregister the callback, a NULL cback may be provided.
Registration happens in the task context of the caller.
\param callback - Call back being registered
\param pContext - user data
DEPENDENCIES: After CSR open
\return eHalStatus
-----------------------------------------------------------------------------*/
eHalStatus sme_RoamRegisterLinkQualityIndCallback(tHalHandle hHal, tANI_U8 sessionId,
csrRoamLinkQualityIndCallback callback,
void *pContext);
/* ---------------------------------------------------------------------------
\fn sme_RoamConnect
\brief a wrapper function to request CSR to initiate an association
\param sessionId - the sessionId returned by sme_OpenSession.
\param pProfile - can be NULL to join to any open ones
\param pRoamId - to get back the request ID
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_RoamConnect(tHalHandle hHal, tANI_U8 sessionId, tCsrRoamProfile *pProfile,
tANI_U32 *pRoamId);
/* ---------------------------------------------------------------------------
\fn sme_RoamReassoc
\brief a wrapper function to request CSR to initiate a re-association
\param pProfile - can be NULL to join the currently connected AP. In that
case modProfileFields should carry the modified field(s) which could trigger
reassoc
\param modProfileFields - fields which are part of tCsrRoamConnectedProfile
that might need modification dynamically once STA is up & running and this
could trigger a reassoc
\param pRoamId - to get back the request ID
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamReassoc(tHalHandle hHal, tANI_U8 sessionId, tCsrRoamProfile *pProfile,
tCsrRoamModifyProfileFields modProfileFields,
tANI_U32 *pRoamId, v_BOOL_t fForce);
/* ---------------------------------------------------------------------------
\fn sme_RoamConnectToLastProfile
\brief a wrapper function to request CSR to disconnect and reconnect with
the same profile
\return eHalStatus. It returns fail if currently connected
---------------------------------------------------------------------------*/
eHalStatus sme_RoamConnectToLastProfile(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_RoamDisconnect
\brief a wrapper function to request CSR to disconnect from a network
\param reason -- To indicate the reason for disconnecting. Currently, only
eCSR_DISCONNECT_REASON_MIC_ERROR is meaningful.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_RoamDisconnect(tHalHandle hHal, tANI_U8 sessionId, eCsrRoamDisconnectReason reason);
/* ---------------------------------------------------------------------------
\fn.sme_dhcp_done_ind
\brief a wrapper function to set dhcp done ind in sme session
\retun void.
---------------------------------------------------------------------------*/
void sme_dhcp_done_ind(tHalHandle hal, uint8_t session_id);
/* ---------------------------------------------------------------------------
\fn sme_RoamStopBss
\brief a wrapper function to request CSR to stop bss
\param sessionId - sessionId of SoftAP
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_RoamStopBss(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_RoamGetAssociatedStas
\brief To probe the list of associated stations from various modules of CORE stack.
\This is an asynchronous API.
\param sessionId - sessionId of SoftAP
\param modId - Module from whom list of associated stations is to be
probed.
If an invalid module is passed then by default VOS_MODULE_ID_PE will be probed
\param pUsrContext - Opaque HDD context
\param pfnSapEventCallback - Sap event callback in HDD
\param pAssocBuf - Caller allocated memory to be filled with associated
stations info
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamGetAssociatedStas(tHalHandle hHal, tANI_U8 sessionId,
VOS_MODULE_ID modId, void *pUsrContext,
void *pfnSapEventCallback, tANI_U8 *pAssocStasBuf);
/* ---------------------------------------------------------------------------
\fn sme_RoamDisconnectSta
\brief To disassociate a station. This is an asynchronous API.
\param pPeerMacAddr - Caller allocated memory filled with peer MAC address (6 bytes)
\return eHalStatus SUCCESS Roam callback will be called to indicate actual results
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamDisconnectSta(tHalHandle hHal, tANI_U8 sessionId,
struct tagCsrDelStaParams *pDelStaParams);
/* ---------------------------------------------------------------------------
\fn sme_RoamDeauthSta
\brief To disassociate a station. This is an asynchronous API.
\param hHal - Global structure
\param sessionId - sessionId of SoftAP
\param pDelStaParams- Pointer to parameters of the station to deauthenticate
\return eHalStatus SUCCESS Roam callback will be called to indicate actual results
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamDeauthSta(tHalHandle hHal, tANI_U8 sessionId,
struct tagCsrDelStaParams *pDelStaParams);
/* ---------------------------------------------------------------------------
\fn sme_RoamTKIPCounterMeasures
\brief To start or stop TKIP counter measures. This is an asynchronous API.
\param sessionId - sessionId of SoftAP
\param bEnable - Flag to start/stop TKIP countermeasures
\return eHalStatus SUCCESS Roam callback will be called to indicate actual results
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamTKIPCounterMeasures(tHalHandle hHal, tANI_U8 sessionId, tANI_BOOLEAN bEnable);
/* ---------------------------------------------------------------------------
\fn sme_RoamGetWpsSessionOverlap
\brief To get the WPS PBC session overlap information.
\This is an asynchronous API.
\param sessionId - sessionId of SoftAP
\param pUsrContext - Opaque HDD context
\param pfnSapEventCallback - Sap event callback in HDD
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamGetWpsSessionOverlap(tHalHandle hHal, tANI_U8 sessionId,
void *pUsrContext, void *pfnSapEventCallback,
v_MACADDR_t pRemoveMac);
/* ---------------------------------------------------------------------------
\fn sme_RoamGetConnectState
\brief a wrapper function to request CSR to return the current connect state
of Roaming
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_RoamGetConnectState(tHalHandle hHal, tANI_U8 sessionId, eCsrConnectState *pState);
/* ---------------------------------------------------------------------------
\fn sme_RoamGetConnectProfile
\brief a wrapper function to request CSR to return the current connect
profile. Caller must call csrRoamFreeConnectProfile after it is done
and before reuse for another csrRoamGetConnectProfile call.
\param pProfile - pointer to a caller allocated structure
tCsrRoamConnectedProfile
\return eHalStatus. Failure if not connected
---------------------------------------------------------------------------*/
eHalStatus sme_RoamGetConnectProfile(tHalHandle hHal, tANI_U8 sessionId,
tCsrRoamConnectedProfile *pProfile);
/* ---------------------------------------------------------------------------
\fn sme_RoamFreeConnectProfile
\brief a wrapper function to request CSR to free and reinitialize the
profile returned previously by csrRoamGetConnectProfile.
\param pProfile - pointer to a caller allocated structure
tCsrRoamConnectedProfile
\return eHalStatus.
---------------------------------------------------------------------------*/
eHalStatus sme_RoamFreeConnectProfile(tHalHandle hHal,
tCsrRoamConnectedProfile *pProfile);
/* ---------------------------------------------------------------------------
\fn sme_RoamSetPMKIDCache
\brief a wrapper function to request CSR to return the PMKID candidate list
\param pPMKIDCache - caller allocated buffer point to an array of
tPmkidCacheInfo
\param numItems - a variable that has the number of tPmkidCacheInfo
allocated when returning, this is either the number needed
or number of items put into pPMKIDCache
\param update_entire_cache - if TRUE, then it overwrites the entire cache
with pPMKIDCache, else it updates entry by
entry without deleting the old entries.
\return eHalStatus - when fail, it usually means the buffer allocated is not
big enough and pNumItems has the number of
tPmkidCacheInfo.
\Note: pNumItems is a number of tPmkidCacheInfo,
not sizeof(tPmkidCacheInfo) * something
---------------------------------------------------------------------------*/
eHalStatus sme_RoamSetPMKIDCache( tHalHandle hHal, tANI_U8 sessionId,
tPmkidCacheInfo *pPMKIDCache,
tANI_U32 numItems,
tANI_BOOLEAN update_entire_cache );
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
/* ---------------------------------------------------------------------------
* \fn sme_RoamSetPSK_PMK
* \brief a wrapper function to request CSR to save PSK/PMK
* This is a synchronous call.
* \param hHal - Global structure
* \param sessionId - SME sessionId
* \param pPSK_PMK - pointer to an array of Psk[]/Pmk[]
* \param pmk_len - Length could be only 16 bytes in case if LEAP
* connections. Need to pass this information to
* firmware.
*\return eHalStatus -status whether PSK/PMK is set or not
* ---------------------------------------------------------------------------*/
eHalStatus sme_RoamSetPSK_PMK (tHalHandle hHal, tANI_U8 sessionId,
tANI_U8 *pPSK_PMK, size_t pmk_len);
#endif
/* ---------------------------------------------------------------------------
\fn sme_RoamGetSecurityReqIE
\brief a wrapper function to request CSR to return the WPA or RSN or WAPI IE CSR
passes to PE to JOIN request or START_BSS request
This is a synchronous call.
\param sessionId - returned by sme_OpenSession.
\param pLen - caller allocated memory that has the length of pBuf as input.
Upon returned, *pLen has the needed or IE length in pBuf.
\param pBuf - Caller allocated memory that contain the IE field, if any,
upon return
\param secType - Specifies whether looking for WPA/WPA2/WAPI IE
\return eHalStatus - when fail, it usually means the buffer allocated is not
big enough
---------------------------------------------------------------------------*/
eHalStatus sme_RoamGetSecurityReqIE(tHalHandle hHal, tANI_U8 sessionId, tANI_U32 *pLen,
tANI_U8 *pBuf, eCsrSecurityType secType);
/* ---------------------------------------------------------------------------
\fn sme_RoamGetSecurityRspIE
\brief a wrapper function to request CSR to return the WPA or RSN or WAPI IE from
the beacon or probe rsp if connected
\param sessionId - returned by sme_OpenSession.
\param pLen - caller allocated memory that has the length of pBuf as input.
Upon returned, *pLen has the needed or IE length in pBuf.
\param pBuf - Caller allocated memory that contain the IE field, if any,
upon return
\param secType - Specifies whether looking for WPA/WPA2/WAPI IE
\return eHalStatus - when fail, it usually means the buffer allocated is not
big enough
---------------------------------------------------------------------------*/
eHalStatus sme_RoamGetSecurityRspIE(tHalHandle hHal, tANI_U8 sessionId, tANI_U32 *pLen,
tANI_U8 *pBuf, eCsrSecurityType secType);
/* ---------------------------------------------------------------------------
\fn sme_RoamGetNumPMKIDCache
\brief a wrapper function to request CSR to return number of PMKID cache
entries
\return tANI_U32 - the number of PMKID cache entries
---------------------------------------------------------------------------*/
tANI_U32 sme_RoamGetNumPMKIDCache(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_RoamGetPMKIDCache
\brief a wrapper function to request CSR to return PMKID cache from CSR
\param pNum - caller allocated memory that has the space of the number of
pBuf tPmkidCacheInfo as input. Upon returned, *pNum has the
needed or actually number in tPmkidCacheInfo.
\param pPmkidCache - Caller allocated memory that contains PMKID cache, if
any, upon return
\return eHalStatus - when fail, it usually means the buffer allocated is not
big enough
---------------------------------------------------------------------------*/
eHalStatus sme_RoamGetPMKIDCache(tHalHandle hHal, tANI_U8 sessionId, tANI_U32 *pNum,
tPmkidCacheInfo *pPmkidCache);
/* ---------------------------------------------------------------------------
\fn sme_GetConfigParam
\brief a wrapper function that HDD calls to get the global settings
currently maintained by CSR.
\param pParam - caller allocated memory
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_GetConfigParam(tHalHandle hHal, tSmeConfigParams *pParam);
/* ---------------------------------------------------------------------------
\fn sme_GetStatistics
\brief a wrapper function that client calls to register a callback to get
different PHY level statistics from CSR.
\param requesterId - different client requesting for statistics, HDD, UMA/GAN etc
\param statsMask - The different category/categories of stats requester is looking for
The order in which you set the bits in the statsMask for requesting
different type of stats is:
eCsrSummaryStats = bit 0
eCsrGlobalClassAStats = bit 1
eCsrGlobalClassBStats = bit 2
eCsrGlobalClassCStats = bit 3
eCsrGlobalClassDStats = bit 4
eCsrPerStaStats = bit 5
\param callback - SME sends back the requested stats using the callback
\param periodicity - If requester needs periodic update, 0 means it's an one
time request
\param cache - If requester is happy with cached stats
\param staId - The station ID for which the stats is requested for
\param pContext - user context to be passed back along with the callback
\param sessionId - sme session interface
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_GetStatistics(tHalHandle hHal, eCsrStatsRequesterType requesterId,
tANI_U32 statsMask,
tCsrStatsCallback callback,
tANI_U32 periodicity, tANI_BOOLEAN cache,
tANI_U8 staId, void *pContext, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn smeGetTLSTAState
\helper function to get the TL STA State whenever the function is called.
\param staId - The staID to be passed to the TL
to get the relevant TL STA State
\return the state as tANI_U16
---------------------------------------------------------------------------*/
tANI_U16 smeGetTLSTAState(tHalHandle hHal, tANI_U8 staId);
/* ---------------------------------------------------------------------------
\fn sme_GetRssi
\brief a wrapper function that client calls to register a callback to get
RSSI
\param hHal - HAL handle for device
\param callback - SME sends back the requested stats using the callback
\param staId - The station ID for which the stats is requested for
\param bssid - The bssid of the connected session
\param lastRSSI - RSSI value at time of request. In case fw cannot provide
RSSI, do not hold up but return this value.
\param pContext - user context to be passed back along with the callback
\param pVosContext - vos context
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_GetRssi(tHalHandle hHal,
tCsrRssiCallback callback,
tANI_U8 staId, tCsrBssid bssId, tANI_S8 lastRSSI,
void *pContext, void* pVosContext);
/* ---------------------------------------------------------------------------
\fn sme_GetSnr
\brief a wrapper function that client calls to register a callback to get
SNR from FW
\param callback - SME sends back the requested stats using the callback
\param staId - The station ID for which the stats is requested for
\param bssid - The bssid of the connected session
\param pContext - user context to be passed back along with the callback
---------------------------------------------------------------------------*/
eHalStatus sme_GetSnr(tHalHandle hHal,
tCsrSnrCallback callback,
tANI_U8 staId, tCsrBssid bssId,
void *pContext);
#if defined(FEATURE_WLAN_ESE) && defined(FEATURE_WLAN_ESE_UPLOAD)
/* ---------------------------------------------------------------------------
\fn sme_GetTsmStats
\brief a wrapper function that client calls to register a callback to get
TSM Stats
\param callback - SME sends back the requested stats using the callback
\param staId - The station ID for which the stats is requested for
\param pContext - user context to be passed back along with the callback
\param pVosContext - vos context
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_GetTsmStats(tHalHandle hHal,
tCsrTsmStatsCallback callback,
tANI_U8 staId, tCsrBssid bssId,
void *pContext, void* pVosContext, tANI_U8 tid);
/* ---------------------------------------------------------------------------
\fn sme_SetCCKMIe
\brief function to store the CCKM IE passed from supplicant and use it
while packing reassociation request
\param hHal - HAL handle for device
\param pCckmIe - pointer to CCKM IE data
\param pCckmIeLen - length of the CCKM IE
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_SetCCKMIe(tHalHandle hHal,
tANI_U8 sessionId,
tANI_U8 *pCckmIe,
tANI_U8 cckmIeLen);
/* ---------------------------------------------------------------------------
\fn sme_SetEseBeaconRequest
\brief function to set ESE beacon request parameters
\param hHal - HAL handle for device
\param pEseBcnReq - pointer to ESE beacon request
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_SetEseBeaconRequest(tHalHandle hHal, const tANI_U8 sessionId,
const tCsrEseBeaconReq* pEseBcnReq);
#endif /*FEATURE_WLAN_ESE && FEATURE_WLAN_ESE_UPLOAD */
/* ---------------------------------------------------------------------------
\fn sme_CfgSetInt
\brief a wrapper function that HDD calls to set parameters in CFG.
\param cfgId - Configuration Parameter ID (type) for STA.
\param ccmValue - The information related to Configuration Parameter ID
which needs to be saved in CFG
\param callback - To be registered by CSR with CCM. Once the CFG done with
saving the information in the database, it notifies CCM &
then the callback will be invoked to notify.
\param toBeSaved - To save the request for future reference
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_CfgSetInt(tHalHandle hHal, tANI_U32 cfgId, tANI_U32 ccmValue,
tCcmCfgSetCallback callback, eAniBoolean toBeSaved) ;
/* ---------------------------------------------------------------------------
\fn sme_CfgSetStr
\brief a wrapper function that HDD calls to set parameters in CFG.
\param cfgId - Configuration Parameter ID (type) for STA.
\param pStr - Pointer to the byte array which carries the information needs
to be saved in CFG
\param length - Length of the data to be saved
\param callback - To be registered by CSR with CCM. Once the CFG done with
saving the information in the database, it notifies CCM &
then the callback will be invoked to notify.
\param toBeSaved - To save the request for future reference
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_CfgSetStr(tHalHandle hHal, tANI_U32 cfgId, tANI_U8 *pStr,
tANI_U32 length, tCcmCfgSetCallback callback,
eAniBoolean toBeSaved) ;
/* ---------------------------------------------------------------------------
\fn sme_GetModifyProfileFields
\brief HDD or SME - QOS calls this function to get the current values of
connected profile fields, changing which can cause reassoc.
This function must be called after CFG is downloaded and STA is in connected
state. Also, make sure to call this function to get the current profile
fields before calling the reassoc. So that pModifyProfileFields will have
all the latest values plus the one(s) has been updated as part of reassoc
request.
\param pModifyProfileFields - pointer to the connected profile fields
changing which can cause reassoc
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_GetModifyProfileFields(tHalHandle hHal, tANI_U8 sessionId,
tCsrRoamModifyProfileFields * pModifyProfileFields);
/*--------------------------------------------------------------------------
\fn sme_SetConfigPowerSave
\brief Wrapper fn to change power save configuration in SME (PMC) module.
For BMPS related configuration, this function also updates the CFG
and sends a message to FW to pick up the new values. Note: Calling
this function only updates the configuration and does not enable
the specified power save mode.
\param hHal - The handle returned by macOpen.
\param psMode - Power Saving mode being modified
\param pConfigParams - a pointer to a caller allocated object of type
tPmcSmpsConfigParams or tPmcBmpsConfigParams or tPmcImpsConfigParams
\return eHalStatus
--------------------------------------------------------------------------*/
eHalStatus sme_SetConfigPowerSave(tHalHandle hHal, tPmcPowerSavingMode psMode,
void *pConfigParams);
/*--------------------------------------------------------------------------
\fn sme_GetConfigPowerSave
\brief Wrapper fn to retrieve power save configuration in SME (PMC) module
\param hHal - The handle returned by macOpen.
\param psMode - Power Saving mode
\param pConfigParams - a pointer to a caller allocated object of type
tPmcSmpsConfigParams or tPmcBmpsConfigParams or tPmcImpsConfigParams
\return eHalStatus
--------------------------------------------------------------------------*/
eHalStatus sme_GetConfigPowerSave(tHalHandle hHal, tPmcPowerSavingMode psMode,
void *pConfigParams);
/* ---------------------------------------------------------------------------
\fn sme_EnablePowerSave
\brief Enables one of the power saving modes. This API does not cause a
device state change. This is purely a configuration API.
\param hHal - The handle returned by macOpen.
\param psMode - The power saving mode to enable.
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_EnablePowerSave (
tHalHandle hHal,
tPmcPowerSavingMode psMode);
/* ---------------------------------------------------------------------------
\fn sme_DisablePowerSave
\brief Disables one of the power saving modes.Disabling does not imply
that device will be brought out of the current PS mode. This is
purely a configuration API.
\param hHal - The handle returned by macOpen.
\param psMode - The power saving mode to disable.
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_DisablePowerSave (
tHalHandle hHal,
tPmcPowerSavingMode psMode);
/* ---------------------------------------------------------------------------
\fn sme_SetHostPowerSave
\brief The BMPS logic is controlled by the User level Apps
\param hHal - The handle returned by macOpen.
\param psMode - The power saving mode to enable.
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_SetHostPowerSave (
tHalHandle hHal,
v_BOOL_t psMode);
/* ---------------------------------------------------------------------------
\fn sme_StartAutoBmpsTimer
\brief Starts a timer that periodically polls all the registered
module for entry into Bmps mode. This timer is started only if BMPS is
enabled and whenever the device is in full power.
\param hHal - The handle returned by macOpen.
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_StartAutoBmpsTimer ( tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_StopAutoBmpsTimer
\brief Stops the Auto BMPS Timer that was started using sme_startAutoBmpsTimer
Stopping the timer does not cause a device state change. Only the timer
is stopped. If "Full Power" is desired, use the sme_RequestFullPower API
\param hHal - The handle returned by macOpen.
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_StopAutoBmpsTimer ( tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_QueryPowerState
\brief Returns the current power state of the device.
\param hHal - The handle returned by macOpen.
\param pPowerState - pointer to location to return power state
\param pSwWlanSwitchState - ptr to location to return SW WLAN Switch state
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_QueryPowerState (
tHalHandle hHal,
tPmcPowerState *pPowerState,
tPmcSwitchState *pSwWlanSwitchState);
/* ---------------------------------------------------------------------------
\fn sme_IsPowerSaveEnabled
\brief Checks if the device is able to enter a particular power save mode
This does not imply that the device is in a particular PS mode
\param hHal - The handle returned by macOpen.
\param sessionId - sme sessionid
\param psMode - the power saving mode
\return eHalStatus
---------------------------------------------------------------------------*/
extern tANI_BOOLEAN sme_IsPowerSaveEnabled (
tHalHandle hHal,
tANI_U32 sessionId,
tPmcPowerSavingMode psMode);
/* ---------------------------------------------------------------------------
\fn sme_RequestFullPower
\brief Request that the device be brought to full power state.
Note 1: If "fullPowerReason" specified in this API is set to
eSME_FULL_PWR_NEEDED_BY_HDD, PMC will clear any "buffered wowl" requests
and also clear any "buffered BMPS requests by HDD". Assumption is that since
HDD is requesting full power, we need to undo any previous HDD requests for
BMPS (using sme_RequestBmps) or WoWL (using sme_EnterWoWL). If the reason is
specified anything other than above, the buffered requests for BMPS and WoWL
will not be cleared.
Note 2: Requesting full power (no matter what the fullPowerReason is) doesn't
disable the "auto bmps timer" (if it is enabled) or clear any "buffered uapsd
request".
Note 3: When the device finally enters Full Power PMC will start a timer
if any of the following holds true:
- Auto BMPS mode is enabled
- Uapsd request is pending
- HDD's request for BMPS is pending
- HDD's request for WoWL is pending
On timer expiry PMC will attempt to put the device in BMPS mode if following
(in addition to those listed above) holds true:
- Polling of all modules through the Power Save Check routine passes
- STA is associated to an access point
\param hHal - The handle returned by macOpen.
\param - callbackRoutine Callback routine invoked in case of success/failure
\param - callbackContext - Cookie to be passed back during callback
\param - fullPowerReason - Reason why this API is being invoked. SME needs to
distinguish between BAP and HDD requests
\return eHalStatus - status
eHAL_STATUS_SUCCESS - device brought to full power state
eHAL_STATUS_FAILURE - device cannot be brought to full power state
eHAL_STATUS_PMC_PENDING - device is being brought to full power state,
---------------------------------------------------------------------------*/
extern eHalStatus sme_RequestFullPower (
tHalHandle hHal,
void (*callbackRoutine) (void *callbackContext, eHalStatus status),
void *callbackContext,
tRequestFullPowerReason fullPowerReason);
/* ---------------------------------------------------------------------------
\fn sme_RequestBmps
\brief Request that the device be put in BMPS state. Request will be
accepted only if BMPS mode is enabled and power save check routine
passes. Only HDD should invoke this API.
\param hHal - The handle returned by macOpen.
\param - callbackRoutine Callback routine invoked in case of success/failure
\param - callbackContext - Cookie to be passed back during callback
\return eHalStatus
eHAL_STATUS_SUCCESS - device is in BMPS state
eHAL_STATUS_FAILURE - device cannot be brought to BMPS state
eHAL_STATUS_PMC_PENDING - device is being brought to BMPS state
---------------------------------------------------------------------------*/
extern eHalStatus sme_RequestBmps (
tHalHandle hHal,
void (*callbackRoutine) (void *callbackContext, eHalStatus status),
void *callbackContext);
/* ---------------------------------------------------------------------------
\fn sme_SetDHCPTillPowerActiveFlag
\brief Sets/Clears DHCP related flag in PMC to disable/enable auto BMPS
entry by PMC
\param hHal - The handle returned by macOpen.
---------------------------------------------------------------------------*/
void sme_SetDHCPTillPowerActiveFlag(tHalHandle hHal, tANI_U8 flag);
/* ---------------------------------------------------------------------------
\fn sme_StartUapsd
\brief Request that the device be put in UAPSD state. If the device is in
Full Power it will be put in BMPS mode first and then into UAPSD
mode.
\param hHal - The handle returned by macOpen.
\param - callbackRoutine Callback routine invoked in case of success/failure
\param - callbackContext - Cookie to be passed back during callback
eHAL_STATUS_SUCCESS - device is in UAPSD state
eHAL_STATUS_FAILURE - device cannot be brought to UAPSD state
eHAL_STATUS_PMC_PENDING - device is being brought to UAPSD state
eHAL_STATUS_PMC_DISABLED - UAPSD is disabled or BMPS mode is disabled
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_StartUapsd (
tHalHandle hHal,
void (*callbackRoutine) (void *callbackContext, eHalStatus status),
void *callbackContext);
/* ---------------------------------------------------------------------------
\fn sme_StopUapsd
\brief Request that the device be put out of UAPSD state. Device will be
put in in BMPS state after stop UAPSD completes. Buffered requests for
UAPSD will be cleared after this.
\param hHal - The handle returned by macOpen.
\return eHalStatus
eHAL_STATUS_SUCCESS - device is put out of UAPSD and back in BMPS state
eHAL_STATUS_FAILURE - device cannot be brought out of UAPSD state
---------------------------------------------------------------------------*/
extern eHalStatus sme_StopUapsd (tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_RequestStandby
\brief Request that the device be put in standby. It is HDD's responsibility
to bring the chip to full power and do a disconnect before calling
this API. Request for standby will be rejected if STA is associated
to an AP.
\param hHal - The handle returned by macOpen.
\param - callbackRoutine Callback routine invoked in case of success/failure
\param - callbackContext - Cookie to be passed back during callback
\return eHalStatus
eHAL_STATUS_SUCCESS - device is in Standby mode
eHAL_STATUS_FAILURE - device cannot be put in standby mode
eHAL_STATUS_PMC_PENDING - device is being put in standby mode
---------------------------------------------------------------------------*/
extern eHalStatus sme_RequestStandby (
tHalHandle hHal,
void (*callbackRoutine) (void *callbackContext, eHalStatus status),
void *callbackContext);
/* ---------------------------------------------------------------------------
\fn sme_RegisterPowerSaveCheck
\brief Register a power save check routine that is called whenever
the device is about to enter one of the power save modes.
\param hHal - The handle returned by macOpen.
\param checkRoutine - Power save check routine to be registered
\param callbackContext - Cookie to be passed back during callback
\return eHalStatus
eHAL_STATUS_SUCCESS - successfully registered
eHAL_STATUS_FAILURE - not successfully registered
---------------------------------------------------------------------------*/
extern eHalStatus sme_RegisterPowerSaveCheck (
tHalHandle hHal,
tANI_BOOLEAN (*checkRoutine) (void *checkContext), void *checkContext);
/* ---------------------------------------------------------------------------
\fn sme_Register11dScanDoneCallback
\brief Register a routine of type csrScanCompleteCallback which is
called whenever an 11d scan is done
\param hHal - The handle returned by macOpen.
\param callback - 11d scan complete routine to be registered
\return eHalStatus
---------------------------------------------------------------------------*/
extern eHalStatus sme_Register11dScanDoneCallback (
tHalHandle hHal,
csrScanCompleteCallback);
/* ---------------------------------------------------------------------------
\fn sme_DeregisterPowerSaveCheck
\brief Deregister a power save check routine
\param hHal - The handle returned by macOpen.
\param checkRoutine - Power save check routine to be deregistered
\return eHalStatus
eHAL_STATUS_SUCCESS - successfully deregistered
eHAL_STATUS_FAILURE - not successfully deregistered
---------------------------------------------------------------------------*/
extern eHalStatus sme_DeregisterPowerSaveCheck (
tHalHandle hHal,
tANI_BOOLEAN (*checkRoutine) (void *checkContext));
/* ---------------------------------------------------------------------------
\fn sme_RegisterDeviceStateUpdateInd
\brief Register a callback routine that is called whenever
the device enters a new device state (Full Power, BMPS, UAPSD)
\param hHal - The handle returned by macOpen.
\param callbackRoutine - Callback routine to be registered
\param callbackContext - Cookie to be passed back during callback
\return eHalStatus
eHAL_STATUS_SUCCESS - successfully registered
eHAL_STATUS_FAILURE - not successfully registered
---------------------------------------------------------------------------*/
extern eHalStatus sme_RegisterDeviceStateUpdateInd (
tHalHandle hHal,
void (*callbackRoutine) (void *callbackContext, tPmcState pmcState),
void *callbackContext);
/* ---------------------------------------------------------------------------
\fn sme_DeregisterDeviceStateUpdateInd
\brief Deregister a routine that was registered for device state changes
\param hHal - The handle returned by macOpen.
\param callbackRoutine - Callback routine to be deregistered
\return eHalStatus
eHAL_STATUS_SUCCESS - successfully deregistered
eHAL_STATUS_FAILURE - not successfully deregistered
---------------------------------------------------------------------------*/
extern eHalStatus sme_DeregisterDeviceStateUpdateInd (
tHalHandle hHal,
void (*callbackRoutine) (void *callbackContext, tPmcState pmcState));
/* ---------------------------------------------------------------------------
\fn sme_WowlAddBcastPattern
\brief Add a pattern for Pattern Byte Matching in Wowl mode. Firmware will
do a pattern match on these patterns when Wowl is enabled during BMPS
mode.
\param hHal - The handle returned by macOpen.
\param pattern - Pattern to be added
\return eHalStatus
eHAL_STATUS_FAILURE Cannot add pattern
eHAL_STATUS_SUCCESS Request accepted.
---------------------------------------------------------------------------*/
extern eHalStatus sme_WowlAddBcastPattern (
tHalHandle hHal,
tpSirWowlAddBcastPtrn pattern,
tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_WowlDelBcastPattern
\brief Delete a pattern that was added for Pattern Byte Matching.
\param hHal - The handle returned by macOpen.
\param pattern - Pattern to be deleted
\return eHalStatus
eHAL_STATUS_FAILURE Cannot delete pattern
eHAL_STATUS_SUCCESS Request accepted.
---------------------------------------------------------------------------*/
extern eHalStatus sme_WowlDelBcastPattern (
tHalHandle hHal,
tpSirWowlDelBcastPtrn pattern,
tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_EnterWowl
\brief This is the API to request entry into WOWL mode.
WoWLAN works on top of BMPS mode. If the device is not in BMPS mode,
SME will will cache the information that WOWL has been requested and
attempt to put the device in BMPS first. On entry into BMPS, SME will
enter the WOWL mode.
Note 1: After WoWL request is accepted, If module other than HDD requests
full power BEFORE WoWL request is completed, PMC will buffer the WoWL request
and attempt to put the chip into BMPS+WOWL based on a timer.
Note 2: Buffered request for WoWL will be cleared immediately AFTER
"enter Wowl" completes or if HDD requests full power or
if sme_ExitWoWL API is invoked.
Note 3: Both UAPSD and WOWL work on top of BMPS. On entry into BMPS, SME
will give priority to UAPSD and enable only UAPSD if both UAPSD and WOWL
are required. Currently there is no requirement or use case to support UAPSD
and WOWL at the same time.
Note 4. Request for WoWL is rejected if there is a pending UAPSD request.
Note 5. Request for WoWL is rejected if BMPS is disabled.
\param hHal - The handle returned by macOpen.
\param enterWowlCallbackRoutine - Callback routine provided by HDD.
Used for success/failure notification by SME
\param enterWowlCallbackContext - A cookie passed by HDD, that is passed back to HDD
at the time of callback.
\param wakeReasonIndCB - Callback routine provided by HDD.
Used for Wake Reason Indication by SME
\param wakeReasonIndCBContext - A cookie passed by HDD, that is passed back to HDD
at the time of callback.
\return eHalStatus
eHAL_STATUS_SUCCESS Device is already in WoWLAN mode
eHAL_STATUS_FAILURE Device cannot enter WoWLAN mode.
eHAL_STATUS_PMC_PENDING Request accepted. SME will enable WOWL when BMPS
mode is entered.
---------------------------------------------------------------------------*/
extern eHalStatus sme_EnterWowl (
tHalHandle hHal,
void (*enterWowlCallbackRoutine) (void *callbackContext, eHalStatus status),
void *enterWowlCallbackContext,
#ifdef WLAN_WAKEUP_EVENTS
void (*wakeReasonIndCB) (void *callbackContext, tpSirWakeReasonInd pWakeReasonInd),
void *wakeReasonIndCBContext,
#endif // WLAN_WAKEUP_EVENTS
tpSirSmeWowlEnterParams wowlEnterParams, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_ExitWowl
\brief This is the SME API exposed to HDD to request exit from WoWLAN mode.
SME will initiate exit from WoWLAN mode and device will be put in BMPS
mode. Any Buffered request for WoWL will be cleared after this API.
\param hHal - The handle returned by macOpen.
\param wowlExitParams - Carries info on which smesession wowl exit
is requested.
\return eHalStatus
eHAL_STATUS_FAILURE Device cannot exit WoWLAN mode. This can happen
only if the previous "Enter WOWL" transaction has
not even completed.
eHAL_STATUS_SUCCESS Request accepted to exit WoWLAN mode.
---------------------------------------------------------------------------*/
extern eHalStatus sme_ExitWowl (tHalHandle hHal, tpSirSmeWowlExitParams wowlExitParams);
/* ---------------------------------------------------------------------------
\fn sme_RoamSetKey
\brief To set encryption key. This function should be called only when connected
This is an asynchronous API.
\param pSetKeyInfo - pointer to a caller allocated object of tCsrSetContextInfo
\param pRoamId Upon success return, this is the id caller can use to identify the request in roamcallback
\return eHalStatus SUCCESS Roam callback will be called indicate actually results
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamSetKey(tHalHandle, tANI_U8 sessionId, tCsrRoamSetKey *pSetKey, tANI_U32 *pRoamId);
/* ---------------------------------------------------------------------------
\fn sme_RoamRemoveKey
\brief To set encryption key. This is an asynchronous API.
\param pRemoveKey - pointer to a caller allocated object of tCsrRoamRemoveKey
\param pRoamId Upon success return, this is the id caller can use to identify the request in roamcallback
\return eHalStatus SUCCESS Roam callback will be called indicate actually results
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamRemoveKey(tHalHandle, tANI_U8 sessionId, tCsrRoamRemoveKey *pRemoveKey, tANI_U32 *pRoamId);
/* ---------------------------------------------------------------------------
\fn sme_GetCountryCode
\brief To return the current country code. If no country code is applied, default country code is
used to fill the buffer.
If 11d supported is turned off, an error is return and the last applied/default country code is used.
This is a synchronous API.
\param pBuf - pointer to a caller allocated buffer for returned country code.
\param pbLen For input, this parameter indicates how big is the buffer.
Upon return, this parameter has the number of bytes for country. If pBuf
doesn't have enough space, this function returns
fail status and this parameter contains the number that is needed.
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_GetCountryCode(tHalHandle hHal, tANI_U8 *pBuf, tANI_U8 *pbLen);
/* ---------------------------------------------------------------------------
\fn sme_SetCountryCode
\brief To change the current/default country code.
If 11d supported is turned off, an error is return.
This is a synchronous API.
\param pCountry - pointer to a caller allocated buffer for the country code.
\param pfRestartNeeded A pointer to caller allocated memory, upon successful return, it indicates
whether a reset is required.
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_SetCountryCode(tHalHandle hHal, tANI_U8 *pCountry, tANI_BOOLEAN *pfRestartNeeded);
/* ---------------------------------------------------------------------------
\fn sme_ResetCountryCodeInformation
\brief this function is to reset the country code current being used back to EEPROM default
this includes channel list and power setting. This is a synchronous API.
\param pfRestartNeeded - pointer to a caller allocated space. Upon successful return, it indicates whether
a restart is needed to apply the change
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_ResetCountryCodeInformation(tHalHandle hHal, tANI_BOOLEAN *pfRestartNeeded);
/* ---------------------------------------------------------------------------
\fn sme_GetSupportedCountryCode
\brief this function is to get a list of the country code current being supported
\param pBuf - Caller allocated buffer with at least 3 bytes, upon success return,
this has the country code list. 3 bytes for each country code. This may be NULL if
caller wants to know the needed byte count.
\param pbLen - Caller allocated, as input, it indicates the length of pBuf. Upon success return,
this contains the length of the data in pBuf. If pbuf is NULL, as input, *pbLen should be 0.
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_GetSupportedCountryCode(tHalHandle hHal, tANI_U8 *pBuf, tANI_U32 *pbLen);
/* ---------------------------------------------------------------------------
\fn sme_GetCurrentRegulatoryDomain
\brief this function is to get the current regulatory domain. This is a synchronous API.
This function must be called after CFG is downloaded and all the band/mode setting already passed into
SME. The function fails if 11d support is turned off.
\param pDomain - Caller allocated buffer to return the current domain.
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_GetCurrentRegulatoryDomain(tHalHandle hHal, v_REGDOMAIN_t *pDomain);
/* ---------------------------------------------------------------------------
\fn sme_SetRegulatoryDomain
\brief this function is to set the current regulatory domain.
This function must be called after CFG is downloaded and all the band/mode setting already passed into
SME. This is a synchronous API.
\param domainId - indicate the domain (defined in the driver) needs to set to.
See v_REGDOMAIN_t for definition
\param pfRestartNeeded - pointer to a caller allocated space. Upon successful return, it indicates whether
a restart is needed to apply the change
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_SetRegulatoryDomain(tHalHandle hHal, v_REGDOMAIN_t domainId, tANI_BOOLEAN *pfRestartNeeded);
/* ---------------------------------------------------------------------------
\fn sme_GetRegulatoryDomainForCountry
\brief To return a regulatory domain base on a country code. This is a synchronous API.
\param pCountry - pointer to a caller allocated buffer for input country code.
\param pDomainId Upon successful return, it is the domain that country belongs to.
If it is NULL, returning success means that the country code is known.
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_GetRegulatoryDomainForCountry(tHalHandle hHal, tANI_U8 *pCountry, v_REGDOMAIN_t *pDomainId);
/* ---------------------------------------------------------------------------
\fn sme_GetSupportedRegulatoryDomains
\brief To return a list of supported regulatory domains. This is a synchronous API.
\param pDomains - pointer to a caller allocated buffer for returned regulatory domains.
\param pNumDomains For input, this parameter indicates how many domains
pDomains can hold. Upon return, this parameter has the
number for supported domains. If pDomains doesn't have
enough space for all the supported domains, this
function returns fail status and this parameter
contains the number that is needed.
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_GetSupportedRegulatoryDomains(tHalHandle hHal, v_REGDOMAIN_t *pDomains, tANI_U32 *pNumDomains);
//some support functions
tANI_BOOLEAN sme_Is11dSupported(tHalHandle hHal);
tANI_BOOLEAN sme_Is11hSupported(tHalHandle hHal);
tANI_BOOLEAN sme_IsWmmSupported(tHalHandle hHal);
//Upper layer to get the list of the base channels to scan for passively 11d info from csr
eHalStatus sme_ScanGetBaseChannels( tHalHandle hHal, tCsrChannelInfo * pChannelInfo );
typedef void ( *tSmeChangeCountryCallback)(void *pContext);
/* ---------------------------------------------------------------------------
\fn sme_ChangeCountryCode
\brief Change Country code from upper layer during WLAN driver operation.
This is a synchronous API.
\param hHal - The handle returned by macOpen.
\param pCountry New Country Code String
\param sendRegHint If we want to send reg hint to nl80211
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_ChangeCountryCode( tHalHandle hHal,
tSmeChangeCountryCallback callback,
tANI_U8 *pCountry,
void *pContext,
void* pVosContext,
tAniBool countryFromUserSpace,
tAniBool sendRegHint);
/* ---------------------------------------------------------------------------
\fn sme_GenericChangeCountryCode
\brief Generic API to change country code
\param hHal - The handle returned by macOpen.
\param pCountry New Country Code String
\param reg_domain Regulatory domain for the new country code
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_GenericChangeCountryCode( tHalHandle hHal,
tANI_U8 *pCountry,
v_REGDOMAIN_t reg_domain);
/* ---------------------------------------------------------------------------
\fn sme_TXFailMonitorStartStopInd
\brief Indicate FW about TX Fail Monitor Indication`
\param hHal - The handle returned by macOpen.
\param tx_fail_count number of failures after which the firmware sends
an indication to host
\param txFailIndCallback function to be called after receiving TX Fail
indication
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_TXFailMonitorStartStopInd(tHalHandle hHal,
tANI_U8 tx_fail_count,
void * txFailIndCallback);
/* ---------------------------------------------------------------------------
\fn sme_DHCPStartInd
\brief Indicate FW about DHCP start event.
\param hHal - The handle returned by macOpen.
\param device_mode the mode of the device
\param macAddr the MAC address of the adapter
\param sessionId session ID
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_DHCPStartInd( tHalHandle hHal,
tANI_U8 device_mode,
tANI_U8 *macAddr,
tANI_U8 sessionId );
/* ---------------------------------------------------------------------------
\fn sme_DHCPStopInd
\brief Indicate FW about DHCP stop event.
\param hHal - The handle returned by macOpen.
\param device_mode the mode of the device
\param macAddr the MAC address of the adapter
\param sessionId session ID
\return eHalStatus SUCCESS.
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_DHCPStopInd( tHalHandle hHal,
tANI_U8 device_mode,
tANI_U8 *macAddr,
tANI_U8 sessionId );
/* ---------------------------------------------------------------------------
\fn sme_SetCfgPrivacy
\brief API to set configure privacy parameters
\param hHal - The handle returned by macOpen.
\param pProfile - Pointer CSR Roam profile.
\param fPrivacy - This parameter indicates status of privacy
\return void
---------------------------------------------------------------------------*/
void sme_SetCfgPrivacy(tHalHandle hHal, tCsrRoamProfile *pProfile, tANI_BOOLEAN fPrivacy);
/* ---------------------------------------------------------------------------
\fn sme_getRecoveryStats
\brief API to get recovery stats for SME stuck cmds.
\param hHal - The handle returned by macOpen.
\return void
---------------------------------------------------------------------------*/
void sme_getRecoveryStats(tHalHandle hHal);
#if defined WLAN_FEATURE_VOWIFI
/* ---------------------------------------------------------------------------
\fn sme_NeighborReportRequest
\brief API to request neighbor report.
\param hHal - The handle returned by macOpen.
\param pRrmNeighborReq - Pointer to a caller allocated object of type
tRrmNeighborReq. Caller owns the memory and is responsible
for freeing it.
\return VOS_STATUS
VOS_STATUS_E_FAILURE - failure
VOS_STATUS_SUCCESS success
---------------------------------------------------------------------------*/
VOS_STATUS sme_NeighborReportRequest (tHalHandle hHal, tANI_U8 sessionId,
tpRrmNeighborReq pRrmNeighborReq, tpRrmNeighborRspCallbackInfo callbackInfo);
#endif
VOS_STATUS sme_GetWcnssWlanCompiledVersion(tHalHandle hHal,
tSirVersionType *pVersion);
VOS_STATUS sme_GetWcnssWlanReportedVersion(tHalHandle hHal,
tSirVersionType *pVersion);
VOS_STATUS sme_GetWcnssSoftwareVersion(tHalHandle hHal,
tANI_U8 *pVersion,
tANI_U32 versionBufferSize);
VOS_STATUS sme_GetWcnssHardwareVersion(tHalHandle hHal,
tANI_U8 *pVersion,
tANI_U32 versionBufferSize);
#ifdef FEATURE_WLAN_WAPI
/* ---------------------------------------------------------------------------
\fn sme_ScanGetBKIDCandidateList
\brief a wrapper function to return the BKID candidate list
\param pBkidList - caller allocated buffer point to an array of
tBkidCandidateInfo
\param pNumItems - pointer to a variable that has the number of
tBkidCandidateInfo allocated when returning, this is
either the number needed or number of items put into
pPmkidList
\return eHalStatus - when fail, it usually means the buffer allocated is not
big enough and pNumItems
has the number of tBkidCandidateInfo.
\Note: pNumItems is a number of tBkidCandidateInfo,
not sizeof(tBkidCandidateInfo) * something
---------------------------------------------------------------------------*/
eHalStatus sme_ScanGetBKIDCandidateList(tHalHandle hHal, tANI_U32 sessionId,
tBkidCandidateInfo *pBkidList,
tANI_U32 *pNumItems );
#endif /* FEATURE_WLAN_WAPI */
#ifdef FEATURE_OEM_DATA_SUPPORT
/********************************************************************************************
Oem data related modifications
*********************************************************************************************/
/* ---------------------------------------------------------------------------
\fn sme_OemDataReq
\param sessionId - session id of session to be used for oem data req.
\param pOemDataReqID - pointer to an object to get back the request ID
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_OemDataReq(tHalHandle hHal,
tANI_U8 sessionId,
tOemDataReqConfig *,
tANI_U32 *pOemDataReqID);
VOS_STATUS sme_oem_update_capability(tHalHandle hHal,
struct sme_oem_capability *cap);
VOS_STATUS sme_oem_get_capability(tHalHandle hHal,
struct sme_oem_capability *cap);
#endif /*FEATURE_OEM_DATA_SUPPORT*/
/* ---------------------------------------------------------------------------
\fn sme_RoamUpdateAPWPSIE
\brief To update AP's WPS IE. This function should be called after SME AP session is created
This is an asynchronous API.
\param pAPWPSIES - pointer to a caller allocated object of tCsrRoamAPWPSIES
\return eHalStatus SUCCESS Roam callback will be called indicate actually results
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamUpdateAPWPSIE(tHalHandle, tANI_U8 sessionId, tSirAPWPSIEs *pAPWPSIES);
/* ---------------------------------------------------------------------------
\fn sme_RoamUpdateAPWPARSNIEs
\brief To update AP's WPA/RSN IEs. This function should be called after SME AP session is created
This is an asynchronous API.
\param pAPSirRSNie - pointer to a caller allocated object of tSirRSNie with WPS/RSN IEs
\return eHalStatus SUCCESS
FAILURE or RESOURCES The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_RoamUpdateAPWPARSNIEs(tHalHandle hHal, tANI_U8 sessionId, tSirRSNie * pAPSirRSNie);
/* ---------------------------------------------------------------------------
sme_ChangeMCCBeaconInterval
\brief To update P2P-GO's beacon Interval.
\return eHalStatus SUCCESS
FAILURE or RESOURCES
The API finished and failed.
-------------------------------------------------------------------------------*/
eHalStatus sme_ChangeMCCBeaconInterval(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_SetHostOffload
\brief API to set the host offload feature.
\param hHal - The handle returned by macOpen.
\param pRequest - Pointer to the offload request.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetHostOffload (tHalHandle hHal, tANI_U8 sessionId,
tpSirHostOffloadReq pRequest);
/* ---------------------------------------------------------------------------
\fn sme_SetKeepAlive
\brief API to set the Keep Alive feature.
\param hHal - The handle returned by macOpen.
\param pRequest - Pointer to the Keep Alive request.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetKeepAlive (tHalHandle hHal, tANI_U8 sessionId,
tpSirKeepAliveReq pRequest);
/* ----------------------------------------------------------------------------
\fn sme_GetOperationChannel
\brief API to get current channel on which STA is parked
this function gives channel information only of infra station or IBSS station.
\param hHal, pointer to memory location and sessionId
\returns eHAL_STATUS_SUCCESS
eHAL_STATUS_FAILURE
-------------------------------------------------------------------------------*/
eHalStatus sme_GetOperationChannel(tHalHandle hHal, tANI_U32 *pChannel, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_RegisterMgtFrame
\brief To register management frame of specified type and subtype.
\param frameType - type of the frame that needs to be passed to HDD.
\param matchData - data which needs to be matched before passing frame
to HDD.
\param matchDataLen - Length of matched data.
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_RegisterMgmtFrame(tHalHandle hHal, tANI_U8 sessionId,
tANI_U16 frameType, tANI_U8* matchData, tANI_U16 matchLen);
/* ---------------------------------------------------------------------------
\fn sme_DeregisterMgtFrame
\brief To De-register management frame of specified type and subtype.
\param frameType - type of the frame that needs to be passed to HDD.
\param matchData - data which needs to be matched before passing frame
to HDD.
\param matchDataLen - Length of matched data.
\return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_DeregisterMgmtFrame(tHalHandle hHal, tANI_U8 sessionId,
tANI_U16 frameType, tANI_U8* matchData, tANI_U16 matchLen);
/* ---------------------------------------------------------------------------
\fn sme_ConfigureRxpFilter
\brief
SME will pass this request to lower mac to set/reset the filter on RXP for
multicast & broadcast traffic.
\param
hHal - The handle returned by macOpen.
filterMask- Currently the API takes a 1 or 0 (set or reset) as filter.
Basically to enable/disable the filter (to filter "all" mcbc traffic) based
on this param. In future we can use this as a mask to set various types of
filters as suggested below:
FILTER_ALL_MULTICAST:
FILTER_ALL_BROADCAST:
FILTER_ALL_MULTICAST_BROADCAST:
\return eHalStatus
--------------------------------------------------------------------------- */
eHalStatus sme_ConfigureRxpFilter( tHalHandle hHal,
tpSirWlanSetRxpFilters wlanRxpFilterParam);
/* ---------------------------------------------------------------------------
\fn sme_ConfigureAppsCpuWakeupState
\brief
SME will pass this request to lower mac to dynamically adjusts the listen
interval based on the WLAN/MSM activity. This feature is named as
Telescopic Beacon wakeup feature.
\param
hHal - The handle returned by macOpen.
isAppsAwake- Depicts the state of the Apps CPU
\return eHalStatus
--------------------------------------------------------------------------- */
eHalStatus sme_ConfigureAppsCpuWakeupState( tHalHandle hHal, tANI_BOOLEAN isAppsAwake);
/* ---------------------------------------------------------------------------
\fn sme_ConfigureSuspendInd
\brief
SME will pass this request to lower mac to Indicate that the wlan needs to
be suspended
\param
hHal - The handle returned by macOpen.
wlanSuspendParam- Depicts the wlan suspend params
csrReadyToSuspendCallback - Callback to be called when ready to suspend
event is received.
callbackContext - Context associated with csrReadyToSuspendCallback.
\return eHalStatus
--------------------------------------------------------------------------- */
eHalStatus sme_ConfigureSuspendInd( tHalHandle hHal,
tpSirWlanSuspendParam wlanSuspendParam,
csrReadyToSuspendCallback,
void *callbackContext);
/* ---------------------------------------------------------------------------
\fn sme_ConfigureResumeReq
\brief
SME will pass this request to lower mac to Indicate that the wlan needs to
be Resumed
\param
hHal - The handle returned by macOpen.
wlanResumeParam- Depicts the wlan resume params
\return eHalStatus
--------------------------------------------------------------------------- */
eHalStatus sme_ConfigureResumeReq( tHalHandle hHal,
tpSirWlanResumeParam wlanResumeParam);
#ifdef WLAN_FEATURE_EXTWOW_SUPPORT
/* ---------------------------------------------------------------------------
\fn sme_ConfigureExtWoW
\brief
SME will pass this request to lower mac to configure Indoor WoW parameters.
\param
hHal - The handle returned by macOpen.
wlanExtParams- Depicts the wlan Ext params
\return eHalStatus
--------------------------------------------------------------------------- */
eHalStatus sme_ConfigureExtWoW( tHalHandle hHal,
tpSirExtWoWParams wlanExtParams,
csrReadyToSuspendCallback callback,
void *callbackContext);
/* ---------------------------------------------------------------------------
\fn sme_ConfigureAppType1Params
\brief
SME will pass this request to lower mac to configure Indoor WoW parameters.
\param
hHal - The handle returned by macOpen.
wlanAppType1Params- Depicts the wlan Indoor params
\return eHalStatus
--------------------------------------------------------------------------- */
eHalStatus sme_ConfigureAppType1Params( tHalHandle hHal,
tpSirAppType1Params wlanAppType1Params);
/* ---------------------------------------------------------------------------
\fn sme_ConfigureAppType2Params
\brief
SME will pass this request to lower mac to configure Indoor WoW parameters.
\param
hHal - The handle returned by macOpen.
wlanAppType2Params- Depicts the wlan Indoor params
\return eHalStatus
--------------------------------------------------------------------------- */
eHalStatus sme_ConfigureAppType2Params( tHalHandle hHal,
tpSirAppType2Params wlanAppType2Params);
#endif
/* ---------------------------------------------------------------------------
\fn sme_GetInfraSessionId
\brief To get the session ID for infra session, if connected
This is a synchronous API.
\param hHal - The handle returned by macOpen.
\return sessionid, -1 if infra session is not connected
-------------------------------------------------------------------------------*/
tANI_S8 sme_GetInfraSessionId(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_GetInfraOperationChannel
\brief To get the operating channel for infra session, if connected
This is a synchronous API.
\param hHal - The handle returned by macOpen.
\param sessionId - the sessionId returned by sme_OpenSession.
\return operating channel, 0 if infra session is not connected
-------------------------------------------------------------------------------*/
tANI_U8 sme_GetInfraOperationChannel( tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_GetConcurrentOperationChannel
\brief To get the operating channel for other concurrent sessions, if connected
This is a synchronous API.
\param hHal - The handle returned by macOpen.
\param currentPersona - persona that is trying to come up.
\return operating channel, 0 if infra session is not connected
-------------------------------------------------------------------------------*/
tANI_U8 sme_GetConcurrentOperationChannel( tHalHandle hHal );
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
v_U16_t sme_CheckConcurrentChannelOverlap( tHalHandle hHal, v_U16_t sap_ch,
eCsrPhyMode sapPhyMode, v_U8_t cc_switch_mode);
#endif
/* ---------------------------------------------------------------------------
\fn sme_AbortMacScan
\brief API to cancel MAC scan.
\param hHal - The handle returned by macOpen.
\param sessionId - sessionId for interface
\param reason - Reason to abort the scan
\return VOS_STATUS
VOS_STATUS_E_FAILURE - failure
VOS_STATUS_SUCCESS success
---------------------------------------------------------------------------*/
eHalStatus sme_AbortMacScan(tHalHandle hHal, tANI_U8 sessionId,
eCsrAbortReason reason);
/* ---------------------------------------------------------------------------
\fn sme_GetCfgValidChannels
\brief API to get valid channel list
\param hHal - The handle returned by macOpen.
\param aValidChannels - Pointer to the valid channel list
\param len - valid channel list length
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_GetCfgValidChannels(tHalHandle hHal, tANI_U8 *aValidChannels, tANI_U32 *len);
#ifdef FEATURE_WLAN_SCAN_PNO
/* ---------------------------------------------------------------------------
\fn sme_SetPreferredNetworkList
\brief API to set the Preferred Network List Offload feature.
\param hHal - The handle returned by macOpen.
\param pRequest - Pointer to the offload request.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetPreferredNetworkList (tHalHandle hHal, tpSirPNOScanReq pRequest, tANI_U8 sessionId, preferredNetworkFoundIndCallback callbackRoutine, void *callbackContext );
/******************************************************************************
*
* Name: sme_PreferredNetworkFoundInd
*
* Description:
* Invoke Preferred Network Found Indication
*
* Parameters:
* hHal - HAL handle for device
* pMsg - found network description
*
* Returns: eHalStatus
*
******************************************************************************/
eHalStatus sme_PreferredNetworkFoundInd (tHalHandle hHal, void* pMsg);
#endif // FEATURE_WLAN_SCAN_PNO
/* ---------------------------------------------------------------------------
\fn sme_SetPowerParams
\brief API to set Power Parameters
\param hHal - The handle returned by macOpen.
\param pwParams - Pointer to the power parameters requested.
\param forced - if true, not to be dropped silently in host, it must reach
FW; It is added to avoid a race condition scenario where LIM hasn't deleted
the session yet before power params gets sent to PMC
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetPowerParams(tHalHandle hHal, tSirSetPowerParamsReq* pwParams, tANI_BOOLEAN forced);
/* ---------------------------------------------------------------------------
\fn sme_SetTxPerTracking
\brief Set Tx PER tracking configuration parameters
\param hHal - The handle returned by macOpen.
\param pTxPerTrackingParam - Tx PER configuration parameters
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetTxPerTracking (
tHalHandle hHal,
void (*pCallbackfn) (void *pCallbackContext),
void *pCallbackContext,
tpSirTxPerTrackingParam pTxPerTrackingParam);
#ifdef WLAN_FEATURE_PACKET_FILTERING
/* ---------------------------------------------------------------------------
\fn sme_ReceiveFilterSetFilter
\brief API to set 8023 Multicast Address List
\param hHal - The handle returned by macOpen.
\param pMulticastAddrs - Pointer to the Multicast Address List
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_8023MulticastList(tHalHandle hHal, tANI_U8 sessionId, tpSirRcvFltMcAddrList pMulticastAddrs);
/* ---------------------------------------------------------------------------
\fn sme_ReceiveFilterSetFilter
\brief API to set Receive Packet Filter
\param hHal - The handle returned by macOpen.
\param pRcvPktFilterCfg - Receive Packet Filter parameter
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ReceiveFilterSetFilter(tHalHandle hHal, tpSirRcvPktFilterCfgType pRcvPktFilterCfg,
tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_GetFilterMatchCount
\brief API to get D0 PC Filter Match Count
\param hHal - The handle returned by macOpen
\param callbackRoutine - Callback routine invoked to receive Packet Coalescing Filter Match Count
\param callbackContext - Cookie to be passed back during callback
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_GetFilterMatchCount(tHalHandle hHal,
FilterMatchCountCallback callbackRoutine,
void *callbackContext,
tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_ReceiveFilterClearFilter
\brief API to clear Receive Packet Filter
\param hHal - The handle returned by macOpen.
\param pRcvFltPktClearParam - Receive Packet Filter Clear parameter
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ReceiveFilterClearFilter(tHalHandle hHal,
tpSirRcvFltPktClearParam pRcvFltPktClearParam,
tANI_U8 sessionId);
#endif // WLAN_FEATURE_PACKET_FILTERING
/* ---------------------------------------------------------------------------
\fn sme_IsChannelValid
\brief To check if the channel is valid for currently established domain
This is a synchronous API.
\param hHal - The handle returned by macOpen.
\param channel - channel to verify
\return TRUE/FALSE, TRUE if channel is valid
-------------------------------------------------------------------------------*/
tANI_BOOLEAN sme_IsChannelValid(tHalHandle hHal, tANI_U8 channel);
/* ---------------------------------------------------------------------------
\fn sme_SetFreqBand
\brief Used to set frequency band.
\param hHal
\sessionId Session identifier
\eBand band value to be configured
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SetFreqBand(tHalHandle hHal, tANI_U8 sessionId, eCsrBand eBand);
/* ---------------------------------------------------------------------------
\fn sme_GetFreqBand
\brief Used to get the current band settings.
\param hHal
\pBand pointer to hold the current band value
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_GetFreqBand(tHalHandle hHal, eCsrBand *pBand);
/* ---------------------------------------------------------------------------
\fn sme_SetTxPerTracking
\brief Set Tx PER tracking configuration parameters
\param hHal - The handle returned by macOpen.
\param pTxPerTrackingParam - Tx PER configuration parameters
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetTxPerTracking (
tHalHandle hHal,
void (*pCallbackfn) (void *pCallbackContext),
void *pCallbackContext,
tpSirTxPerTrackingParam pTxPerTrackingParam);
#ifdef WLAN_FEATURE_GTK_OFFLOAD
/* ---------------------------------------------------------------------------
\fn sme_SetGTKOffload
\brief API to set GTK offload feature.
\param hHal - The handle returned by macOpen.
\param pRequest - Pointer to the GTK offload request.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetGTKOffload (tHalHandle hHal, tpSirGtkOffloadParams pRequest, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_GetGTKOffload
\brief API to get GTK offload information.
\param hHal - The handle returned by macOpen.
\param pRequest - Pointer to the GTK offload response.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_GetGTKOffload (tHalHandle hHal, GTKOffloadGetInfoCallback callbackRoutine,
void *callbackContext, tANI_U8 sessionId);
#endif // WLAN_FEATURE_GTK_OFFLOAD
#ifdef WLAN_WAKEUP_EVENTS
eHalStatus sme_WakeReasonIndCallback (tHalHandle hHal, void* pMsg);
#endif // WLAN_WAKEUP_EVENTS
/* ---------------------------------------------------------------------------
\fn sme_SetTxPerTracking
\brief Set Tx PER tracking configuration parameters
\param hHal - The handle returned by macOpen.
\param pTxPerTrackingParam - Tx PER configuration parameters
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetTxPerTracking (
tHalHandle hHal,
void (*pCallbackfn) (void *pCallbackContext),
void *pCallbackContext,
tpSirTxPerTrackingParam pTxPerTrackingParam);
//return frequency for a particular channel
tANI_U16 sme_ChnToFreq(tANI_U8 chanNum);
tANI_BOOLEAN sme_IsChannelValid(tHalHandle hHal, tANI_U8 channel);
/* ---------------------------------------------------------------------------
\fn sme_SetMaxTxPower
\brief Used to set the Maximum Transmit Power dynamically. Note: this
setting will not persist over reboots
\param hHal
\param pBssid BSSID to set the power cap for
\param pBssid pSelfMacAddress self MAC Address
\param pBssid power to set in dB
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SetMaxTxPower(tHalHandle hHal, tSirMacAddr pBssid,
tSirMacAddr pSelfMacAddress, v_S7_t dB);
/**
* sme_SetMaxTxPowerPerBand() - Set the Maximum Transmit Power
* specific to band dynamically
* @band: Band for which power needs to be applied
* @dB: power to set in dB
* @hal: HAL handle
*
* Set the maximum transmit power dynamically per band
*
* Return: eHalStatus
*/
eHalStatus sme_SetMaxTxPowerPerBand(eCsrBand band, v_S7_t dB,
tHalHandle hal);
/* ---------------------------------------------------------------------------
\fn sme_SetTxPower
\brief Set Transmit Power dynamically.
\param hHal
\param sessionId Target Session ID
\param pBSSId BSSId
\param dev_mode device mode
\param power power to set in dBm
\- return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetTxPower(tHalHandle hHal, v_U8_t sessionId,
tSirMacAddr pBSSId,
tVOS_CON_MODE dev_mode, int power);
/* ---------------------------------------------------------------------------
\fn sme_SetCustomMacAddr
\brief Set the customer Mac Address.
\param customMacAddr customer MAC Address
\- return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetCustomMacAddr(tSirMacAddr customMacAddr);
/* ---------------------------------------------------------------------------
\fn sme_HideSSID
\brief Enable/Disables hidden SSID dynamically. Note: this setting will
not persist over reboots.
\param hHal
\param sessionId
\param ssidHidden 0 - Broadcast SSID, 1 - Disable broadcast SSID
\- return eHalStatus
-------------------------------------------------------------------------------*/
eHalStatus sme_HideSSID(tHalHandle hHal, v_U8_t sessionId, v_U8_t ssidHidden);
/* ---------------------------------------------------------------------------
\fn sme_SetTmLevel
\brief Set Thermal Mitigation Level to RIVA
\param hHal - The handle returned by macOpen.
\param newTMLevel - new Thermal Mitigation Level
\param tmMode - Thermal Mitigation handle mode, default 0
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetTmLevel(tHalHandle hHal, v_U16_t newTMLevel, v_U16_t tmMode);
/*---------------------------------------------------------------------------
\brief sme_featureCapsExchange() - SME interface to exchange capabilities between
Host and FW.
\param hHal - HAL handle for device
\return NONE
---------------------------------------------------------------------------*/
void sme_featureCapsExchange(tHalHandle hHal);
/*---------------------------------------------------------------------------
\brief sme_disableActiveModeOffload() - SME interface to disable Active
mode Offload capability between Host and FW.
\param hHal - HAL handle for device
\return NONE
---------------------------------------------------------------------------*/
void sme_disableFeatureCapablity(tANI_U8 feature_index);
/*---------------------------------------------------------------------------
\brief sme_GetDefaultCountryCodeFrmNv() - SME interface to get the default
country code
Host and FW.
\param hHal - HAL handle for device
\param pCountry - pointer to country code
\return Success or failure
---------------------------------------------------------------------------*/
eHalStatus sme_GetDefaultCountryCodeFrmNv(tHalHandle hHal, tANI_U8 *pCountry);
/*---------------------------------------------------------------------------
\brief sme_GetCurrentCountryCode() - SME interface to get the current operating
country code.
\param hHal - HAL handle for device
\param pCountry - pointer to country code
\return Success or failure
---------------------------------------------------------------------------*/
eHalStatus sme_GetCurrentCountryCode(tHalHandle hHal, tANI_U8 *pCountry);
/* ---------------------------------------------------------------------------
\fn sme_transportDebug
\brief Dynamically monitoring Transport channels
Private IOCTL will query transport channel status if driver loaded
\param hHal Upper MAC context
\param displaySnapshot Display transport channel snapshot option
\param toggleStallDetect Enable stall detect feature
This feature will take effect to data performance
Not integrate till fully verification
\- return NONE
-------------------------------------------------------------------------*/
void sme_transportDebug(tHalHandle hHal, v_BOOL_t displaySnapshot, v_BOOL_t toggleStallDetect);
/* ---------------------------------------------------------------------------
\fn sme_ResetPowerValuesFor5G
\brief Reset the power values for 5G band with NV power values.
\param hHal - HAL handle for device
\- return NONE
-------------------------------------------------------------------------*/
void sme_ResetPowerValuesFor5G (tHalHandle hHal);
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
/* ---------------------------------------------------------------------------
\fn sme_UpdateRoamPrefer5GHz
\brief enable/disable Roam prefer 5G runtime option
This function is called through dynamic setConfig callback function
to configure the Roam prefer 5G runtime option
\param hHal - HAL handle for device
\param nRoamPrefer5GHz Enable/Disable Roam prefer 5G runtime option
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateRoamPrefer5GHz(tHalHandle hHal, v_BOOL_t nRoamPrefer5GHz);
/* ---------------------------------------------------------------------------
\fn sme_setRoamIntraBand
\brief enable/disable Intra band roaming
This function is called through dynamic setConfig callback function
to configure the intra band roaming
\param hHal - HAL handle for device
\param nRoamIntraBand Enable/Disable Intra band roaming
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_setRoamIntraBand(tHalHandle hHal, const v_BOOL_t nRoamIntraBand);
/* ---------------------------------------------------------------------------
\fn sme_UpdateRoamScanNProbes
\brief function to update roam scan N probes
This function is called through dynamic setConfig callback function
to update roam scan N probes
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nProbes number of probe requests to be sent out
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateRoamScanNProbes(tHalHandle hHal, tANI_U8 sessionId,
const v_U8_t nProbes);
/* ---------------------------------------------------------------------------
\fn sme_UpdateRoamScanHomeAwayTime
\brief function to update roam scan Home away time
This function is called through dynamic setConfig callback function
to update roam scan home away time
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nRoamScanAwayTime Scan home away time
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateRoamScanHomeAwayTime(tHalHandle hHal, tANI_U8 sessionId,
const v_U16_t nRoamScanHomeAwayTime,
const eAniBoolean bSendOffloadCmd);
/* ---------------------------------------------------------------------------
\fn sme_getRoamIntraBand
\brief get Intra band roaming
\param hHal - HAL handle for device
\- return Success or failure
-------------------------------------------------------------------------*/
v_BOOL_t sme_getRoamIntraBand(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_getRoamScanNProbes
\brief get N Probes
\param hHal - HAL handle for device
\- return Success or failure
-------------------------------------------------------------------------*/
v_U8_t sme_getRoamScanNProbes(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_getRoamScanHomeAwayTime
\brief get Roam scan home away time
\param hHal - HAL handle for device
\- return Success or failure
-------------------------------------------------------------------------*/
v_U16_t sme_getRoamScanHomeAwayTime(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_UpdateImmediateRoamRssiDiff
\brief Update nImmediateRoamRssiDiff
This function is called through dynamic setConfig callback function
to configure nImmediateRoamRssiDiff
Usage: adb shell iwpriv wlan0 setConfig gImmediateRoamRssiDiff=[0 .. 125]
\param hHal - HAL handle for device
\param nImmediateRoamRssiDiff - minimum rssi difference between potential
candidate and current AP.
\param sessionId - Session identifier
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateImmediateRoamRssiDiff(tHalHandle hHal,
v_U8_t nImmediateRoamRssiDiff,
tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_UpdateRoamRssiDiff
\brief Update RoamRssiDiff
This function is called through dynamic setConfig callback function
to configure RoamRssiDiff
Usage: adb shell iwpriv wlan0 setConfig RoamRssiDiff=[0 .. 125]
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param RoamRssiDiff - minimum rssi difference between potential
candidate and current AP.
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateRoamRssiDiff(tHalHandle hHal, tANI_U8 sessionId,
v_U8_t RoamRssiDiff);
/*--------------------------------------------------------------------------
\brief sme_UpdateFastTransitionEnabled() - enable/disable Fast Transition support at runtime
It is used at in the REG_DYNAMIC_VARIABLE macro definition of
isFastTransitionEnabled.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update isFastTransitionEnabled config successfully.
Other status means SME is failed to update isFastTransitionEnabled.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateFastTransitionEnabled(tHalHandle hHal,
v_BOOL_t isFastTransitionEnabled);
/* ---------------------------------------------------------------------------
\fn sme_UpdateWESMode
\brief Update WESMode
This function is called through dynamic setConfig callback function
to configure isWESModeEnabled
\param hHal - HAL handle for device
\param isWESModeEnabled - Enable/Disable WES Mode
\param sessionId - Session identifier
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateWESMode(tHalHandle hHal, v_BOOL_t isWESModeEnabled,
tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_SetRoamScanControl
\brief Set roam scan control
This function is called to set roam scan control
if roam scan control is set to 0, roaming scan cache is cleared
any value other than 0 is treated as invalid value
\param hHal - HAL handle for device
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successfully.
Other status means SME failure to update
-------------------------------------------------------------------------*/
eHalStatus sme_SetRoamScanControl(tHalHandle hHal, tANI_U8 sessionId,
v_BOOL_t roamScanControl);
#endif /* (WLAN_FEATURE_VOWIFI_11R) || (FEATURE_WLAN_ESE) || (FEATURE_WLAN_LFR) */
#ifdef FEATURE_WLAN_LFR
/*--------------------------------------------------------------------------
\brief sme_UpdateIsFastRoamIniFeatureEnabled() - enable/disable LFR support at runtime
It is used at in the REG_DYNAMIC_VARIABLE macro definition of
isFastRoamIniFeatureEnabled.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update isFastRoamIniFeatureEnabled config successfully.
Other status means SME is failed to update isFastRoamIniFeatureEnabled.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateIsFastRoamIniFeatureEnabled(tHalHandle hHal,
tANI_U8 sessionId,
const v_BOOL_t isFastRoamIniFeatureEnabled);
eHalStatus sme_config_fast_roaming(tHalHandle hhal, tANI_U8 session_id,
const bool is_fast_roam_enabled);
/*--------------------------------------------------------------------------
\brief sme_UpdateIsMAWCIniFeatureEnabled() -
Enable/disable LFR MAWC support at runtime
It is used at in the REG_DYNAMIC_VARIABLE macro definition of
isMAWCIniFeatureEnabled.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update MAWCEnabled config successfully.
Other status means SME is failed to update MAWCEnabled.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateIsMAWCIniFeatureEnabled(tHalHandle hHal,
const v_BOOL_t MAWCEnabled);
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
/*--------------------------------------------------------------------------
\brief sme_stopRoaming() - Stop roaming for a given sessionId
This is a synchronous call
\param hHal - The handle returned by macOpen
\param sessionId - sessionId
\param reason - reason
\return eHAL_STATUS_SUCCESS on success
Other status on failure
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_stopRoaming(tHalHandle hHal, tANI_U8 sessionId,
tANI_U8 reason);
/*--------------------------------------------------------------------------
\brief sme_startRoaming() - Start roaming for a given sessionId
This is a synchronous call
\param hHal - The handle returned by macOpen
\param sessionId - sessionId
\param reason - reason
\return eHAL_STATUS_SUCCESS on success
Other status on failure
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_startRoaming(tHalHandle hHal, tANI_U8 sessionId,
tANI_U8 reason);
/*--------------------------------------------------------------------------
\brief sme_UpdateEnableFastRoamInConcurrency() - enable/disable LFR if
Concurrent session exists
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS
Other status means SME is failed
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateEnableFastRoamInConcurrency(tHalHandle hHal,
v_BOOL_t bFastRoamInConIniFeatureEnabled);
#endif
#endif /* FEATURE_WLAN_LFR */
#ifdef FEATURE_WLAN_ESE
/*--------------------------------------------------------------------------
\brief sme_UpdateIsEseFeatureEnabled() - enable/disable ESE support at runtime
It is used at in the REG_DYNAMIC_VARIABLE macro definition of
isEseIniFeatureEnabled.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update isEseIniFeatureEnabled config successfully.
Other status means SME is failed to update isEseIniFeatureEnabled.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateIsEseFeatureEnabled(tHalHandle hHal, tANI_U8 sessionId,
const v_BOOL_t isEseIniFeatureEnabled);
#endif /* FEATURE_WLAN_ESE */
/*--------------------------------------------------------------------------
\brief sme_UpdateConfigFwRssiMonitoring() - enable/disable firmware
RSSI Monitoring at runtime
It is used at in the REG_DYNAMIC_VARIABLE macro definition of
fEnableFwRssiMonitoring.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update fEnableFwRssiMonitoring config successfully.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateConfigFwRssiMonitoring(tHalHandle hHal,
v_BOOL_t fEnableFwRssiMonitoring);
#ifdef WLAN_FEATURE_NEIGHBOR_ROAMING
/* ---------------------------------------------------------------------------
\fn sme_SetRoamRescanRssiDiff
\brief Update Roam Rescan RSSI diff
This function is called through dynamic setConfig callback function
to configure nRoamRescanRssiDiff
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nRoamRescanRssiDiff - Roam Rescan Rssi Diff
\return eHAL_STATUS_SUCCESS - SME update nRoamRescanRssiDiff config
successfully.
else SME is failed to update nRoamRescanRssiDiff
-------------------------------------------------------------------------*/
eHalStatus sme_SetRoamRescanRssiDiff(tHalHandle hHal,
tANI_U8 sessionId,
const v_U8_t nRoamRescanRssiDiff);
/*--------------------------------------------------------------------------
\fn sme_GetRoamRescanRssiDiff
\brief gets Roam Rescan RSSI diff
This is a synchronous call
\param hHal - The handle returned by macOpen
\return v_U8_t - nRoamRescanRssiDiff
\sa
--------------------------------------------------------------------------*/
v_U8_t sme_GetRoamRescanRssiDiff(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_SetRoamOpportunisticScanThresholdDiff
\brief Update Opportunistic Scan threshold diff
This function is called through dynamic setConfig callback function
to configure nOpportunisticThresholdDiff
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nOpportunisticThresholdDiff - Opportunistic Scan threshold diff
\return eHAL_STATUS_SUCCESS - SME update nOpportunisticThresholdDiff config
successfully.
else SME is failed to update nOpportunisticThresholdDiff.
-------------------------------------------------------------------------*/
eHalStatus sme_SetRoamOpportunisticScanThresholdDiff(tHalHandle hHal,
tANI_U8 sessionId,
const v_U8_t nOpportunisticThresholdDiff);
/*--------------------------------------------------------------------------
\fn sme_GetRoamOpportunisticScanThresholdDiff()
\brief gets Opportunistic Scan threshold diff
This is a synchronous call
\param hHal - The handle returned by macOpen
\return v_U8_t - nOpportunisticThresholdDiff
\sa
--------------------------------------------------------------------------*/
v_U8_t sme_GetRoamOpportunisticScanThresholdDiff(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_setNeighborLookupRssiThreshold() - update neighbor lookup rssi threshold
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_setNeighborLookupRssiThreshold(tHalHandle hHal,
tANI_U8 sessionId,
v_U8_t neighborLookupRssiThreshold);
/*--------------------------------------------------------------------------
\brief sme_set_delay_before_vdev_stop() - update delay before vdev stop
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_set_delay_before_vdev_stop(tHalHandle hHal,
tANI_U8 sessionId,
v_U8_t delay_before_vdev_stop);
/*--------------------------------------------------------------------------
\brief sme_setNeighborReassocRssiThreshold() - update neighbor reassoc rssi threshold
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_setNeighborReassocRssiThreshold(tHalHandle hHal,
tANI_U8 sessionId,
v_U8_t neighborReassocRssiThreshold);
/*--------------------------------------------------------------------------
\brief sme_getNeighborLookupRssiThreshold() - get neighbor lookup rssi threshold
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
v_U8_t sme_getNeighborLookupRssiThreshold(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_setNeighborScanRefreshPeriod() - set neighbor scan results refresh period
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_setNeighborScanRefreshPeriod(tHalHandle hHal,
tANI_U8 sessionId,
v_U16_t neighborScanResultsRefreshPeriod);
/*--------------------------------------------------------------------------
\brief sme_getNeighborScanRefreshPeriod() - get neighbor scan results refresh period
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
v_U16_t sme_getNeighborScanRefreshPeriod(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_getEmptyScanRefreshPeriod() - get empty scan refresh period
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
v_U16_t sme_getEmptyScanRefreshPeriod(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_UpdateEmptyScanRefreshPeriod
\brief Update nEmptyScanRefreshPeriod
This function is called through dynamic setConfig callback function
to configure nEmptyScanRefreshPeriod
Usage: adb shell iwpriv wlan0 setConfig nEmptyScanRefreshPeriod=[0 .. 60]
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nEmptyScanRefreshPeriod - scan period following empty scan results.
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateEmptyScanRefreshPeriod(tHalHandle hHal,tANI_U8 sessionId,
v_U16_t nEmptyScanRefreshPeriod);
/* ---------------------------------------------------------------------------
\fn sme_setNeighborScanMinChanTime
\brief Update nNeighborScanMinChanTime
This function is called through dynamic setConfig callback function
to configure gNeighborScanChannelMinTime
Usage: adb shell iwpriv wlan0 setConfig gNeighborScanChannelMinTime=[0 .. 60]
\param hHal - HAL handle for device
\param nNeighborScanMinChanTime - Channel minimum dwell time
\param sessionId - Session identifier
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_setNeighborScanMinChanTime(tHalHandle hHal,
const v_U16_t nNeighborScanMinChanTime,
tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_setNeighborScanMaxChanTime
\brief Update nNeighborScanMaxChanTime
This function is called through dynamic setConfig callback function
to configure gNeighborScanChannelMaxTime
Usage: adb shell iwpriv wlan0 setConfig gNeighborScanChannelMaxTime=[0 .. 60]
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nNeighborScanMinChanTime - Channel maximum dwell time
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_setNeighborScanMaxChanTime(tHalHandle hHal, tANI_U8 sessionId,
const v_U16_t nNeighborScanMaxChanTime);
/* ---------------------------------------------------------------------------
\fn sme_getNeighborScanMinChanTime
\brief get neighbor scan min channel time
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return v_U16_t - channel min time value
-------------------------------------------------------------------------*/
v_U16_t sme_getNeighborScanMinChanTime(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_getNeighborRoamState
\brief get neighbor roam state
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\return v_U32_t - neighbor roam state
-------------------------------------------------------------------------*/
v_U32_t sme_getNeighborRoamState(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_getCurrentRoamState
\brief get current roam state
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\return v_U32_t - current roam state
-------------------------------------------------------------------------*/
v_U32_t sme_getCurrentRoamState(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_getCurrentRoamSubState
\brief get neighbor roam sub state
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\return v_U32_t - current roam sub state
-------------------------------------------------------------------------*/
v_U32_t sme_getCurrentRoamSubState(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_getLimSmeState
\brief get Lim Sme state
\param hHal - The handle returned by macOpen.
\return v_U32_t - Lim Sme state
-------------------------------------------------------------------------*/
v_U32_t sme_getLimSmeState(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_getLimMlmState
\brief get Lim Mlm state
\param hHal - The handle returned by macOpen.
\return v_U32_t - Lim Mlm state
-------------------------------------------------------------------------*/
v_U32_t sme_getLimMlmState(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_IsLimSessionValid
\brief is Lim session valid
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\return v_BOOL_t - true or false
-------------------------------------------------------------------------*/
v_BOOL_t sme_IsLimSessionValid(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_getLimSmeSessionState
\brief get Lim Sme session state
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\return v_U32_t - Lim Sme session state
-------------------------------------------------------------------------*/
v_U32_t sme_getLimSmeSessionState(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_getLimMlmSessionState
\brief get Lim Mlm session state
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\return v_U32_t - Lim Mlm session state
-------------------------------------------------------------------------*/
v_U32_t sme_getLimMlmSessionState(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_getNeighborScanMaxChanTime
\brief get neighbor scan max channel time
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return v_U16_t - channel max time value
-------------------------------------------------------------------------*/
v_U16_t sme_getNeighborScanMaxChanTime(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_setNeighborScanPeriod
\brief Update nNeighborScanPeriod
This function is called through dynamic setConfig callback function
to configure nNeighborScanPeriod
Usage: adb shell iwpriv wlan0 setConfig nNeighborScanPeriod=[0 .. 60]
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nNeighborScanPeriod - neighbor scan period
\- return Success or failure
-------------------------------------------------------------------------*/
eHalStatus sme_setNeighborScanPeriod(tHalHandle hHal, tANI_U8 sessionId,
const v_U16_t nNeighborScanPeriod);
/* ---------------------------------------------------------------------------
\fn sme_getNeighborScanPeriod
\brief get neighbor scan period
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return v_U16_t - neighbor scan period
-------------------------------------------------------------------------*/
v_U16_t sme_getNeighborScanPeriod(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_SetRoamBmissFirstBcnt
\brief Update Roam count for first beacon miss
This function is called through dynamic setConfig callback function
to configure nRoamBmissFirstBcnt
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nRoamBmissFirstBcnt - Roam first bmiss count
\return eHAL_STATUS_SUCCESS - SME update nRoamBmissFirstBcnt
successfully.
else SME is failed to update nRoamBmissFirstBcnt
-------------------------------------------------------------------------*/
eHalStatus sme_SetRoamBmissFirstBcnt(tHalHandle hHal,
tANI_U8 sessionId,
const v_U8_t nRoamBmissFirstBcnt);
/*--------------------------------------------------------------------------
\fn sme_GetRoamBmissFirstBcnt
\brief gets Roam count for first beacon miss
This is a synchronous call
\param hHal - The handle returned by macOpen
\return v_U8_t - nRoamBmissFirstBcnt
\sa
--------------------------------------------------------------------------*/
v_U8_t sme_GetRoamBmissFirstBcnt(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_SetRoamBmissFinalBcnt
\brief Update Roam count for final beacon miss
This function is called through dynamic setConfig callback function
to configure nRoamBmissFinalBcnt
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nRoamBmissFinalBcnt - Roam final bmiss count
\return eHAL_STATUS_SUCCESS - SME update nRoamBmissFinalBcnt
successfully.
else SME is failed to update nRoamBmissFinalBcnt
-------------------------------------------------------------------------*/
eHalStatus sme_SetRoamBmissFinalBcnt(tHalHandle hHal, tANI_U8 sessionId,
const v_U8_t nRoamBmissFinalBcnt);
/*--------------------------------------------------------------------------
\fn sme_GetRoamBmissFinalBcnt
\brief gets Roam count for final beacon miss
This is a synchronous call
\param hHal - The handle returned by macOpen
\return v_U8_t - nRoamBmissFinalBcnt
\sa
--------------------------------------------------------------------------*/
v_U8_t sme_GetRoamBmissFinalBcnt(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_SetRoamBeaconRssiWeight
\brief Update Roam beacon rssi weight
This function is called through dynamic setConfig callback function
to configure nRoamBeaconRssiWeight
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param nRoamBeaconRssiWeight - Roam beacon rssi weight
\return eHAL_STATUS_SUCCESS - SME update nRoamBeaconRssiWeight config
successfully.
else SME is failed to update nRoamBeaconRssiWeight
-------------------------------------------------------------------------*/
eHalStatus sme_SetRoamBeaconRssiWeight(tHalHandle hHal, tANI_U8 sessionId,
const v_U8_t nRoamBeaconRssiWeight);
/*--------------------------------------------------------------------------
\fn sme_GetRoamBeaconRssiWeight
\brief gets Roam beacon rssi weight
This is a synchronous call
\param hHal - The handle returned by macOpen
\return v_U8_t - nRoamBeaconRssiWeight
\sa
--------------------------------------------------------------------------*/
v_U8_t sme_GetRoamBeaconRssiWeight(tHalHandle hHal);
#endif
#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_ESE) || defined(FEATURE_WLAN_LFR)
/*--------------------------------------------------------------------------
\brief sme_getRoamRssiDiff() - get Roam rssi diff
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
v_U8_t sme_getRoamRssiDiff(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_ChangeRoamScanChannelList() - Change roam scan channel list
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_ChangeRoamScanChannelList(tHalHandle hHal, tANI_U8 sessionId,
tANI_U8 *pChannelList,
tANI_U8 numChannels);
#ifdef FEATURE_WLAN_ESE_UPLOAD
/*--------------------------------------------------------------------------
\brief sme_SetEseRoamScanChannelList() - set ese roam scan channel list
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_SetEseRoamScanChannelList(tHalHandle hHal, tANI_U8 sessionId,
tANI_U8 *pChannelList,
tANI_U8 numChannels);
#endif
/*--------------------------------------------------------------------------
\brief sme_getRoamScanChannelList() - get roam scan channel list
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param pChannelList - Output channel list
\param pNumChannels - Output number of channels
\param sessionId - Session identifier
\return eHAL_STATUS_SUCCESS - SME update config successful.
Other status means SME is failed to update
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_getRoamScanChannelList(tHalHandle hHal, tANI_U8 *pChannelList,
tANI_U8 *pNumChannels, tANI_U8 sessionId);
/*--------------------------------------------------------------------------
\brief sme_getIsEseFeatureEnabled() - get ESE feature enabled or not
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return TRUE (1) - if the ESE feature is enabled
FALSE (0) - if feature is disabled (compile or runtime)
\sa
--------------------------------------------------------------------------*/
tANI_BOOLEAN sme_getIsEseFeatureEnabled(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_getWESMode() - getWES Mode
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return v_U8_t - WES Mode Enabled(1)/Disabled(0)
\sa
--------------------------------------------------------------------------*/
v_BOOL_t sme_GetWESMode(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_GetRoamScanControl() - get scan control
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return v_BOOL_t - Enabled(1)/Disabled(0)
\sa
--------------------------------------------------------------------------*/
v_BOOL_t sme_GetRoamScanControl(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_UpdateEmptyScanRefreshPeriod
\brief Update nnEmptyScanRefreshPeriod
This function is called through dynamic setConfig callback function
to configure nnEmptyScanRefreshPeriod
Usage: adb shell iwpriv wlan0 setConfig nEmptyScanRefreshPeriod=[0 .. 60]
\param hHal - HAL handle for device
\param nEmptyScanRefreshPeriod - scan period following empty scan results.
\- return Success or failure
-------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
\brief sme_getIsLfrFeatureEnabled() - get LFR feature enabled or not
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return TRUE (1) - if the feature is enabled
FALSE (0) - if feature is disabled (compile or runtime)
\sa
--------------------------------------------------------------------------*/
tANI_BOOLEAN sme_getIsLfrFeatureEnabled(tHalHandle hHal);
/*--------------------------------------------------------------------------
\brief sme_getIsFtFeatureEnabled() - get FT feature enabled or not
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return TRUE (1) - if the feature is enabled
FALSE (0) - if feature is disabled (compile or runtime)
\sa
--------------------------------------------------------------------------*/
tANI_BOOLEAN sme_getIsFtFeatureEnabled(tHalHandle hHal);
#endif
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
/*--------------------------------------------------------------------------
\brief sme_UpdateRoamScanOffloadEnabled() - enable/disable roam scan offload
feature
It is used at in the REG_DYNAMIC_VARIABLE macro definition of
gRoamScanOffloadEnabled.
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return eHAL_STATUS_SUCCESS - SME update config successfully.
Other status means SME is failed to update.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateRoamScanOffloadEnabled(tHalHandle hHal, v_BOOL_t nRoamScanOffloadEnabled);
#endif
/* ---------------------------------------------------------------------------
\fn sme_IsFeatureSupportedByFW
\brief Check if an feature is enabled by FW
\param feattEnumValue - Enumeration value of the feature to be checked.
A value from enum placeHolderInCapBitmap
\- return 1/0 (TRUE/FALSE)
-------------------------------------------------------------------------*/
tANI_U8 sme_IsFeatureSupportedByFW(tANI_U8 featEnumValue);
#ifdef FEATURE_WLAN_TDLS
/* ---------------------------------------------------------------------------
\fn sme_SendTdlsLinkEstablishParams
\brief API to send TDLS Link Establishment Parameters.
\param peerMac - peer's Mac Address.
\param tdlsLinkEstablishParams - TDLS Peer Link Establishment Parameters
\- return VOS_STATUS_SUCCES
-------------------------------------------------------------------------*/
VOS_STATUS sme_SendTdlsLinkEstablishParams(tHalHandle hHal,
tANI_U8 sessionId,
const tSirMacAddr peerMac,
tCsrTdlsLinkEstablishParams *tdlsLinkEstablishParams);
/* ---------------------------------------------------------------------------
\fn sme_SendTdlsMgmtFrame
\brief API to send TDLS management frames.
\param peerMac - peer's Mac Address.
\param frame_type - Type of TDLS mgmt frame to be sent.
\param dialog - dialog token used in the frame.
\param status - status to be included in the frame.
\param peerCapability - peerCapability to be included in the frame.
\param buf - additional IEs to be included
\param len - length of additional Ies
\param responder - Tdls request type
\- return VOS_STATUS_SUCCES
-------------------------------------------------------------------------*/
VOS_STATUS sme_SendTdlsMgmtFrame(tHalHandle hHal, tANI_U8 sessionId,
const tSirMacAddr peerMac, tANI_U8 frame_type,
tANI_U8 dialog, tANI_U16 status,
tANI_U32 peerCapability, tANI_U8 *buf,
tANI_U8 len, tANI_U8 responder);
/* ---------------------------------------------------------------------------
\fn sme_ChangeTdlsPeerSta
\brief API to Update TDLS peer sta parameters.
\param peerMac - peer's Mac Address.
\param staParams - Peer Station Parameters.
\- return VOS_STATUS_SUCCES
-------------------------------------------------------------------------*/
VOS_STATUS sme_ChangeTdlsPeerSta(tHalHandle hHal, tANI_U8 sessionId,
const tSirMacAddr peerMac,
tCsrStaParams *pstaParams);
/* ---------------------------------------------------------------------------
\fn sme_AddTdlsPeerSta
\brief API to Add TDLS peer sta entry.
\param peerMac - peer's Mac Address.
\- return VOS_STATUS_SUCCES
-------------------------------------------------------------------------*/
VOS_STATUS sme_AddTdlsPeerSta(tHalHandle hHal,
tANI_U8 sessionId,
const tSirMacAddr peerMac);
/* ---------------------------------------------------------------------------
\fn sme_DeleteTdlsPeerSta
\brief API to Delete TDLS peer sta entry.
\param peerMac - peer's Mac Address.
\- return VOS_STATUS_SUCCES
-------------------------------------------------------------------------*/
VOS_STATUS sme_DeleteTdlsPeerSta(tHalHandle hHal, tANI_U8 sessionId,
const tSirMacAddr peerMac);
/* ---------------------------------------------------------------------------
\fn sme_SetTdlsPowerSaveProhibited
\API to set/reset the isTdlsPowerSaveProhibited.
\- return void
-------------------------------------------------------------------------*/
void sme_SetTdlsPowerSaveProhibited(tHalHandle hHal, tANI_U32 sessionId,
v_BOOL_t val);
/* ---------------------------------------------------------------------------
\fn sme_SendTdlsChanSwitchReq
\API to set tdls channel switch parameters.
\- return void
-------------------------------------------------------------------------*/
eHalStatus sme_SendTdlsChanSwitchReq(tHalHandle hHal,
tSmeTdlsChanSwitchParams *chSwitchParams);
#endif
/* ---------------------------------------------------------------------------
\fn sme_IsPmcBmps
\brief API to Check if PMC state is BMPS.
\- return v_BOOL_t
-------------------------------------------------------------------------*/
v_BOOL_t sme_IsPmcBmps(tHalHandle hHal);
eHalStatus sme_UpdateDfsSetting(tHalHandle hHal, tANI_U8 fUpdateEnableDFSChnlScan);
/*
* SME API to enable/disable WLAN driver initiated SSR
*/
void sme_UpdateEnableSSR(tHalHandle hHal, tANI_BOOLEAN enableSSR);
/* ---------------------------------------------------------------------------
\fn sme_SetPhyMode
\brief Changes the PhyMode.
\param hHal - The handle returned by macOpen.
\param phyMode new phyMode which is to set
\return eHalStatus SUCCESS.
-------------------------------------------------------------------------------*/
eHalStatus sme_SetPhyMode(tHalHandle hHal, eCsrPhyMode phyMode);
/* ---------------------------------------------------------------------------
\fn sme_GetPhyMode
\brief gets current PhyMode.
\param hHal - The handle returned by macOpen.
\return eHalStatus PhyMode
-------------------------------------------------------------------------------*/
eCsrPhyMode sme_GetPhyMode(tHalHandle hHal);
/*
* SME API to determine the channel bonding mode
*/
eIniChanBondState sme_SelectCBMode(tHalHandle hHal, eCsrPhyMode eCsrPhyMode,
uint8_t channel, uint8_t ht_sec_dh,
uint16_t *vht_channel_width,
uint16_t ch_width_orig);
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
/*--------------------------------------------------------------------------
\brief sme_HandoffRequest() - a wrapper function to Request a handoff
from CSR.
This is a synchronous call
\param hHal - The handle returned by macOpen
\param sessionId - Session identifier
\param pHandoffInfo - info provided by HDD with the handoff request (namely:
BSSID, channel etc.)
\return eHAL_STATUS_SUCCESS - SME passed the request to CSR successfully.
Other status means SME is failed to send the request.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_HandoffRequest(tHalHandle hHal, tANI_U8 sessionId,
tCsrHandoffRequest *pHandoffInfo);
#endif
/*--------------------------------------------------------------------------
\brief sme_isSta_p2p_clientConnected() - a wrapper function to check if there
is any connected session .
This is a synchronous call
\param hHal - The handle returned by macOpen
\return VOS_STATUS - SME passed the request to CSR successfully.
Other status means SME is failed to send the request.
\sa
--------------------------------------------------------------------------*/
VOS_STATUS sme_isSta_p2p_clientConnected(tHalHandle hHal);
#ifdef FEATURE_WLAN_LPHB
/* ---------------------------------------------------------------------------
\fn sme_LPHBConfigReq
\API to make configuration LPHB within FW.
\param hHal - The handle returned by macOpen
\param lphdReq - LPHB request argument by client
\param pCallbackfn - LPHB timeout notification callback function pointer
\- return Configuration message posting status, SUCCESS or Fail
-------------------------------------------------------------------------*/
eHalStatus sme_LPHBConfigReq(
tHalHandle hHal,
tSirLPHBReq *lphdReq,
void (*pCallbackfn)(void *pHddCtx, tSirLPHBInd *indParam));
#endif /* FEATURE_WLAN_LPHB */
/* ---------------------------------------------------------------------------
\fn sme_AddPeriodicTxPtrn
\brief API to Periodic TX Pattern Offload feature
\param hHal - The handle returned by macOpen
\param addPeriodicTxPtrnParams - Pointer to the add pattern structure
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_AddPeriodicTxPtrn(tHalHandle hHal, tSirAddPeriodicTxPtrn
*addPeriodicTxPtrnParams);
/* ---------------------------------------------------------------------------
\fn sme_DelPeriodicTxPtrn
\brief API to Periodic TX Pattern Offload feature
\param hHal - The handle returned by macOpen
\param delPeriodicTxPtrnParams - Pointer to the deleting pattern structure
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_DelPeriodicTxPtrn(tHalHandle hHal, tSirDelPeriodicTxPtrn
*delPeriodicTxPtrnParams);
/**
* sme_enable_rmc() - enable RMC
* @hHal: handle
* @sessionId: session id
*
* Return: eHalStatus
*/
eHalStatus sme_enable_rmc(tHalHandle hHal, tANI_U32 sessionId);
/**
* sme_disable_rmc() - disable RMC
* @hHal: handle
* @sessionId: session id
*
* Return: eHalStatus
*/
eHalStatus sme_disable_rmc(tHalHandle hHal, tANI_U32 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_SendRmcActionPeriod
\brief Used to send RMC action period param to fw
\param hHal
\param sessionId
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SendRmcActionPeriod(tHalHandle hHal, tANI_U32 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_SendRateUpdateInd
\brief API to Update rate
\param hHal - The handle returned by macOpen
\param rateUpdateParams - Pointer to rate update params
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SendRateUpdateInd(tHalHandle hHal, tSirRateUpdateInd *rateUpdateParams);
/* ---------------------------------------------------------------------------
\fn sme_GetIBSSPeerInfo
\brief Used to disable RMC
setting will not persist over reboots
\param hHal
\param ibssPeerInfoReq multicast Group IP address
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_RequestIBSSPeerInfo(tHalHandle hHal, void *pUserData,
pIbssPeerInfoCb peerInfoCbk,
tANI_BOOLEAN allPeerInfoReqd,
tANI_U8 staIdx);
/* ---------------------------------------------------------------------------
\fn sme_SendCesiumEnableInd
\brief Used to send proprietary cesium enable indication to fw
\param hHal
\param sessionId
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SendCesiumEnableInd(tHalHandle hHal, tANI_U32 sessionId);
/*
* sme API to trigger fast BSS roam to a given BSSID independent of RSSI
* triggers
* return status
*/
eHalStatus smeIssueFastRoamNeighborAPEvent (tHalHandle hHal,
tANI_U8 *bssid,
tSmeFastRoamTrigger fastRoamTrig,
tANI_U8 sessionId);
eHalStatus sme_RoamDelPMKIDfromCache(tHalHandle hHal,
tANI_U8 sessionId,
tPmkidCacheInfo *pmksa,
tANI_BOOLEAN flush_cache);
void smeGetCommandQStatus( tHalHandle hHal );
/*
* SME API to enable/disable idle mode power save
* This should be called only if power save offload
* is enabled
*/
VOS_STATUS sme_SetIdlePowersaveConfig(v_PVOID_t vosContext, tANI_U32 value);
VOS_STATUS sme_notify_modem_power_state(tHalHandle hHal, tANI_U32 value);
eHalStatus sme_set_cts2self_for_p2p_go(tHalHandle hHal);
eHalStatus sme_set_mib_stats_enable(tHalHandle hal, uint8_t value);
eHalStatus sme_ConfigEnablePowerSave (tHalHandle hHal, tPmcPowerSavingMode psMode);
eHalStatus sme_ConfigDisablePowerSave (tHalHandle hHal, tPmcPowerSavingMode psMode);
eHalStatus sme_PsOffloadEnablePowerSave (tHalHandle hHal, tANI_U32 sessionId);
eHalStatus sme_PsOffloadEnableDeferredPowerSave (tHalHandle hHal,
tANI_U32 sessionId,
tANI_BOOLEAN isReassoc);
eHalStatus sme_PsOffloadDisablePowerSave(tHalHandle hHal,
FullPowerReqCb callback,
void *callback_context,
tANI_U32 sessionId);
eHalStatus sme_PsOffloadDisableDeferredPowerSave (tHalHandle hHal,
tANI_U32 sessionId);
/*SME API to convert convert the ini value to the ENUM used in csr and MAC*/
ePhyChanBondState sme_GetCBPhyStateFromCBIniValue(tANI_U32 cb_ini_value);
int sme_UpdateHTConfig(tHalHandle hHal, tANI_U8 sessionId, tANI_U16 htCapab,
int value);
tANI_S16 sme_GetHTConfig(tHalHandle hHal, tANI_U8 session_id, tANI_U16 ht_capab);
#ifdef QCA_HT_2040_COEX
VOS_STATUS sme_notify_ht2040_mode(tHalHandle hHal, tANI_U16 staId,
v_MACADDR_t macAddrSTA, v_U8_t sessionId, tANI_U8 channel_type);
eHalStatus sme_SetHT2040Mode(tHalHandle hHal, tANI_U8 sessionId,
tANI_U8 channel_type, tANI_BOOLEAN obssEnabled);
#endif
eHalStatus sme_getRegInfo(tHalHandle hHal, tANI_U8 chanId,
tANI_U32 *regInfo1, tANI_U32 *regInfo2);
uint32_t sme_get_wni_dot11_mode(tHalHandle hal);
#ifdef FEATURE_WLAN_TDLS
eHalStatus sme_UpdateFwTdlsState(tHalHandle hHal, void *psmeTdlsParams,
tANI_BOOLEAN useSmeLock);
eHalStatus sme_UpdateTdlsPeerState(tHalHandle hHal,
tSmeTdlsPeerStateParams *pPeerStateParams);
#endif /* FEATURE_WLAN_TDLS */
#ifdef FEATURE_WLAN_CH_AVOID
/* ---------------------------------------------------------------------------
\fn sme_AddChAvoidCallback
\brief Used to plug in callback function
Which notify channel may not be used with SAP or P2PGO mode.
Notification come from FW.
\param hHal
\param pCallbackfn : callback function pointer should be plugged in
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_AddChAvoidCallback
(
tHalHandle hHal,
void (*pCallbackfn)(void *hdd_context, void *indi_param)
);
/* ---------------------------------------------------------------------------
\fn sme_ChAvoidUpdateReq
\API to request channel avoidance update from FW.
\param hHal - The handle returned by macOpen
\param update_type - The udpate_type parameter of this request call
\- return Configuration message posting status, SUCCESS or Fail
-------------------------------------------------------------------------*/
eHalStatus sme_ChAvoidUpdateReq
(
tHalHandle hHal
);
#endif /* FEATURE_WLAN_CH_AVOID */
#ifdef FEATURE_WLAN_AUTO_SHUTDOWN
/* ---------------------------------------------------------------------------
\fn sme_auto_shutdown_cb
\brief Used to plug in callback function for receiving auto shutdown evt
\param hHal
\param pCallbackfn : callback function pointer should be plugged in
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_set_auto_shutdown_cb(tHalHandle hHal,
void (*pCallbackfn)(void));
/* ---------------------------------------------------------------------------
\fn sme_set_auto_shutdown_timer
\API to set auto shutdown timer value in FW.
\param hHal - The handle returned by macOpen
\param timer_val - The auto shutdown timer value to be set
\- return Configuration message posting status, SUCCESS or Fail
-------------------------------------------------------------------------*/
eHalStatus sme_set_auto_shutdown_timer(tHalHandle hHal, tANI_U32 timer_value);
#endif
eHalStatus sme_RoamChannelChangeReq(tHalHandle hHal, tCsrBssid bssid,
tANI_U32 cbMode, tCsrRoamProfile *pprofile);
eHalStatus sme_RoamStartBeaconReq( tHalHandle hHal,
tCsrBssid bssid, tANI_U8 dfsCacWaitStatus);
/* -------------------------------------------------------------------------
\fn sme_RoamCsaIeRequest
\brief API to request CSA IE transmission from PE
\param hHal - The handle returned by macOpen
\param pDfsCsaReq - CSA IE request
\param bssid - SAP bssid
\param ch_bandwidth - Channel offset
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_RoamCsaIeRequest(tHalHandle hHal, tCsrBssid bssid,
tANI_U8 targetChannel, tANI_U8 csaIeReqd,
u_int8_t ch_bandwidth);
/* ---------------------------------------------------------------------------
\fn sme_InitThermalInfo
\brief SME API to initialize the thermal mitigation parameters
\param hHal
\param thermalParam : thermal mitigation parameters
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_InitThermalInfo( tHalHandle hHal, tSmeThermalParams thermalParam );
/* ---------------------------------------------------------------------------
\fn sme_InitThermalInfo
\brief SME API to initialize the thermal mitigation parameters
\param hHal
\param thermalParam : thermal mitigation parameters
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_InitDPDRecalInfo( tHalHandle hHal, tSmeDPDRecalParams thermalParam );
/* ---------------------------------------------------------------------------
\fn sme_InitThermalInfo
\brief SME API to set the thermal mitigation level
\param hHal
\param level : thermal mitigation level
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SetThermalLevel( tHalHandle hHal, tANI_U8 level );
/* ---------------------------------------------------------------------------
\fn sme_TxpowerLimit
\brief SME API to set txpower limits
\param hHal
\param psmetx : power limits for 2g/5g
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_TxpowerLimit( tHalHandle hHal, tSirTxPowerLimit *psmetx);
/* ---------------------------------------------------------------------------
\fn sme_GetLinkSpeed
\brief SME API to get the link speed for peermac
\param hHal
\param lsReq: peermac address to retrieve link speed
\param plsContext: callback context
\param pCallbackfn: callback fn with response (link speed)
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_GetLinkSpeed(tHalHandle hHal,tSirLinkSpeedInfo *lsReq,void *plsContext,
void (*pCallbackfn)(tSirLinkSpeedInfo *indParam, void *pContext) );
eHalStatus sme_get_peer_info(tHalHandle hal, struct sir_peer_info_req req,
void *context,
void (*callbackfn)(struct sir_peer_info_resp *param,
void *pcontext));
eHalStatus sme_get_isolation(tHalHandle hal,
void *context,
void (*callbackfn)(struct sir_isolation_resp *param,
void *pcontext));
/*----------------------------------------------------------------------------
\fn sme_get_peer_info_ext
\brief This function sends msg to get info for remote peer
\param hHal - global structure
\param req - get peer info request pointer
\param context - event handle context
\param callbackfn - callback fn with response
\- return Success or failure
-----------------------------------------------------------------------------*/
eHalStatus sme_get_peer_info_ext(tHalHandle hal,
struct sir_peer_info_ext_req *req,
void *context,
void (*callbackfn)(struct sir_peer_info_ext_resp *param,
void *pcontext));
/*----------------------------------------------------------------------------
\fn sme_ModifyAddIE
\brief This function sends msg to updates the additional IE buffers in PE
\param hHal - global structure
\param pModifyIE - pointer to tSirModifyIE structure
\param updateType - type of buffer
\- return Success or failure
-----------------------------------------------------------------------------*/
eHalStatus sme_ModifyAddIE(tHalHandle hHal,
tSirModifyIE *pModifyIE,
eUpdateIEsType updateType);
/*----------------------------------------------------------------------------
\fn sme_UpdateAddIE
\brief This function sends msg to updates the additional IE buffers in PE
\param hHal - global structure
\param pUpdateIE - pointer to structure tSirUpdateIE
\param updateType - Type of buffer
\- return Success or failure
-----------------------------------------------------------------------------*/
eHalStatus sme_UpdateAddIE(tHalHandle hHal,
tSirUpdateIE *pUpdateIE,
eUpdateIEsType updateType);
eHalStatus sme_UpdateConnectDebug(tHalHandle hHal, tANI_U32 set_value);
const char * sme_requestTypetoString(const v_U8_t requestType);
const char * sme_scan_type_to_string(const uint8_t scan_type);
const char * sme_bss_type_to_string(const uint8_t bss_type);
const char * sme_PmcStatetoString(const v_U8_t pmcState);
eHalStatus sme_ApDisableIntraBssFwd(tHalHandle hHal, tANI_U8 sessionId,
tANI_BOOLEAN disablefwd);
tANI_U32 sme_GetChannelBondingMode5G(tHalHandle hHal);
tANI_U32 sme_GetChannelBondingMode24G(tHalHandle hHal);
#if defined(CONFIG_HL_SUPPORT) && defined(QCA_BAD_PEER_TX_FLOW_CL)
eHalStatus sme_init_bad_peer_txctl_info(tHalHandle hHal,
struct sme_bad_peer_txctl_param param );
#else
static inline eHalStatus sme_init_bad_peer_txctl_info(tHalHandle hHal,
struct sme_bad_peer_txctl_param param )
{
/* no-op */
return eHAL_STATUS_SUCCESS;
}
#endif
#ifdef WLAN_FEATURE_STATS_EXT
typedef struct sStatsExtRequestReq {
tANI_U32 request_data_len;
tANI_U8* request_data;
} tStatsExtRequestReq, *tpStatsExtRequestReq;
typedef void (* StatsExtCallback)(void *, tStatsExtEvent *);
void sme_StatsExtRegisterCallback(tHalHandle hHal, StatsExtCallback callback);
eHalStatus sme_StatsExtRequest(tANI_U8 session_id, tpStatsExtRequestReq input);
eHalStatus sme_StatsExtEvent (tHalHandle hHal, void* pMsg);
#endif
/* -------------------------------------------------------------------------
\fn sme_set_dot11p_config
\brief API to Set 802.11p config
\param hal - The handle returned by macOpen
\param enable_dot11p - 802.11p config param
\return eHalStatus
---------------------------------------------------------------------------*/
#ifdef WLAN_FEATURE_DSRC
void sme_set_dot11p_config(tHalHandle hal, bool enable_dot11p);
eHalStatus sme_ocb_set_config(tHalHandle hHal, void *context,
ocb_callback callback,
struct sir_ocb_config *config);
eHalStatus sme_ocb_set_utc_time(struct sir_ocb_utc *utc);
eHalStatus sme_ocb_start_timing_advert(struct sir_ocb_timing_advert
*timing_advert);
eHalStatus sme_ocb_stop_timing_advert(struct sir_ocb_timing_advert
*timing_advert);
int sme_ocb_gen_timing_advert_frame(tHalHandle hHal, tSirMacAddr self_addr,
uint8_t **buf, uint32_t *timestamp_offset,
uint32_t *time_value_offset);
eHalStatus sme_ocb_get_tsf_timer(tHalHandle hHal, void *context,
ocb_callback callback,
struct sir_ocb_get_tsf_timer *request);
eHalStatus sme_dcc_get_stats(tHalHandle hHal, void *context,
ocb_callback callback,
struct sir_dcc_get_stats *request);
eHalStatus sme_dcc_clear_stats(uint32_t vdev_id, uint32_t dcc_stats_bitmap);
eHalStatus sme_dcc_update_ndl(tHalHandle hHal, void* context,
ocb_callback callback,
struct sir_dcc_update_ndl *request);
eHalStatus sme_register_for_dcc_stats_event(tHalHandle hHal, void* context,
ocb_callback callback);
eHalStatus sme_register_radio_chan_stats_cb(tHalHandle hHal, void *context,
ocb_callback callback);
eHalStatus sme_unregister_radio_chan_stats_cb(tHalHandle hHal);
eHalStatus sme_request_radio_chan_stats(tHalHandle hHal,
struct radio_chan_stats_req *req);
#else
static inline void sme_set_dot11p_config(tHalHandle hal, bool enable_dot11p)
{
return;
}
static inline eHalStatus sme_ocb_set_config(tHalHandle hHal, void *context,
ocb_callback callback,
struct sir_ocb_config *config)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_ocb_set_utc_time(struct sir_ocb_utc *utc)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_ocb_start_timing_advert(
struct sir_ocb_timing_advert *timing_advert)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_ocb_stop_timing_advert(struct sir_ocb_timing_advert
*timing_advert)
{
return eHAL_STATUS_SUCCESS;
}
static inline int sme_ocb_gen_timing_advert_frame(tHalHandle hHal,
tSirMacAddr self_addr, uint8_t **buf,
uint32_t *timestamp_offset,
uint32_t *time_value_offset)
{
return 0;
}
static inline eHalStatus sme_ocb_get_tsf_timer(tHalHandle hHal, void *context,
ocb_callback callback,
struct sir_ocb_get_tsf_timer *request)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_dcc_get_stats(tHalHandle hHal, void *context,
ocb_callback callback,
struct sir_dcc_get_stats *request)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_dcc_clear_stats(uint32_t vdev_id,
uint32_t dcc_stats_bitmap)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_dcc_update_ndl(tHalHandle hHal, void* context,
ocb_callback callback,
struct sir_dcc_update_ndl *request)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_register_for_dcc_stats_event(tHalHandle hHal,
void* context, ocb_callback callback)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_register_radio_chan_stats_cb(tHalHandle hHal,
void *context, ocb_callback callback)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_unregister_radio_chan_stats_cb(tHalHandle hHal)
{
return eHAL_STATUS_SUCCESS;
}
static inline eHalStatus sme_request_radio_chan_stats(tHalHandle hHal,
struct radio_chan_stats_req *req)
{
return eHAL_STATUS_SUCCESS;
}
#endif
/* ---------------------------------------------------------------------------
\fn sme_UpdateDFSScanMode
\brief Update DFS roam scan mode
This function is called through dynamic setConfig callback function
to configure allowDFSChannelRoam.
\param hHal - HAL handle for device
\param sessionId - Session identifier
\param allowDFSChannelRoam - DFS roaming scan mode 0 (disable),
1 (passive), 2 (active)
\return eHAL_STATUS_SUCCESS - SME update DFS roaming scan config
successfully.
Other status means SME failed to update DFS roaming scan config.
\sa
-------------------------------------------------------------------------*/
eHalStatus sme_UpdateDFSScanMode(tHalHandle hHal,
tANI_U8 sessionId,
v_U8_t allowDFSChannelRoam);
/*--------------------------------------------------------------------------
\brief sme_GetDFSScanMode() - get DFS roam scan mode
This is a synchronous call
\param hHal - The handle returned by macOpen.
\return DFS roaming mode 0 (disabled), 1 (passive), 2 (active)
\sa
--------------------------------------------------------------------------*/
v_BOOL_t sme_GetDFSScanMode(tHalHandle hHal);
/* ---------------------------------------------------------------------------
\fn sme_staInMiddleOfRoaming
\brief This function returns TRUE if STA is in the middle of roaming state
\param hHal - HAL handle for device
\param sessionId - Session identifier
\- return TRUE or FALSE
-------------------------------------------------------------------------*/
tANI_BOOLEAN sme_staInMiddleOfRoaming(tHalHandle hHal, tANI_U8 sessionId);
/* ---------------------------------------------------------------------------
\fn sme_PsOffloadIsStaInPowerSave
\brief This function returns TRUE if STA is in power save
\param hHal - HAL handle for device
\param sessionId - Session Identifier
\- return TRUE or FALSE
-------------------------------------------------------------------------*/
tANI_BOOLEAN sme_PsOffloadIsStaInPowerSave(tHalHandle hHal, tANI_U8 sessionId);
#ifdef FEATURE_WLAN_EXTSCAN
/* ---------------------------------------------------------------------------
\fn sme_GetValidChannelsByBand
\brief SME API to fetch all valid channel filtered by band
\param hHal
\param wifiBand: RF band information
\param aValidChannels: Array to store channel info
\param len: number of channels
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_GetValidChannelsByBand (tHalHandle hHal, tANI_U8 wifiBand,
tANI_U32 *aValidChannels, tANI_U8 *pNumChannels);
/* ---------------------------------------------------------------------------
\fn sme_ExtScanGetCapabilities
\brief SME API to fetch extscan capabilities
\param hHal
\param pReq: extscan capabilities structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_ExtScanGetCapabilities (tHalHandle hHal,
tSirGetExtScanCapabilitiesReqParams *pReq);
/* ---------------------------------------------------------------------------
\fn sme_ExtScanStart
\brief SME API to issue extscan start
\param hHal
\param pStartCmd: extscan start structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_ExtScanStart (tHalHandle hHal,
tSirWifiScanCmdReqParams *pStartCmd);
/* ---------------------------------------------------------------------------
\fn sme_ExtScanStop
\brief SME API to issue extscan stop
\param hHal
\param pStopReq: extscan stop structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_ExtScanStop(tHalHandle hHal,
tSirExtScanStopReqParams *pStopReq);
/* ---------------------------------------------------------------------------
\fn sme_SetBssHotlist
\brief SME API to set BSSID hotlist
\param hHal
\param pSetHotListReq: extscan set hotlist structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SetBssHotlist (tHalHandle hHal,
tSirExtScanSetBssidHotListReqParams *pSetHotListReq);
/* ---------------------------------------------------------------------------
\fn sme_ResetBssHotlist
\brief SME API to reset BSSID hotlist
\param hHal
\param pSetHotListReq: extscan set hotlist structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_ResetBssHotlist (tHalHandle hHal,
tSirExtScanResetBssidHotlistReqParams *pResetReq);
/* ---------------------------------------------------------------------------
\fn sme_SetSignificantChange
\brief SME API to set significant change
\param hHal
\param pSetSignificantChangeReq: extscan set significant change structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SetSignificantChange (tHalHandle hHal,
tSirExtScanSetSigChangeReqParams* pSetSignificantChangeReq);
/* ---------------------------------------------------------------------------
\fn sme_ResetSignificantChange
\brief SME API to reset significant change
\param hHal
\param pResetReq: extscan reset significant change structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_ResetSignificantChange (tHalHandle hHal,
tSirExtScanResetSignificantChangeReqParams *pResetReq);
/* ---------------------------------------------------------------------------
\fn sme_getCachedResults
\brief SME API to get cached results
\param hHal
\param pCachedResultsReq: extscan get cached results structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_getCachedResults (tHalHandle hHal,
tSirExtScanGetCachedResultsReqParams *pCachedResultsReq);
/**
* sme_get_chain_rssi - sme api to get chain rssi
* @hHal: global hal handle
* @input: get chain rssi req params
*
* Return: eHalStatus enumeration.
*/
eHalStatus sme_get_chain_rssi(tHalHandle phal,
struct get_chain_rssi_req_params *input);
eHalStatus sme_set_epno_list(tHalHandle hal,
struct wifi_epno_params *req_msg);
eHalStatus sme_set_passpoint_list(tHalHandle hal,
struct wifi_passpoint_req *req_msg);
eHalStatus sme_reset_passpoint_list(tHalHandle hal,
struct wifi_passpoint_req *req_msg);
/* ---------------------------------------------------------------------------
\fn sme_ExtScanRegisterCallback
\brief SME API to register extscan notification callback
\param pExtScanIndCb
\- return void
-------------------------------------------------------------------------*/
eHalStatus sme_ExtScanRegisterCallback (tHalHandle hHal,
void (*pExtScanIndCb)(void *, const tANI_U16, void *));
#endif /* FEATURE_WLAN_EXTSCAN */
/**
* sme_chain_rssi_register_callback - chain rssi callback
* @hal: global hal handle
* @pchain_rssi_ind_cb: callback function pointer
*
* Return: eHalStatus enumeration.
*/
eHalStatus sme_chain_rssi_register_callback(tHalHandle phal,
void (*pchain_rssi_ind_cb)(void *, void *));
eHalStatus sme_bpf_offload_register_callback(tHalHandle hal,
void (*pbpf_get_offload_cb)(void *,
struct sir_bpf_get_offload *));
VOS_STATUS sme_set_beacon_filter(uint32_t vdev_id, uint32_t *ie_map);
VOS_STATUS sme_unset_beacon_filter(uint32_t vdev_id);
#ifdef WLAN_FEATURE_ROAM_SCAN_OFFLOAD
/* ---------------------------------------------------------------------------
\fn sme_abortRoamScan
\brief API to abort current roam scan cycle by roam scan offload module.
\param hHal - The handle returned by macOpen.
\param sessionId - Session identifier
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_abortRoamScan(tHalHandle hHal, tANI_U8 sessionId);
#endif //#if WLAN_FEATURE_ROAM_SCAN_OFFLOAD
#ifdef WLAN_FEATURE_LINK_LAYER_STATS
/* ---------------------------------------------------------------------------
\fn sme_LLStatsClearReq
\brief SME API to clear Link Layer Statistics
\param hHal
\param pclearStatsReq: Link Layer clear stats request params structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_LLStatsClearReq (tHalHandle hHal,
tSirLLStatsClearReq *pclearStatsReq);
/* ---------------------------------------------------------------------------
\fn sme_LLStatsSetReq
\brief SME API to set the Link Layer Statistics
\param hHal
\param psetStatsReq: Link Layer set stats request params structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_LLStatsSetReq (tHalHandle hHal,
tSirLLStatsSetReq *psetStatsReq);
/* ---------------------------------------------------------------------------
\fn sme_LLStatsGetReq
\brief SME API to get the Link Layer Statistics
\param hHal
\param pgetStatsReq: Link Layer get stats request params structure
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_LLStatsGetReq (tHalHandle hHal,
tSirLLStatsGetReq *pgetStatsReq);
eHalStatus sme_ll_stats_set_thresh(tHalHandle hal,
struct sir_ll_ext_stats_threshold *thresh);
/* ---------------------------------------------------------------------------
\fn sme_SetLinkLayerStatsIndCB
\brief SME API to trigger the stats are available after get request
\param hHal
\param callbackRoutine - HDD callback which needs to be invoked after
getting status notification from FW
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SetLinkLayerStatsIndCB
(
tHalHandle hHal,
void (*callbackRoutine) (void *callbackCtx, int indType, void *pRsp)
);
eHalStatus sme_set_ll_ext_cb(tHalHandle hal,
void (*ll_stats_ext_cb)(tSirLLStatsResults *rsp));
#endif /* WLAN_FEATURE_LINK_LAYER_STATS */
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
/*--------------------------------------------------------------------------
\brief sme_UpdateRoamOffloadEnabled() - enable/disable roam offload feature
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param nRoamOffloadEnabled - The boolean to update with
\return eHAL_STATUS_SUCCESS - SME update config successfully.
Other status means SME is failed to update.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateRoamOffloadEnabled(tHalHandle hHal,
v_BOOL_t nRoamOffloadEnabled);
/*--------------------------------------------------------------------------
\brief sme_UpdateRoamKeyMgmtOffloadEnabled() - enable/disable key mgmt offload
This is a synchronous call
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\param nRoamKeyMgmtOffloadEnabled - The boolean to update with
\return eHAL_STATUS_SUCCESS - SME update config successfully.
Other status means SME is failed to update.
\sa
--------------------------------------------------------------------------*/
eHalStatus sme_UpdateRoamKeyMgmtOffloadEnabled(tHalHandle hHal,
tANI_U8 sessionId,
v_BOOL_t nRoamKeyMgmtOffloadEnabled);
#endif
#ifdef WLAN_FEATURE_NAN
/******************************************************************************
\fn sme_NanEvent
\brief
a callback function called when SME received eWNI_SME_NAN_EVENT
event from WDA
\param hHal - HAL handle for device
\param pMsg - Message body passed from WDA; includes NAN header
\return VOS_STATUS
******************************************************************************/
VOS_STATUS sme_NanEvent(tHalHandle hHal, void* pMsg);
#endif /* WLAN_FEATURE_NAN */
/*--------------------------------------------------------------------------
\brief sme_getLinkStatus() - api to get the link status
\param hHal - The handle returned by macOpen.
\param callback - callback function for link status result from FW
\param pContext - The context passed with callback
\param sessionId - SME sessionId
\return eHalStatus
--------------------------------------------------------------------------*/
eHalStatus sme_getLinkStatus(tHalHandle hHal,
tCsrLinkStatusCallback callback,
void *pContext,
tANI_U8 sessionId);
eHalStatus sme_get_fw_state(tHalHandle hHal,
tcsr_fw_state_callback callback,
void *context);
/* ---------------------------------------------------------------------------
\fn sme_GetTemperature
\brief SME API to get the pdev temperature
\param hHal
\param temperature context
\param pCallbackfn: callback fn with response (temperature)
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_GetTemperature(tHalHandle hHal,
void *tempContext,
void (*pCallbackfn)(int temperature, void *pContext));
/* ---------------------------------------------------------------------------
\fn sme_SetScanningMacOui
\brief SME API to set scanning mac oui
\param hHal
\param pScanMacOui: Scanning Mac Oui (input 3 bytes)
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_SetScanningMacOui(tHalHandle hHal, tSirScanMacOui *pScanMacOui);
#ifdef IPA_UC_OFFLOAD
/* ---------------------------------------------------------------------------
\fn sme_ipa_offload_enable_disable
\brief API to enable/disable IPA offload
\param hHal - The handle returned by macOpen.
\param sessionId - Session Identifier
\param pRequest - Pointer to the offload request.
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_ipa_offload_enable_disable(tHalHandle hal, tANI_U8 session_id,
struct sir_ipa_offload_enable_disable *request);
#endif
#ifdef DHCP_SERVER_OFFLOAD
/* ---------------------------------------------------------------------------
\fn sme_setDhcpSrvOffload
\brief SME API to set DHCP server offload info
\param hHal
\param pDhcpSrvInfo : DHCP server offload info struct
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_setDhcpSrvOffload(tHalHandle hHal,
tSirDhcpSrvOffloadInfo *pDhcpSrvInfo);
#endif /* DHCP_SERVER_OFFLOAD */
#ifdef WLAN_FEATURE_GPIO_LED_FLASHING
/* ---------------------------------------------------------------------------
\fn sme_SetLedFlashing
\brief API to set the LED flashing feature.
\param hHal - The handle returned by macOpen.
\param x0, x1 - led flashing parameters
\param gpio_num - GPIO number
\return eHalStatus
---------------------------------------------------------------------------*/
eHalStatus sme_SetLedFlashing (tHalHandle hHal, tANI_U8 type,
tANI_U32 x0, tANI_U32 x1, tANI_U32 gpio_num);
#endif
/* ---------------------------------------------------------------------------
\fn sme_handle_dfS_chan_scan
\brief SME API to enable/disable DFS channel scan
\param hHal
\param dfs_flag: whether dfs needs to be enabled or disabled
\return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_handle_dfs_chan_scan(tHalHandle hHal, tANI_U8 dfs_flag);
eHalStatus sme_ext_change_channel(tHalHandle hHal, uint32_t channel,
uint8_t session_id);
#ifdef MDNS_OFFLOAD
/* ---------------------------------------------------------------------------
\fn sme_setMDNSOffload
\brief SME API to set mDNS offload info
\param hHal
\param pMDNSInfo : mDNS offload info struct
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_setMDNSOffload(tHalHandle hHal,
tSirMDNSOffloadInfo *pMDNSInfo);
/* ---------------------------------------------------------------------------
\fn sme_setMDNSFqdn
\brief SME API to set mDNS Fqdn info
\param hHal
\param pMDNSFqdnInfo : mDNS Fqdn info struct
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_setMDNSFqdn(tHalHandle hHal,
tSirMDNSFqdnInfo *pMDNSFqdnInfo);
/* ---------------------------------------------------------------------------
\fn sme_setMDNSResponse
\brief SME API to set mDNS response info
\param hHal
\param pMDNSRespInfo : mDNS response info struct
\- return eHalStatus
-------------------------------------------------------------------------*/
eHalStatus sme_setMDNSResponse(tHalHandle hHal,
tSirMDNSResponseInfo *pMDNSRespInfo);
#endif /* MDNS_OFFLOAD */
#ifdef SAP_AUTH_OFFLOAD
/**
* sme_set_sap_auth_offload() enable/disable Software AP Auth Offload
* @hHal: hal layer handler
* @sap_auth_offload_info: the information of Software AP Auth Offload
*
* This function provide enable/disable Software AP authenticaiton offload
* feature on target firmware
*
* Return: Return eHalStatus.
*/
eHalStatus sme_set_sap_auth_offload(tHalHandle hHal,
struct tSirSapOffloadInfo *sap_auth_offload_info);
eHalStatus sme_set_client_block_info(tHalHandle hHal,
struct sblock_info *client_block_info);
#else
static inline eHalStatus sme_set_client_block_info(tHalHandle hHal,
struct sblock_info *client_block_info)
{
return eHAL_STATUS_FAILURE;
}
#endif /* SAP_AUTH_OFFLOAD */
eHalStatus sme_set_tsfcb(tHalHandle hHal,
int (*pcallbackfn)(void *pcallbackcontext, struct stsf *ptsf),
void *pcallbackcontext);
#ifdef WLAN_FEATURE_APFIND
VOS_STATUS sme_apfind_set_cmd(struct sme_ap_find_request_req *input);
#endif /* WLAN_FEATURE_APFIND */
#ifdef WLAN_FEATURE_SAP_TO_FOLLOW_STA_CHAN
eHalStatus sme_AddCSAIndCallback
(
tHalHandle hHal,
void (*pCallbackfn)(void *pAdapter, void *CSAindParam)
);
#endif//#ifdef
/**
* sme_enable_disable_mas() - Function to set MAS value to UMAC
* @val: 1-Enable, 0-Disable
*
* This function passes down the value of MAS to the UMAC. A
* value of 1 will enable MAS and a value of 0 will disable MAS
*
* Return: Configuration message posting status, SUCCESS or Fail
*
*/
eHalStatus sme_set_mas(tANI_U32 val);
/**
* sme_set_miracast() - Function to set miracast value to UMAC
* @hal: Handle returned by macOpen
* @filter_type: 0-Disabled, 1-Source, 2-sink
*
* This function passes down the value of miracast set by
* framework to UMAC
*
* Return: Configuration message posting status, SUCCESS or Fail
*
*/
eHalStatus sme_set_miracast(tHalHandle hal, uint8_t filter_type);
bool sme_validate_sap_channel_switch(tHalHandle hal,
uint16_t sap_ch,
eCsrPhyMode sap_phy_mode,
uint8_t cc_switch_mode,
uint32_t session_id);
eHalStatus sme_configure_modulated_dtim(tHalHandle hHal, tANI_U8 session_id,
tANI_U32 modulated_dtim);
eHalStatus sme_configure_stats_avg_factor(tHalHandle hHal, tANI_U8 session_id,
tANI_U16 stats_avg_factor);
eHalStatus sme_configure_guard_time(tHalHandle hHal, tANI_U8 session_id,
tANI_U32 guard_time);
eHalStatus sme_update_roam_scan_hi_rssi_scan_params(tHalHandle hal_handle,
uint8_t session_id,
uint32_t notify_id,
int32_t val);
eHalStatus sme_wifi_start_logger(tHalHandle hal,
struct sir_wifi_start_log start_log);
#ifdef WLAN_FEATURE_TSF
eHalStatus sme_set_tsf_gpio(tHalHandle hHal, uint32_t pinvalue);
#else
static inline eHalStatus
sme_set_tsf_gpio(tHalHandle hHal, uint32_t pinvalue)
{
return eHAL_STATUS_FAILURE;
}
#endif
bool smeNeighborMiddleOfRoaming(tHalHandle hHal, tANI_U8 sessionId);
eHalStatus sme_register_mgmt_frame_ind_callback(tHalHandle hal,
sir_mgmt_frame_ind_callback callback);
eHalStatus sme_update_nss(tHalHandle h_hal, uint8_t nss);
void sme_enable_phy_error_logs(tHalHandle hal, bool enable_log);
VOS_STATUS sme_set_btc_bt_wlan_interval_page_p2p(uint32_t bt_interval,
uint32_t p2p_interval);
VOS_STATUS sme_set_btc_bt_wlan_interval_page_sta(uint32_t bt_interval,
uint32_t sta_interval);
VOS_STATUS sme_set_btc_bt_wlan_interval_page_sap(uint32_t bt_interval,
uint32_t sap_interval);
VOS_STATUS sme_set_btc_wlan_conn_params(uint32_t conn_val0,
uint32_t conn_val1);
VOS_STATUS sme_set_btc_dynamic_bt_wlan_coex(uint32_t dynamic_wlan_bt_coex,
uint32_t antenna_isolation);
VOS_STATUS sme_set_btc_bt_wlan_interval_page_p2p_sta(uint32_t bt_interval,
uint32_t p2p_sta_interval);
VOS_STATUS sme_set_btc_bt_wlan_interval_inquiry_sta(uint32_t bt_interval,
uint32_t sta_interval);
VOS_STATUS sme_set_btc_bt_wlan_interval_inquiry_sap(uint32_t bt_interval,
uint32_t sap_interval);
VOS_STATUS sme_set_btc_bt_wlan_interval_inquiry_p2p(uint32_t bt_interval,
uint32_t p2p_interval);
VOS_STATUS sme_set_btc_bt_wlan_interval_inquiry_p2p_sta(uint32_t bt_interval,
uint32_t p2p_sta_interval);
VOS_STATUS sme_set_btc_wlan_coex_tx_power(uint32_t coex_tx_power);
#ifdef FEATURE_COEX_PTA_CONFIG_ENABLE
VOS_STATUS sme_configure_pta_coex(uint8_t coex_pta_config_enable, uint32_t coex_pta_config_param);
#endif
uint8_t sme_is_any_session_in_connected_state(tHalHandle h_hal);
typedef void ( *tSmeSetThermalLevelCallback)(void *pContext, u_int8_t level);
void sme_add_set_thermal_level_callback(tHalHandle hHal,
tSmeSetThermalLevelCallback callback);
typedef void (*tSmeThermalTempIndCb)(void *pContext, u_int32_t degree_c);
/**
* sme_add_thermal_temperature_ind_callback() - Set callback fn for thermal
* temperature indication
* hHal: Handler to HAL
* callback: The callback function
*
* Return: void
*/
void sme_add_thermal_temperature_ind_callback(tHalHandle hHal,
tSmeThermalTempIndCb callback);
eHalStatus sme_handle_set_fcc_channel(tHalHandle hHal,
bool fcc_constraint,
uint32_t scan_pending);
eHalStatus sme_set_sta_chanlist_with_sub20(tHalHandle hal_ptr,
uint8_t chan_width);
eHalStatus sme_set_rssi_monitoring(tHalHandle hal,
struct rssi_monitor_req *input);
eHalStatus sme_set_rssi_threshold_breached_cb(tHalHandle hal,
void (*cb)(void *, struct rssi_breach_event *));
void sme_set_pdev_ht_vht_ies(tHalHandle hHal, bool enable2x2);
void sme_update_vdev_type_nss(tHalHandle hal, uint8_t max_supp_nss,
uint32_t vdev_type_nss, eCsrBand band);
void sme_update_user_configured_nss(tHalHandle hal, uint8_t nss);
void sme_set_vdev_nss(tHalHandle hal, bool enable2x2);
void sme_set_per_band_chainmask_supp(tHalHandle hal, bool val);
void sme_set_lte_coex_supp(tHalHandle hal, bool val);
void sme_set_bcon_offload_supp(tHalHandle hal, bool val);
void sme_SetDefDot11Mode(tHalHandle hal);
#ifdef FEATURE_WLAN_TDLS
void sme_get_opclass(tHalHandle hal, uint8_t channel, uint8_t bw_offset,
uint8_t *opclass);
#else
static inline void
sme_get_opclass(tHalHandle hal, uint8_t channel, uint8_t bw_offset,
uint8_t *opclass)
{
}
#endif
#ifdef WLAN_FEATURE_UDP_RESPONSE_OFFLOAD
VOS_STATUS sme_set_udp_resp_offload(struct udp_resp_offload *pudp_resp_cmd);
#else
static inline VOS_STATUS sme_set_udp_resp_offload(struct udp_resp_offload
*pudp_resp_cmd)
{
return VOS_STATUS_E_FAILURE;
}
#endif
eHalStatus sme_set_lost_link_info_cb(tHalHandle hal,
void (*cb)(void *,
struct sir_lost_link_info *));
#ifdef FEATURE_GREEN_AP
VOS_STATUS sme_send_egap_conf_params(uint32_t enable,
uint32_t inactivity_time,
uint32_t wait_time,
uint32_t flags);
#else
static inline VOS_STATUS sme_send_egap_conf_params(uint32_t enable,
uint32_t inactivity_time,
uint32_t wait_time,
uint32_t flags)
{
return VOS_STATUS_E_NOSUPPORT;
}
#endif
#ifdef WLAN_FEATURE_WOW_PULSE
VOS_STATUS sme_set_wow_pulse(struct wow_pulse_mode *wow_pulse_set_info);
#endif
eHalStatus sme_roam_set_default_key_index(tHalHandle hal, uint8_t session_id,
uint8_t default_idx);
eHalStatus sme_set_smps_force_mode_cb(tHalHandle hal,
void (*cb)(void *, struct sir_smps_force_mode_event *));
eHalStatus sme_update_mimo_power_save(tHalHandle hHal,
uint8_t is_ht_smps_enabled,
uint8_t ht_smps_mode);
bool sme_is_sta_smps_allowed(tHalHandle hHal, uint8_t session_id);
eHalStatus sme_get_bpf_offload_capabilities(tHalHandle hal);
eHalStatus sme_set_bpf_instructions(tHalHandle hal,
struct sir_bpf_set_offload *);
/**
* sme_create_mon_session() - post message to create PE session for monitormode
* operation
* @hal_handle: Handle to the HAL
* @bssid: pointer to bssid
*
* Return: eHAL_STATUS_SUCCESS on success, non-zero error code on failure.
*/
eHalStatus sme_create_mon_session(tHalHandle hal_handle, uint8_t *bssid);
eHalStatus sme_get_mib_stats(tHalHandle hal,
csr_mib_stats_callback callback,
void *context, void *vos_context,
uint8_t session_id);
void sme_update_fine_time_measurement_capab(tHalHandle hal, uint32_t val);
eHalStatus sme_delete_all_tdls_peers(tHalHandle hal, uint8_t session_id);
eHalStatus sme_update_txrate(tHalHandle hal, struct sir_txrate_update *req);
eHalStatus sme_peer_flush_pending(tHalHandle hal,
struct sme_flush_pending *req);
void sme_send_disassoc_req_frame(tHalHandle hal, uint8_t session_id,
uint8_t *peer_mac, tANI_U16 reason, uint8_t wait_for_ack);
VOS_STATUS sme_is_session_valid(tHalHandle hal_handle, uint8_t session_id);
eHalStatus sme_enable_disable_chanavoidind_event(tHalHandle hHal,
tANI_U8 set_value);
eHalStatus sme_remove_bssid_from_scan_list(tHalHandle hal,
tSirMacAddr bssid);
eHalStatus sme_update_sta_roam_policy(tHalHandle hal_handle,
enum sta_roam_policy_dfs_mode dfs_mode,
bool skip_unsafe_channels,
uint8_t session_id,
uint8_t sap_operating_band);
eHalStatus sme_register_p2p_ack_ind_callback(tHalHandle hal,
sir_p2p_ack_ind_callback callback);
void sme_set_allowed_action_frames(tHalHandle hal,
uint32_t bitmap0, bool is_sta);
eHalStatus sme_update_access_policy_vendor_ie(tHalHandle hal,
uint8_t session_id, uint8_t *vendor_ie, int access_policy);
eHalStatus sme_update_tx_fail_cnt_threshold(tHalHandle hal_handle,
uint8_t session_id, uint32_t tx_fail_count);
eHalStatus sme_update_short_retry_limit_threshold(tHalHandle hal_handle,
uint8_t session_id, uint8_t short_limit_count_th);
eHalStatus sme_update_long_retry_limit_threshold(tHalHandle hal_handle,
uint8_t session_id, uint8_t long_limit_count_th);
eHalStatus sme_update_sta_inactivity_timeout(tHalHandle hal_handle,
uint8_t session_id, uint32_t sta_inactivity_timeout);
VOS_STATUS sme_set_wakeup_gpio(struct wakeup_gpio_mode *wakeup_gpio_info);
#ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH
tANI_BOOLEAN sme_find_sta_session_info(
tHalHandle hHal,
session_info_t *session_info);
tANI_BOOLEAN sme_find_all_session_info(
tHalHandle hHal,
session_info_t *session_info,
v_U8_t * session_count);
tANI_BOOLEAN sme_create_sap_session_info(
tHalHandle hHal,
eCsrPhyMode sap_phymode,
v_U16_t sap_ch,
session_info_t *session_info);
#endif
void sme_set_chan_info_callback(tHalHandle hal_handle,
void (*callback)(struct scan_chan_info *chan_info));
void sme_set_5g_band_pref(tHalHandle hal_handle,
struct sme_5g_band_pref_params *pref_params);
eHalStatus sme_set_reorder_timeout(tHalHandle hal,
struct sir_set_rx_reorder_timeout_val *req);
eHalStatus sme_set_rx_set_blocksize(tHalHandle hal,
struct sir_peer_set_rx_blocksize *req);
eHalStatus sme_register_stats_ext2_callback(tHalHandle hHal,
void (*stats_ext2_cb)(void *, struct stats_ext2_event *));
#ifdef FEATURE_WLAN_SUB_20_MHZ
eHalStatus sme_update_sub20_channel_width(tHalHandle hal_handle,
uint8_t session_id,
uint8_t chan_width);
#else
static inline
eHalStatus sme_update_sub20_channel_width(tHalHandle hal_handle,
uint8_t session_id,
uint8_t chan_width)
{
return eHAL_STATUS_SUCCESS;
}
#endif
#ifdef WLAN_POWER_DEBUGFS
eHalStatus sme_power_debug_stats_req(tHalHandle hal, void (*callback_fn)
(struct power_stats_response *response,
void *context), void *power_stats_context);
#endif
/**
* sme_set_random_mac() - Set random mac address filter
* @hal: hal handle for getting global mac struct
* @callback: callback to be invoked for response from firmware
* @session_id: interface id
* @random_mac: random mac address to be set
* @context: parameter to callback
*
* This function is used to set random mac address filter for action frames
* which are send with the same address, callback is invoked when corresponding
* event from firmware has come.
*
* Return: eHalStatus enumeration.
*/
eHalStatus sme_set_random_mac(tHalHandle hal,
action_frame_random_filter_callback callback,
uint32_t session_id, uint8_t *random_mac,
void *context);
/**
* sme_clear_random_mac() - clear random mac address filter
* @hal: HAL handle
* @session_id: interface id
* @random_mac: random mac address to be cleared
*
* This function is used to clear the randmom mac address filters
* which are set with sme_set_random_mac
*
* Return: eHalStatus enumeration.
*/
eHalStatus sme_clear_random_mac(tHalHandle hal, uint32_t session_id,
uint8_t *random_mac);
eHalStatus sme_set_chip_pwr_save_fail_cb(tHalHandle hal, void (*cb)( void *,
struct chip_pwr_save_fail_detected_params *));
eHalStatus sme_set_ac_txq_optimize(tHalHandle hal_handle, uint8_t *value);
VOS_STATUS sme_mnt_filter_type_cmd(struct sme_mnt_filter_type_req *input);
#endif //#if !defined( __SME_API_H )