blob: bb292e14b0b355c075320b55b97b509dd8b0d52e [file] [log] [blame]
Forest Bond5449c682009-04-25 10:30:44 -04001/*
2 * Copyright (c) 1996, 2003 VIA Networking Technologies, Inc.
3 * All rights reserved.
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * File: card.h
20 *
21 * Purpose: Provide functions to setup NIC operation mode
22 *
23 * Author: Tevin Chen
24 *
25 * Date: May 21, 1996
26 *
27 */
28
29
30#ifndef __CARD_H__
31#define __CARD_H__
32
33//#if !defined(__DEVICE_H__)
34//#include "device.h"
35//#endif
36#if !defined(__TTYPE_H__)
37#include "ttype.h"
38#endif
39
40
41
42
43/*--------------------- Export Definitions -------------------------*/
44//
45// Loopback mode
46//
47// LOBYTE is MAC LB mode, HIBYTE is MII LB mode
48#define CARD_LB_NONE MAKEWORD(MAC_LB_NONE, 0)
49#define CARD_LB_MAC MAKEWORD(MAC_LB_INTERNAL, 0) // PHY must ISO, avoid MAC loopback packet go out
50#define CARD_LB_PHY MAKEWORD(MAC_LB_EXT, 0)
51
52
53#define DEFAULT_MSDU_LIFETIME 512 // ms
54#define DEFAULT_MSDU_LIFETIME_RES_64us 8000 // 64us
55
56#define DEFAULT_MGN_LIFETIME 8 // ms
57#define DEFAULT_MGN_LIFETIME_RES_64us 125 // 64us
58
59#define CB_MAX_CHANNEL_24G 14
60#define CB_MAX_CHANNEL_5G 42 //[20050104] add channel9(5045MHz), 41==>42
61#define CB_MAX_CHANNEL (CB_MAX_CHANNEL_24G+CB_MAX_CHANNEL_5G)
62
63typedef enum _CARD_PHY_TYPE {
64 PHY_TYPE_AUTO,
65 PHY_TYPE_11B,
66 PHY_TYPE_11G,
67 PHY_TYPE_11A
68} CARD_PHY_TYPE, *PCARD_PHY_TYPE;
69
70typedef enum _CARD_PKT_TYPE {
71 PKT_TYPE_802_11_BCN,
72 PKT_TYPE_802_11_MNG,
73 PKT_TYPE_802_11_DATA,
74 PKT_TYPE_802_11_ALL
75} CARD_PKT_TYPE, *PCARD_PKT_TYPE;
76
77typedef enum _CARD_STATUS_TYPE {
78 CARD_STATUS_MEDIA_CONNECT,
79 CARD_STATUS_MEDIA_DISCONNECT,
80 CARD_STATUS_PMKID
81} CARD_STATUS_TYPE, *PCARD_STATUS_TYPE;
82
83typedef enum _CARD_OP_MODE {
84 OP_MODE_INFRASTRUCTURE,
85 OP_MODE_ADHOC,
86 OP_MODE_AP,
87 OP_MODE_UNKNOWN
88} CARD_OP_MODE, *PCARD_OP_MODE;
89
90
91
92/*--------------------- Export Classes ----------------------------*/
93
94/*--------------------- Export Variables --------------------------*/
95
96/*--------------------- Export Functions --------------------------*/
97#ifdef __cplusplus
98extern "C" { /* Assume C declarations for C++ */
99#endif /* __cplusplus */
100
101BOOL ChannelValid(UINT CountryCode, UINT ChannelIndex);
102void CARDvSetRSPINF(PVOID pDeviceHandler, CARD_PHY_TYPE ePHYType);
103void vUpdateIFS(PVOID pDeviceHandler);
104void CARDvUpdateBasicTopRate(PVOID pDeviceHandler);
105BOOL CARDbAddBasicRate(PVOID pDeviceHandler, WORD wRateIdx);
106BOOL CARDbIsOFDMinBasicRate(PVOID pDeviceHandler);
107void CARDvSetLoopbackMode(DWORD_PTR dwIoBase, WORD wLoopbackMode);
108BOOL CARDbSoftwareReset(PVOID pDeviceHandler);
109void CARDvSetFirstNextTBTT(DWORD_PTR dwIoBase, WORD wBeaconInterval);
110void CARDvUpdateNextTBTT(DWORD_PTR dwIoBase, QWORD qwTSF, WORD wBeaconInterval);
111BOOL CARDbGetCurrentTSF(DWORD_PTR dwIoBase, PQWORD pqwCurrTSF);
112QWORD CARDqGetNextTBTT(QWORD qwTSF, WORD wBeaconInterval);
113QWORD CARDqGetTSFOffset(BYTE byRxRate, QWORD qwTSF1, QWORD qwTSF2);
114BOOL CARDbSetTxPower(PVOID pDeviceHandler, ULONG ulTxPower);
115BYTE CARDbyGetPktType(PVOID pDeviceHandler);
116VOID CARDvSafeResetTx(PVOID pDeviceHandler);
117VOID CARDvSafeResetRx(PVOID pDeviceHandler);
118
119//xxx
120BOOL CARDbRadioPowerOff(PVOID pDeviceHandler);
121BOOL CARDbRadioPowerOn(PVOID pDeviceHandler);
122BOOL CARDbSetChannel(PVOID pDeviceHandler, UINT uConnectionChannel);
123//BOOL CARDbSendPacket(PVOID pDeviceHandler, PVOID pPacket, CARD_PKT_TYPE ePktType, UINT uLength);
124BOOL CARDbIsShortPreamble(PVOID pDeviceHandler);
125BOOL CARDbIsShorSlotTime(PVOID pDeviceHandler);
126BOOL CARDbSetPhyParameter(PVOID pDeviceHandler, CARD_PHY_TYPE ePHYType, WORD wCapInfo, BYTE byERPField, PVOID pvSupportRateIEs, PVOID pvExtSupportRateIEs);
127BOOL CARDbUpdateTSF(PVOID pDeviceHandler, BYTE byRxRate, QWORD qwBSSTimestamp, QWORD qwLocalTSF);
128BOOL CARDbStopTxPacket(PVOID pDeviceHandler, CARD_PKT_TYPE ePktType);
129BOOL CARDbStartTxPacket(PVOID pDeviceHandler, CARD_PKT_TYPE ePktType);
130BOOL CARDbSetBeaconPeriod(PVOID pDeviceHandler, WORD wBeaconInterval);
131BOOL CARDbSetBSSID(PVOID pDeviceHandler, PBYTE pbyBSSID, CARD_OP_MODE eOPMode);
132
133BOOL
134CARDbPowerDown(
135 PVOID pDeviceHandler
136 );
137
138BOOL CARDbSetTxDataRate(
139 PVOID pDeviceHandler,
140 WORD wDataRate
141 );
142
143
144BOOL CARDbRemoveKey (PVOID pDeviceHandler, PBYTE pbyBSSID);
145
146BOOL
147CARDbAdd_PMKID_Candidate (
148 IN PVOID pDeviceHandler,
149 IN PBYTE pbyBSSID,
150 IN BOOL bRSNCapExist,
151 IN WORD wRSNCap
152 );
153
154PVOID
155CARDpGetCurrentAddress (
156 IN PVOID pDeviceHandler
157 );
158
159
160VOID CARDvInitChannelTable(PVOID pDeviceHandler);
161BYTE CARDbyGetChannelMapping(PVOID pDeviceHandler, BYTE byChannelNumber, CARD_PHY_TYPE ePhyType);
162
163BOOL
164CARDbStartMeasure (
165 IN PVOID pDeviceHandler,
166 IN PVOID pvMeasureEIDs,
167 IN UINT uNumOfMeasureEIDs
168 );
169
170BOOL
171CARDbChannelSwitch (
172 IN PVOID pDeviceHandler,
173 IN BYTE byMode,
174 IN BYTE byNewChannel,
175 IN BYTE byCount
176 );
177
178BOOL
179CARDbSetQuiet (
180 IN PVOID pDeviceHandler,
181 IN BOOL bResetQuiet,
182 IN BYTE byQuietCount,
183 IN BYTE byQuietPeriod,
184 IN WORD wQuietDuration,
185 IN WORD wQuietOffset
186 );
187
188BOOL
189CARDbStartQuiet (
190 IN PVOID pDeviceHandler
191 );
192
193VOID
194CARDvSetCountryInfo (
195 IN PVOID pDeviceHandler,
196 IN CARD_PHY_TYPE ePHYType,
197 IN PVOID pIE
198 );
199
200VOID
201CARDvSetPowerConstraint (
202 IN PVOID pDeviceHandler,
203 IN BYTE byChannel,
204 IN I8 byPower
205 );
206
207VOID
208CARDvGetPowerCapability (
209 IN PVOID pDeviceHandler,
210 OUT PBYTE pbyMinPower,
211 OUT PBYTE pbyMaxPower
212 );
213
214BYTE
215CARDbySetSupportChannels (
216 IN PVOID pDeviceHandler,
217 IN OUT PBYTE pbyIEs
218 );
219
220I8
221CARDbyGetTransmitPower (
222 IN PVOID pDeviceHandler
223 );
224
225BOOL
226CARDbChannelGetList (
227 IN UINT uCountryCodeIdx,
228 OUT PBYTE pbyChannelTable
229 );
230
231VOID
232CARDvSetCountryIE(
233 IN PVOID pDeviceHandler,
234 IN PVOID pIE
235 );
236
237BOOL
238CARDbGetChannelMapInfo(
239 IN PVOID pDeviceHandler,
240 IN UINT uChannelIndex,
241 OUT PBYTE pbyChannelNumber,
242 OUT PBYTE pbyMap
243 );
244
245VOID
246CARDvSetChannelMapInfo(
247 IN PVOID pDeviceHandler,
248 IN UINT uChannelIndex,
249 IN BYTE byMap
250 );
251
252VOID
253CARDvClearChannelMapInfo(
254 IN PVOID pDeviceHandler
255 );
256
257BYTE
258CARDbyAutoChannelSelect(
259 IN PVOID pDeviceHandler,
260 CARD_PHY_TYPE ePHYType
261 );
262
263BYTE CARDbyGetChannelNumber(PVOID pDeviceHandler, BYTE byChannelIndex);
264
265#ifdef __cplusplus
266} /* End of extern "C" { */
267#endif /* __cplusplus */
268
269
270#endif // __CARD_H__
271
272
273