• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * qosMngr.h
3  *
4  * Copyright(c) 1998 - 2010 Texas Instruments. All rights reserved.
5  * All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  *
11  *  * Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  *  * Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in
15  *    the documentation and/or other materials provided with the
16  *    distribution.
17  *  * Neither the name Texas Instruments nor the names of its
18  *    contributors may be used to endorse or promote products derived
19  *    from this software without specific prior written permission.
20  *
21  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33 
34 
35 /** \file qosMngr.h
36  *  \brief QOS manager module internal header file
37  *
38  *  \see qosMngr.c
39  */
40 
41 /***************************************************************************/
42 /*                                                                         */
43 /*    MODULE:   qosMgr.h                                                   */
44 /*    PURPOSE:  QOS manager module internal header file                    */
45 /*                                                                         */
46 /***************************************************************************/
47 #ifndef __QOS_MNGR_H__
48 #define __QOS_MNGR_H__
49 
50 #include "paramOut.h"
51 #include "trafficAdmControl.h"
52 
53 /*
54  *          Defines
55  */
56 
57 #define QOS_MNGR_INIT_BIT_LOCAL_VECTOR     (0x01)
58 #define QOS_MNGR_INIT_BIT_ADM_CTRL     (0x02)
59 
60 #define AC_PARAMS_AIFSN_MASK               (0x0f)
61 #define AC_PARAMS_ACI_MASK                 (0x60)
62 #define AC_PARAMS_CWMIN_MASK               (0x0f)
63 #define AC_PARAMS_CWMAX_MASK               (0xf0)
64 #define AC_PARAMS_ACM_MASK                 (0x10)
65 
66 #define MAX_ENABLED_PS_RX_STREAMS          4
67 
68 #if 0
69 #define PS_PARAMETERS_LEGACY                    (0)
70 #define PS_PARAMETERS_UPSD_TRIGGER_ENABLE_MASK  (0x01)
71 #define PS_PARAMETERS_UPSD_DELIVERY_ENABLE_MASK (0x02)
72 #define PS_UPSD_TRIGER_AND_DELIVERY (PS_PARAMETERS_UPSD_TRIGGER_ENABLE_MASK | PS_PARAMETERS_UPSD_DELIVERY_ENABLE_MASK)
73 
74 #define CONVERT_DRIVER_PS_MODE_TO_FW(PsMode_e)  ((PsMode_e == UPSD) ? PS_UPSD_TRIGER_AND_DELIVERY : PS_PARAMETERS_LEGACY)
75 #endif
76 
77 
78 /*
79  *          Enumerations
80  */
81 #define RX_QUEUE_WIN_SIZE       8
82 
83 typedef enum
84 {
85     BA_POLICY_DISABLE                                   =   0,
86     BA_POLICY_INITIATOR                                 =   1,
87     BA_POLICY_RECEIVER                                  =   2,
88     BA_POLICY_INITIATOR_AND_RECEIVER                    =   3
89 } EqosMngrBaPolicy;
90 
91 
92 /*
93  *          Structures
94  */
95 
96 typedef struct
97 {
98     tspecInfo_t     currentTspecInfo[MAX_NUM_OF_AC];
99     tspecInfo_t     candidateTspecInfo[MAX_NUM_OF_AC];
100     TI_UINT16       totalAllocatedMediumTime;
101 }resourceMgmt_t;
102 
103 /*
104  * per AC parameters
105  */
106 typedef struct
107 {
108     TQueueTrafficParams   QtrafficParams;    /* AC traffic confogiration params */
109     TQueueTrafficParams   QTrafficInitParams;/* for disconnect - defaults traffic params */
110     TAcQosParams          acQosParams;
111     TAcQosParams          acQosInitParams;
112     AckPolicy_e           wmeAcAckPolicy;     /* ack policy per AC               */
113     PSScheme_e            currentWmeAcPsMode; /* current wme per ac power save mode */
114     PSScheme_e            desiredWmeAcPsMode; /* desired wme per ac power save mode */
115     EAdmissionState       apInitAdmissionState; /* AC admission state              */
116     TI_UINT32             msduLifeTimeParam;
117 }acParams_t;
118 
119 
120 typedef TI_STATUS (*qosMngrCallb_t) (TI_HANDLE hApConn, trafficAdmRequestStatus_e result);
121 
122 /*
123  *  qosMngr handle
124  */
125 
126 typedef struct
127 {
128     TI_HANDLE           hSiteMgr;
129     TI_HANDLE           hTWD;
130     TI_HANDLE           hTxCtrl;
131     TI_HANDLE           hTxMgmtQ;
132     TI_HANDLE           hEvHandler;
133     TI_HANDLE           hRoamMng;
134 
135     TI_HANDLE           hMeasurementMngr;
136     TI_HANDLE           hSmeSm;
137     TI_HANDLE           hCtrlData;
138     TI_HANDLE           hXCCMgr;
139 
140     TI_HANDLE           hReport;
141     TI_HANDLE           hOs;
142     TI_HANDLE           hTimer;
143     TI_HANDLE           hStaCap;
144 
145     TI_BOOL             WMEEnable;                           /* driver supports WME protocol       */
146     TI_BOOL             WMESiteSupport;                      /* site support WME protocol          */
147     EQosProtocol        activeProtocol;                      /* active protocol: XCC,WME or none.  */
148     TI_BOOL             tagZeroConverHeader;                 /* converting tag zero headers        */
149 
150     TI_UINT8            qosPacketBurstEnable;                /* Packet Burst is Enable or NOT      */
151     TI_UINT32           qosPacketBurstTxOpLimit;             /* TxOp limit in case of NON_QOS */
152                                                              /* protocol and Packet Burst is Enable */
153 
154     acParams_t          acParams[MAX_NUM_OF_AC];             /* per ac parameters                  */
155 
156     TI_BOOL             isConnected;                         /* Connected or not ?                       */
157     PSScheme_e          desiredPsMode;                       /* The desired PS mode of the station */
158     PSScheme_e          currentPsMode;                       /* The current PS mode of the station */
159     TI_UINT8            ApQosCapabilityParameters;
160     TI_UINT8            desiredMaxSpLen;
161 
162     EHeaderConvertMode  headerConvetMode;
163     TRxTimeOut          rxTimeOut;
164 
165     /* PS Rx streaming parameters */
166     TPsRxStreaming      aTidPsRxStreaming[MAX_NUM_OF_802_1d_TAGS];/* Per TID PS-Rx-Streaming configured parameters */
167     TI_UINT32           uNumEnabledPsRxStreams;             /* the number of enabled TID-PS-Rx-Streams */
168 
169     /* traffic admission control parameters */
170     TI_BOOL             trafficAdmCtrlEnable;                /* driver supports Admission control  */
171     trafficAdmCtrl_t    *pTrafficAdmCtrl;                    /* adm ctrl object */
172     resourceMgmt_t      resourceMgmtTable;
173     TI_UINT8            QosNullDataTemplateUserPriority;     /* Holds the last User Priority set into the firmware in the QOS Null data template */
174 
175     TI_BOOL             performTSPECRenegotiation;
176     TI_BOOL             voiceTspecConfigured;
177     TI_BOOL		        videoTspecConfigured;
178     TI_HANDLE           TSPECNegotiationResultModule;
179     qosMngrCallb_t      TSPECNegotiationResultCallb;
180     OS_802_11_QOS_TSPEC_PARAMS  tspecRenegotiationParams[MAX_NUM_OF_AC];
181 
182     TI_BOOL             bCwFromUserEnable;
183     TI_UINT8            uDesireCwMin;		/**< The contention window minimum size (in slots) from ini file */
184     TI_UINT16           uDesireCwMax;		/**< The contention window maximum size (in slots) from ini file */
185 
186     /* 802.11n BA session */
187     TI_UINT8               aBaPolicy[MAX_NUM_OF_802_1d_TAGS];
188     TI_UINT16              aBaInactivityTimeout[MAX_NUM_OF_802_1d_TAGS];
189 	TI_BOOL				bEnableBurstMode;
190 } qosMngr_t;
191 
192 
193 #endif /* QOS_MNGR_H */
194