blob: c495f39e0743f3ae5a2fc7ca14b73f1bc214fd77 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
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.
20 */
21
22/*
23 *
24 * Airgo Networks, Inc proprietary. All rights reserved.
25 * Author: Sandesh Goel
26 * Date: 02/25/02
27 * History:-
28 * Date Modified by Modification Information
29 * --------------------------------------------------------------------
30 *
31 */
32
33#ifndef __PMM_API_H__
34#define __PMM_API_H__
35
36#include "sirCommon.h"
37#include "schApi.h"
38#include "halMsgApi.h"
39
40
41/// Initialize PMM
42extern tSirRetStatus pmmInitialize(tpAniSirGlobal pMac);
43
44/// Post a message to PMM module
45extern tSirRetStatus pmmPostMessage(tpAniSirGlobal pMac, tpSirMsgQ pMsg);
46
47/// Reset PMM beacon mode power save statistics
48extern void pmmResetStats(void *pvMac);
49
50/// Process the next PM message
51extern void pmmProcessMessage(tpAniSirGlobal, tpSirMsgQ);
52
53/// Process the PM message queue
54extern void pmmProcessMessageQueue(tpAniSirGlobal pMac);
55
56extern void pmmProcessPSPoll(tpAniSirGlobal, tANI_U8 *);
57extern void pmmUpdatePSPollState(tpAniSirGlobal);
58extern void pmmProcessRxActivity(tpAniSirGlobal, tANI_U16, tANI_U8);
59
60#ifdef WLAN_SOFTAP_FEATURE
61extern void pmmGenerateTIM(tpAniSirGlobal, tANI_U8 **, tANI_U16 *, tANI_U8);
62#else
63extern void pmmGenerateTIM(tpAniSirGlobal, tANI_U8 **, tANI_U16 *);
64#endif
65
66
67void pmmUpdateTIM(tpAniSirGlobal pMac, tpBeaconGenParams pBeaconGenParams);
68
69/// Update the PM mode
70extern void pmmUpdatePMMode(tpAniSirGlobal pMac, tANI_U16 staId, tANI_U8 pmMode);
71
72/// Update Power Mode
73extern void pmmUpdatePollablePMMode(tpAniSirGlobal, tANI_U16, tANI_U8, tANI_U16);
74extern void pmmUpdateNonPollablePMMode(tpAniSirGlobal, tANI_U16, tANI_U8, tANI_U16);
75
76/** Monitor the STA in PS*/
77void pmmHandleTimBasedDisassociation(tpAniSirGlobal pMac, tpPESession psessionEntry);
78
79//go into sleep state
80void pmmInitBmpsPwrSave(tpAniSirGlobal pMac);
81tSirRetStatus pmmSendInitPowerSaveMsg(tpAniSirGlobal pMac,tpPESession);
82void pmmInitBmpsResponseHandler(tpAniSirGlobal pMac, eHalStatus rspStatus);
83tSirRetStatus pmmSendChangePowerSaveMsg(tpAniSirGlobal pMac);
84tSirRetStatus pmmSendSleepIndicationToHal(tpAniSirGlobal pMac);
85
86//go into wakeup state
87void pmmExitBmpsRequestHandler(tpAniSirGlobal pMac, tpExitBmpsInfo pExitBmpsInfo);
88void pmmExitBmpsResponseHandler(tpAniSirGlobal pMac, tpSirMsgQ limMsg) ;
89void pmmMissedBeaconHandler(tpAniSirGlobal pMac);
90
91//handlling all UAPSD messages
92void pmmEnterUapsdRequestHandler (tpAniSirGlobal pMac);
93void pmmEnterUapsdResponseHandler(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
94void pmmExitUapsdRequestHandler (tpAniSirGlobal pMac);
95void pmmExitUapsdResponseHandler(tpAniSirGlobal pMac, eHalStatus rspStatus);
96tSirRetStatus pmmUapsdSendChangePwrSaveMsg (tpAniSirGlobal pMac, tANI_U8 mode);
97
98// handling of all idle mode power save messages
99void pmmEnterImpsRequestHandler(tpAniSirGlobal pMac);
100void pmmEnterImpsResponseHandler(tpAniSirGlobal pMac, eHalStatus rspStatus);
101void pmmExitImpsRequestHandler(tpAniSirGlobal pMac);
102void pmmExitImpsResponseHandler(tpAniSirGlobal pMac, eHalStatus rspStatus);
103
104// handling WOWLAN messages
105void pmmSendWowlAddBcastPtrn(tpAniSirGlobal pMac, tpSirMsgQ pMsg);
106void pmmSendWowlDelBcastPtrn(tpAniSirGlobal pMac, tpSirMsgQ pMsg);
107void pmmEnterWowlRequestHandler(tpAniSirGlobal pMac, tpSirMsgQ pMsg);
108tSirRetStatus pmmSendWowlEnterRequest(tpAniSirGlobal pMac, tpSirHalWowlEnterParams pHalWowlParams);
109void pmmEnterWowlanResponseHandler(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
110tSirRetStatus pmmSendExitWowlReq(tpAniSirGlobal pMac);
111void pmmExitWowlanRequestHandler(tpAniSirGlobal pMac);
112void pmmExitWowlanResponseHandler(tpAniSirGlobal pMac, eHalStatus rspStatus);
113
114// update idle mode statistics
115void pmmImpsUpdatePwrSaveStats(tpAniSirGlobal pMac);
116void pmmImpsUpdateWakeupStats(tpAniSirGlobal pMac);
117tSirRetStatus pmmImpsSendChangePwrSaveMsg(tpAniSirGlobal pMac, tANI_U8 mode);
118void pmmImpsUpdateSleepErrStats(tpAniSirGlobal pMac, tSirRetStatus retStatus);
119void pmmImpsUpdateWakeupErrStats(tpAniSirGlobal pMac, tSirRetStatus retStatus);
120void pmmImpsUpdateErrStateStats(tpAniSirGlobal pMac);
121void pmmImpsUpdatePktDropStats(tpAniSirGlobal pMac);
122
123void pmmUpdatePwrSaveStats(tpAniSirGlobal pMac);
124void pmmUpdateWakeupStats(tpAniSirGlobal pMac);
125void pmmBmpsUpdatePktDropStats(tpAniSirGlobal pMac);
126void pmmBmpsUpdateHalReqFailureCnt(tpAniSirGlobal pMac);
127void pmmBmpsUpdateInitFailureCnt(tpAniSirGlobal pMac);
128void pmmBmpsUpdateInvalidStateCnt(tpAniSirGlobal pMac);
129void pmmBmpsUpdatePktDropStats(tpAniSirGlobal pMac);
130void pmmBmpsUpdateReqInInvalidRoleCnt(tpAniSirGlobal pMac);
131void pmmBmpsUpdateSleepReqFailureCnt(tpAniSirGlobal pMac);
132void pmmBmpsUpdateWakeupIndCnt(tpAniSirGlobal pMac);
133void pmmBmpsUpdateWakeupReqFailureCnt(tpAniSirGlobal pMac);
134void pmmResetPmmState(tpAniSirGlobal pMac);
135void pmmSendMessageToLim(tpAniSirGlobal pMac, tANI_U32 msgId);
136
137//Power Save CFG
138tSirRetStatus pmmSendPowerSaveCfg(tpAniSirGlobal pMac, tpSirPowerSaveCfg pUpdatedPwrSaveCfg);
139
140//Handle Low RSSI Indication
141void pmmLowRssiHandler(tpAniSirGlobal pMac);
142
143#ifdef WLAN_FEATURE_PACKET_FILTERING
144void pmmFilterMatchCountResponseHandler(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
145#endif // WLAN_FEATURE_PACKET_FILTERING
146
147#ifdef WLAN_FEATURE_GTK_OFFLOAD
148void pmmGTKOffloadGetInfoResponseHandler(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
149#endif // WLAN_FEATURE_GTK_OFFLOAD
150
151#endif