linux/drivers/staging/rt3090/common/rt_channel.c
<<
>>
Prefs
   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
  28#include "../rt_config.h"
  29
  30
  31CH_FREQ_MAP CH_HZ_ID_MAP[]=
  32                {
  33                        {1, 2412},
  34                        {2, 2417},
  35                        {3, 2422},
  36                        {4, 2427},
  37                        {5, 2432},
  38                        {6, 2437},
  39                        {7, 2442},
  40                        {8, 2447},
  41                        {9, 2452},
  42                        {10, 2457},
  43                        {11, 2462},
  44                        {12, 2467},
  45                        {13, 2472},
  46                        {14, 2484},
  47
  48                        /*  UNII */
  49                        {36, 5180},
  50                        {40, 5200},
  51                        {44, 5220},
  52                        {48, 5240},
  53                        {52, 5260},
  54                        {56, 5280},
  55                        {60, 5300},
  56                        {64, 5320},
  57                        {149, 5745},
  58                        {153, 5765},
  59                        {157, 5785},
  60                        {161, 5805},
  61                        {165, 5825},
  62                        {167, 5835},
  63                        {169, 5845},
  64                        {171, 5855},
  65                        {173, 5865},
  66
  67                        /* HiperLAN2 */
  68                        {100, 5500},
  69                        {104, 5520},
  70                        {108, 5540},
  71                        {112, 5560},
  72                        {116, 5580},
  73                        {120, 5600},
  74                        {124, 5620},
  75                        {128, 5640},
  76                        {132, 5660},
  77                        {136, 5680},
  78                        {140, 5700},
  79
  80                        /* Japan MMAC */
  81                        {34, 5170},
  82                        {38, 5190},
  83                        {42, 5210},
  84                        {46, 5230},
  85
  86                        /*  Japan */
  87                        {184, 4920},
  88                        {188, 4940},
  89                        {192, 4960},
  90                        {196, 4980},
  91
  92                        {208, 5040},    /* Japan, means J08 */
  93                        {212, 5060},    /* Japan, means J12 */
  94                        {216, 5080},    /* Japan, means J16 */
  95};
  96
  97INT     CH_HZ_ID_MAP_NUM = (sizeof(CH_HZ_ID_MAP)/sizeof(CH_FREQ_MAP));
  98
  99CH_REGION ChRegion[] =
 100{
 101                {       // Antigua and Berbuda
 102                        "AG",
 103                        CE,
 104                        {
 105                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 106                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 107                                { 52,  4,  23, BOTH, FALSE},    // 5G, ch 52~64
 108                                { 100, 11, 30, BOTH, FALSE},    // 5G, ch 100~140
 109                                { 0},                                                   // end
 110                        }
 111                },
 112
 113                {       // Argentina
 114                        "AR",
 115                        CE,
 116                        {
 117                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 118                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 119                                { 149, 4,  30, BOTH, FALSE},    // 5G, ch 149~161
 120                                { 0},                                                   // end
 121                        }
 122                },
 123
 124                {       // Aruba
 125                        "AW",
 126                        CE,
 127                        {
 128                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 129                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 130                                { 52,  4,  23, BOTH, FALSE},    // 5G, ch 52~64
 131                                { 100, 11, 30, BOTH, FALSE},    // 5G, ch 100~140
 132                                { 0},                                                   // end
 133                        }
 134                },
 135
 136                {       // Australia
 137                        "AU",
 138                        CE,
 139                        {
 140                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 141                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 142                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 143                                { 149, 5,  30, BOTH, FALSE},    // 5G, ch 149~165
 144                                { 0},                                                   // end
 145                        }
 146                },
 147
 148                {       // Austria
 149                        "AT",
 150                        CE,
 151                        {
 152                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 153                                { 36,  4,  23, IDOR, TRUE},             // 5G, ch 36~48
 154                                { 52,  4,  23, IDOR, TRUE},             // 5G, ch 52~64
 155                                { 100, 11, 30, BOTH, TRUE},             // 5G, ch 100~140
 156                                { 0},                                                   // end
 157                        }
 158                },
 159
 160                {       // Bahamas
 161                        "BS",
 162                        CE,
 163                        {
 164                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 165                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 166                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 167                                { 149, 5,  30, BOTH, FALSE},    // 5G, ch 149~165
 168                                { 0},                                                   // end
 169                        }
 170                },
 171
 172                {       // Barbados
 173                        "BB",
 174                        CE,
 175                        {
 176                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 177                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 178                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 179                                { 100, 11, 30, BOTH, FALSE},    // 5G, ch 100~140
 180                                { 0},                                                   // end
 181                        }
 182                },
 183
 184                {       // Bermuda
 185                        "BM",
 186                        CE,
 187                        {
 188                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 189                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 190                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 191                                { 100, 11, 30, BOTH, FALSE},    // 5G, ch 100~140
 192                                { 0},                                                   // end
 193                        }
 194                },
 195
 196                {       // Brazil
 197                        "BR",
 198                        CE,
 199                        {
 200                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 201                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 202                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 203                                { 100, 11, 24, BOTH, FALSE},    // 5G, ch 100~140
 204                                { 149, 5,  30, BOTH, FALSE},    // 5G, ch 100~140
 205                                { 0},                                                   // end
 206                        }
 207                },
 208
 209                {       // Belgium
 210                        "BE",
 211                        CE,
 212                        {
 213                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 214                                { 36,  4,  18, IDOR, FALSE},    // 5G, ch 36~48
 215                                { 52,  4,  18, IDOR, FALSE},    // 5G, ch 52~64
 216                                { 0},                                                   // end
 217                        }
 218                },
 219
 220                {       // Bulgaria
 221                        "BG",
 222                        CE,
 223                        {
 224                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 225                                { 36,  4,  23, IDOR, FALSE},    // 5G, ch 36~48
 226                                { 52,  4,  23, IDOR, TRUE},     // 5G, ch 52~64
 227                                { 100, 11, 30, ODOR, TRUE},     // 5G, ch 100~140
 228                                { 0},                                                   // end
 229                        }
 230                },
 231
 232                {       // Canada
 233                        "CA",
 234                        CE,
 235                        {
 236                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 237                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 238                                { 52,  4,  23, BOTH, FALSE},    // 5G, ch 52~64
 239                                { 149, 5,  30, BOTH, FALSE},    // 5G, ch 149~165
 240                                { 0},                                                   // end
 241                        }
 242                },
 243
 244                {       // Cayman IsLands
 245                        "KY",
 246                        CE,
 247                        {
 248                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 249                                { 36,  4,  23, BOTH, FALSE},    // 5G, ch 36~48
 250                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 251                                { 100, 11, 30, BOTH, FALSE},    // 5G, ch 100~140
 252                                { 0},                                                   // end
 253                        }
 254                },
 255
 256                {       // Chile
 257                        "CL",
 258                        CE,
 259                        {
 260                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 261                                { 36,  4,  20, BOTH, FALSE},    // 5G, ch 36~48
 262                                { 52,  4,  20, BOTH, FALSE},    // 5G, ch 52~64
 263                                { 149, 5,  20, BOTH, FALSE},    // 5G, ch 149~165
 264                                { 0},                                                   // end
 265                        }
 266                },
 267
 268                {       // China
 269                        "CN",
 270                        CE,
 271                        {
 272                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 273                                { 149, 4,  27, BOTH, FALSE},    // 5G, ch 149~161
 274                                { 0},                                                   // end
 275                        }
 276                },
 277
 278                {       // Colombia
 279                        "CO",
 280                        CE,
 281                        {
 282                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 283                                { 36,  4,  17, BOTH, FALSE},    // 5G, ch 36~48
 284                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 285                                { 100, 11, 30, BOTH, FALSE},    // 5G, ch 100~140
 286                                { 149, 5,  30, BOTH, FALSE},    // 5G, ch 149~165
 287                                { 0},                                                   // end
 288                        }
 289                },
 290
 291                {       // Costa Rica
 292                        "CR",
 293                        CE,
 294                        {
 295                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 296                                { 36,  4,  17, BOTH, FALSE},    // 5G, ch 36~48
 297                                { 52,  4,  24, BOTH, FALSE},    // 5G, ch 52~64
 298                                { 149, 4,  30, BOTH, FALSE},    // 5G, ch 149~161
 299                                { 0},                                                   // end
 300                        }
 301                },
 302
 303                {       // Cyprus
 304                        "CY",
 305                        CE,
 306                        {
 307                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 308                                { 36,  4,  23, IDOR, FALSE},    // 5G, ch 36~48
 309                                { 52,  4,  24, IDOR, TRUE},             // 5G, ch 52~64
 310                                { 100, 11, 30, BOTH, TRUE},             // 5G, ch 100~140
 311                                { 0},                                                   // end
 312                        }
 313                },
 314
 315                {       // Czech_Republic
 316                        "CZ",
 317                        CE,
 318                        {
 319                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 320                                { 36,  4,  23, IDOR, FALSE},    // 5G, ch 36~48
 321                                { 52,  4,  23, IDOR, TRUE},             // 5G, ch 52~64
 322                                { 0},                                                   // end
 323                        }
 324                },
 325
 326                {       // Denmark
 327                        "DK",
 328                        CE,
 329                        {
 330                                { 1,   13, 20, BOTH, FALSE},    // 2.4 G, ch 1~13
 331                                { 36,  4,  23, IDOR, FALSE},    // 5G, ch 36~48
 332                                { 52,  4,  23, IDOR, TRUE},             // 5G, ch 52~64
 333                                { 100, 11, 30, BOTH, TRUE},             // 5G, ch 100~140
 334                                { 0},                                                   // end
 335                        }
 336                },
 337
 338                {       // Dominican Republic
 339                        "DO",
 340                        CE,
 341                        {
 342                                { 1,   0,  20, BOTH, FALSE},    // 2.4 G, ch 0
 343                                { 149, 4,  20, BOTH, FALSE},    // 5G, ch 149~161
 344                                { 0},                                                   // end
 345                        }
 346                },
 347
 348                {       // Equador
 349                        "EC",
 350                        CE,
 351                        {
 352                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 353                                { 100, 11,  27, BOTH, FALSE},   // 5G, ch 100~140
 354                                { 0},                                                   // end
 355                        }
 356                },
 357
 358                {       // El Salvador
 359                        "SV",
 360                        CE,
 361                        {
 362                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 363                                { 36,  4,   23, IDOR, FALSE},   // 5G, ch 36~48
 364                                { 52,  4,   30, BOTH, TRUE},    // 5G, ch 52~64
 365                                { 149, 4,   36, BOTH, TRUE},    // 5G, ch 149~165
 366                                { 0},                                                   // end
 367                        }
 368                },
 369
 370                {       // Finland
 371                        "FI",
 372                        CE,
 373                        {
 374                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 375                                { 36,  4,   23, IDOR, FALSE},   // 5G, ch 36~48
 376                                { 52,  4,   23, IDOR, TRUE},    // 5G, ch 52~64
 377                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 378                                { 0},                                                   // end
 379                        }
 380                },
 381
 382                {       // France
 383                        "FR",
 384                        CE,
 385                        {
 386                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 387                                { 36,  4,   23, IDOR, FALSE},   // 5G, ch 36~48
 388                                { 52,  4,   23, IDOR, TRUE},    // 5G, ch 52~64
 389                                { 0},                                                   // end
 390                        }
 391                },
 392
 393                {       // Germany
 394                        "DE",
 395                        CE,
 396                        {
 397                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 398                                { 36,  4,   23, IDOR, FALSE},   // 5G, ch 36~48
 399                                { 52,  4,   23, IDOR, TRUE},    // 5G, ch 52~64
 400                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 401                                { 0},                                                   // end
 402                        }
 403                },
 404
 405                {       // Greece
 406                        "GR",
 407                        CE,
 408                        {
 409                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 410                                { 36,  4,   23, IDOR, FALSE},   // 5G, ch 36~48
 411                                { 52,  4,   23, IDOR, TRUE},    // 5G, ch 52~64
 412                                { 100, 11,  30, ODOR, TRUE},    // 5G, ch 100~140
 413                                { 0},                                                   // end
 414                        }
 415                },
 416
 417                {       // Guam
 418                        "GU",
 419                        CE,
 420                        {
 421                                { 1,   11,  20, BOTH, FALSE},   // 2.4 G, ch 1~11
 422                                { 36,  4,   17, BOTH, FALSE},   // 5G, ch 36~48
 423                                { 52,  4,   24, BOTH, FALSE},   // 5G, ch 52~64
 424                                { 100, 11,  30, BOTH, FALSE},   // 5G, ch 100~140
 425                                { 149,  5,  30, BOTH, FALSE},   // 5G, ch 149~165
 426                                { 0},                                                   // end
 427                        }
 428                },
 429
 430                {       // Guatemala
 431                        "GT",
 432                        CE,
 433                        {
 434                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 435                                { 36,  4,   17, BOTH, FALSE},   // 5G, ch 36~48
 436                                { 52,  4,   24, BOTH, FALSE},   // 5G, ch 52~64
 437                                { 149,  4,  30, BOTH, FALSE},   // 5G, ch 149~161
 438                                { 0},                                                   // end
 439                        }
 440                },
 441
 442                {       // Haiti
 443                        "HT",
 444                        CE,
 445                        {
 446                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 447                                { 36,  4,   17, BOTH, FALSE},   // 5G, ch 36~48
 448                                { 52,  4,   24, BOTH, FALSE},   // 5G, ch 52~64
 449                                { 149,  4,  30, BOTH, FALSE},   // 5G, ch 149~161
 450                                { 0},                                                   // end
 451                        }
 452                },
 453
 454                {       // Honduras
 455                        "HN",
 456                        CE,
 457                        {
 458                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 459                                { 149,  4,  27, BOTH, FALSE},   // 5G, ch 149~161
 460                                { 0},                                                   // end
 461                        }
 462                },
 463
 464                {       // Hong Kong
 465                        "HK",
 466                        CE,
 467                        {
 468                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 469                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 470                                { 52,   4,  23, IDOR, FALSE},   // 5G, ch 52~64
 471                                { 149,  4,  30, BOTH, FALSE},   // 5G, ch 149~161
 472                                { 0},                                                   // end
 473                        }
 474                },
 475
 476                {       // Hungary
 477                        "HU",
 478                        CE,
 479                        {
 480                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 481                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 482                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 483                                { 0},                                                   // end
 484                        }
 485                },
 486
 487                {       // Iceland
 488                        "IS",
 489                        CE,
 490                        {
 491                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 492                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 493                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 494                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 495                                { 0},                                                   // end
 496                        }
 497                },
 498
 499                {       // India
 500                        "IN",
 501                        CE,
 502                        {
 503                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 504                                { 149,  4,  24, IDOR, FALSE},   // 5G, ch 149~161
 505                                { 0},                                                   // end
 506                        }
 507                },
 508
 509                {       // Indonesia
 510                        "ID",
 511                        CE,
 512                        {
 513                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 514                                { 149,  4,  27, BOTH, FALSE},   // 5G, ch 149~161
 515                                { 0},                                                   // end
 516                        }
 517                },
 518
 519                {       // Ireland
 520                        "IE",
 521                        CE,
 522                        {
 523                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 524                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 525                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 526                                { 100, 11,  30, ODOR, TRUE},    // 5G, ch 100~140
 527                                { 0},                                                   // end
 528                        }
 529                },
 530
 531                {       // Israel
 532                        "IL",
 533                        CE,
 534                        {
 535                                { 1,    3,  20, IDOR, FALSE},   // 2.4 G, ch 1~3
 536                                { 4,    6,  20, BOTH, FALSE},   // 2.4 G, ch 4~9
 537                                { 10,   4,  20, IDOR, FALSE},   // 2.4 G, ch 10~13
 538                                { 0},                                                   // end
 539                        }
 540                },
 541
 542                {       // Italy
 543                        "IT",
 544                        CE,
 545                        {
 546                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 547                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 548                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 549                                { 100, 11,  30, ODOR, TRUE},    // 5G, ch 100~140
 550                                { 0},                                                   // end
 551                        }
 552                },
 553
 554                {       // Japan
 555                        "JP",
 556                        JAP,
 557                        {
 558                                { 1,   14,  20, BOTH, FALSE},   // 2.4 G, ch 1~14
 559                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 560                                { 0},                                                   // end
 561                        }
 562                },
 563
 564                {       // Jordan
 565                        "JO",
 566                        CE,
 567                        {
 568                                { 1,   13,  20, IDOR, FALSE},   // 2.4 G, ch 1~13
 569                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 570                                { 149,  4,  23, IDOR, FALSE},   // 5G, ch 149~161
 571                                { 0},                                                   // end
 572                        }
 573                },
 574
 575                {       // Latvia
 576                        "LV",
 577                        CE,
 578                        {
 579                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 580                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 581                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 582                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 583                                { 0},                                                   // end
 584                        }
 585                },
 586
 587                {       // Liechtenstein
 588                        "LI",
 589                        CE,
 590                        {
 591                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 592                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 593                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 594                                { 0},                                                   // end
 595                        }
 596                },
 597
 598                {       // Lithuania
 599                        "LT",
 600                        CE,
 601                        {
 602                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 603                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 604                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 605                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 606                                { 0},                                                   // end
 607                        }
 608                },
 609
 610                {       // Luxemburg
 611                        "LU",
 612                        CE,
 613                        {
 614                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 615                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 616                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 617                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 618                                { 0},                                                   // end
 619                        }
 620                },
 621
 622                {       // Malaysia
 623                        "MY",
 624                        CE,
 625                        {
 626                                { 36,   4,  23, BOTH, FALSE},   // 5G, ch 36~48
 627                                { 52,   4,  23, BOTH, FALSE},   // 5G, ch 52~64
 628                                { 149,  5,  20, BOTH, FALSE},   // 5G, ch 149~165
 629                                { 0},                                                   // end
 630                        }
 631                },
 632
 633                {       // Malta
 634                        "MT",
 635                        CE,
 636                        {
 637                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 638                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 639                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 640                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 641                                { 0},                                                   // end
 642                        }
 643                },
 644
 645                {       // Marocco
 646                        "MA",
 647                        CE,
 648                        {
 649                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 650                                { 36,   4,  24, IDOR, FALSE},   // 5G, ch 36~48
 651                                { 0},                                                   // end
 652                        }
 653                },
 654
 655                {       // Mexico
 656                        "MX",
 657                        CE,
 658                        {
 659                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 660                                { 36,   4,  23, BOTH, FALSE},   // 5G, ch 36~48
 661                                { 52,   4,  24, BOTH, FALSE},   // 5G, ch 52~64
 662                                { 149,  5,  30, IDOR, FALSE},   // 5G, ch 149~165
 663                                { 0},                                                   // end
 664                        }
 665                },
 666
 667                {       // Netherlands
 668                        "NL",
 669                        CE,
 670                        {
 671                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 672                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 673                                { 52,   4,  24, IDOR, TRUE},    // 5G, ch 52~64
 674                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 675                                { 0},                                                   // end
 676                        }
 677                },
 678
 679                {       // New Zealand
 680                        "NZ",
 681                        CE,
 682                        {
 683                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 684                                { 36,   4,  24, BOTH, FALSE},   // 5G, ch 36~48
 685                                { 52,   4,  24, BOTH, FALSE},   // 5G, ch 52~64
 686                                { 149,  4,  30, BOTH, FALSE},   // 5G, ch 149~161
 687                                { 0},                                                   // end
 688                        }
 689                },
 690
 691                {       // Norway
 692                        "NO",
 693                        CE,
 694                        {
 695                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 696                                { 36,   4,  24, IDOR, FALSE},   // 5G, ch 36~48
 697                                { 52,   4,  24, IDOR, TRUE},    // 5G, ch 52~64
 698                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 149~161
 699                                { 0},                                                   // end
 700                        }
 701                },
 702
 703                {       // Peru
 704                        "PE",
 705                        CE,
 706                        {
 707                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 708                                { 149,  4,  27, BOTH, FALSE},   // 5G, ch 149~161
 709                                { 0},                                                   // end
 710                        }
 711                },
 712
 713                {       // Portugal
 714                        "PT",
 715                        CE,
 716                        {
 717                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 718                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 719                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 720                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 721                                { 0},                                                   // end
 722                        }
 723                },
 724
 725                {       // Poland
 726                        "PL",
 727                        CE,
 728                        {
 729                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 730                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 731                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 732                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 733                                { 0},                                                   // end
 734                        }
 735                },
 736
 737                {       // Romania
 738                        "RO",
 739                        CE,
 740                        {
 741                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 742                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 743                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 744                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 745                                { 0},                                                   // end
 746                        }
 747                },
 748
 749                {       // Russia
 750                        "RU",
 751                        CE,
 752                        {
 753                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 754                                { 149,  4,  20, IDOR, FALSE},   // 5G, ch 149~161
 755                                { 0},                                                   // end
 756                        }
 757                },
 758
 759                {       // Saudi Arabia
 760                        "SA",
 761                        CE,
 762                        {
 763                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 764                                { 36,   4,  23, BOTH, FALSE},   // 5G, ch 36~48
 765                                { 52,   4,  23, BOTH, FALSE},   // 5G, ch 52~64
 766                                { 149,  4,  23, BOTH, FALSE},   // 5G, ch 149~161
 767                                { 0},                                                   // end
 768                        }
 769                },
 770
 771                {       // Serbia_and_Montenegro
 772                        "CS",
 773                        CE,
 774                        {
 775                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 776                                { 0},                                                   // end
 777                        }
 778                },
 779
 780                {       // Singapore
 781                        "SG",
 782                        CE,
 783                        {
 784                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 785                                { 36,   4,  23, BOTH, FALSE},   // 5G, ch 36~48
 786                                { 52,   4,  23, BOTH, FALSE},   // 5G, ch 52~64
 787                                { 149,  4,  20, BOTH, FALSE},   // 5G, ch 149~161
 788                                { 0},                                                   // end
 789                        }
 790                },
 791
 792                {       // Slovakia
 793                        "SK",
 794                        CE,
 795                        {
 796                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 797                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 798                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 799                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 800                                { 0},                                                   // end
 801                        }
 802                },
 803
 804                {       // Slovenia
 805                        "SI",
 806                        CE,
 807                        {
 808                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 809                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 810                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 811                                { 0},                                                   // end
 812                        }
 813                },
 814
 815                {       // South Africa
 816                        "ZA",
 817                        CE,
 818                        {
 819                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 820                                { 36,   4,  23, BOTH, FALSE},   // 5G, ch 36~48
 821                                { 52,   4,  23, IDOR, FALSE},   // 5G, ch 52~64
 822                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 823                                { 149,  4,  30, BOTH, FALSE},   // 5G, ch 149~161
 824                                { 0},                                                   // end
 825                        }
 826                },
 827
 828                {       // South Korea
 829                        "KR",
 830                        CE,
 831                        {
 832                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 833                                { 36,   4,  20, BOTH, FALSE},   // 5G, ch 36~48
 834                                { 52,   4,  20, BOTH, FALSE},   // 5G, ch 52~64
 835                                { 100,  8,  20, BOTH, FALSE},   // 5G, ch 100~128
 836                                { 149,  4,  20, BOTH, FALSE},   // 5G, ch 149~161
 837                                { 0},                                                   // end
 838                        }
 839                },
 840
 841                {       // Spain
 842                        "ES",
 843                        CE,
 844                        {
 845                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 846                                { 36,   4,  17, IDOR, FALSE},   // 5G, ch 36~48
 847                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 848                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 849                                { 0},                                                   // end
 850                        }
 851                },
 852
 853                {       // Sweden
 854                        "SE",
 855                        CE,
 856                        {
 857                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 858                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 36~48
 859                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 860                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 861                                { 0},                                                   // end
 862                        }
 863                },
 864
 865                {       // Switzerland
 866                        "CH",
 867                        CE,
 868                        {
 869                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~13
 870                                { 36,   4,  23, IDOR, TRUE},    // 5G, ch 36~48
 871                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 872                                { 0},                                                   // end
 873                        }
 874                },
 875
 876                {       // Taiwan
 877                        "TW",
 878                        CE,
 879                        {
 880                                { 1,   11,  30, BOTH, FALSE},   // 2.4 G, ch 1~11
 881                                { 52,   4,  23, IDOR, FALSE},   // 5G, ch 52~64
 882                                { 0},                                                   // end
 883                        }
 884                },
 885
 886                {       // Turkey
 887                        "TR",
 888                        CE,
 889                        {
 890                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~11
 891                                { 36,   4,  23, BOTH, FALSE},   // 5G, ch 36~48
 892                                { 52,   4,  23, BOTH, FALSE},   // 5G, ch 52~64
 893                                { 0},                                                   // end
 894                        }
 895                },
 896
 897                {       // UK
 898                        "GB",
 899                        CE,
 900                        {
 901                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~11
 902                                { 36,   4,  23, IDOR, FALSE},   // 5G, ch 52~64
 903                                { 52,   4,  23, IDOR, TRUE},    // 5G, ch 52~64
 904                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 905                                { 0},                                                   // end
 906                        }
 907                },
 908
 909                {       // Ukraine
 910                        "UA",
 911                        CE,
 912                        {
 913                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~11
 914                                { 0},                                                   // end
 915                        }
 916                },
 917
 918                {       // United_Arab_Emirates
 919                        "AE",
 920                        CE,
 921                        {
 922                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~11
 923                                { 0},                                                   // end
 924                        }
 925                },
 926
 927                {       // United_States
 928                        "US",
 929                        CE,
 930                        {
 931                                { 1,   11,  30, BOTH, FALSE},   // 2.4 G, ch 1~11
 932                                { 36,   4,  17, IDOR, FALSE},   // 5G, ch 52~64
 933                                { 52,   4,  24, BOTH, TRUE},    // 5G, ch 52~64
 934                                { 100, 11,  30, BOTH, TRUE},    // 5G, ch 100~140
 935                                { 149,  5,  30, BOTH, FALSE},   // 5G, ch 149~165
 936                                { 0},                                                   // end
 937                        }
 938                },
 939
 940                {       // Venezuela
 941                        "VE",
 942                        CE,
 943                        {
 944                                { 1,   13,  20, BOTH, FALSE},   // 2.4 G, ch 1~11
 945                                { 149,  4,  27, BOTH, FALSE},   // 5G, ch 149~161
 946                                { 0},                                                   // end
 947                        }
 948                },
 949
 950                {       // Default
 951                        "",
 952                        CE,
 953                        {
 954                                { 1,   11,  20, BOTH, FALSE},   // 2.4 G, ch 1~11
 955                                { 36,   4,  20, BOTH, FALSE},   // 5G, ch 52~64
 956                                { 52,   4,  20, BOTH, FALSE},   // 5G, ch 52~64
 957                                { 100, 11,  20, BOTH, FALSE},   // 5G, ch 100~140
 958                                { 149,  5,  20, BOTH, FALSE},   // 5G, ch 149~165
 959                                { 0},                                                   // end
 960                        }
 961                },
 962};
 963
 964
 965static PCH_REGION GetChRegion(
 966        IN PUCHAR CntryCode)
 967{
 968        INT loop = 0;
 969        PCH_REGION pChRegion = NULL;
 970
 971        while (strcmp((PSTRING) ChRegion[loop].CountReg, "") != 0)
 972        {
 973                if (strncmp((PSTRING) ChRegion[loop].CountReg, (PSTRING) CntryCode, 2) == 0)
 974                {
 975                        pChRegion = &ChRegion[loop];
 976                        break;
 977                }
 978                loop++;
 979        }
 980
 981        if (pChRegion == NULL)
 982                pChRegion = &ChRegion[loop];
 983        return pChRegion;
 984}
 985
 986static VOID ChBandCheck(
 987        IN UCHAR PhyMode,
 988        OUT PUCHAR pChType)
 989{
 990        switch(PhyMode)
 991        {
 992                case PHY_11A:
 993#ifdef DOT11_N_SUPPORT
 994                case PHY_11AN_MIXED:
 995#endif // DOT11_N_SUPPORT //
 996                        *pChType = BAND_5G;
 997                        break;
 998                case PHY_11ABG_MIXED:
 999#ifdef DOT11_N_SUPPORT
1000                case PHY_11AGN_MIXED:
1001                case PHY_11ABGN_MIXED:
1002#endif // DOT11_N_SUPPORT //
1003                        *pChType = BAND_BOTH;
1004                        break;
1005
1006                default:
1007                        *pChType = BAND_24G;
1008                        break;
1009        }
1010}
1011
1012static UCHAR FillChList(
1013        IN PRTMP_ADAPTER pAd,
1014        IN PCH_DESP pChDesp,
1015        IN UCHAR Offset,
1016        IN UCHAR increment)
1017{
1018        INT i, j, l;
1019        UCHAR channel;
1020
1021        j = Offset;
1022        for (i = 0; i < pChDesp->NumOfCh; i++)
1023        {
1024                channel = pChDesp->FirstChannel + i * increment;
1025                for (l=0; l<MAX_NUM_OF_CHANNELS; l++)
1026                {
1027                        if (channel == pAd->TxPower[l].Channel)
1028                        {
1029                                pAd->ChannelList[j].Power = pAd->TxPower[l].Power;
1030                                pAd->ChannelList[j].Power2 = pAd->TxPower[l].Power2;
1031                                break;
1032                        }
1033                }
1034                if (l == MAX_NUM_OF_CHANNELS)
1035                        continue;
1036
1037                pAd->ChannelList[j].Channel = pChDesp->FirstChannel + i * increment;
1038                pAd->ChannelList[j].MaxTxPwr = pChDesp->MaxTxPwr;
1039                pAd->ChannelList[j].DfsReq = pChDesp->DfsReq;
1040                j++;
1041        }
1042        pAd->ChannelListNum = j;
1043
1044        return j;
1045}
1046
1047
1048static inline VOID CreateChList(
1049        IN PRTMP_ADAPTER pAd,
1050        IN PCH_REGION pChRegion,
1051        IN UCHAR Geography)
1052{
1053        INT i;
1054        UCHAR offset = 0;
1055        PCH_DESP pChDesp;
1056        UCHAR ChType;
1057        UCHAR increment;
1058
1059        if (pChRegion == NULL)
1060                return;
1061
1062        ChBandCheck(pAd->CommonCfg.PhyMode, &ChType);
1063
1064        for (i=0; i<10; i++)
1065        {
1066                pChDesp = &pChRegion->ChDesp[i];
1067                if (pChDesp->FirstChannel == 0)
1068                        break;
1069
1070                if (ChType == BAND_5G)
1071                {
1072                        if (pChDesp->FirstChannel <= 14)
1073                                continue;
1074                }
1075                else if (ChType == BAND_24G)
1076                {
1077                        if (pChDesp->FirstChannel > 14)
1078                                continue;
1079                }
1080
1081                if ((pChDesp->Geography == BOTH)
1082                        || (pChDesp->Geography == Geography))
1083        {
1084                        if (pChDesp->FirstChannel > 14)
1085                increment = 4;
1086            else
1087                increment = 1;
1088                        offset = FillChList(pAd, pChDesp, offset, increment);
1089        }
1090        }
1091}
1092
1093
1094VOID BuildChannelListEx(
1095        IN PRTMP_ADAPTER pAd)
1096{
1097        PCH_REGION pChReg;
1098
1099        pChReg = GetChRegion(pAd->CommonCfg.CountryCode);
1100        CreateChList(pAd, pChReg, pAd->CommonCfg.Geography);
1101}
1102
1103
1104VOID BuildBeaconChList(
1105        IN PRTMP_ADAPTER pAd,
1106        OUT PUCHAR pBuf,
1107        OUT     PULONG pBufLen)
1108{
1109        INT i;
1110        ULONG TmpLen;
1111        PCH_REGION pChRegion;
1112        PCH_DESP pChDesp;
1113        UCHAR ChType;
1114
1115        pChRegion = GetChRegion(pAd->CommonCfg.CountryCode);
1116
1117        if (pChRegion == NULL)
1118                return;
1119
1120        ChBandCheck(pAd->CommonCfg.PhyMode, &ChType);
1121        *pBufLen = 0;
1122
1123        for (i=0; i<10; i++)
1124        {
1125                pChDesp = &pChRegion->ChDesp[i];
1126                if (pChDesp->FirstChannel == 0)
1127                        break;
1128
1129                if (ChType == BAND_5G)
1130                {
1131                        if (pChDesp->FirstChannel <= 14)
1132                                continue;
1133                }
1134                else if (ChType == BAND_24G)
1135                {
1136                        if (pChDesp->FirstChannel > 14)
1137                                continue;
1138                }
1139
1140                if ((pChDesp->Geography == BOTH)
1141                        || (pChDesp->Geography == pAd->CommonCfg.Geography))
1142                {
1143                        MakeOutgoingFrame(pBuf + *pBufLen,              &TmpLen,
1144                                                                1,                      &pChDesp->FirstChannel,
1145                                                                1,                      &pChDesp->NumOfCh,
1146                                                                1,                      &pChDesp->MaxTxPwr,
1147                                                                END_OF_ARGS);
1148                        *pBufLen += TmpLen;
1149                }
1150        }
1151}
1152
1153
1154#ifdef DOT11_N_SUPPORT
1155static BOOLEAN IsValidChannel(
1156        IN PRTMP_ADAPTER pAd,
1157        IN UCHAR channel)
1158
1159{
1160        INT i;
1161
1162        for (i = 0; i < pAd->ChannelListNum; i++)
1163        {
1164                if (pAd->ChannelList[i].Channel == channel)
1165                        break;
1166        }
1167
1168        if (i == pAd->ChannelListNum)
1169                return FALSE;
1170        else
1171                return TRUE;
1172}
1173
1174
1175static UCHAR GetExtCh(
1176        IN UCHAR Channel,
1177        IN UCHAR Direction)
1178{
1179        CHAR ExtCh;
1180
1181        if (Direction == EXTCHA_ABOVE)
1182                ExtCh = Channel + 4;
1183        else
1184                ExtCh = (Channel - 4) > 0 ? (Channel - 4) : 0;
1185
1186        return ExtCh;
1187}
1188
1189
1190VOID N_ChannelCheck(
1191        IN PRTMP_ADAPTER pAd)
1192{
1193        //UCHAR ChannelNum = pAd->ChannelListNum;
1194        UCHAR Channel = pAd->CommonCfg.Channel;
1195
1196        if ((pAd->CommonCfg.PhyMode >= PHY_11ABGN_MIXED) && (pAd->CommonCfg.RegTransmitSetting.field.BW  == BW_40))
1197        {
1198                if (Channel > 14)
1199                {
1200                        if ((Channel == 36) || (Channel == 44) || (Channel == 52) || (Channel == 60) || (Channel == 100) || (Channel == 108) ||
1201                            (Channel == 116) || (Channel == 124) || (Channel == 132) || (Channel == 149) || (Channel == 157))
1202                        {
1203                                pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_ABOVE;
1204                        }
1205                        else if ((Channel == 40) || (Channel == 48) || (Channel == 56) || (Channel == 64) || (Channel == 104) || (Channel == 112) ||
1206                                        (Channel == 120) || (Channel == 128) || (Channel == 136) || (Channel == 153) || (Channel == 161))
1207                        {
1208                                pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_BELOW;
1209                        }
1210                        else
1211                        {
1212                                pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
1213                        }
1214                }
1215                else
1216                {
1217                        do
1218                        {
1219                                UCHAR ExtCh;
1220                                UCHAR Dir = pAd->CommonCfg.RegTransmitSetting.field.EXTCHA;
1221                                ExtCh = GetExtCh(Channel, Dir);
1222                                if (IsValidChannel(pAd, ExtCh))
1223                                        break;
1224
1225                                Dir = (Dir == EXTCHA_ABOVE) ? EXTCHA_BELOW : EXTCHA_ABOVE;
1226                                ExtCh = GetExtCh(Channel, Dir);
1227                                if (IsValidChannel(pAd, ExtCh))
1228                                {
1229                                        pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = Dir;
1230                                        break;
1231                                }
1232                                pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
1233                        } while(FALSE);
1234
1235                        if (Channel == 14)
1236                        {
1237                                pAd->CommonCfg.RegTransmitSetting.field.BW  = BW_20;
1238                                //pAd->CommonCfg.RegTransmitSetting.field.EXTCHA = EXTCHA_NONE; // We didn't set the ExtCh as NONE due to it'll set in RTMPSetHT()
1239                        }
1240                }
1241        }
1242
1243
1244}
1245
1246
1247VOID N_SetCenCh(
1248        IN PRTMP_ADAPTER pAd)
1249{
1250        if (pAd->CommonCfg.RegTransmitSetting.field.BW == BW_40)
1251        {
1252                if (pAd->CommonCfg.RegTransmitSetting.field.EXTCHA == EXTCHA_ABOVE)
1253                {
1254                        pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel + 2;
1255                }
1256                else
1257                {
1258                        if (pAd->CommonCfg.Channel == 14)
1259                                pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 1;
1260                        else
1261                                pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel - 2;
1262                }
1263        }
1264        else
1265        {
1266                pAd->CommonCfg.CentralChannel = pAd->CommonCfg.Channel;
1267        }
1268}
1269#endif // DOT11_N_SUPPORT //
1270
1271
1272UINT8 GetCuntryMaxTxPwr(
1273        IN PRTMP_ADAPTER pAd,
1274        IN UINT8 channel)
1275{
1276        int i;
1277        for (i = 0; i < pAd->ChannelListNum; i++)
1278        {
1279                if (pAd->ChannelList[i].Channel == channel)
1280                        break;
1281        }
1282
1283        if (i == pAd->ChannelListNum)
1284                return 0xff;
1285        else
1286                return pAd->ChannelList[i].MaxTxPwr;
1287}
1288