• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /****************************************************************************
2 **+-----------------------------------------------------------------------+**
3 **|                                                                       |**
4 **| Copyright(c) 1998 - 2008 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 
36 /***************************************************************************/
37 /*                                                                         */
38 /*    MODULE:   tx.h                                                       */
39 /*    PURPOSE:  Tx module Header file                                      */
40 /*                                                                         */
41 /***************************************************************************/
42 #ifndef _CTRL_H_
43 #define _CTRL_H_
44 
45 #include "osTIType.h"
46 #include "paramIn.h"
47 #include "paramOut.h"
48 #include "rxXfer_api.h"
49 #include "RateAdaptation.h"
50 #include "Clsfr.h"
51 #include "fourX.h"
52 
53 #define     DEF_CURRENT_PREAMBLE                        PREAMBLE_LONG
54 #define     DEF_CURRENT_MUDULATION_TYPE                 DRV_MODULATION_CCK
55 #define     DEF_BASIC_RATE                              DRV_RATE_2M
56 #define     DEF_BASIC_RATE_MASK                         0x0003
57 #define     ALL_RATES_AVAILABLE                         0xFFFFFFFF
58 
59 #define     DEF_RATE_CONTROL_ENABLE                     FALSE
60 #define     DEF_START_STOP_LINK_CTRL_ALG                FALSE
61 
62 typedef enum
63 {
64 CTRL_DATA_TRAFFIC_INTENSITY_HIGH_CROSSED_ABOVE,
65 CTRL_DATA_TRAFFIC_INTENSITY_HIGH_CROSSED_BELOW,
66 CTRL_DATA_TRAFFIC_INTENSITY_LOW_CROSSED_ABOVE,
67 CTRL_DATA_TRAFFIC_INTENSITY_LOW_CROSSED_BELOW,
68 CTRL_DATA_TRAFFIC_INTENSITY_MAX_EVENTS,
69 } ctrlData_trafficIntensityEvents_e;
70 
71 
72 #define TS_EXCEEDS(currTime,expTime) (currTime > expTime)
73 #define TS_ADVANCE(currTime,expTime,delta) (expTime = currTime + (delta))
74 
75 typedef struct
76 {
77     UINT32 dbgNumOfMsduFreeInTxComplete[MAX_NUM_OF_TX_QUEUES];
78 }ctrlDataDbgCounters_t;
79 
80 typedef struct
81 {
82     UINT32 supportedRatesMask[NUM_OF_RATE_CLASS_CLIENTS];
83     UINT32 policyClassRateMask[NUM_OF_RATE_CLASS_CLIENTS];
84     UINT32 fwPolicyID[NUM_OF_RATE_CLASS_CLIENTS];
85 }tsrsParameters_t;
86 
87 typedef struct
88 {
89     TI_HANDLE           hSiteMgr;
90     TI_HANDLE           hTxData;
91     TI_HANDLE           hRxData;
92     TI_HANDLE           hWhalCtrl;
93     TI_HANDLE           hOs;
94     TI_HANDLE           hReport;
95     TI_HANDLE           hAPConn;
96     TI_HANDLE           hEvHandler;
97     TI_HANDLE           hTrafficMonitor;
98     TI_HANDLE           hMemMngr;
99 
100 
101     rateAdaptation_t*   pRateAdaptation;
102 #ifdef SUPPORT_4X
103     fourX_t*            pFourX;
104 #endif
105     classifier_t*       pClsfr;
106 
107     BOOL                ctrlDataRateControlEnable;
108     BOOL                ctrlDataFourXEnable;
109     BOOL                ctrlDataCerruentFourXstate;
110     BOOL                ctrlDataStartStoplinkControlAlg;
111 
112     macAddress_t        ctrlDataCurrentBSSID;
113     bssType_e           ctrlDataCurrentBssType;
114     UINT32              ctrlDataBasicRateBitMask;
115     UINT32              ctrlDataCurrentRateMask;
116     modulationType_e    ctrlDataCurrentModulationType;
117     rate_e              ctrlDataCurrentBasicRate;
118     modulationType_e    ctrlDataCurrentBasicModulationType;
119     preamble_e          ctrlDataCurrentPreambleType;
120     macAddress_t        ctrlDataDeviceMacAddress;
121 
122     BOOL                ctrlDataProtectionEnabled;
123     RtsCtsStatus_e      ctrlDataRtsCtsStatus;
124     erpProtectionType_e ctrlDataIbssProtectionType;
125 
126     /* rate adaptation tables */
127     rateTables_t        ctrlDataRateTables;
128     ctrlData_rateAdapt_t* ctrlDataCurrentRateTable;
129 
130     /* Control module counters */
131     ctrlDataCounters_t  ctrlDataCounters;
132     /*
133      * txRatePolicy section
134      */
135 
136     /* txRatePolicies - here we store the policy and set it to the FW */
137     txRatePolicy_t      ctrlDataTxRatePolicy;
138 
139     /* Client supported rates - currently User (all supported) or SG (configured) */
140     UINT32              currClientRateMask[NUM_OF_RATE_CLASS_CLIENTS];
141 
142     /* changing supported rates is done in the next array. We use the change only
143         on connection - we copy currClientRateMask = nextClientRateMask */
144     UINT32              nextClientRateMask[NUM_OF_RATE_CLASS_CLIENTS];
145 
146     BOOL                bIsClassAvailable[NUM_OF_RATE_CLASS_CLIENTS];
147 
148     /* the class ID to use for Tx Data Packets */
149     rateClassClients_e  currClientRateID;
150     /* Saves the last wanted configuration of the Client ID, used when in a connection we get
151         0 supported rates , but in the next connection we get supported rates, thus we use the last one configured */
152     rateClassClients_e  configuredClientRateID;
153 
154     /* number of retries for each rate in each class in the policy that we set to the FW */
155     policyClassRatesArray_t policyClassRatesArrayCck  [NUM_OF_RATE_CLASS_CLIENTS];
156     policyClassRatesArray_t policyClassRatesArrayPbcc [NUM_OF_RATE_CLASS_CLIENTS];
157     policyClassRatesArray_t policyClassRatesArrayOfdm [NUM_OF_RATE_CLASS_CLIENTS];
158     policyClassRatesArray_t policyClassRatesArrayOfdmA[NUM_OF_RATE_CLASS_CLIENTS];
159 
160     /* holds the current used array */
161     policyClassRatesArray_t *pCurrPolicyClassRatesArray;
162     /* debug counter */
163     ctrlDataDbgCounters_t ctrlDataDbgCounters;
164 
165     /* Callback for disassociation notification */
166     disassocSentCB_t    disassocSentCBFunc;
167     TI_HANDLE           disassocSentCBObj;
168 
169     /* Flag to indicate whether traffic intensity events should be sent or not */
170     BOOL                ctrlDataTrafficIntensityEventsEnabled;
171     OS_802_11_TRAFFIC_INTENSITY_THRESHOLD_PARAMS ctrlDataTrafficIntensityThresholds;
172     TI_HANDLE ctrlDataTrafficThresholdEvents[CTRL_DATA_TRAFFIC_INTENSITY_MAX_EVENTS];
173 
174     tsrsParameters_t    tsrsParameters[MAX_NUM_OF_AC];
175 
176     /* holds last fragmentation threshold */
177     UINT16              lastFragmentThreshold;
178 
179 } ctrlData_t;
180 
181 
182 #endif
183