blob: c3017a74fa0f8695b5a83d84188aea0f9a9c649c [file] [log] [blame]
Forest Bond92b96792009-06-13 07:38:31 -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
Forest Bond92b96792009-06-13 07:38:31 -040029#ifndef __CARD_H__
30#define __CARD_H__
Malcolm Priestleydd0a7742012-12-10 21:59:10 +000031#include "device.h"
Forest Bond92b96792009-06-13 07:38:31 -040032
Andres More6593dfa2010-05-11 17:29:43 -030033/* init card type */
Forest Bond92b96792009-06-13 07:38:31 -040034
35typedef enum _CARD_PHY_TYPE {
Andres More6593dfa2010-05-11 17:29:43 -030036 PHY_TYPE_AUTO = 0,
Forest Bond92b96792009-06-13 07:38:31 -040037 PHY_TYPE_11B,
38 PHY_TYPE_11G,
39 PHY_TYPE_11A
Jim Lieb193a8232009-08-12 14:54:06 -070040} CARD_PHY_TYPE, *PCARD_PHY_TYPE;
Forest Bond92b96792009-06-13 07:38:31 -040041
42typedef enum _CARD_OP_MODE {
Andres More6593dfa2010-05-11 17:29:43 -030043 OP_MODE_INFRASTRUCTURE = 0,
Forest Bond92b96792009-06-13 07:38:31 -040044 OP_MODE_ADHOC,
45 OP_MODE_AP,
46 OP_MODE_UNKNOWN
47} CARD_OP_MODE, *PCARD_OP_MODE;
48
49#define CB_MAX_CHANNEL_24G 14
Andres More6593dfa2010-05-11 17:29:43 -030050#define CB_MAX_CHANNEL_5G 42 /* add channel9(5045MHz), 41==>42 */
Forest Bond92b96792009-06-13 07:38:31 -040051#define CB_MAX_CHANNEL (CB_MAX_CHANNEL_24G+CB_MAX_CHANNEL_5G)
52
Malcolm Priestleydd0a7742012-12-10 21:59:10 +000053struct vnt_private;
Forest Bond92b96792009-06-13 07:38:31 -040054
Malcolm Priestleydd0a7742012-12-10 21:59:10 +000055void CARDbSetMediaChannel(struct vnt_private *pDevice, u32 uConnectionChannel);
56void CARDvSetRSPINF(struct vnt_private *pDevice, u8 byBBType);
57void vUpdateIFS(struct vnt_private *pDevice);
58void CARDvUpdateBasicTopRate(struct vnt_private *pDevice);
59void CARDbAddBasicRate(struct vnt_private *pDevice, u16 wRateIdx);
60int CARDbIsOFDMinBasicRate(struct vnt_private *pDevice);
61void CARDvAdjustTSF(struct vnt_private *pDevice, u8 byRxRate,
Malcolm Priestley7c65fa22012-11-28 21:11:02 +000062 u64 qwBSSTimestamp, u64 qwLocalTSF);
Andres Moredfdcc422013-02-12 20:36:28 -050063bool CARDbGetCurrentTSF(struct vnt_private *pDevice, u64 *pqwCurrTSF);
64bool CARDbClearCurrentTSF(struct vnt_private *pDevice);
Andres More3eaca0d2013-02-25 20:32:52 -050065void CARDvSetFirstNextTBTT(struct vnt_private *pDevice, u16 wBeaconInterval);
Malcolm Priestleydd0a7742012-12-10 21:59:10 +000066void CARDvUpdateNextTBTT(struct vnt_private *pDevice, u64 qwTSF,
Andres More3eaca0d2013-02-25 20:32:52 -050067 u16 wBeaconInterval);
68u64 CARDqGetNextTBTT(u64 qwTSF, u16 wBeaconInterval);
Andres Moreb902fbf2013-02-25 20:32:51 -050069u64 CARDqGetTSFOffset(u8 byRxRate, u64 qwTSF1, u64 qwTSF2);
Malcolm Priestleydd0a7742012-12-10 21:59:10 +000070int CARDbRadioPowerOff(struct vnt_private *pDevice);
71int CARDbRadioPowerOn(struct vnt_private *pDevice);
72u8 CARDbyGetPktType(struct vnt_private *pDevice);
73void CARDvSetBSSMode(struct vnt_private *pDevice);
Forest Bond92b96792009-06-13 07:38:31 -040074
Andres Moree7b07d12010-05-01 19:12:26 -030075#endif /* __CARD_H__ */