• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/staging/rt2860/
1/*
2 *************************************************************************
3 * Ralink Tech Inc.
4 * 5F., No.36, Taiyuan St., Jhubei City,
5 * Hsinchu County 302,
6 * Taiwan, R.O.C.
7 *
8 * (c) Copyright 2002-2007, Ralink Technology, Inc.
9 *
10 * This program is free software; you can redistribute it and/or modify  *
11 * it under the terms of the GNU General Public License as published by  *
12 * the Free Software Foundation; either version 2 of the License, or     *
13 * (at your option) any later version.                                   *
14 *                                                                       *
15 * This program is distributed in the hope that it will be useful,       *
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of        *
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
18 * GNU General Public License for more details.                          *
19 *                                                                       *
20 * You should have received a copy of the GNU General Public License     *
21 * along with this program; if not, write to the                         *
22 * Free Software Foundation, Inc.,                                       *
23 * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
24 *                                                                       *
25 *************************************************************************
26
27	Module Name:
28	chlist.c
29
30	Abstract:
31
32	Revision History:
33	Who         When          What
34	--------    ----------    ----------------------------------------------
35	Fonchi Wu   2007-12-19    created
36*/
37
38#ifndef __CHLIST_H__
39#define __CHLIST_H__
40
41#include "rtmp_type.h"
42#include "rtmp_def.h"
43
44#define ODOR			0
45#define IDOR			1
46#define BOTH			2
47
48#define BAND_5G         0
49#define BAND_24G        1
50#define BAND_BOTH       2
51
52struct rt_ch_desp {
53	u8 FirstChannel;
54	u8 NumOfCh;
55	char MaxTxPwr;		/* dBm */
56	u8 Geography;	/* 0:out door, 1:in door, 2:both */
57	BOOLEAN DfsReq;		/* Dfs require, 0: No, 1: yes. */
58};
59
60struct rt_ch_region {
61	u8 CountReg[3];
62	u8 DfsType;		/* 0: CE, 1: FCC, 2: JAP, 3:JAP_W53, JAP_W56 */
63	struct rt_ch_desp ChDesp[10];
64};
65
66extern struct rt_ch_region ChRegion[];
67
68struct rt_ch_freq_map {
69	u16 channel;
70	u16 freqKHz;
71};
72
73extern struct rt_ch_freq_map CH_HZ_ID_MAP[];
74extern int CH_HZ_ID_MAP_NUM;
75
76#define     MAP_CHANNEL_ID_TO_KHZ(_ch, _khz)		\
77		do {							\
78			int _chIdx;					\
79			for (_chIdx = 0; _chIdx < CH_HZ_ID_MAP_NUM; _chIdx++) {\
80				if ((_ch) == CH_HZ_ID_MAP[_chIdx].channel) { \
81					(_khz) = CH_HZ_ID_MAP[_chIdx].freqKHz * 1000;\
82					break;				\
83				}					\
84			}						\
85			if (_chIdx == CH_HZ_ID_MAP_NUM)	\
86				(_khz) = 2412000;		\
87		} while (0)
88
89#define     MAP_KHZ_TO_CHANNEL_ID(_khz, _ch)                 \
90		do {							\
91			int _chIdx;				\
92			for (_chIdx = 0; _chIdx < CH_HZ_ID_MAP_NUM; _chIdx++) {\
93				if ((_khz) == CH_HZ_ID_MAP[_chIdx].freqKHz) {\
94					(_ch) = CH_HZ_ID_MAP[_chIdx].channel; \
95					break;			\
96				}					\
97			}						\
98			if (_chIdx == CH_HZ_ID_MAP_NUM)			\
99				(_ch) = 1;				\
100		} while (0)
101
102void BuildChannelListEx(struct rt_rtmp_adapter *pAd);
103
104void BuildBeaconChList(struct rt_rtmp_adapter *pAd,
105		       u8 *pBuf, unsigned long *pBufLen);
106
107void N_ChannelCheck(struct rt_rtmp_adapter *pAd);
108
109void N_SetCenCh(struct rt_rtmp_adapter *pAd);
110
111u8 GetCuntryMaxTxPwr(struct rt_rtmp_adapter *pAd, u8 channel);
112
113#endif /* __CHLIST_H__ */
114