diff options
Diffstat (limited to 'drivers/staging/rt2860/common/rt_channel.c')
-rw-r--r-- | drivers/staging/rt2860/common/rt_channel.c | 1705 |
1 files changed, 0 insertions, 1705 deletions
diff --git a/drivers/staging/rt2860/common/rt_channel.c b/drivers/staging/rt2860/common/rt_channel.c deleted file mode 100644 index 53879898117..00000000000 --- a/drivers/staging/rt2860/common/rt_channel.c +++ /dev/null @@ -1,1705 +0,0 @@ -/* - ************************************************************************* - * 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. * - * * - ************************************************************************* -*/ -#include "../rt_config.h" - -struct rt_ch_freq_map CH_HZ_ID_MAP[] = { - {1, 2412} - , - {2, 2417} - , - {3, 2422} - , - {4, 2427} - , - {5, 2432} - , - {6, 2437} - , - {7, 2442} - , - {8, 2447} - , - {9, 2452} - , - {10, 2457} - , - {11, 2462} - , - {12, 2467} - , - {13, 2472} - , - {14, 2484} - , - - /* UNII */ - {36, 5180} - , - {40, 5200} - , - {44, 5220} - , - {48, 5240} - , - {52, 5260} - , - {56, 5280} - , - {60, 5300} - , - {64, 5320} - , - {149, 5745} - , - {153, 5765} - , - {157, 5785} - , - {161, 5805} - , - {165, 5825} - , - {167, 5835} - , - {169, 5845} - , - {171, 5855} - , - {173, 5865} - , - - /* HiperLAN2 */ - {100, 5500} - , - {104, 5520} - , - {108, 5540} - , - {112, 5560} - , - {116, 5580} - , - {120, 5600} - , - {124, 5620} - , - {128, 5640} - , - {132, 5660} - , - {136, 5680} - , - {140, 5700} - , - - /* Japan MMAC */ - {34, 5170} - , - {38, 5190} - , - {42, 5210} - , - {46, 5230} - , - - /* Japan */ - {184, 4920} - , - {188, 4940} - , - {192, 4960} - , - {196, 4980} - , - - {208, 5040} - , /* Japan, means J08 */ - {212, 5060} - , /* Japan, means J12 */ - {216, 5080} - , /* Japan, means J16 */ -}; - -int CH_HZ_ID_MAP_NUM = (sizeof(CH_HZ_ID_MAP) / sizeof(struct rt_ch_freq_map)); - -struct rt_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 */ - {36, 4, 23, IDOR, FALSE} - , /* 5G, ch 36~48 */ - {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 struct rt_ch_region *GetChRegion(u8 *CntryCode) -{ - int loop = 0; - struct rt_ch_region *pChRegion = NULL; - - while (strcmp((char *)ChRegion[loop].CountReg, "") != 0) { - if (strncmp - ((char *)ChRegion[loop].CountReg, (char *)CntryCode, - 2) == 0) { - pChRegion = &ChRegion[loop]; - break; - } - loop++; - } - - if (pChRegion == NULL) - pChRegion = &ChRegion[loop]; - return pChRegion; -} - -static void ChBandCheck(u8 PhyMode, u8 *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 u8 FillChList(struct rt_rtmp_adapter *pAd, - struct rt_ch_desp *pChDesp, - u8 Offset, u8 increment) -{ - int i, j, l; - u8 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(struct rt_rtmp_adapter *pAd, - struct rt_ch_region *pChRegion, u8 Geography) -{ - int i; - u8 offset = 0; - struct rt_ch_desp *pChDesp; - u8 ChType; - u8 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); - } - } -} - -void BuildChannelListEx(struct rt_rtmp_adapter *pAd) -{ - struct rt_ch_region *pChReg; - - pChReg = GetChRegion(pAd->CommonCfg.CountryCode); - CreateChList(pAd, pChReg, pAd->CommonCfg.Geography); -} - -void BuildBeaconChList(struct rt_rtmp_adapter *pAd, - u8 *pBuf, unsigned long *pBufLen) -{ - int i; - unsigned long TmpLen; - struct rt_ch_region *pChRegion; - struct rt_ch_desp *pChDesp; - u8 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 BOOLEAN IsValidChannel(struct rt_rtmp_adapter *pAd, u8 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 u8 GetExtCh(u8 Channel, u8 Direction) -{ - char ExtCh; - - if (Direction == EXTCHA_ABOVE) - ExtCh = Channel + 4; - else - ExtCh = (Channel - 4) > 0 ? (Channel - 4) : 0; - - return ExtCh; -} - -void N_ChannelCheck(struct rt_rtmp_adapter *pAd) -{ - /*u8 ChannelNum = pAd->ChannelListNum; */ - u8 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 { - u8 ExtCh; - u8 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() */ - } - } - } - -} - -void N_SetCenCh(struct rt_rtmp_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; - } -} - -u8 GetCuntryMaxTxPwr(struct rt_rtmp_adapter *pAd, u8 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; -} |