]> www.pilppa.org Git - linux-2.6-omap-h63xx.git/blob - drivers/staging/winbond/mto.h
Staging: w35und: unify mto.h and mto_f.h header files
[linux-2.6-omap-h63xx.git] / drivers / staging / winbond / mto.h
1 //==================================================================
2 // MTO.H
3 //
4 // Revision history
5 //=================================
6 //          20030110    UN20 Pete Chao
7 //                      Initial Release
8 //
9 // Copyright (c) 2003 Winbond Electronics Corp. All rights reserved.
10 //==================================================================
11 #ifndef __MTO_H__
12 #define __MTO_H__
13
14 #include <linux/types.h>
15
16 struct wbsoft_priv;
17
18 #define MTO_DEFAULT_TH_CNT              5
19 #define MTO_DEFAULT_TH_SQ3              112  //OLD IS 13 reference JohnXu
20 #define MTO_DEFAULT_TH_IDLE_SLOT        15
21 #define MTO_DEFAULT_TH_PR_INTERF        30
22 #define MTO_DEFAULT_TMR_AGING           25  // unit: slot time  10 reference JohnXu
23 #define MTO_DEFAULT_TMR_PERIODIC        5   // unit: slot time
24
25 #define MTO_ANTENNA_DIVERSITY_OFF       0
26 #define MTO_ANTENNA_DIVERSITY_ON        1
27
28 // LA20040210_DTO kevin
29 //#define MTO_PREAMBLE_LONG               0
30 //#define MTO_PREAMBLE_SHORT              1
31 #define MTO_PREAMBLE_LONG               WLAN_PREAMBLE_TYPE_LONG
32 #define MTO_PREAMBLE_SHORT              WLAN_PREAMBLE_TYPE_SHORT
33
34 typedef enum {
35     TOGGLE_STATE_IDLE             = 0,
36     TOGGLE_STATE_WAIT0            = 1,
37     TOGGLE_STATE_WAIT1            = 2,
38     TOGGLE_STATE_MAKEDESISION     = 3,
39         TOGGLE_STATE_BKOFF            = 4
40 } TOGGLE_STATE;
41
42 typedef enum {
43     RATE_CHGSTATE_IDLE         = 0,
44     RATE_CHGSTATE_CALCULATE    = 1,
45     RATE_CHGSTATE_BACKOFF          = 2
46 } TX_RATE_REDUCTION_STATE;
47
48 //============================================================================
49 // struct _MTOParameters --
50 //
51 //   Defines the parameters used in the MAC Throughput Optimization algorithm
52 //============================================================================
53 typedef struct _MTO_PARAMETERS
54 {
55         u8      Th_Fixant;
56         u8      Th_Cnt;
57         u8      Th_SQ3;
58         u8      Th_IdleSlot;
59
60         u16     Tmr_Aging;
61         u8      Th_PrInterf;
62         u8      Tmr_Periodic;
63
64         //---------        wkchen added      -------------
65         u32             TxFlowCount;    //to judge what kind the tx flow(sparse or busy) is
66         //------------------------------------------------
67
68         //--------- DTO threshold parameters -------------
69         u16             DTO_PeriodicCheckCycle;
70         u16             DTO_RssiThForAntDiv;
71
72         u16             DTO_TxCountThForCalcNewRate;
73         u16             DTO_TxRateIncTh;
74
75         u16             DTO_TxRateDecTh;
76         u16             DTO_TxRateEqTh;
77
78         u16             DTO_TxRateBackOff;
79         u16             DTO_TxRetryRateReduce;
80
81         u16             DTO_TxPowerIndex;       //0 ~ 31
82         u16             reserved_1;
83         //------------------------------------------------
84
85         u8      PowerChangeEnable;
86         u8      AntDiversityEnable;
87         u8      Ant_mac;
88         u8      Ant_div;
89
90         u8      CCA_Mode;
91         u8      CCA_Mode_Setup;
92         u8      Preamble_Type;
93         u8      PreambleChangeEnable;
94
95         u8      DataRateLevel;
96         u8      DataRateChangeEnable;
97         u8      FragThresholdLevel;
98         u8      FragThresholdChangeEnable;
99
100         u16     RTSThreshold;
101         u16     RTSThreshold_Setup;
102
103         u32     AvgIdleSlot;
104         u32     Pr_Interf;
105         u32     AvgGapBtwnInterf;
106
107         u8         RTSChangeEnable;
108         u8      Ant_sel;
109         u8      aging_timeout;
110         u8         reserved_2;
111
112         u32     Cnt_Ant[2];
113         u32     SQ_Ant[2];
114
115 // 20040510 remove from globe vairable
116         u32                     TmrCnt;
117         u32                     BackoffTmr;
118         TOGGLE_STATE            ToggleState;
119         TX_RATE_REDUCTION_STATE TxRateReductionState;
120
121         u8                      Last_Rate;
122         u8                      Co_efficent;
123         u8              FallbackRateLevel;
124         u8              OfdmRateLevel;
125
126         u8              RatePolicy;
127         u8              reserved_3[3];
128
129         // For RSSI turning
130         s32             RSSI_high;
131         s32             RSSI_low;
132
133 } MTO_PARAMETERS, *PMTO_PARAMETERS;
134
135
136 #define MTO_FUNC_INPUT              struct wbsoft_priv *        adapter
137 #define MTO_FUNC_INPUT_DATA         adapter
138 #define MTO_DATA()                  (adapter->sMtoPara)
139 #define MTO_HAL()                   (&adapter->sHwData)
140 #define MTO_SET_PREAMBLE_TYPE(x)    // 20040511 Turbo mark LM_PREAMBLE_TYPE(&pcore_data->lm_data) = (x)
141 #define MTO_ENABLE                                      (adapter->sLocalPara.TxRateMode == RATE_AUTO)
142 #define MTO_TXPOWER_FROM_EEPROM         (adapter->sHwData.PowerIndexFromEEPROM)
143 #define LOCAL_ANTENNA_NO()                      (adapter->sLocalPara.bAntennaNo)
144 #define LOCAL_IS_CONNECTED()            (adapter->sLocalPara.wConnectedSTAindex != 0)
145 #define LOCAL_IS_IBSS_MODE()            (adapter->asBSSDescriptElement[adapter->sLocalPara.wConnectedSTAindex].bBssType == IBSS_NET)
146 #define MTO_INITTXRATE_MODE                     (adapter->sHwData.SoftwareSet&0x2)      //bit 1
147 // 20040510 Turbo add
148 #define MTO_TMR_CNT()               MTO_DATA().TmrCnt
149 #define MTO_TOGGLE_STATE()          MTO_DATA().ToggleState
150 #define MTO_TX_RATE_REDUCTION_STATE() MTO_DATA().TxRateReductionState
151 #define MTO_BACKOFF_TMR()           MTO_DATA().BackoffTmr
152 #define MTO_LAST_RATE()             MTO_DATA().Last_Rate
153 #define MTO_CO_EFFICENT()           MTO_DATA().Co_efficent
154
155 #define MTO_TH_CNT()                MTO_DATA().Th_Cnt
156 #define MTO_TH_SQ3()                MTO_DATA().Th_SQ3
157 #define MTO_TH_IDLE_SLOT()          MTO_DATA().Th_IdleSlot
158 #define MTO_TH_PR_INTERF()          MTO_DATA().Th_PrInterf
159
160 #define MTO_TMR_AGING()             MTO_DATA().Tmr_Aging
161 #define MTO_TMR_PERIODIC()          MTO_DATA().Tmr_Periodic
162
163 #define MTO_POWER_CHANGE_ENABLE()   MTO_DATA().PowerChangeEnable
164 #define MTO_ANT_DIVERSITY_ENABLE()  adapter->sLocalPara.boAntennaDiversity
165 #define MTO_ANT_MAC()               MTO_DATA().Ant_mac
166 #define MTO_ANT_DIVERSITY()         MTO_DATA().Ant_div
167 #define MTO_CCA_MODE()              MTO_DATA().CCA_Mode
168 #define MTO_CCA_MODE_SETUP()        MTO_DATA().CCA_Mode_Setup
169 #define MTO_PREAMBLE_TYPE()         MTO_DATA().Preamble_Type
170 #define MTO_PREAMBLE_CHANGE_ENABLE()         MTO_DATA().PreambleChangeEnable
171
172 #define MTO_RATE_LEVEL()            MTO_DATA().DataRateLevel
173 #define MTO_OFDM_RATE_LEVEL()           MTO_DATA().OfdmRateLevel
174 #define MTO_RATE_CHANGE_ENABLE()    MTO_DATA().DataRateChangeEnable
175 #define MTO_FRAG_TH_LEVEL()         MTO_DATA().FragThresholdLevel
176 #define MTO_FRAG_CHANGE_ENABLE()    MTO_DATA().FragThresholdChangeEnable
177 #define MTO_RTS_THRESHOLD()         MTO_DATA().RTSThreshold
178 #define MTO_RTS_CHANGE_ENABLE()     MTO_DATA().RTSChangeEnable
179 #define MTO_RTS_THRESHOLD_SETUP()   MTO_DATA().RTSThreshold_Setup
180
181 #define MTO_AVG_IDLE_SLOT()         MTO_DATA().AvgIdleSlot
182 #define MTO_PR_INTERF()             MTO_DATA().Pr_Interf
183 #define MTO_AVG_GAP_BTWN_INTERF()   MTO_DATA().AvgGapBtwnInterf
184
185 #define MTO_ANT_SEL()               MTO_DATA().Ant_sel
186 #define MTO_CNT_ANT(x)              MTO_DATA().Cnt_Ant[(x)]
187 #define MTO_SQ_ANT(x)               MTO_DATA().SQ_Ant[(x)]
188 #define MTO_AGING_TIMEOUT()         MTO_DATA().aging_timeout
189
190
191 #define MTO_TXFLOWCOUNT()                       MTO_DATA().TxFlowCount
192 //--------- DTO threshold parameters -------------
193 #define MTOPARA_PERIODIC_CHECK_CYCLE()          MTO_DATA().DTO_PeriodicCheckCycle
194 #define MTOPARA_RSSI_TH_FOR_ANTDIV()            MTO_DATA().DTO_RssiThForAntDiv
195 #define MTOPARA_TXCOUNT_TH_FOR_CALC_RATE()      MTO_DATA().DTO_TxCountThForCalcNewRate
196 #define MTOPARA_TXRATE_INC_TH()                 MTO_DATA().DTO_TxRateIncTh
197 #define MTOPARA_TXRATE_DEC_TH()                 MTO_DATA().DTO_TxRateDecTh
198 #define MTOPARA_TXRATE_EQ_TH()                  MTO_DATA().DTO_TxRateEqTh
199 #define MTOPARA_TXRATE_BACKOFF()                MTO_DATA().DTO_TxRateBackOff
200 #define MTOPARA_TXRETRYRATE_REDUCE()            MTO_DATA().DTO_TxRetryRateReduce
201 #define MTOPARA_TXPOWER_INDEX()                 MTO_DATA().DTO_TxPowerIndex
202 //------------------------------------------------
203
204
205 extern u16  MTO_Frag_Th_Tbl[];
206
207 #define MTO_DATA_RATE()          MTO_Data_Rate_Tbl[MTO_RATE_LEVEL()]
208 #define MTO_FRAG_TH()            MTO_Frag_Th_Tbl[MTO_FRAG_TH_LEVEL()]
209
210 typedef struct {
211         u8 tx_rate;
212         u8 tx_retry_rate;
213 } TXRETRY_REC;
214
215 typedef struct _STATISTICS_INFO {
216         u32   Rate54M;
217         u32   Rate48M;
218         u32   Rate36M;
219         u32   Rate24M;
220         u32   Rate18M;
221         u32   Rate12M;
222         u32   Rate9M;
223         u32   Rate6M;
224         u32   Rate11MS;
225         u32   Rate11ML;
226         u32   Rate55MS;
227         u32   Rate55ML;
228         u32   Rate2MS;
229         u32   Rate2ML;
230         u32   Rate1M;
231         u32   Rate54MOK;
232         u32   Rate48MOK;
233         u32   Rate36MOK;
234         u32   Rate24MOK;
235         u32   Rate18MOK;
236         u32   Rate12MOK;
237         u32   Rate9MOK;
238         u32   Rate6MOK;
239         u32   Rate11MSOK;
240         u32   Rate11MLOK;
241         u32   Rate55MSOK;
242         u32   Rate55MLOK;
243         u32   Rate2MSOK;
244         u32   Rate2MLOK;
245         u32   Rate1MOK;
246         u32   SQ3;
247         s32   RSSIAVG;
248         s32   RSSIMAX;
249         s32   TXRATE;
250         s32   TxRetryRate;
251         s32   BSS_PK_CNT;
252         s32   NIDLESLOT;
253         s32   SLOT_CNT;
254         s32   INTERF_CNT;
255         s32   GAP_CNT;
256         s32   DS_EVM;
257         s32   RcvBeaconNum;
258         s32   RXRATE;
259         s32   RxBytes;
260         s32   TxBytes;
261         s32   Antenna;
262 } STATISTICS_INFO, *PSTATISTICS_INFO;
263
264 extern void MTO_Init(struct wbsoft_priv *);
265 extern void MTO_PeriodicTimerExpired(struct wbsoft_priv *);
266 extern void MTO_SetDTORateRange(struct wbsoft_priv *, u8 *, u8);
267 extern u8 MTO_GetTxRate(MTO_FUNC_INPUT, u32 fpdu_len);
268 extern u8 MTO_GetTxFallbackRate(MTO_FUNC_INPUT);
269 extern void MTO_SetTxCount(MTO_FUNC_INPUT, u8 t0, u8 index);
270
271 #endif //__MTO_H__
272
273