| /* |
| * Copyright (c) 2012-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" |
| |
| /*---------------------------------------------------------------------------- |
| * Preprocessor Definitions and Constants |
| * -------------------------------------------------------------------------*/ |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| |
| /*---------------------------------------------------------------------------- |
| * Defines |
| * -------------------------------------------------------------------------*/ |
| //DFS Non Occupancy Period =30 minutes, in microseconds |
| #define SAP_DFS_NON_OCCUPANCY_PERIOD (30 * 60 * 1000 * 1000) |
| |
| #define SAP_DEBUG |
| // Used to enable or disable security on the BT-AMP link |
| #define WLANSAP_SECURITY_ENABLED_STATE VOS_TRUE |
| #define VOS_GET_SAP_CB(ctx) (ptSapContext)(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 |
| |
| #define IS_ETSI_WEATHER_CH(_ch) ((_ch >= 120) && (_ch <= 130)) |
| #define IS_CH_BONDING_WITH_WEATHER_CH(_ch) (_ch == 116) |
| #define IS_CHAN_JAPAN_W53(_ch) ((_ch >= 52) && (_ch <= 64)) |
| #define IS_CHAN_JAPAN_INDOOR(_ch) ((_ch >= 36) && (_ch <= 64)) |
| #define IS_CHAN_JAPAN_OUTDOOR(_ch)((_ch >= 100) && (_ch <= 140)) |
| #define DEFAULT_CAC_TIMEOUT (60 * 1000) //msecs - 1 min |
| #define ETSI_WEATHER_CH_CAC_TIMEOUT (10 * 60 * 1000) //msecs - 10 min |
| #define SAP_CHAN_PREFERRED_INDOOR 1 |
| #define SAP_CHAN_PREFERRED_OUTDOOR 2 |
| |
| extern const sRegulatoryChannel *regChannels; |
| |
| /*---------------------------------------------------------------------------- |
| * 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_DFS_CAC_WAIT, |
| eSAP_STARTING, |
| eSAP_STARTED, |
| eSAP_DISCONNECTING, |
| eSAP_DISCONNECTPENDING |
| } 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; |
| |
| #ifdef FEATURE_AP_MCC_CH_AVOIDANCE |
| /* |
| * In a setup having two MDM both operating in AP+AP MCC scenario |
| * if both the AP decides to use same or close channel set, CTS to |
| * self, mechanism is causing issues with connectivity. For this, its |
| * proposed that 2nd MDM devices which comes up later should detect |
| * presence of first MDM device via special Q2Q IE present in becon |
| * and avoid those channels mentioned in IE. |
| * |
| * Following struct will keep this info in sapCtx struct, and will be used |
| * to avoid such channels in Random Channel Select in case of radar ind. |
| */ |
| struct sap_avoid_channels_info { |
| bool present; |
| uint8_t channels[WNI_CFG_VALID_CHANNEL_LIST_LEN]; |
| }; |
| #endif /* FEATURE_AP_MCC_CH_AVOIDANCE */ |
| |
| typedef struct sSapContext { |
| |
| vos_lock_t SapGlobalLock; |
| |
| // Include the current channel of AP |
| v_U32_t channel; |
| v_U32_t secondary_ch; |
| |
| // 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; |
| |
| #ifdef FEATURE_WLAN_WAPI |
| v_U32_t nStaWAPIReqIeLength; |
| v_U8_t pStaWapiReqIE[MAX_ASSOC_IND_IE_LEN]; |
| #endif |
| |
| v_U32_t nStaAddIeLength; |
| v_U8_t pStaAddIE[MAX_ASSOC_IND_IE_LEN]; |
| v_U8_t *channelList; |
| uint8_t num_of_channel; |
| tSapChannelListInfo SapChnlList; |
| uint16_t vht_channel_width; |
| uint16_t ch_width_orig; |
| #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH |
| uint16_t ch_width_24g_orig; |
| uint16_t ch_width_5g_orig; |
| #endif |
| |
| // session to scan |
| tANI_BOOLEAN isScanSessionOpen; |
| /* |
| * This list of channels will hold 5Ghz enabled,DFS in the |
| * Current RegDomain.This list will be used to select a channel, |
| * for SAP to start including any DFS channel and also to select |
| * any random channel[5Ghz-(NON-DFS/DFS)],if SAP is operating |
| * on a DFS channel and a RADAR is detected on the channel. |
| */ |
| tAll5GChannelList SapAllChnlList; |
| |
| |
| tANI_BOOLEAN allBandScanned; |
| eCsrBand currentPreferredBand; |
| eCsrBand scanBandPreference; |
| v_U16_t acsBandSwitchThreshold; |
| uint32_t auto_channel_select_weight; |
| tSapAcsChannelInfo acsBestChannelInfo; |
| tANI_BOOLEAN enableOverLapCh; |
| |
| struct sap_acs_cfg *acs_cfg; |
| #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH |
| v_U8_t cc_switch_mode; |
| bool band_switch_enable; |
| bool ap_p2pclient_concur_enable; |
| #endif |
| |
| #if defined(FEATURE_WLAN_STA_AP_MODE_DFS_DISABLE) |
| v_BOOL_t dfs_ch_disable; |
| #endif |
| tANI_BOOLEAN isCacEndNotified; |
| tANI_BOOLEAN isCacStartNotified; |
| tANI_BOOLEAN is_sap_ready_for_chnl_chng; |
| |
| #ifdef FEATURE_AP_MCC_CH_AVOIDANCE |
| /* |
| * In a setup having two MDM both operating in AP+AP MCC scenario |
| * if both the AP decides to use same or close channel set, CTS to |
| * self, mechanism is causing issues with connectivity. For this, its |
| * proposed that 2nd MDM devices which comes up later should detect |
| * presence of first MDM device via special Q2Q IE present in becon |
| * and avoid those channels mentioned in IE. |
| * |
| * this struct contains the list of channels on which another MDM AP |
| * in MCC mode were detected. |
| */ |
| struct sap_avoid_channels_info sap_detected_avoid_ch_ie; |
| #endif /* FEATURE_AP_MCC_CH_AVOIDANCE */ |
| enum sap_acs_dfs_mode dfs_mode; |
| |
| uint16_t beacon_tx_rate; |
| tSirMacRateSet supp_rate_set; |
| tSirMacRateSet extended_rate_set; |
| vos_event_t sap_session_opened_evt; |
| vos_event_t sap_session_closed_evt; |
| eCsrBand target_band; |
| uint8_t sub20_channelwidth; |
| uint32_t backup_channel; |
| } *ptSapContext; |
| |
| |
| /*---------------------------------------------------------------------------- |
| * External declarations for global context |
| * -------------------------------------------------------------------------*/ |
| |
| /*---------------------------------------------------------------------------- |
| * 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 |
| * -------------------------------------------------------------------------*/ |
| |
| /*========================================================================== |
| |
| 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: |
| sessionId: Session identifier |
| 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_U8_t sessionId, |
| v_U32_t scanID, |
| eCsrScanStatus scanStatus |
| ); |
| |
| /*========================================================================== |
| |
| FUNCTION WLANSAP_PreStartBssAcsScanCallback() |
| |
| 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: |
| sessionId: Session identifier |
| 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_PreStartBssAcsScanCallback |
| ( |
| tHalHandle halHandle, |
| void *pContext, |
| v_U8_t sessionId, |
| 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 sapGotoChannelSel |
| |
| DESCRIPTION |
| Function for initiating scan request for SME |
| |
| DEPENDENCIES |
| NA. |
| |
| PARAMETERS |
| |
| IN |
| sapContext : Sap Context value |
| sapEvent : State machine event/ NULL if no FSM event is required. |
| sapDoAcsPreStartBss: VOS_TRUE, if ACS scan is issued pre start BSS. |
| VOS_FALSE, if ACS scan is issued post start BSS. |
| |
| RETURN VALUE |
| The VOS_STATUS code associated with performing the operation |
| |
| VOS_STATUS_SUCCESS: Success |
| |
| SIDE EFFECTS |
| ============================================================================*/ |
| VOS_STATUS |
| sapGotoChannelSel |
| ( |
| ptSapContext sapContext, |
| ptWLAN_SAPEvent sapEvent, |
| v_BOOL_t sapDoAcsPreStartBss |
| ); |
| |
| /*========================================================================== |
| |
| 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); |
| |
| /*========================================================================== |
| |
| 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 ); |
| |
| #ifdef FEATURE_WLAN_CH_AVOID |
| /*========================================================================== |
| FUNCTION sapUpdateUnsafeChannelList |
| |
| DESCRIPTION |
| Function sapUpdateUnsafeChannelList updates the SAP context of unsafe channels. |
| |
| DEPENDENCIES |
| NA. |
| |
| PARAMETERS |
| |
| IN |
| Pointer to sap context |
| |
| RETURN VALUE |
| NULL |
| ============================================================================*/ |
| void sapUpdateUnsafeChannelList(ptSapContext pSapCtx); |
| #endif /* FEATURE_WLAN_CH_AVOID */ |
| |
| /*--------------------------------------------------------------------------- |
| FUNCTION sapIndicateRadar |
| |
| DESCRIPTION Function to implement actions on Radar Detection when SAP is on |
| DFS Channel |
| |
| DEPENDENCIES PARAMETERS |
| IN sapContext : Sap Context which hold SapDfsInfo |
| dfs_event : Event from DFS Module |
| |
| RETURN VALUE : Target Channel For SAP to Move on to when Radar is Detected. |
| |
| SIDE EFFECTS |
| ---------------------------------------------------------------------------*/ |
| v_U8_t |
| sapIndicateRadar(ptSapContext sapContext,tSirSmeDfsEventInd *dfs_event); |
| |
| /* |
| * This function initializes the NOL list |
| * parameters required to track the radar |
| * found DFS channels in the current Reg. Domain. |
| */ |
| VOS_STATUS |
| sapInitDfsChannelNolList(ptSapContext sapContext); |
| |
| /* |
| * This Function Checks if a given channel is AVAILABLE or USABLE |
| * for DFS operation. |
| */ |
| v_BOOL_t sapDfsIsChannelInNolList(ptSapContext sapContext, |
| v_U8_t channelNumber, ePhyChanBondState chanBondState); |
| /*--------------------------------------------------------------------------- |
| FUNCTION sapDfsCacTimerCallback |
| |
| DESCRIPTION Function will be called up on DFS CAC timer expiry |
| |
| DEPENDENCIES PARAMETERS |
| data : void pointer to the data which being passed. |
| |
| RETURN VALUE : void |
| |
| SIDE EFFECTS |
| ---------------------------------------------------------------------------*/ |
| void sapDfsCacTimerCallback(void *data); |
| |
| |
| /*--------------------------------------------------------------------------- |
| FUNCTION sap_CacResetNotify |
| |
| DESCRIPTION Function will be called up on stop bss indication to clean up |
| DFS global structure. |
| |
| DEPENDENCIES PARAMETERS |
| IN hHAL : HAL pointer |
| |
| RETURN VALUE : void. |
| |
| SIDE EFFECTS |
| ---------------------------------------------------------------------------*/ |
| void sap_CacResetNotify(tHalHandle hHal); |
| |
| /* |
| * This function is added to check if channel is in tx leak range |
| * |
| * PARAMETERS |
| * IN |
| * sapContext: Pointer to vos global context structure |
| * target_channel: the target channel to switch to |
| * |
| * RETURN VALUE |
| * BOOLEAN to indicate if the target channel is good or bad to switch |
| * |
| * TRUE: the channel is above the tx leak threshold |
| * FALSE: good to be used |
| */ |
| v_BOOL_t |
| sapChannelMatrixCheck(ptSapContext sapContext, |
| ePhyChanBondState cbMode, |
| v_U8_t target_channel); |
| |
| /* |
| * This function will find the concurrent sap context apart from |
| * passed sap context and return its channel change ready status |
| * |
| * PARAMETERS |
| * IN |
| * sapContext: pointer to sap context |
| * hHal: pointer to hal structure. |
| * |
| * RETURN VALUE |
| * v_BOOL_t |
| * returns change change ready indication for concurrent sapctx |
| */ |
| v_BOOL_t is_concurrent_sap_ready_for_channel_change(tHalHandle hHal, |
| ptSapContext sapContext); |
| |
| /* |
| * This function will calculate how many interfaces |
| * have sap persona and returns total number of sap persona. |
| * |
| * PARAMETERS |
| * IN |
| * hHal: pointer to hal structure. |
| * |
| * RETURN VALUE |
| * v_U8_t |
| * Returns total number of sap interfaces. |
| * |
| */ |
| v_U8_t sap_get_total_number_sap_intf(tHalHandle hHal); |
| |
| /*--------------------------------------------------------------------------- |
| FUNCTION sapDfsIsW53Invalid |
| |
| DESCRIPTION Checks if the passed channel is W53 and returns if |
| SAP W53 opearation is allowed. |
| |
| DEPENDENCIES PARAMETERS |
| IN hHAL : HAL pointer |
| channelID: Channel Number to be verified |
| |
| RETURN VALUE : v_BOOL_t |
| VOS_TRUE: If W53 operation is disabled |
| VOS_FALSE: If W53 operation is enabled |
| |
| SIDE EFFECTS |
| ---------------------------------------------------------------------------*/ |
| v_BOOL_t sapDfsIsW53Invalid(tHalHandle hHal, v_U8_t channelID); |
| |
| /*--------------------------------------------------------------------------- |
| FUNCTION sapDfsIsChannelInPreferredLocation |
| |
| DESCRIPTION Checks if the passed channel is in accordance with preferred |
| Channel location settings. |
| |
| DEPENDENCIES PARAMETERS |
| IN hHAL : HAL pointer |
| channelID: Channel Number to be verified |
| |
| RETURN VALUE :v_BOOL_t |
| VOS_TRUE:If Channel location is same as the preferred location |
| VOS_FALSE:If Channel location is not same as the preferred location |
| |
| SIDE EFFECTS |
| ---------------------------------------------------------------------------*/ |
| v_BOOL_t sapDfsIsChannelInPreferredLocation(tHalHandle hHal, v_U8_t channelID); |
| |
| void sap_config_acs_result(tHalHandle hal, ptSapContext sap_ctx, |
| uint32_t sec_ch); |
| |
| #ifdef FEATURE_AP_MCC_CH_AVOIDANCE |
| /** |
| * sap_check_in_avoid_ch_list() - checks if given channel present is channel |
| * avoidance list |
| * avoid_channels_info struct |
| * @sap_ctx: sap context. |
| * @channel: channel to be checked in sap_ctx's avoid ch list |
| * |
| * sap_ctx contains sap_avoid_ch_info strcut containing the list of channels on |
| * which MDM device's AP with MCC was detected. This function checks if given |
| * channel is present in that list. |
| * |
| * Return: true, if channel was present, false othersie. |
| */ |
| bool sap_check_in_avoid_ch_list(ptSapContext sap_ctx, uint8_t channel); |
| #endif |
| |
| eHalStatus sap_OpenSession(tHalHandle hHal, ptSapContext sapContext, |
| uint32_t *session_id); |
| eHalStatus sap_CloseSession(tHalHandle hHal, |
| ptSapContext sapContext, |
| csrRoamSessionCloseCallback callback, |
| v_BOOL_t valid); |
| #ifdef FEATURE_WLAN_MCC_TO_SCC_SWITCH |
| bool |
| sap_channel_switch_validate( |
| ptSapContext sap_context, |
| tHalHandle hal, |
| uint16_t target_channel, |
| eCsrPhyMode sap_phy_mode, |
| uint8_t cc_switch_mode, |
| uint32_t session_id); |
| #endif |
| #ifdef __cplusplus |
| } |
| #endif |
| uint8_t sap_select_default_oper_chan_ini(tHalHandle hal, uint32_t acs_11a); |
| #endif /* #ifndef WLAN_QCT_WLANSAP_INTERNAL_H */ |