1 #ifndef __WINBOND_LOCALPARA_H
2 #define __WINBOND_LOCALPARA_H
3 
4 /*
5  * =============================================================
6  * LocalPara.h -
7  * =============================================================
8  */
9 
10 #include "mac_structures.h"
11 
12 /* Define the local ability */
13 
14 #define LOCAL_DEFAULT_BEACON_PERIOD	100	/* ms */
15 #define LOCAL_DEFAULT_ATIM_WINDOW	0
16 #define LOCAL_DEFAULT_ERP_CAPABILITY	0x0431	/*
17 						 * 0x0001: ESS
18 						 * 0x0010: Privacy
19 						 * 0x0020: short preamble
20 						 * 0x0400: short slot time
21 						 */
22 #define LOCAL_DEFAULT_LISTEN_INTERVAL	5
23 
24 #define LOCAL_DEFAULT_24_CHANNEL_NUM	13	/* channel 1..13 */
25 #define LOCAL_DEFAULT_5_CHANNEL_NUM	8	/* channel 36..64 */
26 
27 #define LOCAL_USA_24_CHANNEL_NUM	11
28 #define LOCAL_USA_5_CHANNEL_NUM		12
29 #define LOCAL_EUROPE_24_CHANNEL_NUM	13
30 #define LOCAL_EUROPE_5_CHANNEL_NUM	19
31 #define LOCAL_JAPAN_24_CHANNEL_NUM	14
32 #define LOCAL_JAPAN_5_CHANNEL_NUM	11
33 #define LOCAL_UNKNOWN_24_CHANNEL_NUM	14
34 #define LOCAL_UNKNOWN_5_CHANNEL_NUM	34	/* not include 165 */
35 
36 #define psLOCAL				(&(adapter->sLocalPara))
37 
38 #define MODE_802_11_BG			0
39 #define MODE_802_11_A			1
40 #define MODE_802_11_ABG			2
41 #define MODE_802_11_BG_IBSS		3
42 #define MODE_802_11_B			4
43 #define MODE_AUTO			255
44 
45 #define BAND_TYPE_DSSS			0
46 #define BAND_TYPE_OFDM_24		1
47 #define BAND_TYPE_OFDM_5		2
48 
49 /* refer Bitmap2RateValue table */
50 
51 /* the bitmap value of all the H/W supported rates: */
52 /* 1, 2, 5.5, 11, 6, 9, 12, 18, 24, 36, 48, 54 */
53 #define LOCAL_ALL_SUPPORTED_RATES_BITMAP	0x130c1a66
54 /* the bitmap value of all the H/W supported rates except to non-OFDM rates: */
55 /* 6, 9, 12, 18, 24, 36, 48, 54 */
56 #define LOCAL_OFDM_SUPPORTED_RATES_BITMAP	0x130c1240
57 #define LOCAL_11B_SUPPORTED_RATE_BITMAP		0x826
58 #define LOCAL_11B_BASIC_RATE_BITMAP		0x826
59 #define LOCAL_11B_OPERATION_RATE_BITMAP		0x826
60 #define LOCAL_11G_BASIC_RATE_BITMAP		0x826	   /* 1, 2, 5.5, 11 */
61 #define LOCAL_11G_OPERATION_RATE_BITMAP		0x130c1240 /* 6, 9, 12, 18, 24, 36, 48, 54 */
62 #define LOCAL_11A_BASIC_RATE_BITMAP		0x01001040 /* 6, 12, 24 */
63 #define LOCAL_11A_OPERATION_RATE_BITMAP		0x120c0200 /* 9, 18, 36, 48, 54 */
64 
65 
66 #define PWR_ACTIVE				0
67 #define PWR_SAVE				1
68 #define PWR_TX_IDLE_CYCLE			6
69 
70 /* bPreambleMode and bSlotTimeMode */
71 #define AUTO_MODE				0
72 #define LONG_MODE				1
73 
74 /* Region definition */
75 #define REGION_AUTO				0xff
76 #define REGION_UNKNOWN				0
77 #define REGION_EUROPE				1	/* ETSI */
78 #define REGION_JAPAN				2	/* MKK */
79 #define REGION_USA				3	/* FCC */
80 #define	REGION_FRANCE				4	/* FRANCE */
81 #define REGION_SPAIN				5	/* SPAIN */
82 #define REGION_ISRAEL				6	/* ISRAEL */
83 
84 #define MAX_BSS_DESCRIPT_ELEMENT		32
85 #define MAX_PMKID_CandidateList			16
86 
87 /*
88  * High byte : Event number,  low byte : reason
89  * Event definition
90  * -- SME/MLME event
91  */
92 #define EVENT_RCV_DEAUTH			0x0100
93 #define EVENT_JOIN_FAIL				0x0200
94 #define EVENT_AUTH_FAIL				0x0300
95 #define EVENT_ASSOC_FAIL			0x0400
96 #define EVENT_LOST_SIGNAL			0x0500
97 #define EVENT_BSS_DESCRIPT_LACK			0x0600
98 #define EVENT_COUNTERMEASURE			0x0700
99 #define EVENT_JOIN_FILTER			0x0800
100 /* -- TX/RX event */
101 #define EVENT_RX_BUFF_UNAVAILABLE		0x4100
102 
103 #define EVENT_CONNECT				0x8100
104 #define EVENT_DISCONNECT			0x8200
105 #define EVENT_SCAN_REQ				0x8300
106 
107 /* Reason of Event */
108 #define EVENT_REASON_FILTER_BASIC_RATE		0x0001
109 #define EVENT_REASON_FILTER_PRIVACY		0x0002
110 #define EVENT_REASON_FILTER_AUTH_MODE		0x0003
111 #define EVENT_REASON_TIMEOUT			0x00ff
112 
113 /* Due to[E id][Length][OUI][Data] may be 257 bytes */
114 #define MAX_IE_APPEND_SIZE			(256 + 4)
115 
116 struct chan_info {
117 	u8	band;
118 	u8	ChanNo;
119 };
120 
121 struct radio_off {
122 	u8	boHwRadioOff;
123 	u8	boSwRadioOff;
124 };
125 
126 struct wb_local_para {
127 	/* read from EPROM, manufacture set for each NetCard */
128 	u8	PermanentAddress[MAC_ADDR_LENGTH + 2];
129 	/* the driver will use this one actually. */
130 	u8	ThisMacAddress[MAC_ADDR_LENGTH + 2];
131 	u32	MTUsize;	/* Ind to Uplayer, Max transmission unit size */
132 	u8	region_INF;	/* region setting from INF */
133 	u8	region;		/* real region setting of the device */
134 	u8	Reserved_1[2];
135 
136 	/* power-save variables */
137 	u8	iPowerSaveMode; /* 0 indicates on, 1 indicates off */
138 	u8	ATIMmode;
139 	u8	ExcludeUnencrypted;
140 	/* Unit ime count for the decision to enter PS mode */
141 	u16	CheckCountForPS;
142 	u8	boHasTxActivity;/* tx activity has occurred */
143 	u8	boMacPsValid;	/* Power save mode obtained from H/W is valid or not */
144 
145 	/* Rate */
146 	u8	TxRateMode; /*
147 			     * Initial, input from Registry,
148 			     * may be updated by GUI
149 			     * Tx Rate Mode: auto(DTO on), max, 1M, 2M, ..
150 			     */
151 	u8	CurrentTxRate;		/* The current Tx rate */
152 	u8	CurrentTxRateForMng;	/*
153 					 * The current Tx rate for management
154 					 * frames. It will be decided before
155 					 * connection succeeds.
156 					 */
157 	u8	CurrentTxFallbackRate;
158 
159 	/* for Rate handler */
160 	u8	BRateSet[32];		/* basic rate set */
161 	u8	SRateSet[32];		/* support rate set */
162 
163 	u8	NumOfBRate;
164 	u8	NumOfSRate;
165 	u8	NumOfDsssRateInSRate;	/* number of DSSS rates in supported rate set */
166 	u8	reserved1;
167 
168 	u32	dwBasicRateBitmap;	/* bit map of basic rates */
169 
170 	u32	dwSupportRateBitmap;	/* bit map of all support rates including basic and operational rates */
171 
172 
173 	/* For SME/MLME handler */
174 
175 	u16	wOldSTAindex;		/* valid when boHandover=TRUE, store old connected STA index */
176 	u16	wConnectedSTAindex;	/* Index of peerly connected AP or IBSS in the descriptionset. */
177 	u16	Association_ID;		/* The Association ID in the (Re)Association Response frame. */
178 	u16	ListenInterval;		/* The listen interval when SME invoking MLME_ (Re)Associate_Request(). */
179 
180 	struct	radio_off RadioOffStatus;
181 	u8	Reserved0[2];
182 	u8	boMsRadioOff;		/* Ndis demands to be true when set Disassoc. OID and be false when set SSID OID. */
183 	u8	bAntennaNo;		/* which antenna */
184 	u8	bConnectFlag;		/* the connect status flag for roaming task */
185 
186 	u8	RoamStatus;
187 	u8	reserved7[3];
188 
189 	struct	chan_info CurrentChan;	/* Current channel no. and channel band. It may be changed by scanning. */
190 	u8	boHandover;		/* Roaming, Hnadover to other AP. */
191 	u8	boCCAbusy;
192 
193 	u16	CWMax;			/* It may not be the real value that H/W used */
194 	u8	CWMin;			/* 255: set according to 802.11 spec. */
195 	u8	reserved2;
196 
197 	/* 11G: */
198 	u8	bMacOperationMode;	/* operation in 802.11b or 802.11g */
199 	u8	bSlotTimeMode;		/* AUTO, s32 */
200 	u8	bPreambleMode;		/* AUTO, s32 */
201 	u8	boNonERPpresent;
202 
203 	u8	boProtectMechanism;	/* H/W will take the necessary action based on this variable */
204 	u8	boShortPreamble;	/* Same here */
205 	u8	boShortSlotTime;	/* Same here */
206 	u8	reserved_3;
207 
208 	u32	RSN_IE_Bitmap;
209 	u32	RSN_OUI_Type;
210 
211 	/* For the BSSID */
212 	u8	HwBssid[MAC_ADDR_LENGTH + 2];
213 	u32	HwBssidValid;
214 
215 	/* For scan list */
216 	u8	BssListCount;		/* Total count of valid descriptor indexes */
217 	u8	boReceiveUncorrectInfo;	/* important settings in beacon/probe resp. have been changed */
218 	u8	NoOfJoinerInIbss;
219 	u8	reserved_4;
220 
221 	/* Store the valid descriptor indexes obtained from scannings */
222 	u8	BssListIndex[(MAX_BSS_DESCRIPT_ELEMENT + 3) & ~0x03];
223 	/*
224 	 * Save the BssDescriptor index in this IBSS.
225 	 * The index 0 is local descriptor (psLOCAL->wConnectedSTAindex).
226 	 * If CONNECTED : NoOfJoinerInIbss >= 2
227 	 * else		: NoOfJoinerInIbss <= 1
228 	 */
229 	u8	JoinerInIbss[(MAX_BSS_DESCRIPT_ELEMENT + 3) & ~0x03];
230 
231 	/* General Statistics, count at Rx_handler or Tx_callback interrupt handler */
232 	u64	GS_XMIT_OK;		/* Good Frames Transmitted */
233 	u64	GS_RCV_OK;		/* Good Frames Received */
234 	u32	GS_RCV_ERROR;		/* Frames received with crc error */
235 	u32	GS_XMIT_ERROR;		/* Bad Frames Transmitted */
236 	u32	GS_RCV_NO_BUFFER;	/* Receive Buffer underrun */
237 	u32	GS_XMIT_ONE_COLLISION;	/* one collision */
238 	u32	GS_XMIT_MORE_COLLISIONS;/* more collisions */
239 
240 	/*
241 	 * ================================================================
242 	 * Statistics (no matter whether it had done successfully) -wkchen
243 	 * ================================================================
244 	 */
245 	u32	_NumRxMSDU;
246 	u32	_NumTxMSDU;
247 	u32	_dot11WEPExcludedCount;
248 	u32	_dot11WEPUndecryptableCount;
249 	u32	_dot11FrameDuplicateCount;
250 
251 	struct	chan_info IbssChanSetting;	/* 2B. Start IBSS Channel setting by registry or WWU. */
252 	u8	reserved_5[2];		/* It may not be used after considering RF type, region and modulation type. */
253 
254 	u8	reserved_6[2];		/* two variables are for wep key error detection */
255 	u32	bWepKeyError;
256 	u32	bToSelfPacketReceived;
257 	u32	WepKeyDetectTimerCount;
258 
259 	u16	SignalLostTh;
260 	u16	SignalRoamTh;
261 
262 	u8		IE_Append_data[MAX_IE_APPEND_SIZE];
263 	u16		IE_Append_size;
264 	u16		reserved_7;
265 };
266 
267 #endif
268