blob: 866493549eecbec86c59937cbffb4f1519a1b666 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Kiet Lam0fb93dd2014-02-19 00:32:59 -08002 * Copyright (c) 2012-2013 The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
Gopichand Nakkala92f07d82013-01-08 21:16:34 -080020 */
Kiet Lam0fb93dd2014-02-19 00:32:59 -080021
22/*
23 * This file was originally distributed by Qualcomm Atheros, Inc.
24 * under proprietary terms before Copyright ownership was assigned
25 * to the Linux Foundation.
26 */
27
Jeff Johnson295189b2012-06-20 16:38:30 -070028#if !defined( __SMEINSIDE_H )
29#define __SMEINSIDE_H
30
31
32/**=========================================================================
33
34 \file smeInside.h
35
36 \brief prototype for SME structures and APIs used insside SME
37
38 Copyright 2008 (c) Qualcomm, Incorporated. All Rights Reserved.
39
40 Qualcomm Confidential and Proprietary.
41
42 ========================================================================*/
43
44/* $Header$ */
45
46/*--------------------------------------------------------------------------
47 Include Files
48 ------------------------------------------------------------------------*/
49#include "vos_status.h"
50#include "vos_lock.h"
51#include "vos_trace.h"
52#include "vos_memory.h"
53#include "vos_types.h"
54#include "sirApi.h"
55#include "csrInternal.h"
56#include "sme_QosApi.h"
57#include "smeQosInternal.h"
58
59
Jeff Johnsone7245742012-09-05 17:12:55 -070060#ifdef FEATURE_OEM_DATA_SUPPORT
61#include "oemDataInternal.h"
62#endif
Jeff Johnson295189b2012-06-20 16:38:30 -070063
64#if defined WLAN_FEATURE_VOWIFI
65#include "sme_RrmApi.h"
66#endif
67
68
69/*--------------------------------------------------------------------------
70 Type declarations
71 ------------------------------------------------------------------------*/
72
Gopichand Nakkala976e3252013-01-03 15:45:56 -080073#define SME_TOTAL_COMMAND 30
Jeff Johnson295189b2012-06-20 16:38:30 -070074
75
76typedef struct sGenericPmcCmd
77{
78 tANI_U32 size; //sizeof the data in the union, if any
79 tRequestFullPowerReason fullPowerReason;
80 tANI_BOOLEAN fReleaseWhenDone; //if TRUE, the command shall not put back to the queue, free te memory instead.
81 union
82 {
83 tExitBmpsInfo exitBmpsInfo;
84 tSirSmeWowlEnterParams enterWowlInfo;
85 }u;
86} tGenericPmcCmd;
87
88
89typedef struct sGenericQosCmd
90{
91 sme_QosWmmTspecInfo tspecInfo;
92 sme_QosEdcaAcType ac;
93 v_U8_t tspec_mask;
94} tGenericQosCmd;
95
Jeff Johnson295189b2012-06-20 16:38:30 -070096typedef struct sRemainChlCmd
97{
98 tANI_U8 chn;
99 tANI_U8 phyMode;
100 tANI_U32 duration;
Gopichand Nakkala924e4552013-05-08 19:18:14 +0530101 tANI_U8 isP2PProbeReqAllowed;
Jeff Johnson295189b2012-06-20 16:38:30 -0700102 void* callback;
103 void* callbackCtx;
104}tRemainChlCmd;
105
106typedef struct sNoACmd
107{
108 tP2pPsConfig NoA;
109} tNoACmd;
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800110#ifdef FEATURE_WLAN_TDLS
111typedef struct TdlsSendMgmtInfo
112{
113 tSirMacAddr peerMac;
114 tANI_U8 frameType;
115 tANI_U8 dialog;
116 tANI_U16 statusCode;
Hoonki Leea34dd892013-02-05 22:56:02 -0800117 tANI_U8 responder;
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800118 tANI_U8 *buf;
119 tANI_U8 len;
120} tTdlsSendMgmtCmdInfo;
121
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530122typedef struct TdlsLinkEstablishInfo
123{
124 tSirMacAddr peerMac;
125 tANI_U8 uapsdQueues;
126 tANI_U8 maxSp;
127 tANI_U8 isBufSta;
Naresh Jayaramdff88f92014-02-12 21:44:29 +0530128 tANI_U8 isOffChannelSupported;
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530129 tANI_U8 isResponder;
Naresh Jayaramdff88f92014-02-12 21:44:29 +0530130 tANI_U8 supportedChannelsLen;
131 tANI_U8 supportedChannels[SIR_MAC_MAX_SUPP_CHANNELS];
132 tANI_U8 supportedOperClassesLen;
133 tANI_U8 supportedOperClasses[SIR_MAC_MAX_SUPP_OPER_CLASSES];
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530134} tTdlsLinkEstablishCmdInfo;
135
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800136typedef struct TdlsAddStaInfo
137{
Gopichand Nakkala681989c2013-03-06 22:27:48 -0800138 eTdlsAddOper tdlsAddOper;
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800139 tSirMacAddr peerMac;
Gopichand Nakkala681989c2013-03-06 22:27:48 -0800140 tANI_U16 capability;
141 tANI_U8 extnCapability[SIR_MAC_MAX_EXTN_CAP];
142 tANI_U8 supportedRatesLen;
143 tANI_U8 supportedRates[SIR_MAC_MAX_SUPP_RATES];
Hoonki Lee66b75f32013-04-16 18:30:07 -0700144 tANI_U8 htcap_present;
Gopichand Nakkala681989c2013-03-06 22:27:48 -0800145 tSirHTCap HTCap;
Hoonki Lee66b75f32013-04-16 18:30:07 -0700146 tANI_U8 vhtcap_present;
Gopichand Nakkala681989c2013-03-06 22:27:48 -0800147 tSirVHTCap VHTCap;
148 tANI_U8 uapsdQueues;
149 tANI_U8 maxSp;
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800150} tTdlsAddStaCmdInfo;
151
152typedef struct TdlsDelStaInfo
153{
154 tSirMacAddr peerMac;
155} tTdlsDelStaCmdInfo;
156#ifdef FEATURE_WLAN_TDLS_INTERNAL
157typedef struct TdlsDisReqCmdinfo
158{
159 tSirMacAddr peerMac;
160 tANI_U8 tdlsDisType;
161} tTdlsDisReqCmdinfo;
162
163typedef struct tdlsLinkSetupReqCmdinfo
164{
165 tSirMacAddr peerMac;
166} tTdlsLinkSetupReqCmdinfo;
167
168typedef struct tdlsLinkTeardownCmdinfo
169{
170 tSirMacAddr peerMac;
171} tTdlsLinkTeardownCmdinfo;
172#endif
173/*
174 * TDLS cmd info, CMD from SME to PE.
175 */
176typedef struct s_tdls_cmd
177{
178 tANI_U32 size;
179 union
180 {
181#ifdef FEATURE_WLAN_TDLS_INTERNAL
182 tTdlsDisReqCmdinfo tdlsDisReqCmdInfo ;
183 tTdlsLinkSetupReqCmdinfo tdlsLinkSetupReqCmdInfo ;
184 tTdlsLinkTeardownCmdinfo tdlsLinkTeardownCmdInfo ;
185 //tEnterPeerUAPSDInfo enterUapsdInfo ;
186 //tExitPeerUAPSDinfo exitUapsdInfo ;
187#endif
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530188 tTdlsLinkEstablishCmdInfo tdlsLinkEstablishCmdInfo;
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800189 tTdlsSendMgmtCmdInfo tdlsSendMgmtCmdInfo;
190 tTdlsAddStaCmdInfo tdlsAddStaCmdInfo;
191 tTdlsDelStaCmdInfo tdlsDelStaCmdInfo;
192 }u;
193} tTdlsCmd;
194#endif /* FEATURE_WLAN_TDLS */
Jeff Johnson295189b2012-06-20 16:38:30 -0700195
196typedef struct tagSmeCmd
197{
198 tListElem Link;
199 eSmeCommandType command;
200 tANI_U32 sessionId;
201 union
202 {
203 tScanCmd scanCmd;
204 tRoamCmd roamCmd;
205 tWmStatusChangeCmd wmStatusChangeCmd;
206 tSetKeyCmd setKeyCmd;
207 tRemoveKeyCmd removeKeyCmd;
208 tGenericPmcCmd pmcCmd;
209 tGenericQosCmd qosCmd;
Jeff Johnsone7245742012-09-05 17:12:55 -0700210#ifdef FEATURE_OEM_DATA_SUPPORT
211 tOemDataCmd oemDataCmd;
212#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700213 tRemainChlCmd remainChlCmd;
214 tNoACmd NoACmd;
Jeff Johnson295189b2012-06-20 16:38:30 -0700215 tAddStaForSessionCmd addStaSessionCmd;
216 tDelStaForSessionCmd delStaSessionCmd;
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800217#ifdef FEATURE_WLAN_TDLS
218 tTdlsCmd tdlsCmd;
219#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700220 }u;
221}tSmeCmd;
222
223
224
225/*--------------------------------------------------------------------------
226 Internal to SME
227 ------------------------------------------------------------------------*/
228
229//To get a command buffer
230//Return: NULL if there no more command buffer left
231tSmeCmd *smeGetCommandBuffer( tpAniSirGlobal pMac );
232void smePushCommand( tpAniSirGlobal pMac, tSmeCmd *pCmd, tANI_BOOLEAN fHighPriority );
233void smeProcessPendingQueue( tpAniSirGlobal pMac );
234void smeReleaseCommand(tpAniSirGlobal pMac, tSmeCmd *pCmd);
Madan Mohan Koyyalamudi21255992013-08-01 18:00:25 +0530235void purgeSmeSessionCmdList(tpAniSirGlobal pMac, tANI_U32 sessionId,
236 tDblLinkList *pList);
Jeff Johnson295189b2012-06-20 16:38:30 -0700237tANI_BOOLEAN smeCommandPending(tpAniSirGlobal pMac);
238tANI_BOOLEAN pmcProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
239//this function is used to abort a command where the normal processing of the command
240//is terminated without going through the normal path. it is here to take care of callbacks for
241//the command, if applicable.
242void pmcAbortCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand, tANI_BOOLEAN fStopping );
243tANI_BOOLEAN qosProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
244
245eHalStatus csrProcessScanCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
246eHalStatus csrRoamProcessCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
247void csrRoamProcessWmStatusChangeCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
248void csrReinitRoamCmd(tpAniSirGlobal pMac, tSmeCmd *pCommand);
249void csrReinitWmStatusChangeCmd(tpAniSirGlobal pMac, tSmeCmd *pCommand);
250void csrReinitSetKeyCmd(tpAniSirGlobal pMac, tSmeCmd *pCommand);
251void csrReinitRemoveKeyCmd(tpAniSirGlobal pMac, tSmeCmd *pCommand);
252eHalStatus csrRoamProcessSetKeyCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
253eHalStatus csrRoamProcessRemoveKeyCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
254void csrReleaseCommandSetKey(tpAniSirGlobal pMac, tSmeCmd *pCommand);
255void csrReleaseCommandRemoveKey(tpAniSirGlobal pMac, tSmeCmd *pCommand);
256//eHalStatus csrRoamIssueSetKeyCommand( tpAniSirGlobal pMac, tANI_U32 sessionId, tCsrRoamSetKey *pSetKey, tANI_U32 roamId );
257eHalStatus csrRoamIssueRemoveKeyCommand( tpAniSirGlobal pMac, tANI_U32 sessionId,
258 tCsrRoamRemoveKey *pRemoveKey, tANI_U32 roamId );
259eHalStatus csrIsFullPowerNeeded( tpAniSirGlobal pMac, tSmeCmd *pCommand, tRequestFullPowerReason *pReason,
260 tANI_BOOLEAN *pfNeedPower);
261void csrAbortCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand, tANI_BOOLEAN fStopping );
262
263eHalStatus sme_AcquireGlobalLock( tSmeStruct *psSme);
264eHalStatus sme_ReleaseGlobalLock( tSmeStruct *psSme);
265
Jeff Johnsone7245742012-09-05 17:12:55 -0700266#ifdef FEATURE_OEM_DATA_SUPPORT
267eHalStatus oemData_ProcessOemDataReqCommand(tpAniSirGlobal pMac, tSmeCmd *pCommand);
268#endif
Jeff Johnson295189b2012-06-20 16:38:30 -0700269
270eHalStatus csrProcessAddStaSessionCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
271eHalStatus csrProcessAddStaSessionRsp( tpAniSirGlobal pMac, tANI_U8 *pMsg);
272eHalStatus csrProcessDelStaSessionCommand( tpAniSirGlobal pMac, tSmeCmd *pCommand );
273eHalStatus csrProcessDelStaSessionRsp( tpAniSirGlobal pMac, tANI_U8 *pMsg);
274
275#ifdef WLAN_NS_OFFLOAD
276/* ---------------------------------------------------------------------------
277 \fn pmcSetNSOffload
278 \brief Set the host offload feature.
279 \param hHal - The handle returned by macOpen.
280 \param pRequest - Pointer to the offload request.
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -0700281 \param sessionId . Session index of the session
Jeff Johnson295189b2012-06-20 16:38:30 -0700282 \return eHalStatus
283 eHAL_STATUS_FAILURE Cannot set the offload.
284 eHAL_STATUS_SUCCESS Request accepted.
285 ---------------------------------------------------------------------------*/
Madan Mohan Koyyalamudi96dd30d2012-10-05 17:24:51 -0700286eHalStatus pmcSetNSOffload (tHalHandle hHal, tpSirHostOffloadReq pRequest, tANI_U8 sessionId);
Jeff Johnson295189b2012-06-20 16:38:30 -0700287#endif //WLAN_NS_OFFLOAD
288
289#ifdef FEATURE_WLAN_SCAN_PNO
290eHalStatus pmcSetPreferredNetworkList(tHalHandle hHal, tpSirPNOScanReq pRequest, tANI_U8 sessionId, preferredNetworkFoundIndCallback callbackRoutine, void *callbackContext);
291eHalStatus pmcUpdateScanParams(tHalHandle hHal, tCsrConfig *pRequest, tCsrChannel *pChannelList, tANI_U8 b11dResolved);
292eHalStatus pmcSetRssiFilter(tHalHandle hHal, v_U8_t rssiThreshold);
293#endif // FEATURE_WLAN_SCAN_PNO
Tushnim Bhattacharyya3a37def2013-02-24 11:11:15 -0800294eHalStatus pmcSetPowerParams(tHalHandle hHal, tSirSetPowerParamsReq* pwParams, tANI_BOOLEAN forced);
Jeff Johnson295189b2012-06-20 16:38:30 -0700295
296tANI_BOOLEAN csrRoamGetConcurrencyConnectStatusForBmps(tpAniSirGlobal pMac);
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800297#ifdef FEATURE_WLAN_TDLS
298eHalStatus csrTdlsSendMgmtReq(tHalHandle hHal, tANI_U8 sessionId, tCsrTdlsSendMgmt *tdlsSendMgmt);
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530299VOS_STATUS csrTdlsSendLinkEstablishParams(tHalHandle hHal,
300 tANI_U8 sessionId,
301 tSirMacAddr peerMac,
302 tCsrTdlsLinkEstablishParams *tdlsLinkEstablishParams);
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800303eHalStatus csrTdlsAddPeerSta(tHalHandle hHal, tANI_U8 sessionId, tSirMacAddr peerMac);
Gopichand Nakkala681989c2013-03-06 22:27:48 -0800304eHalStatus csrTdlsChangePeerSta(tHalHandle hHal, tANI_U8 sessionId, tSirMacAddr peerMac, tCsrStaParams *pstaParams);
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800305eHalStatus csrTdlsDelPeerSta(tHalHandle hHal, tANI_U8 sessionId, tSirMacAddr peerMac);
306eHalStatus csrTdlsProcessCmd(tpAniSirGlobal pMac,tSmeCmd *pCommand );
Gopichand Nakkala79ff85d2013-05-27 17:05:29 +0530307eHalStatus csrTdlsProcessLinkEstablish( tpAniSirGlobal pMac, tSmeCmd *cmd );
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800308eHalStatus tdlsMsgProcessor(tpAniSirGlobal pMac,v_U16_t msg_type,
309 void *pMsgBuf);
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800310#ifdef FEATURE_WLAN_TDLS_INTERNAL
311eHalStatus csrTdlsDiscoveryReq(tHalHandle hHal, tANI_U8 sessionId,
312 tCsrTdlsDisRequest *tdlsDisReq);
313eHalStatus csrTdlsSetupReq(tHalHandle hHal, tANI_U8 sessionId,
314 tCsrTdlsSetupRequest *tdlsSetupReq);
315eHalStatus csrTdlsTeardownReq(tHalHandle hHal, tANI_U8 sessionId,
316 tCsrTdlsTeardownRequest *teardown);
317#endif
Mohit Khanna698ba2a2012-12-04 15:08:18 -0800318#endif /* FEATURE_WLAN_TDLS */
319
Srinivas Girigowdade697412013-02-14 16:31:48 -0800320#if defined (WLAN_FEATURE_VOWIFI_11R) || defined (FEATURE_WLAN_CCX) || defined(FEATURE_WLAN_LFR)
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700321eHalStatus csrFlushCfgBgScanRoamChannelList(tpAniSirGlobal pMac);
Srinivas Girigowda100eb322013-03-15 16:48:20 -0700322eHalStatus csrCreateBgScanRoamChannelList(tpAniSirGlobal pMac,
323 const tANI_U8 *pChannelList,
324 const tANI_U8 numChannels);
Srinivas Girigowdade697412013-02-14 16:31:48 -0800325eHalStatus csrUpdateBgScanConfigIniChannelList(tpAniSirGlobal pMac, eCsrBand eBand);
Srinivas Girigowdade697412013-02-14 16:31:48 -0800326#endif
327
Srinivas Girigowda5cecb202013-10-08 09:13:25 -0700328#if defined(FEATURE_WLAN_CCX) && defined(FEATURE_WLAN_CCX_UPLOAD)
329eHalStatus csrCreateRoamScanChannelList(tpAniSirGlobal pMac,
330 tANI_U8 *pChannelList,
331 tANI_U8 numChannels,
332 const eCsrBand eBand);
333#endif
Kalikinkar Dharaa4988972013-10-28 13:39:54 -0700334void activeListCmdTimeoutHandle(void *userData);
Srinivas Girigowdade697412013-02-14 16:31:48 -0800335
Jeff Johnson295189b2012-06-20 16:38:30 -0700336#endif //#if !defined( __SMEINSIDE_H )