3a32ed12b6
Signed-off-by: Bartlomiej Zolnierkiewicz <bzolnier@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
1251 lines
27 KiB
C
1251 lines
27 KiB
C
/*
|
|
*************************************************************************
|
|
* Ralink Tech Inc.
|
|
* 5F., No.36, Taiyuan St., Jhubei City,
|
|
* Hsinchu County 302,
|
|
* Taiwan, R.O.C.
|
|
*
|
|
* (c) Copyright 2002-2007, Ralink Technology, Inc.
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
* This program is distributed in the hope that it will be useful, *
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
|
|
* GNU General Public License for more details. *
|
|
* *
|
|
* You should have received a copy of the GNU General Public License *
|
|
* along with this program; if not, write to the *
|
|
* Free Software Foundation, Inc., *
|
|
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
|
|
* *
|
|
*************************************************************************
|
|
|
|
Module Name:
|
|
chlist.c
|
|
|
|
Abstract:
|
|
|
|
Revision History:
|
|
Who When What
|
|
-------- ---------- ----------------------------------------------
|
|
Fonchi Wu 2007-12-19 created
|
|
*/
|
|
|
|
#ifndef __CHLIST_H__
|
|
#define __CHLIST_H__
|
|
|
|
#include "rtmp_type.h"
|
|
#include "rtmp_def.h"
|
|
|
|
|
|
#define ODOR 0
|
|
#define IDOR 1
|
|
#define BOTH 2
|
|
|
|
#define BAND_5G 0
|
|
#define BAND_24G 1
|
|
#define BAND_BOTH 2
|
|
|
|
typedef struct _CH_DESP {
|
|
UCHAR FirstChannel;
|
|
UCHAR NumOfCh;
|
|
CHAR MaxTxPwr; // dBm
|
|
UCHAR Geography; // 0:out door, 1:in door, 2:both
|
|
BOOLEAN DfsReq; // Dfs require, 0: No, 1: yes.
|
|
} CH_DESP, *PCH_DESP;
|
|
|
|
typedef struct _CH_REGION {
|
|
UCHAR CountReg[3];
|
|
UCHAR DfsType; // 0: CE, 1: FCC, 2: JAP, 3:JAP_W53, JAP_W56
|
|
CH_DESP ChDesp[10];
|
|
} CH_REGION, *PCH_REGION;
|
|
|
|
static CH_REGION ChRegion[] =
|
|
{
|
|
{ // Antigua and Berbuda
|
|
"AG",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Argentina
|
|
"AR",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 30, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Aruba
|
|
"AW",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Australia
|
|
"AU",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 5, 30, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Austria
|
|
"AT",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, TRUE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Bahamas
|
|
"BS",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 5, 30, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Barbados
|
|
"BB",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Bermuda
|
|
"BM",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Brazil
|
|
"BR",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 24, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 149, 5, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Belgium
|
|
"BE",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 18, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 18, IDOR, FALSE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Bulgaria
|
|
"BG",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, ODOR, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Canada
|
|
"CA",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 5, 30, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Cayman IsLands
|
|
"KY",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Chile
|
|
"CL",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 20, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 20, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 5, 20, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // China
|
|
"CN",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 149, 4, 27, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Colombia
|
|
"CO",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 17, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 149, 5, 30, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Costa Rica
|
|
"CR",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 17, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 30, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Cyprus
|
|
"CY",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Czech_Republic
|
|
"CZ",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Denmark
|
|
"DK",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Dominican Republic
|
|
"DO",
|
|
CE,
|
|
{
|
|
{ 1, 0, 20, BOTH, FALSE}, // 2.4 G, ch 0
|
|
{ 149, 4, 20, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Equador
|
|
"EC",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 100, 11, 27, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // El Salvador
|
|
"SV",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 30, BOTH, TRUE}, // 5G, ch 52~64
|
|
{ 149, 4, 36, BOTH, TRUE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Finland
|
|
"FI",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // France
|
|
"FR",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Germany
|
|
"DE",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Greece
|
|
"GR",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, ODOR, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Guam
|
|
"GU",
|
|
CE,
|
|
{
|
|
{ 1, 11, 20, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 36, 4, 17, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 149, 5, 30, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Guatemala
|
|
"GT",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 17, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 30, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Haiti
|
|
"HT",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 17, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 30, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Honduras
|
|
"HN",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 149, 4, 27, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Hong Kong
|
|
"HK",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 30, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Hungary
|
|
"HU",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Iceland
|
|
"IS",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // India
|
|
"IN",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 149, 4, 24, IDOR, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Indonesia
|
|
"ID",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 149, 4, 27, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Ireland
|
|
"IE",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, ODOR, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Israel
|
|
"IL",
|
|
CE,
|
|
{
|
|
{ 1, 3, 20, IDOR, FALSE}, // 2.4 G, ch 1~3
|
|
{ 4, 6, 20, BOTH, FALSE}, // 2.4 G, ch 4~9
|
|
{ 10, 4, 20, IDOR, FALSE}, // 2.4 G, ch 10~13
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Italy
|
|
"IT",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, ODOR, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Japan
|
|
"JP",
|
|
JAP,
|
|
{
|
|
{ 1, 14, 20, BOTH, FALSE}, // 2.4 G, ch 1~14
|
|
#ifndef RT30xx
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
#endif
|
|
#ifdef RT30xx
|
|
{ 34, 4, 23, IDOR, FALSE}, // 5G, ch 34~46
|
|
#endif
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Jordan
|
|
"JO",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, IDOR, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 149, 4, 23, IDOR, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Latvia
|
|
"LV",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Liechtenstein
|
|
"LI",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Lithuania
|
|
"LT",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Luxemburg
|
|
"LU",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Malaysia
|
|
"MY",
|
|
CE,
|
|
{
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 5, 20, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Malta
|
|
"MT",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Marocco
|
|
"MA",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 24, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Mexico
|
|
"MX",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 5, 30, IDOR, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Netherlands
|
|
"NL",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // New Zealand
|
|
"NZ",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 24, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 30, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Norway
|
|
"NO",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 24, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 24, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Peru
|
|
"PE",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 149, 4, 27, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Portugal
|
|
"PT",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Poland
|
|
"PL",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Romania
|
|
"RO",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Russia
|
|
"RU",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 149, 4, 20, IDOR, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Saudi Arabia
|
|
"SA",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 23, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Serbia_and_Montenegro
|
|
"CS",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Singapore
|
|
"SG",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 149, 4, 20, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Slovakia
|
|
"SK",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Slovenia
|
|
"SI",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // South Africa
|
|
"ZA",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 149, 4, 30, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // South Korea
|
|
"KR",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 20, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 20, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 8, 20, BOTH, FALSE}, // 5G, ch 100~128
|
|
{ 149, 4, 20, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Spain
|
|
"ES",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 17, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Sweden
|
|
"SE",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Switzerland
|
|
"CH",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~13
|
|
{ 36, 4, 23, IDOR, TRUE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Taiwan
|
|
"TW",
|
|
CE,
|
|
{
|
|
{ 1, 11, 30, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 52, 4, 23, IDOR, FALSE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Turkey
|
|
"TR",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 36, 4, 23, BOTH, FALSE}, // 5G, ch 36~48
|
|
{ 52, 4, 23, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // UK
|
|
"GB",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 36, 4, 23, IDOR, FALSE}, // 5G, ch 52~64
|
|
{ 52, 4, 23, IDOR, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Ukraine
|
|
"UA",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // United_Arab_Emirates
|
|
"AE",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // United_States
|
|
"US",
|
|
CE,
|
|
{
|
|
{ 1, 11, 30, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 36, 4, 17, IDOR, FALSE}, // 5G, ch 52~64
|
|
{ 52, 4, 24, BOTH, TRUE}, // 5G, ch 52~64
|
|
{ 100, 11, 30, BOTH, TRUE}, // 5G, ch 100~140
|
|
{ 149, 5, 30, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Venezuela
|
|
"VE",
|
|
CE,
|
|
{
|
|
{ 1, 13, 20, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 149, 4, 27, BOTH, FALSE}, // 5G, ch 149~161
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
|
|
{ // Default
|
|
"",
|
|
CE,
|
|
{
|
|
{ 1, 11, 20, BOTH, FALSE}, // 2.4 G, ch 1~11
|
|
{ 36, 4, 20, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 52, 4, 20, BOTH, FALSE}, // 5G, ch 52~64
|
|
{ 100, 11, 20, BOTH, FALSE}, // 5G, ch 100~140
|
|
{ 149, 5, 20, BOTH, FALSE}, // 5G, ch 149~165
|
|
{ 0}, // end
|
|
}
|
|
},
|
|
};
|
|
|
|
static inline PCH_REGION GetChRegion(
|
|
IN PUCHAR CntryCode)
|
|
{
|
|
INT loop = 0;
|
|
PCH_REGION pChRegion = NULL;
|
|
|
|
while (strcmp(ChRegion[loop].CountReg, "") != 0)
|
|
{
|
|
if (strncmp(ChRegion[loop].CountReg, CntryCode, 2) == 0)
|
|
{
|
|
pChRegion = &ChRegion[loop];
|
|
break;
|
|
}
|
|
loop++;
|
|
}
|
|
|
|
if (pChRegion == NULL)
|
|
pChRegion = &ChRegion[loop];
|
|
return pChRegion;
|
|
}
|
|
|
|
static inline VOID ChBandCheck(
|
|
IN UCHAR PhyMode,
|
|
OUT PUCHAR pChType)
|
|
{
|
|
switch(PhyMode)
|
|
{
|
|
case PHY_11A:
|
|
case PHY_11AN_MIXED:
|
|
*pChType = BAND_5G;
|
|
break;
|
|
case PHY_11ABG_MIXED:
|
|
case PHY_11AGN_MIXED:
|
|
case PHY_11ABGN_MIXED:
|
|
*pChType = BAND_BOTH;
|
|
break;
|
|
|
|
default:
|
|
*pChType = BAND_24G;
|
|
break;
|
|
}
|
|
}
|
|
|
|
static inline UCHAR FillChList(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PCH_DESP pChDesp,
|
|
IN UCHAR Offset,
|
|
IN UCHAR increment)
|
|
{
|
|
INT i, j, l;
|
|
UCHAR channel;
|
|
|
|
j = Offset;
|
|
for (i = 0; i < pChDesp->NumOfCh; i++)
|
|
{
|
|
channel = pChDesp->FirstChannel + i * increment;
|
|
for (l=0; l<MAX_NUM_OF_CHANNELS; l++)
|
|
{
|
|
if (channel == pAd->TxPower[l].Channel)
|
|
{
|
|
pAd->ChannelList[j].Power = pAd->TxPower[l].Power;
|
|
pAd->ChannelList[j].Power2 = pAd->TxPower[l].Power2;
|
|
break;
|
|
}
|
|
}
|
|
if (l == MAX_NUM_OF_CHANNELS)
|
|
continue;
|
|
|
|
pAd->ChannelList[j].Channel = pChDesp->FirstChannel + i * increment;
|
|
pAd->ChannelList[j].MaxTxPwr = pChDesp->MaxTxPwr;
|
|
pAd->ChannelList[j].DfsReq = pChDesp->DfsReq;
|
|
j++;
|
|
}
|
|
pAd->ChannelListNum = j;
|
|
|
|
return j;
|
|
}
|
|
|
|
static inline VOID CreateChList(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN PCH_REGION pChRegion,
|
|
IN UCHAR Geography)
|
|
{
|
|
INT i;
|
|
UCHAR offset = 0;
|
|
PCH_DESP pChDesp;
|
|
UCHAR ChType;
|
|
UCHAR increment;
|
|
|
|
if (pChRegion == NULL)
|
|
return;
|
|
|
|
ChBandCheck(pAd->CommonCfg.PhyMode, &ChType);
|
|
|
|
for (i=0; i<10; i++)
|
|
{
|
|
pChDesp = &pChRegion->ChDesp[i];
|
|
if (pChDesp->FirstChannel == 0)
|
|
break;
|
|
|
|
if (ChType == BAND_5G)
|
|
{
|
|
if (pChDesp->FirstChannel <= 14)
|
|
continue;
|
|
}
|
|
else if (ChType == BAND_24G)
|
|
{
|
|
if (pChDesp->FirstChannel > 14)
|
|
continue;
|
|
}
|
|
|
|
if ((pChDesp->Geography == BOTH)
|
|
|| (pChDesp->Geography == Geography))
|
|
{
|
|
if (pChDesp->FirstChannel > 14)
|
|
increment = 4;
|
|
else
|
|
increment = 1;
|
|
offset = FillChList(pAd, pChDesp, offset, increment);
|
|
}
|
|
}
|
|
}
|
|
|
|
static inline VOID BuildChannelListEx(
|
|
IN PRTMP_ADAPTER pAd)
|
|
{
|
|
PCH_REGION pChReg;
|
|
|
|
pChReg = GetChRegion(pAd->CommonCfg.CountryCode);
|
|
CreateChList(pAd, pChReg, pAd->CommonCfg.Geography);
|
|
}
|
|
|
|
static inline VOID BuildBeaconChList(
|
|
IN PRTMP_ADAPTER pAd,
|
|
OUT PUCHAR pBuf,
|
|
OUT PULONG pBufLen)
|
|
{
|
|
INT i;
|
|
ULONG TmpLen;
|
|
PCH_REGION pChRegion;
|
|
PCH_DESP pChDesp;
|
|
UCHAR ChType;
|
|
|
|
pChRegion = GetChRegion(pAd->CommonCfg.CountryCode);
|
|
|
|
if (pChRegion == NULL)
|
|
return;
|
|
|
|
ChBandCheck(pAd->CommonCfg.PhyMode, &ChType);
|
|
*pBufLen = 0;
|
|
|
|
for (i=0; i<10; i++)
|
|
{
|
|
pChDesp = &pChRegion->ChDesp[i];
|
|
if (pChDesp->FirstChannel == 0)
|
|
break;
|
|
|
|
if (ChType == BAND_5G)
|
|
{
|
|
if (pChDesp->FirstChannel <= 14)
|
|
continue;
|
|
}
|
|
else if (ChType == BAND_24G)
|
|
{
|
|
if (pChDesp->FirstChannel > 14)
|
|
continue;
|
|
}
|
|
|
|
if ((pChDesp->Geography == BOTH)
|
|
|| (pChDesp->Geography == pAd->CommonCfg.Geography))
|
|
{
|
|
MakeOutgoingFrame(pBuf + *pBufLen, &TmpLen,
|
|
1, &pChDesp->FirstChannel,
|
|
1, &pChDesp->NumOfCh,
|
|
1, &pChDesp->MaxTxPwr,
|
|
END_OF_ARGS);
|
|
*pBufLen += TmpLen;
|
|
}
|
|
}
|
|
}
|
|
|
|
static inline BOOLEAN IsValidChannel(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN UCHAR channel)
|
|
|
|
{
|
|
INT i;
|
|
|
|
for (i = 0; i < pAd->ChannelListNum; i++)
|
|
{
|
|
if (pAd->ChannelList[i].Channel == channel)
|
|
break;
|
|
}
|
|
|
|
if (i == pAd->ChannelListNum)
|
|
return FALSE;
|
|
else
|
|
return TRUE;
|
|
}
|
|
|
|
|
|
static inline UCHAR GetExtCh(
|
|
IN UCHAR Channel,
|
|
IN UCHAR Direction)
|
|
{
|
|
CHAR ExtCh;
|
|
|
|
if (Direction == EXTCHA_ABOVE)
|
|
ExtCh = Channel + 4;
|
|
else
|
|
ExtCh = (Channel - 4) > 0 ? (Channel - 4) : 0;
|
|
|
|
return ExtCh;
|
|
}
|
|
|
|
|
|
static inline VOID N_ChannelCheck(
|
|
IN PRTMP_ADAPTER pAd)
|
|
{
|
|
//UCHAR ChannelNum = pAd->ChannelListNum;
|
|
UCHAR Channel = pAd->CommonCfg.Channel;
|
|
|
|
if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40))
|
|
{
|
|
if (Channel > 14)
|
|
{
|
|
if ((Channel == 36) || (Channel == 44) || (Channel == 52) || (Channel == 60) || (Channel == 100) || (Channel == 108) ||
|
|
(Channel == 116) || (Channel == 124) || (Channel == 132) || (Channel == 149) || (Channel == 157))
|
|
{
|
|
pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;
|
|
}
|
|
else if ((Channel == 40) || (Channel == 48) || (Channel == 56) || (Channel == 64) || (Channel == 104) || (Channel == 112) ||
|
|
(Channel == 120) || (Channel == 128) || (Channel == 136) || (Channel == 153) || (Channel == 161))
|
|
{
|
|
pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_BELOW;
|
|
}
|
|
else
|
|
{
|
|
pAd->CommonCfg.RegTransmitSetting.field.BW = BW_20;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
do
|
|
{
|
|
UCHAR ExtCh;
|
|
UCHAR Dir = pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
|
|
ExtCh = GetExtCh(Channel, Dir);
|
|
if (IsValidChannel(pAd, ExtCh))
|
|
break;
|
|
|
|
Dir = (Dir == EXTCHA_ABOVE) ? EXTCHA_BELOW : EXTCHA_ABOVE;
|
|
ExtCh = GetExtCh(Channel, Dir);
|
|
if (IsValidChannel(pAd, ExtCh))
|
|
{
|
|
pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = Dir;
|
|
break;
|
|
}
|
|
pAd->CommonCfg.RegTransmitSetting.field.BW = BW_20;
|
|
} while(FALSE);
|
|
|
|
if (Channel == 14)
|
|
{
|
|
pAd->CommonCfg.RegTransmitSetting.field.BW = BW_20;
|
|
//pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_NONE; // We didn't set the ExtCh as NONE due to it'll set in RTMPSetHT()
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
static inline VOID N_SetCenCh(
|
|
IN PRTMP_ADAPTER pAd)
|
|
{
|
|
if (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)
|
|
{
|
|
if (pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_ABOVE)
|
|
{
|
|
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel + 2;
|
|
}
|
|
else
|
|
{
|
|
if (pAd->CommonCfg.Channel == 14)
|
|
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 1;
|
|
else
|
|
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 2;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
|
|
}
|
|
}
|
|
|
|
static inline UINT8 GetCuntryMaxTxPwr(
|
|
IN PRTMP_ADAPTER pAd,
|
|
IN UINT8 channel)
|
|
{
|
|
int i;
|
|
for (i = 0; i < pAd->ChannelListNum; i++)
|
|
{
|
|
if (pAd->ChannelList[i].Channel == channel)
|
|
break;
|
|
}
|
|
|
|
if (i == pAd->ChannelListNum)
|
|
return 0xff;
|
|
else
|
|
return pAd->ChannelList[i].MaxTxPwr;
|
|
}
|
|
#endif // __CHLIST_H__
|
|
|