| /* |
| ************************************************************************* |
| * 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; |
| } |