blob: a7e3fb929386f8c53c2cafbceb51eb85300cbe15 [file] [log] [blame]
/*
* Copyright (c) 2012-2013, 2015, 2017 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.
*/
#ifndef WLAN_QCT_WLANSAP_INTERNAL_H
#define WLAN_QCT_WLANSAP_INTERNAL_H
/*===========================================================================
W L A N S A P P A L L A Y E R
I N T E R N A L A P I
DESCRIPTION
This file contains the internal API exposed by the wlan SAP PAL layer
module.
===========================================================================*/
/*===========================================================================
EDIT HISTORY FOR FILE
This section contains comments describing changes made to the module.
Notice that changes are listed in reverse chronological order.
$Header: /cygdrive/d/Builds/M7201JSDCAAPAD52240B/WM/platform/msm7200/Src/Drivers/SD/ClientDrivers/WLAN/QCT_BTAMP_RSN/CORE/BAP/src/bapInternal.h,v 1.7 2009/03/09 08:50:43 rgidvani Exp rgidvani $ $DateTime: $ $Author: jzmuda $
when who what, where, why
-------- --- ----------------------------------------------------------
09/15/08 SOFTAP Created module.
===========================================================================*/
/*===========================================================================
INCLUDE FILES FOR MODULE
===========================================================================*/
/*----------------------------------------------------------------------------
* Include Files
* -------------------------------------------------------------------------*/
#include "vos_api.h"
#include "vos_packet.h"
// Pick up the CSR API definitions
#include "csrApi.h"
#include "sapApi.h"
#include "sapFsm_ext.h"
#include "sapChSelect.h"
#include "wlan_hdd_dp_utils.h"
#include "wlan_hdd_main.h"
/*----------------------------------------------------------------------------
* Preprocessor Definitions and Constants
* -------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C" {
#endif
/*----------------------------------------------------------------------------
* Defines
* -------------------------------------------------------------------------*/
#define SAP_DEBUG
// Used to enable or disable security on the BT-AMP link
#define WLANSAP_SECURITY_ENABLED_STATE VOS_TRUE
// How do I get SAP context from voss context?
#define VOS_GET_SAP_CB(ctx) vos_get_context( VOS_MODULE_ID_SAP, ctx)
#define VOS_GET_HAL_CB(ctx) vos_get_context( VOS_MODULE_ID_PE, ctx)
//MAC Address length
#define ANI_EAPOL_KEY_RSN_NONCE_SIZE 32
extern sRegulatoryChannel *regChannels;
extern const tRfChannelProps rfChannels[NUM_RF_CHANNELS];
/*----------------------------------------------------------------------------
* Typedefs
* -------------------------------------------------------------------------*/
typedef struct sSapContext tSapContext;
// tSapContext, *ptSapContext;
/*----------------------------------------------------------------------------
* Type Declarations - For internal SAP context information
* -------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------
* Opaque SAP context Type Declaration
* -------------------------------------------------------------------------*/
// We were only using this syntax, when this was truly opaque.
// (I.E., it was defined in a different file.)
/* SAP FSM states for Access Point role */
typedef enum {
eSAP_DISCONNECTED,
eSAP_CH_SELECT,
eSAP_STARTING,
eSAP_STARTED,
eSAP_DISCONNECTING
} eSapFsmStates_t;
/*----------------------------------------------------------------------------
* SAP context Data Type Declaration
* -------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------
* Type Declarations - QOS related
* -------------------------------------------------------------------------*/
/* SAP QOS config */
typedef struct sSapQosCfg {
v_U8_t WmmIsEnabled;
} tSapQosCfg;
typedef struct sSapAcsChannelInfo {
v_U32_t channelNum;
v_U32_t weight;
}tSapAcsChannelInfo;
typedef struct {
/** The station entry is used or not */
v_BOOL_t isUsed;
/** Station ID reported back from HAL (through SAP). Broadcast
* uses station ID zero by default in both libra and volans. */
v_U8_t ucSTAId;
/** MAC address of the station */
v_MACADDR_t macAddrSTA;
/** Current Station state so HDD knows how to deal with packet
* queue. Most recent states used to change TL STA state. */
WLANTL_STAStateType tlSTAState;
/** Transmit queues for each AC (VO,VI,BE etc). */
hdd_list_t wmm_tx_queue[NUM_TX_QUEUES];
/** Might need to differentiate queue depth in contention case */
v_U16_t aTxQueueDepth[NUM_TX_QUEUES];
/**Track whether OS TX queue has been disabled.*/
v_BOOL_t txSuspended[NUM_TX_QUEUES];
/**Track whether 3/4th of resources are used */
v_BOOL_t vosLowResource;
/** Track QoS status of station */
v_BOOL_t isQosEnabled;
/** The station entry for which Deauth is in progress */
v_BOOL_t isDeauthInProgress;
#ifdef WLAN_FEATURE_AP_HT40_24G
/** Track HT40 Intolerant station */
v_BOOL_t isHT40IntolerantSet;
#endif
/** Rate Flags for this connection */
uint32_t rate_flags;
} hdd_station_info_t;
struct hdd_cache_sta_info{
v_BOOL_t isUsed;
v_U8_t ucSTAId;
v_U32_t freq;
v_MACADDR_t macAddrSTA;
v_S7_t rssi;
v_U8_t nss;
v_U8_t dot11_mode;
v_U32_t reason_code;
v_U32_t rx_rate;
tSirMacHTChannelWidth ch_width;
v_BOOL_t ht_present;
struct ieee80211_ht_cap ht_caps;
v_BOOL_t vht_present;
struct ieee80211_vht_cap vht_caps;
};
/**
* struct ecsa_info - structure to store ecsa info
* @ecsa_lock: ecsa lock
* @new_channel: new channel to which switch is requested
* @channel_switch_in_progress: check if channel switch is in progress
* @chan_switch_comp: channel switch comp var
*/
struct ecsa_info {
spinlock_t ecsa_lock;
uint8_t new_channel;
bool channel_switch_in_progress;
struct completion chan_switch_comp;
};
typedef struct sSapContext {
vos_lock_t SapGlobalLock;
// Include the current channel of AP
v_U32_t channel;
// Include the SME(CSR) sessionId here
v_U8_t sessionId;
// Include the key material for this physical link
v_U8_t key_type;
v_U8_t key_length;
v_U8_t key_material[32];
// Include the associations MAC addresses
v_U8_t self_mac_addr[VOS_MAC_ADDRESS_LEN];
// Own SSID
v_U8_t ownSsid[MAX_SSID_LEN];
v_U32_t ownSsidLen;
// Flag for signaling if security is enabled
v_U8_t ucSecEnabled;
// Include the SME(CSR) context here
tCsrRoamProfile csrRoamProfile;
v_U32_t csrRoamId;
//Sap session
tANI_BOOLEAN isSapSessionOpen;
// SAP event Callback to hdd
tpWLAN_SAPEventCB pfnSapEventCallback;
// Include the enclosing VOSS context here
v_PVOID_t pvosGCtx;
// Include the state machine structure here, state var that keeps track of state machine
eSapFsmStates_t sapsMachine;
// Actual storage for AP and self (STA) SSID
tCsrSSIDInfo SSIDList[2];
// Actual storage for AP bssid
tCsrBssid bssid;
// Mac filtering settings
eSapMacAddrACL eSapMacAddrAclMode;
v_MACADDR_t acceptMacList[MAX_ACL_MAC_ADDRESS];
v_U8_t nAcceptMac;
v_MACADDR_t denyMacList[MAX_ACL_MAC_ADDRESS];
v_U8_t nDenyMac;
// QOS config
tSapQosCfg SapQosCfg;
v_PVOID_t pUsrContext;
v_U32_t nStaWPARSnReqIeLength;
v_U8_t pStaWpaRsnReqIE[MAX_ASSOC_IND_IE_LEN];
tSirAPWPSIEs APWPSIEs;
tSirRSNie APWPARSNIEs;
v_U32_t nStaAddIeLength;
v_U8_t pStaAddIE[MAX_ASSOC_IND_IE_LEN];
v_U8_t *channelList;
v_U8_t numofChannel;
tSapChannelListInfo SapChnlList;
tANI_BOOLEAN allBandScanned;
eCsrBand currentPreferredBand;
eCsrBand scanBandPreference;
v_U16_t acsBandSwitchThreshold;
tSapAcsChannelInfo acsBestChannelInfo;
spinlock_t staInfo_lock; //To protect access to station Info
hdd_station_info_t aStaInfo[WLAN_MAX_STA_COUNT];
struct hdd_cache_sta_info cache_sta_info[WLAN_MAX_STA_COUNT];
#ifdef WLAN_FEATURE_AP_HT40_24G
v_U8_t affected_start;
v_U8_t affected_end;
v_U8_t sap_sec_chan;
v_U8_t numHT40IntoSta;
vos_timer_t sap_HT2040_timer;
v_U8_t ObssScanInterval;
v_U8_t ObssTransitionDelayFactor;
#endif
struct ecsa_info ecsa_info;
} *ptSapContext;
/*----------------------------------------------------------------------------
* External declarations for global context
* -------------------------------------------------------------------------*/
// The main per-Physical Link (per WLAN association) context.
extern ptSapContext gpSapCtx;
/*----------------------------------------------------------------------------
* SAP state machine event definition
* -------------------------------------------------------------------------*/
/* The event structure */
typedef struct sWLAN_SAPEvent {
v_PVOID_t params; /* A VOID pointer type for all possible inputs */
v_U32_t event; /* State machine input event message */
v_U32_t u1; /* introduced to handle csrRoamCompleteCallback roamStatus */
v_U32_t u2; /* introduced to handle csrRoamCompleteCallback roamResult */
} tWLAN_SAPEvent, *ptWLAN_SAPEvent;
/*----------------------------------------------------------------------------
* Function Declarations and Documentation
* -------------------------------------------------------------------------*/
#ifdef WLAN_FEATURE_AP_HT40_24G
/*==========================================================================
FUNCTION sapGet24GOBSSAffectedChannel()
DESCRIPTION
Get OBSS Affected Channel no for SAP
DEPENDENCIES
NA.
PARAMETERS
IN
tHalHandle: the tHalHandle passed in with the scan request
ptSapContext: Pointer to SAP context
RETURN VALUE
SIDE EFFECTS
============================================================================*/
eHalStatus sapGet24GOBSSAffectedChannel(tHalHandle halHandle,
ptSapContext psapCtx);
#endif
/*==========================================================================
FUNCTION WLANSAP_ScanCallback()
DESCRIPTION
Callback for Scan (scan results) Events
DEPENDENCIES
NA.
PARAMETERS
IN
tHalHandle: the tHalHandle passed in with the scan request
*p2: the second context pass in for the caller, opaque sap Handle here
scanID:
status: Status of scan -success, failure or abort
RETURN VALUE
The eHalStatus code associated with performing the operation
eHAL_STATUS_SUCCESS: Success
SIDE EFFECTS
============================================================================*/
eHalStatus
WLANSAP_ScanCallback
(
tHalHandle halHandle,
void *pContext,
v_U32_t scanID,
eCsrScanStatus scanStatus
);
/*==========================================================================
FUNCTION WLANSAP_RoamCallback()
DESCRIPTION
Callback for Roam (connection status) Events
DEPENDENCIES
NA.
PARAMETERS
IN
pContext: is the pContext passed in with the roam request
pCsrRoamInfo: is a pointer to a tCsrRoamInfo, see definition of eRoamCmdStatus and
eRoamCmdResult: for detail valid members. It may be NULL
roamId: is to identify the callback related roam request. 0 means unsolicited
roamStatus: is a flag indicating the status of the callback
roamResult: is the result
RETURN VALUE
The eHalStatus code associated with performing the operation
eHAL_STATUS_SUCCESS: Success
SIDE EFFECTS
============================================================================*/
eHalStatus
WLANSAP_RoamCallback
(
void *pContext,
tCsrRoamInfo *pCsrRoamInfo,
v_U32_t roamId,
eRoamCmdStatus roamStatus,
eCsrRoamResult roamResult
);
/*==========================================================================
FUNCTION WLANSAP_CleanCB
DESCRIPTION
Clear out all fields in the SAP context.
DEPENDENCIES
PARAMETERS
IN
pSapCtx: pointer to the SAP control block
freeFlag: flag indicating whether to free any allocations.
RETURN VALUE
The result code associated with performing the operation
VOS_STATUS_E_FAULT: pointer to SAP cb is NULL ; access would cause a page
fault
VOS_STATUS_SUCCESS: Everything is good :)
SIDE EFFECTS
============================================================================*/
VOS_STATUS
WLANSAP_CleanCB
(
ptSapContext pSapCtx,
v_U32_t freeFlag /* If 0 do not empty */
);
/*==========================================================================
FUNCTION WLANSapFsm
DESCRIPTION
SAP forward state machine to handle the states of the SAP
DEPENDENCIES
PARAMETERS
IN
sapContext: pointer to the SAP control block
sapEvent : SAP event
status : status of SAP state machine
RETURN VALUE
Status of the SAP forward machine
VOS_STATUS_E_FAULT: pointer to SAP cb is NULL ; access would cause a page
fault
VOS_STATUS_SUCCESS: Everything is good :)
SIDE EFFECTS
============================================================================*/
VOS_STATUS
SapFsm
(
ptSapContext sapContext, /* sapContext value */
ptWLAN_SAPEvent sapEvent, /* State machine event */
v_U8_t *status /* return the SAP status here */
);
/*==========================================================================
FUNCTION WLANSAP_pmcFullPwrReqCB
DESCRIPTION
Callback provide to PMC in the pmcRequestFullPower API.
DEPENDENCIES
PARAMETERS
IN
callbackContext: The user passed in a context to identify
status: The halStatus
RETURN VALUE
None
SIDE EFFECTS
============================================================================*/
void
WLANSAP_pmcFullPwrReqCB
(
void *callbackContext,
eHalStatus status
);
/*==========================================================================
FUNCTION sapSelectChannel
DESCRIPTION
Runs a algorithm to select the best channel to operate in for Soft AP in 2.4GHz band
DEPENDENCIES
PARAMETERS
IN
halHandle : Pointer to HAL handle
pSapCtx : Pointer to SAP context
pResult : Pointer to tScanResultHandle
RETURN VALUE
If SUCCESS channel number or zero for FAILURE.
SIDE EFFECTS
============================================================================*/
v_U8_t sapSelectChannel(tHalHandle halHandle, ptSapContext pSapCtx, tScanResultHandle pScanResult);
/*==========================================================================
FUNCTION sapSignalHDDevent
DESCRIPTION
SAP HDD event callback function
DEPENDENCIES
PARAMETERS
IN
sapContext : Pointer to SAP handle
pCsrRoamInfo : csrRoamprofile
sapHddevent : SAP HDD callback event
RETURN VALUE
If SUCCESS or FAILURE.
SIDE EFFECTS
============================================================================*/
VOS_STATUS
sapSignalHDDevent( ptSapContext sapContext, tCsrRoamInfo * pCsrRoamInfo, eSapHddEvent sapHddevent, void *);
/*==========================================================================
FUNCTION sapFsm
DESCRIPTION
SAP Forward state machine
DEPENDENCIES
PARAMETERS
IN
sapContext : Pointer to SAP handle
sapEvent : state machine event
RETURN VALUE
If SUCCESS or FAILURE.
SIDE EFFECTS
============================================================================*/
VOS_STATUS
sapFsm
(
ptSapContext sapContext, /* sapContext value */
ptWLAN_SAPEvent sapEvent /* State machine event */
);
/*==========================================================================
FUNCTION sapConvertToCsrProfile
DESCRIPTION
sapConvertToCsrProfile
DEPENDENCIES
PARAMETERS
IN
pconfig_params : Pointer to configuration structure
bssType : SoftAP type
profile : pointer to a csrProfile that needs to be passed
RETURN VALUE
If SUCCESS or FAILURE.
SIDE EFFECTS
============================================================================*/
eSapStatus
sapconvertToCsrProfile(tsap_Config_t *pconfig_params, eCsrRoamBssType bssType, tCsrRoamProfile *profile);
/*==========================================================================
FUNCTION sapFreeRoamProfile
DESCRIPTION
sapConvertToCsrProfile
DEPENDENCIES
PARAMETERS
IN
profile : pointer to a csrProfile that needs to be freed
RETURN VALUE
If SUCCESS or FAILURE.
SIDE EFFECTS
============================================================================*/
void sapFreeRoamProfile(tCsrRoamProfile *profile);
#ifdef WLAN_FEATURE_AP_HT40_24G
/*==========================================================================
FUNCTION sapAddHT40IntolerantSta
DESCRIPTION
Add HT40 Intolerant STA & Move SAP from HT40 to HT20
DEPENDENCIES
NA.
PARAMETERS
IN
sapContext : Sap Context value
pCsrRoamInfo : Pointer to CSR info
RETURN VALUE
SIDE EFFECTS
============================================================================*/
void sapAddHT40IntolerantSta(ptSapContext sapContext, tCsrRoamInfo *pCsrRoamInfo);
/*==========================================================================
FUNCTION sapRemoveHT40IntolerantSta
DESCRIPTION
Remove HT40 Intolerant STA & Move SAP from HT40 to HT20
DEPENDENCIES
NA.
PARAMETERS
IN
sapContext : Sap Context value
pCsrRoamInfo : Pointer to CSR info
RETURN VALUE
SIDE EFFECTS
============================================================================*/
void sapRemoveHT40IntolerantSta(ptSapContext sapContext, tCsrRoamInfo *pCsrRoamInfo);
#endif
/*==========================================================================
FUNCTION sapIsPeerMacAllowed
DESCRIPTION
Function to implement MAC filtering for station association in SoftAP
DEPENDENCIES
PARAMETERS
IN
sapContext : Pointer to SAP handle
peerMac : Mac address of the peer
RETURN VALUE
If SUCCESS or FAILURE.
SIDE EFFECTS
============================================================================*/
VOS_STATUS
sapIsPeerMacAllowed(ptSapContext sapContext, v_U8_t *peerMac);
/*==========================================================================
FUNCTION sapSortMacList
DESCRIPTION
Function to implement sorting of MAC addresses
DEPENDENCIES
PARAMETERS
IN
macList : Pointer to mac address array
size : Number of entries in mac address array
RETURN VALUE
None
SIDE EFFECTS
============================================================================*/
void
sapSortMacList(v_MACADDR_t *macList, v_U8_t size);
/*==========================================================================
FUNCTION sapAddMacToACL
DESCRIPTION
Function to ADD a mac address in an ACL.
The function ensures that the ACL list remains sorted after the addition.
This API does not take care of buffer overflow i.e. if the list is already
maxed out while adding a mac address, it will still try to add.
The caller must take care that the ACL size is less than MAX_ACL_MAC_ADDRESS
before calling this function.
DEPENDENCIES
PARAMETERS
IN
macList : ACL list of mac addresses (black/white list)
size (I/O) : size of the ACL. It is an I/O arg. The API takes care
of incrementing the size by 1.
peerMac : Mac address of the peer to be added
RETURN VALUE
None.
SIDE EFFECTS
============================================================================*/
void
sapAddMacToACL(v_MACADDR_t *macList, v_U8_t *size, v_U8_t *peerMac);
/*==========================================================================
FUNCTION sapRemoveMacFromACL
DESCRIPTION
Function to REMOVE a mac address from an ACL.
The function ensures that the ACL list remains sorted after the DELETION.
DEPENDENCIES
PARAMETERS
IN
macList : ACL list of mac addresses (black/white list)
size (I/O) : size of the ACL. It is an I/O arg. The API takes care of decrementing the size by 1.
index : index in the ACL list where the peerMac is present
This index can be found by using the "sapSearchMacList" API which returns the index of the MAC
addr, if found in an ACL, in one of the arguments passed by the caller.
RETURN VALUE
None.
SIDE EFFECTS
============================================================================*/
void
sapRemoveMacFromACL(v_MACADDR_t *macList, v_U8_t *size, v_U8_t index);
/*==========================================================================
FUNCTION sapPrintACL
DESCRIPTION
Function to print all the mac address of an ACL.
Useful for debug.
DEPENDENCIES
PARAMETERS
IN
macList : ACL list of mac addresses (black/white list)
size : size of the ACL
RETURN VALUE
None.
SIDE EFFECTS
============================================================================*/
void
sapPrintACL(v_MACADDR_t *macList, v_U8_t size);
/*==========================================================================
FUNCTION sapSearchMacList
DESCRIPTION
Function to search for a mac address in an ACL
DEPENDENCIES
PARAMETERS
IN
macList : list of mac addresses (black/white list)
num_mac : size of the ACL
peerMac : Mac address of the peer
OP
index : the index at which the peer mac is found
this value gets filled in this function. If the caller is not interested
in the index of the peerMac to be searched, it can pass NULL here.
RETURN VALUE
SUCCESS : if the mac addr being searched for is found
FAILURE : if the mac addr being searched for is NOT found
SIDE EFFECTS
============================================================================*/
eSapBool
sapSearchMacList(v_MACADDR_t *macList, v_U8_t num_mac, v_U8_t *peerMac, v_U8_t *index);
/*==========================================================================
FUNCTION sap_AcquireGlobalLock
DESCRIPTION
Function to implement acquire SAP global lock
DEPENDENCIES
PARAMETERS
IN
sapContext : Pointer to SAP handle
peerMac : Mac address of the peer
RETURN VALUE
If SUCCESS or FAILURE.
SIDE EFFECTS
============================================================================*/
VOS_STATUS
sap_AcquireGlobalLock( ptSapContext pSapCtx );
/*==========================================================================
FUNCTION sapIsPeerMacAllowed
DESCRIPTION
Function to implement release SAP global lock
DEPENDENCIES
PARAMETERS
IN
sapContext : Pointer to SAP handle
peerMac : Mac address of the peer
RETURN VALUE
If SUCCESS or FAILURE.
SIDE EFFECTS
============================================================================*/
VOS_STATUS
sap_ReleaseGlobalLock( ptSapContext pSapCtx );
/*==========================================================================
FUNCTION sapConvertSapPhyModeToCsrPhyMode
DESCRIPTION Function to implement selection of CSR PhyMode using SAP PhyMode
DEPENDENCIES PARAMETERS
IN sapPhyMode : SAP Phy Module
RETURN VALUE If SUCCESS or FAILURE
SIDE EFFECTS
============================================================================*/
eCsrPhyMode sapConvertSapPhyModeToCsrPhyMode( eSapPhyMode sapPhyMode );
#ifdef WLAN_FEATURE_AP_HT40_24G
/*==========================================================================
FUNCTION sap_ht2040_timer_cb
DESCRIPTION Function to implement ht2040 timer callback implementation
SIDE EFFECTS
============================================================================*/
void sap_ht2040_timer_cb(v_PVOID_t usrDataForCallback);
/*==========================================================================
FUNCTION sapCheckHT40SecondaryIsNotAllowed
DESCRIPTION Function to check HT40 secondary channel is allowed or not
SIDE EFFECTS
============================================================================*/
eHalStatus sapCheckHT40SecondaryIsNotAllowed(ptSapContext psapCtx);
#endif
struct hdd_cache_sta_info *hdd_get_cache_stainfo(
struct hdd_cache_sta_info *astainfo,
u8 *mac_addr);
/**
* wlansap_chk_n_set_chan_change_in_progress() -
* check if chan change is in progress and set it if not
*
* @sap_ctx: sap context
*
* Return: 0 if channel change is not in progress else error
*/
int wlansap_chk_n_set_chan_change_in_progress(ptSapContext sap_ctx);
/**
* wlansap_reset_chan_change_in_progress() - reset channel change in progress
*
* @sap_ctx: sap context
*
* Return: 0 if channel change is reset else error
*/
int wlansap_reset_chan_change_in_progress(ptSapContext sap_ctx);
/**
* wlansap_get_change_in_progress() - get channel change in progress
*
* @sap_ctx: sap context
*
* Return: true if channel change in progress else false
*/
bool wlansap_get_change_in_progress(ptSapContext sap_ctx);
#ifdef __cplusplus
}
#endif
#endif /* #ifndef WLAN_QCT_WLANSAP_INTERNAL_H */