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