00dce0310b5d5ab147ba8c038011ccdfb2ac3dcf
[cascardo/linux.git] / drivers / staging / vt6655 / card.h
1 /*
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 #ifndef __CARD_H__
30 #define __CARD_H__
31
32 #include "ttype.h"
33
34 /*---------------------  Export Definitions -------------------------*/
35 //
36 // Loopback mode
37 //
38 // LOBYTE is MAC LB mode, HIBYTE is MII LB mode
39 #define CARD_LB_NONE            MAKEWORD(MAC_LB_NONE, 0)
40 #define CARD_LB_MAC             MAKEWORD(MAC_LB_INTERNAL, 0)   // PHY must ISO, avoid MAC loopback packet go out
41 #define CARD_LB_PHY             MAKEWORD(MAC_LB_EXT, 0)
42
43
44 #define DEFAULT_MSDU_LIFETIME           512  // ms
45 #define DEFAULT_MSDU_LIFETIME_RES_64us  8000 // 64us
46
47 #define DEFAULT_MGN_LIFETIME            8    // ms
48 #define DEFAULT_MGN_LIFETIME_RES_64us   125  // 64us
49
50 #define CB_MAX_CHANNEL_24G      14
51 #define CB_MAX_CHANNEL_5G       42 //[20050104] add channel9(5045MHz), 41==>42
52 #define CB_MAX_CHANNEL          (CB_MAX_CHANNEL_24G+CB_MAX_CHANNEL_5G)
53
54 typedef enum _CARD_PHY_TYPE {
55     PHY_TYPE_AUTO,
56     PHY_TYPE_11B,
57     PHY_TYPE_11G,
58     PHY_TYPE_11A
59 } CARD_PHY_TYPE, *PCARD_PHY_TYPE;
60
61 typedef enum _CARD_PKT_TYPE {
62     PKT_TYPE_802_11_BCN,
63     PKT_TYPE_802_11_MNG,
64     PKT_TYPE_802_11_DATA,
65     PKT_TYPE_802_11_ALL
66 } CARD_PKT_TYPE, *PCARD_PKT_TYPE;
67
68 typedef enum _CARD_STATUS_TYPE {
69     CARD_STATUS_MEDIA_CONNECT,
70     CARD_STATUS_MEDIA_DISCONNECT,
71     CARD_STATUS_PMKID
72 } CARD_STATUS_TYPE, *PCARD_STATUS_TYPE;
73
74 typedef enum _CARD_OP_MODE {
75     OP_MODE_INFRASTRUCTURE,
76     OP_MODE_ADHOC,
77     OP_MODE_AP,
78     OP_MODE_UNKNOWN
79 } CARD_OP_MODE, *PCARD_OP_MODE;
80
81
82
83 /*---------------------  Export Classes  ----------------------------*/
84
85 /*---------------------  Export Variables  --------------------------*/
86
87 /*---------------------  Export Functions  --------------------------*/
88
89 BOOL ChannelValid(UINT ChannelIndex);
90 void CARDvSetRSPINF(void *pDeviceHandler, CARD_PHY_TYPE ePHYType);
91 void vUpdateIFS(void *pDeviceHandler);
92 void CARDvUpdateBasicTopRate(void *pDeviceHandler);
93 BOOL CARDbAddBasicRate(void *pDeviceHandler, WORD wRateIdx);
94 BOOL CARDbIsOFDMinBasicRate(void *pDeviceHandler);
95 void CARDvSetLoopbackMode(DWORD_PTR dwIoBase, WORD wLoopbackMode);
96 BOOL CARDbSoftwareReset(void *pDeviceHandler);
97 void CARDvSetFirstNextTBTT(DWORD_PTR dwIoBase, WORD wBeaconInterval);
98 void CARDvUpdateNextTBTT(DWORD_PTR dwIoBase, QWORD qwTSF, WORD wBeaconInterval);
99 BOOL CARDbGetCurrentTSF(DWORD_PTR dwIoBase, PQWORD pqwCurrTSF);
100 QWORD CARDqGetNextTBTT(QWORD qwTSF, WORD wBeaconInterval);
101 QWORD CARDqGetTSFOffset(BYTE byRxRate, QWORD qwTSF1, QWORD qwTSF2);
102 BOOL CARDbSetTxPower(void *pDeviceHandler, ULONG ulTxPower);
103 BYTE CARDbyGetPktType(void *pDeviceHandler);
104 void CARDvSafeResetTx(void *pDeviceHandler);
105 void CARDvSafeResetRx(void *pDeviceHandler);
106
107 //xxx
108 BOOL CARDbRadioPowerOff(void *pDeviceHandler);
109 BOOL CARDbRadioPowerOn(void *pDeviceHandler);
110 BOOL CARDbSetChannel(void *pDeviceHandler, UINT uConnectionChannel);
111 //BOOL CARDbSendPacket(void *pDeviceHandler, void *pPacket, CARD_PKT_TYPE ePktType, UINT uLength);
112 BOOL CARDbIsShortPreamble(void *pDeviceHandler);
113 BOOL CARDbIsShorSlotTime(void *pDeviceHandler);
114 BOOL CARDbSetPhyParameter(void *pDeviceHandler, CARD_PHY_TYPE ePHYType, WORD wCapInfo, BYTE byERPField, void *pvSupportRateIEs, void *pvExtSupportRateIEs);
115 BOOL CARDbUpdateTSF(void *pDeviceHandler, BYTE byRxRate, QWORD qwBSSTimestamp, QWORD qwLocalTSF);
116 BOOL CARDbStopTxPacket(void *pDeviceHandler, CARD_PKT_TYPE ePktType);
117 BOOL CARDbStartTxPacket(void *pDeviceHandler, CARD_PKT_TYPE ePktType);
118 BOOL CARDbSetBeaconPeriod(void *pDeviceHandler, WORD wBeaconInterval);
119 BOOL CARDbSetBSSID(void *pDeviceHandler, PBYTE pbyBSSID, CARD_OP_MODE eOPMode);
120
121 BOOL
122 CARDbPowerDown(
123     void *pDeviceHandler
124     );
125
126 BOOL CARDbSetTxDataRate(
127     void *pDeviceHandler,
128     WORD    wDataRate
129     );
130
131
132 BOOL CARDbRemoveKey (void *pDeviceHandler, PBYTE pbyBSSID);
133
134 BOOL
135 CARDbAdd_PMKID_Candidate (
136     void *pDeviceHandler,
137     PBYTE            pbyBSSID,
138     BOOL             bRSNCapExist,
139     WORD             wRSNCap
140     );
141
142 void *
143 CARDpGetCurrentAddress (
144     void *pDeviceHandler
145     );
146
147
148 void CARDvInitChannelTable(void *pDeviceHandler);
149 BYTE CARDbyGetChannelMapping(void *pDeviceHandler, BYTE byChannelNumber, CARD_PHY_TYPE ePhyType);
150
151 BOOL
152 CARDbStartMeasure (
153     void *pDeviceHandler,
154     void *pvMeasureEIDs,
155     UINT             uNumOfMeasureEIDs
156     );
157
158 BOOL
159 CARDbChannelSwitch (
160     void *pDeviceHandler,
161     BYTE             byMode,
162     BYTE             byNewChannel,
163     BYTE             byCount
164     );
165
166 BOOL
167 CARDbSetQuiet (
168     void *pDeviceHandler,
169     BOOL             bResetQuiet,
170     BYTE             byQuietCount,
171     BYTE             byQuietPeriod,
172     WORD             wQuietDuration,
173     WORD             wQuietOffset
174     );
175
176 BOOL
177 CARDbStartQuiet (
178     void *pDeviceHandler
179     );
180
181 void
182 CARDvSetCountryInfo (
183     void *pDeviceHandler,
184     CARD_PHY_TYPE    ePHYType,
185     void *pIE
186     );
187
188 void
189 CARDvSetPowerConstraint (
190     void *pDeviceHandler,
191     BYTE             byChannel,
192     char byPower
193     );
194
195 void
196 CARDvGetPowerCapability (
197     void *pDeviceHandler,
198     PBYTE           pbyMinPower,
199     PBYTE           pbyMaxPower
200     );
201
202 BYTE
203 CARDbySetSupportChannels (
204     void *pDeviceHandler,
205     PBYTE        pbyIEs
206     );
207
208 char
209 CARDbyGetTransmitPower (
210     void *pDeviceHandler
211     );
212
213 BOOL
214 CARDbChannelGetList (
215      UINT       uCountryCodeIdx,
216     PBYTE      pbyChannelTable
217     );
218
219 void
220 CARDvSetCountryIE(
221     void *pDeviceHandler,
222     void *pIE
223     );
224
225 BOOL
226 CARDbGetChannelMapInfo(
227     void *pDeviceHandler,
228     UINT         uChannelIndex,
229     PBYTE       pbyChannelNumber,
230     PBYTE       pbyMap
231     );
232
233 void
234 CARDvSetChannelMapInfo(
235     void *pDeviceHandler,
236     UINT         uChannelIndex,
237     BYTE         byMap
238     );
239
240 void
241 CARDvClearChannelMapInfo(
242     void *pDeviceHandler
243     );
244
245 BYTE
246 CARDbyAutoChannelSelect(
247     void *pDeviceHandler,
248     CARD_PHY_TYPE   ePHYType
249     );
250
251 BYTE CARDbyGetChannelNumber(void *pDeviceHandler, BYTE byChannelIndex);
252
253 #endif // __CARD_H__
254
255
256