Setting up repository
[linux-libre-firmware.git] / ath9k_htc / target_firmware / wlan / ar5416Phy.c
1 /*
2  *  Copyright (c) 2000-2002 Atheros Communications, Inc., All Rights Reserved
3  *
4  */
5
6 #ident "$Id: //depot/sw/branches/fusion_usb/target_firmware/wlan/target/ratectrl11n/ar5416Phy.c#5 $"
7
8 #include "ratectrl.h"
9 #include "ratectrl11n.h"
10
11 #define SHORT_PRE 1
12 #define LONG_PRE 0
13
14 #define WLAN_PHY_HT_20_SS       WLAN_RC_PHY_HT_20_SS
15 #define WLAN_PHY_HT_20_SS_HGI   WLAN_RC_PHY_HT_20_SS_HGI
16 #define WLAN_PHY_HT_20_DS       WLAN_RC_PHY_HT_20_DS
17 #define WLAN_PHY_HT_20_DS_HGI   WLAN_RC_PHY_HT_20_DS_HGI
18 #define WLAN_PHY_HT_40_SS       WLAN_RC_PHY_HT_40_SS
19 #define WLAN_PHY_HT_40_DS       WLAN_RC_PHY_HT_40_DS
20 #define WLAN_PHY_HT_40_DS_HGI   WLAN_RC_PHY_HT_40_DS_HGI
21 #define WLAN_PHY_HT_40_SS_HGI   WLAN_RC_PHY_HT_40_SS_HGI
22
23
24 /* TRUE_ALL_11N - valid for 20/40/Legacy, TRUE - Legacy only, TRUE_20 - HT 20 only, TRUE_40 - HT 40 only */
25 /* 4ms frame limit not used for NG mode.  The values filled for HT are the 64K max aggregate limit */
26
27 #ifndef MAGPIE_MERLIN // K2  
28
29 RATE_TABLE_11N ar5416_11ngRateTable = {
30
31     54,  /* number of rates - should match the no. of rows below */ 
32    100,  /* probe interval */     
33     50,  /* rssi reduce interval */    
34     WLAN_RC_HT_FLAG,  /* Phy rates allowed initially */
35     {/*                    Multiple      Single    */
36      /*                    stream        stream                                              short    dot11 ctrl  RssiAck  RssiAck  Base  CW40   SGI    Ht  tx chain 4ms tx valid for*/
37      /*                    valid         valid                           Kbps   uKbps  RC    Preamble Rate  Rate  ValidMin DeltaMin Idx   Idx    Idx    Idx mask     limit  UAPSD    */
38      /*    1 Mb [0]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, WLAN_PHY_CCK,     1000,  900,   0x1b, 0x00,    2,    0,     0,      1,       0,    0,     0,     0,  3, 7,    0, TRUE },
39      /*    2 Mb [1]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, WLAN_PHY_CCK,     2000,  1900,  0x1a, 0x04,    4,    1,     1,      1,       1,    1,     1,     1,  3, 7,    0, FALSE},
40      /*  5.5 Mb [2]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, WLAN_PHY_CCK,     5500,  4900,  0x19, 0x04,    11,   2,     2,      2,       2,    2,     2,     2,  3, 7,    0, FALSE},
41      /*   11 Mb [3]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, WLAN_PHY_CCK,     11000, 8100,  0x18, 0x04,    22,   3,     3,      2,       3,    3,     3,     3,  3, 7,    0, TRUE},
42      /*    6 Mb [4]  */ {  FALSE,        FALSE,        WLAN_PHY_OFDM,    6000,  5400,  0x0b, 0x00,    12,   4,     2,      1,       4,    4,     4,     4,  3, 7,    0, FALSE},
43      /*    9 Mb [5]  */ {  FALSE,        FALSE,        WLAN_PHY_OFDM,    9000,  7800,  0x0f, 0x00,    18,   4,     3,      1,       5,    5,     5,     5,  3, 7,    0, FALSE},
44      /*   12 Mb [6]  */ {  TRUE,         TRUE,         WLAN_PHY_OFDM,    12000, 10100, 0x0a, 0x00,    24,   6,     4,      1,       6,    6,     6,     6,  3, 7,    0, FALSE},
45      /*   18 Mb [7]  */ {  TRUE,         TRUE,         WLAN_PHY_OFDM,    18000, 14100, 0x0e, 0x00,    36,   6,     6,      2,       7,    7,     7,     7,  3, 7,    0, FALSE},
46      /*   24 Mb [8]  */ {  TRUE,         TRUE,         WLAN_PHY_OFDM,    24000, 17700, 0x09, 0x00,    48,   8,     10,     3,       8,    8,     8,     8,  3, 7,    0, TRUE},
47      /*   36 Mb [9]  */ {  TRUE,         TRUE,         WLAN_PHY_OFDM,    36000, 23700, 0x0d, 0x00,    72,   8,     14,     3,       9,    9,     9,     9,  3, 7,    0, FALSE},
48      /*   48 Mb [10] */ {  TRUE,         TRUE,         WLAN_PHY_OFDM,    48000, 27400, 0x08, 0x00,    96,   8,     20,     3,       10,   10,    10,    10, 1, 1,    0, FALSE},
49      /*   54 Mb [11] */ {  TRUE,         TRUE,         WLAN_PHY_OFDM,    54000, 30900, 0x0c, 0x00,    108,  8,     23,     3,       11,   11,    11,    11, 1, 1,    0, TRUE},
50      /*  6.5 Mb [12] */ {  FALSE,        FALSE,        WLAN_PHY_HT_20_SS,6500,  6400,  0x80, 0x00,    0,    4,     2,      3,       12,   33,    12,    33, 3, 7, 3216, TRUE},
51      /*   13 Mb [13] */ {  TRUE_20,      TRUE_20,      WLAN_PHY_HT_20_SS,13000, 12700, 0x81, 0x00,    1,    6,     4,      3,       13,   34,    13,    34, 3, 7, 6434, TRUE},
52      /* 19.5 Mb [14] */ {  TRUE_20,      TRUE_20,      WLAN_PHY_HT_20_SS,19500, 18800, 0x82, 0x00,    2,    6,     6,      3,       14,   35,    14,    35, 3, 7, 9650, FALSE},
53      /*   26 Mb [15] */ {  TRUE_20,      TRUE_20,      WLAN_PHY_HT_20_SS,26000, 25000, 0x83, 0x00,    3,    8,     10,     3,       15,   36,    15,    36, 3, 7, 12868, FALSE},
54      /*   39 Mb [16] */ {  TRUE_20,      TRUE_20,      WLAN_PHY_HT_20_SS,39000, 36700, 0x84, 0x00,    4,    8,     14,     3,       16,   37,    17,    38, 3, 7, 19304, TRUE},
55      /* 43.3 Mb [17] */ {  FALSE,        TRUE_20,  WLAN_PHY_HT_20_SS_HGI,43300, 39200, 0x84, 0x00,    4,    8,     14,     3,       16,   37,    17,    38, 3, 7, 21460, TRUE},
56      /*   52 Mb [18] */ {  FALSE,        TRUE_20,      WLAN_PHY_HT_20_SS,52000, 48100, 0x85, 0x00,    5,    8,     20,     3,       18,   39,    19,    40, 1, 1, 25740, FALSE},
57      /* 57.8 Mb [19] */ {  FALSE,        TRUE_20,  WLAN_PHY_HT_20_SS_HGI,57800, 52300, 0x85, 0x00,    5,    8,     20,     3,       18,   39,    19,    40, 1, 1, 28620, FALSE},
58      /* 58.5 Mb [20] */ {  FALSE,        TRUE_20,      WLAN_PHY_HT_20_SS,58500, 53500, 0x86, 0x00,    6,    8,     23,     3,       20,   41,    21,    42, 1, 1, 28956, FALSE},
59      /*   65 Mb [21] */ {  FALSE,        TRUE_20,  WLAN_PHY_HT_20_SS_HGI,65000, 58800, 0x86, 0x00,    6,    8,     23,     3,       20,   41,    21,    42, 1, 1, 32200, FALSE},
60      /*   65 Mb [22] */ {  FALSE,        TRUE_20,      WLAN_PHY_HT_20_SS,65000, 58801, 0x87, 0x00,    7,    8,     25,     3,       22,   43,    23,    44, 1, 1, 32200, TRUE},
61      /* 72.2 Mb [23] */ {  FALSE,        TRUE_20,  WLAN_PHY_HT_20_SS_HGI,72200, 65400, 0x87, 0x00,    7,    8,     25,     3,       22,   43,    23,    44, 1, 1, 35750, TRUE},
62      /*   52 Mb [24] */ {  TRUE_20,      FALSE,        WLAN_PHY_HT_20_DS,52000, 48100, 0x8b, 0x00,    11,   8,     10,     3,       24,   45,    24,    45, 3, 7, 25736, FALSE},
63      /*   78 Mb [25] */ {  TRUE_20,      FALSE,        WLAN_PHY_HT_20_DS,78000, 69500, 0x8c, 0x00,    12,   8,     14,     3,       25,   46,    26,    47, 3, 7, 38600, TRUE},
64      /* 86.7 Mb [26] */ {  FALSE,        FALSE,    WLAN_PHY_HT_20_DS_HGI,86700, 78400, 0x8c, 0x00,    12,   8,     14,     3,       25,   46,    26,    47, 3, 7, 42890, TRUE},
65      /*  104 Mb [27] */ {  TRUE_20,      FALSE,        WLAN_PHY_HT_20_DS,104000,89500, 0x8d, 0x00,    13,   8,     20,     3,       27,   48,    28,    49, 3, 5, 51472, FALSE},
66      /* 115.6Mb [28] */ {  FALSE,        FALSE,    WLAN_PHY_HT_20_DS_HGI,115600,103900,0x8d, 0x00,    13,   8,     20,     3,       27,   48,    28,    49, 3, 5, 57190, FALSE},
67      /*  117 Mb [29] */ {  TRUE_20,      FALSE,        WLAN_PHY_HT_20_DS,117000,105200,0x8e, 0x00,    14,   8,     23,     3,       29,   50,    30,    51, 3, 5, 57890, FALSE},
68      /*  130 Mb [30] */ {  FALSE,        FALSE,    WLAN_PHY_HT_20_DS_HGI,130000,116090,0x8e, 0x00,    14,   8,     23,     3,       29,   50,    30,    51, 3, 5, 64320, FALSE},
69      /*  130 Mb [31] */ {  TRUE_20,      FALSE,        WLAN_PHY_HT_20_DS,130000,116100,0x8f, 0x00,    15,   8,     25,     3,       31,   52,    32,    53, 3, 5, 64320, TRUE},
70      /* 144.4Mb [32] */ {  TRUE_20,      FALSE,    WLAN_PHY_HT_20_DS_HGI,144400,128100,0x8f, 0x00,    15,   8,     25,     3,       31,   52,    32,    53, 3, 5, 71490, TRUE},
71      /* 13.5 Mb [33] */ {  TRUE_40,      TRUE_40,      WLAN_PHY_HT_40_SS,13500, 13200, 0x80, 0x00,    0,    8,     2,      3,       12,   33,    33,    33, 3, 7, 6684, TRUE},
72      /* 27.0 Mb [34] */ {  TRUE_40,      TRUE_40,      WLAN_PHY_HT_40_SS,27500, 25900, 0x81, 0x00,    1,    8,     4,      3,       13,   34,    34,    34, 3, 7, 13368, TRUE},
73      /* 40.5 Mb [35] */ {  TRUE_40,      TRUE_40,      WLAN_PHY_HT_40_SS,40500, 38600, 0x82, 0x00,    2,    8,     6,      3,       14,   35,    35,    35, 3, 7, 20052, FALSE},
74      /*   54 Mb [36] */ {  TRUE_40,      TRUE_40,      WLAN_PHY_HT_40_SS,54000, 49800, 0x83, 0x00,    3,    8,     10,     3,       15,   36,    36,    36, 3, 7, 26738, FALSE},
75      /*   81 Mb [37] */ {  TRUE_40,      TRUE_40,      WLAN_PHY_HT_40_SS,81500, 72200, 0x84, 0x00,    4,    8,     14,     3,       16,   37,    38,    38, 3, 7, 40104, TRUE},
76      /*   90 Mb [38] */ {  FALSE,        TRUE_40,  WLAN_PHY_HT_40_SS_HGI,90000, 81500, 0x84, 0x00,    4,    8,     14,     3,       16,   37,    38,    38, 3, 7, 44590, TRUE},
77      /*  108 Mb [39] */ {  FALSE,        TRUE_40,      WLAN_PHY_HT_40_SS,108000,92900, 0x85, 0x00,    5,    8,     20,     3,       18,   39,    40,    40, 1, 1, 53476, FALSE},
78      /*  120 Mb [40] */ {  FALSE,        TRUE_40,  WLAN_PHY_HT_40_SS_HGI,120000,102100,0x85, 0x00,    5,    8,     20,     3,       18,   39,    40,    40, 1, 1, 59450, FALSE},
79      /* 121.5Mb [41] */ {  FALSE,        TRUE_40,      WLAN_PHY_HT_40_SS,121500,102700,0x86, 0x00,    6,    8,     23,     3,       20,   41,    42,    42, 1, 1, 60156, FALSE},
80      /*  135 Mb [42] */ {  FALSE,        TRUE_40,  WLAN_PHY_HT_40_SS_HGI,135000,111900,0x86, 0x00,    6,    8,     23,     3,       20,   41,    42,    42, 1, 1, 66840, FALSE},
81      /*  135 Mb [43] */ {  FALSE,        TRUE_40,      WLAN_PHY_HT_40_SS,135000,112000,0x87, 0x00,    7,    8,     25,     3,       22,   43,    44,    44, 1, 1, 66840, TRUE},
82      /*  150 Mb [44] */ {  FALSE,        TRUE_40,  WLAN_PHY_HT_40_SS_HGI,150000,122000,0x87, 0x00,    7,    8,     25,     3,       22,   43,    44,    44, 1, 1, 74200, TRUE},     
83      /*  108 Mb [45] */ {  TRUE_40,      FALSE,        WLAN_PHY_HT_40_DS,108000,92500, 0x8b, 0x00,    11,   8,     10,     3,       24,   45,    45,    45, 3, 7, 53440, FALSE},
84      /*  162 Mb [46] */ {  TRUE_40,      FALSE,        WLAN_PHY_HT_40_DS,162000,130300,0x8c, 0x00,    12,   8,     14,     3,       25,   46,    47,    47, 3, 7, 80160, TRUE},
85      /*  180 Mb [47] */ {  FALSE,        FALSE,    WLAN_PHY_HT_40_DS_HGI,180000,156900,0x8c, 0x00,    12,   8,     14,     3,       25,   46,    47,    47, 3, 7, 89090, TRUE},
86      /*  216 Mb [48] */ {  TRUE_40,      FALSE,        WLAN_PHY_HT_40_DS,216000,162800,0x8d, 0x00,    13,   8,     20,     3,       27,   48,    49,    49, 3, 5, 106880, FALSE},
87      /*  240 Mb [49] */ {  FALSE,        FALSE,    WLAN_PHY_HT_40_DS_HGI,240000,178000,0x8d, 0x00,    13,   8,     20,     3,       27,   48,    49,    49, 3, 5, 118790, FALSE},
88      /*  243 Mb [50] */ {  TRUE_40,      FALSE,        WLAN_PHY_HT_40_DS,243000,178200,0x8e, 0x00,    14,   8,     23,     3,       29,   50,    51,    51, 3, 5, 120240, FALSE},
89      /*  270 Mb [51] */ {  FALSE,        FALSE,    WLAN_PHY_HT_40_DS_HGI,270000,192050,0x8e, 0x00,    14,   8,     23,     3,       29,   50,    51,    51, 3, 5, 133600, FALSE},
90      /*  270 Mb [52] */ {  TRUE_40,      FALSE,        WLAN_PHY_HT_40_DS,270000,192100,0x8f, 0x00,    15,   8,     23,     3,       31,   52,    53,    53, 3, 5, 133600, FALSE},
91      /*  300 Mb [53] */ {  TRUE_40,      FALSE,    WLAN_PHY_HT_40_DS_HGI,300000,207000,0x8f, 0x00,    15,   8,     25,     3,       31,   52,    53,    53, 3, 5, 148400, TRUE},
92      /*                    Multiple      Single    */
93      /*                    stream        stream                                              short    dot11 ctrl  RssiAck  RssiAck  Base  CW40   SGI    Ht  tx chain 4ms tx valid for*/
94      /*                    valid         valid                           Kbps   uKbps  RC    Preamble Rate  Rate  ValidMin DeltaMin Idx   Idx    Idx    Idx mask     limit  UAPSD    */     
95     },
96 };
97
98 #else
99
100 RATE_TABLE_11N ar5416_11ngRateTable = {
101
102     46,  /* number of rates - should match the no. of rows below */ 
103     50,  /* probe interval */     
104     50,  /* rssi reduce interval */    
105     WLAN_RC_HT_FLAG,  /* Phy rates allowed initially */
106     {/*                    Multiple      Single      Single    */
107      /*                    stream        stream      stream                                              short    dot11 ctrl  RssiAck  RssiAck  Base  CW40   SGI    Ht  tx chain 4ms tx valid for*/
108      /*                    valid         valid         STBC                           Kbps   uKbps  RC    Preamble Rate  Rate  ValidMin DeltaMin Idx   Idx    Idx    Idx mask     limit  UAPSD    */
109      /*    1 Mb [0]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, TRUE_ALL_11N,  WLAN_PHY_CCK,     1000,  900,   0x1b, 0x00,    2,    0,     0,      1,       0,    0,     0,     0,  3, 7,    0, TRUE },
110      /*    2 Mb [1]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, TRUE_ALL_11N,  WLAN_PHY_CCK,     2000,  1900,  0x1a, 0x04,    4,    1,     1,      1,       1,    1,     1,     1,  3, 7,    0, FALSE},
111      /*  5.5 Mb [2]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, TRUE_ALL_11N,  WLAN_PHY_CCK,     5500,  4900,  0x19, 0x04,    11,   2,     2,      2,       2,    2,     2,     2,  3, 7,    0, FALSE},
112      /*   11 Mb [3]  */ {  TRUE_ALL_11N, TRUE_ALL_11N, TRUE_ALL_11N,  WLAN_PHY_CCK,     11000, 8100,  0x18, 0x04,    22,   3,     3,      2,       3,    3,     3,     3,  3, 7,    0, TRUE},
113      /*    6 Mb [4]  */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_OFDM,    6000,  5400,  0x0b, 0x00,    12,   4,     2,      1,       4,    4,     4,     4,  3, 7,    0, FALSE},
114      /*    9 Mb [5]  */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_OFDM,    9000,  7800,  0x0f, 0x00,    18,   4,     3,      1,       5,    5,     5,     5,  3, 7,    0, FALSE},
115      /*   12 Mb [6]  */ {  TRUE,         TRUE,         TRUE,          WLAN_PHY_OFDM,    12000, 10100, 0x0a, 0x00,    24,   6,     4,      1,       6,    6,     6,     6,  3, 7,    0, FALSE},
116      /*   18 Mb [7]  */ {  TRUE,         TRUE,         TRUE,          WLAN_PHY_OFDM,    18000, 14100, 0x0e, 0x00,    36,   6,     6,      2,       7,    7,     7,     7,  3, 7,    0, FALSE},
117      /*   24 Mb [8]  */ {  TRUE,         TRUE,         TRUE,          WLAN_PHY_OFDM,    24000, 17700, 0x09, 0x00,    48,   8,     10,     3,       8,    8,     8,     8,  3, 7,    0, TRUE},
118      /*   36 Mb [9]  */ {  TRUE,         TRUE,         TRUE,          WLAN_PHY_OFDM,    36000, 23700, 0x0d, 0x00,    72,   8,     14,     3,       9,    9,     9,     9,  3, 7,    0, FALSE},
119      /*   48 Mb [10] */ {  TRUE,         TRUE,         TRUE,          WLAN_PHY_OFDM,    48000, 27400, 0x08, 0x00,    96,   8,     20,     3,       10,   10,    10,    10, 1, 1,    0, FALSE},
120      /*   54 Mb [11] */ {  TRUE,         TRUE,         TRUE,          WLAN_PHY_OFDM,    54000, 30900, 0x0c, 0x00,    108,  8,     23,     3,       11,   11,    11,    11, 1, 1,    0, TRUE},
121      /*  6.5 Mb [12] */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_HT_20_SS,6500,  6400,  0x80, 0x00,    0,    4,     2,      3,       12,   28,    12,    28, 3, 7, 3216, TRUE},
122      /*   13 Mb [13] */ {  TRUE_20,      TRUE_20,      TRUE_20,       WLAN_PHY_HT_20_SS,13000, 12700, 0x81, 0x00,    1,    6,     4,      3,       13,   29,    13,    29, 3, 7, 6434, TRUE},
123      /* 19.5 Mb [14] */ {  TRUE_20,      TRUE_20,      TRUE_20,       WLAN_PHY_HT_20_SS,19500, 18800, 0x82, 0x00,    2,    6,     6,      3,       14,   30,    14,    30, 3, 7, 9650, FALSE},
124      /*   26 Mb [15] */ {  TRUE_20,      TRUE_20,      TRUE_20,       WLAN_PHY_HT_20_SS,26000, 25000, 0x83, 0x00,    3,    8,     10,     3,       15,   31,    15,    31, 3, 7, 12868, FALSE},
125      /*   39 Mb [16] */ {  TRUE_20,      TRUE_20,      TRUE_20,       WLAN_PHY_HT_20_SS,39000, 36700, 0x84, 0x00,    4,    8,     14,     3,       16,   32,    16,    32, 3, 7, 19304, TRUE},
126      /*   52 Mb [17] */ {  FALSE,        TRUE_20,      TRUE_20,       WLAN_PHY_HT_20_SS,52000, 48100, 0x85, 0x00,    5,    8,     20,     3,       17,   33,    17,    33, 1, 1, 25740, FALSE},
127      /* 58.5 Mb [18] */ {  FALSE,        TRUE_20,      TRUE_20,       WLAN_PHY_HT_20_SS,58500, 53500, 0x86, 0x00,    6,    8,     23,     3,       18,   34,    18,    34, 1, 1, 28956, FALSE},
128      /*   65 Mb [19] */ {  FALSE,        TRUE_20,      FALSE,         WLAN_PHY_HT_20_SS,65000, 59000, 0x87, 0x00,    7,    8,     25,     3,       19,   35,    19,    36, 1, 1, 32180, TRUE},
129      /*   13 Mb [20] */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_HT_20_DS,13000, 12700, 0x88, 0x00,    8,    4,     2,      3,       20,   37,    20,    37, 3, 7, 6430, TRUE},
130      /*   26 Mb [21] */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_HT_20_DS,26000, 24800, 0x89, 0x00,    9,    6,     4,      3,       21,   38,    21,    38, 3, 7, 12860, FALSE},
131      /*   39 Mb [22] */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_HT_20_DS,39000, 36600, 0x8a, 0x00,    10,   6,     6,      3,       22,   39,    22,    39, 3, 7, 19300, TRUE},
132      /*   52 Mb [23] */ {  TRUE_20,      FALSE,        FALSE,         WLAN_PHY_HT_20_DS,52000, 48100, 0x8b, 0x00,    11,   8,     10,     3,       23,   40,    23,    40, 3, 7, 25736, FALSE},
133      /*   78 Mb [24] */ {  TRUE_20,      FALSE,        TRUE_20,       WLAN_PHY_HT_20_DS,78000, 69500, 0x8c, 0x00,    12,   8,     14,     3,       24,   41,    24,    41, 3, 7, 38600, TRUE},
134      /*  104 Mb [25] */ {  TRUE_20,      FALSE,        TRUE_20,       WLAN_PHY_HT_20_DS,104000,89500, 0x8d, 0x00,    13,   8,     20,     3,       25,   42,    25,    42, 3, 5, 51472, FALSE},
135      /*  117 Mb [26] */ {  TRUE_20,      FALSE,        TRUE_20,       WLAN_PHY_HT_20_DS,117000,98900, 0x8e, 0x00,    14,   8,     23,     3,       26,   43,    26,    44, 3, 5, 57890, FALSE},
136      /*  130 Mb [27] */ {  TRUE_20,      FALSE,        TRUE_20,       WLAN_PHY_HT_20_DS,130000,108300,0x8f, 0x00,    15,   8,     25,     3,       27,   44,    27,    45, 3, 5, 64320, TRUE},
137      /* 13.5 Mb [28] */ {  TRUE_40,      TRUE_40,      TRUE_40,       WLAN_PHY_HT_40_SS,13500, 13200, 0x80, 0x00,    0,    8,     2,      3,       12,   28,    28,    28, 3, 7, 6684, TRUE},
138      /* 27.0 Mb [29] */ {  TRUE_40,      TRUE_40,      TRUE_40,       WLAN_PHY_HT_40_SS,27500, 25900, 0x81, 0x00,    1,    8,     4,      3,       13,   29,    29,    29, 3, 7, 13368, TRUE},
139      /* 40.5 Mb [30] */ {  TRUE_40,      TRUE_40,      TRUE_40,       WLAN_PHY_HT_40_SS,40500, 38600, 0x82, 0x00,    2,    8,     6,      3,       14,   30,    30,    30, 3, 7, 20052, FALSE},
140      /*   54 Mb [31] */ {  TRUE_40,      TRUE_40,      TRUE_40,       WLAN_PHY_HT_40_SS,54000, 49800, 0x83, 0x00,    3,    8,     10,     3,       15,   31,    31,    31, 3, 7, 26738, FALSE},
141      /*   81 Mb [32] */ {  TRUE_40,      TRUE_40,      TRUE_40,       WLAN_PHY_HT_40_SS,81500, 72200, 0x84, 0x00,    4,    8,     14,     3,       16,   32,    32,    32, 3, 7, 40104, TRUE},
142      /*  108 Mb [33] */ {  FALSE,        TRUE_40,      TRUE_40,       WLAN_PHY_HT_40_SS,108000,92900, 0x85, 0x00,    5,    8,     20,     3,       17,   33,    33,    33, 1, 1, 53476, FALSE},
143      /* 121.5Mb [34] */ {  FALSE,        TRUE_40,      TRUE_40,       WLAN_PHY_HT_40_SS,121500,102700,0x86, 0x00,    6,    8,     23,     3,       18,   34,    34,    34, 1, 1, 60156, FALSE},
144      /*  135 Mb [35] */ {  FALSE,        TRUE_40,      FALSE,         WLAN_PHY_HT_40_SS,135000,112000,0x87, 0x00,    7,    8,     25,     3,       19,   35,    36,    36, 1, 1, 66840, TRUE},
145      /*  150 Mb [36] */ {  FALSE,        TRUE_40,      FALSE,     WLAN_PHY_HT_40_SS_HGI,150000,122000,0x87, 0x00,    7,    8,     25,     3,       19,   35,    36,    36, 1, 1, 74200, TRUE},     
146      /*   27 Mb [37] */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_HT_40_DS,27000, 25800, 0x88, 0x00,    8,    8,     2,      3,       20,   37,    37,    37, 3, 7, 13360, TRUE},
147      /*   54 Mb [38] */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_HT_40_DS,54000, 49800, 0x89, 0x00,    9,    8,     4,      3,       21,   38,    38,    38, 3, 7, 26720, FALSE},
148      /*   81 Mb [39] */ {  FALSE,        FALSE,        FALSE,         WLAN_PHY_HT_40_DS,81000, 71900, 0x8a, 0x00,    10,   8,     6,      3,       22,   39,    39,    39, 3, 7, 40080, TRUE},
149      /*  108 Mb [40] */ {  TRUE_40,      FALSE,        FALSE,         WLAN_PHY_HT_40_DS,108000,92500, 0x8b, 0x00,    11,   8,     10,     3,       23,   40,    40,    40, 3, 7, 53440, FALSE},
150      /*  162 Mb [41] */ {  TRUE_40,      FALSE,        TRUE_40,       WLAN_PHY_HT_40_DS,162000,130300,0x8c, 0x00,    12,   8,     14,     3,       24,   41,    41,    41, 3, 7, 80160, TRUE},
151      /*  216 Mb [42] */ {  TRUE_40,      FALSE,        TRUE_40,       WLAN_PHY_HT_40_DS,216000,162800,0x8d, 0x00,    13,   8,     20,     3,       25,   42,    42,    42, 3, 5, 106880, FALSE},
152      /*  243 Mb [43] */ {  TRUE_40,      FALSE,        TRUE_40,       WLAN_PHY_HT_40_DS,243000,178200,0x8e, 0x00,    14,   8,     23,     3,       26,   43,    43,    43, 3, 5, 120240, FALSE},
153      /*  270 Mb [44] */ {  TRUE_40,      FALSE,        TRUE_40,       WLAN_PHY_HT_40_DS,270000,192100,0x8f, 0x00,    15,   8,     23,     3,       27,   44,    45,    45, 3, 5, 133600, FALSE},
154      /*  300 Mb [45] */ {  TRUE_40,      FALSE,        TRUE_40,   WLAN_PHY_HT_40_DS_HGI,300000,207000,0x8f, 0x00,    15,   8,     25,     3,       27,   44,    45,    45, 3, 5, 148400, TRUE},
155      /*                    Multiple      Single    */
156      /*                    stream        stream                                              short    dot11 ctrl  RssiAck  RssiAck  Base  CW40   SGI    Ht  tx chain 4ms tx valid for*/
157      /*                    valid         valid                           Kbps   uKbps  RC    Preamble Rate  Rate  ValidMin DeltaMin Idx   Idx    Idx    Idx mask     limit  UAPSD    */     
158     },
159 };
160
161 #ifdef ATH_SUPPORT_A_MODE
162 //static RATE_TABLE_11N ar5416_11naRateTable = {
163 RATE_TABLE_11N ar5416_11naRateTable = {
164
165     42,  /* number of rates */    
166     50,  /* probe interval */    
167     50,  /* rssi reduce interval */    
168     WLAN_RC_HT_FLAG,  /* Phy rates allowed initially */
169     {/*                Multiple        Single     Single*/
170      /*                  stream        stream     stream                                              rate  short    dot11 ctrl  RssiAck  RssiAck  Base  CW40   SGI    Ht  tx chain  4ms tx valid for */
171      /*                   valid         valid       STBC                                Kbps   uKbps  Code  Preamble Rate  Rate  ValidMin DeltaMin Idx   Idx    Idx    Idx mask      limit  UAPSD     */
172      /*    6 Mb [0]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,     6000,  5400, 0x0b,  0x00,   12,   0,     2,      1,       0,    0,     0,     0,  3, 7,      0, TRUE},
173      /*    9 Mb [1]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,     9000,  7800, 0x0f,  0x00,   18,   0,     3,      1,       1,    1,     1,     1,  3, 7,      0, FALSE},
174      /*   12 Mb [2]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,    12000, 10000, 0x0a,  0x00,   24,   2,     4,      2,       2,    2,     2,     2,  3, 7,      0, TRUE},
175      /*   18 Mb [3]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,    18000, 13900, 0x0e,  0x00,   36,   2,     6,      2,       3,    3,     3,     3,  3, 7,      0, FALSE},
176      /*   24 Mb [4]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,    24000, 17300, 0x09,  0x00,   48,   4,     10,     3,       4,    4,     4,     4,  3, 7,      0, TRUE},
177      /*   36 Mb [5]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,    36000, 23000, 0x0d,  0x00,   72,   4,     14,     3,       5,    5,     5,     5,  3, 7,      0, FALSE},
178      /*   48 Mb [6]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,    48000, 27400, 0x08,  0x00,   96,   4,     20,     3,       6,    6,     6,     6,  1, 1,      0, FALSE},
179      /*   54 Mb [7]  */ {  TRUE,         TRUE,      TRUE,            WLAN_PHY_OFDM,    54000, 29300, 0x0c,  0x00,   108,  4,     23,     3,       7,    7,     7,     7,  1, 1,      0, TRUE},
180      /*  6.5 Mb [8]  */ {  TRUE_20,      TRUE_20,   TRUE_20,         WLAN_PHY_HT_20_SS, 6500,  6400, 0x80,  0x00,   0,    0,     2,      3,       8,    24,    8,     24, 3, 7,   3216, TRUE},
181      /*   13 Mb [9]  */ {  TRUE_20,      TRUE_20,   TRUE_20,         WLAN_PHY_HT_20_SS,13000, 12700, 0x81,  0x00,   1,    2,     4,      3,       9,    25,    9,     25, 3, 7,   6434, TRUE},
182      /* 19.5 Mb [10] */ {  TRUE_20,      TRUE_20,   TRUE_20,         WLAN_PHY_HT_20_SS,19500, 18800, 0x82,  0x00,   2,    2,     6,      3,       10,   26,    10,    26, 3, 7,   9650, FALSE},
183      /*   26 Mb [11] */ {  TRUE_20,      TRUE_20,   TRUE_20,         WLAN_PHY_HT_20_SS,26000, 25000, 0x83,  0x00,   3,    4,     10,     3,       11,   27,    11,    27, 3, 7,  12868, FALSE},
184      /*   39 Mb [12] */ {  TRUE_20,      TRUE_20,   TRUE_20,         WLAN_PHY_HT_20_SS,39000, 36700, 0x84,  0x00,   4,    4,     14,     3,       12,   28,    12,    28, 3, 7,  19304, TRUE},
185      /*   52 Mb [13] */ {  FALSE,        TRUE_20,   TRUE_20,         WLAN_PHY_HT_20_SS,52000, 48100, 0x85,  0x00,   5,    4,     20,     3,       13,   29,    13,    29, 1, 1,  25740, FALSE},
186      /* 58.5 Mb [14] */ {  FALSE,        TRUE_20,   TRUE_20,         WLAN_PHY_HT_20_SS,58500, 53500, 0x86,  0x00,   6,    4,     23,     3,       14,   30,    14,    30, 1, 1,  28956, FALSE},
187      /*   65 Mb [15] */ {  FALSE,        TRUE_20,   FALSE,           WLAN_PHY_HT_20_SS,65000, 59000, 0x87,  0x00,   7,    4,     25,     3,       15,   31,    15,    32, 1, 1,  32180, TRUE},
188      /*   13 Mb [16] */ {  FALSE,        FALSE,     FALSE,           WLAN_PHY_HT_20_DS,13000, 12700, 0x88,  0x00,   8,    0,     2,      3,       16,   33,    16,    33, 3, 7,   6430, TRUE},
189      /*   26 Mb [17] */ {  FALSE,        FALSE,     FALSE,           WLAN_PHY_HT_20_DS,26000, 24800, 0x89,  0x00,   9,    2,     4,      3,       17,   34,    17,    34, 3, 7,  12860, FALSE},
190      /*   39 Mb [18] */ {  FALSE,        FALSE,     FALSE,           WLAN_PHY_HT_20_DS,39000, 36600, 0x8a,  0x00,   10,   2,     6,      3,       18,   35,    18,    35, 3, 7,  19300, TRUE},
191      /*   52 Mb [19] */ {  TRUE_20,      FALSE,     FALSE,           WLAN_PHY_HT_20_DS,52000, 48100, 0x8b,  0x00,   11,   4,     10,     3,       19,   36,    19,    36, 3, 7,  25736, FALSE},
192      /*   78 Mb [20] */ {  TRUE_20,      FALSE,     TRUE_20,         WLAN_PHY_HT_20_DS,78000, 69500, 0x8c,  0x00,   12,   4,     14,     3,       20,   37,    20,    37, 3, 7,  38600, TRUE},
193      /*  104 Mb [21] */ {  TRUE_20,      FALSE,     TRUE_20,         WLAN_PHY_HT_20_DS,104000,89500, 0x8d,  0x00,   13,   4,     20,     3,       21,   38,    21,    38, 3, 5,  51472, FALSE},
194      /*  117 Mb [22] */ {  TRUE_20,      FALSE,     TRUE_20,         WLAN_PHY_HT_20_DS,117000,98900, 0x8e,  0x00,   14,   4,     23,     3,       22,   39,    22,    39, 3, 5,  57890, FALSE},
195      /*  130 Mb [23] */ {  TRUE_20,      FALSE,     TRUE_20,         WLAN_PHY_HT_20_DS,130000,108300,0x8f,  0x00,   15,   4,     25,     3,       23,   40,    23,    41, 3, 5,  64320, TRUE},
196      /* 13.5 Mb [24] */ {  TRUE_40,      TRUE_40,   TRUE_40,         WLAN_PHY_HT_40_SS,13500, 13200, 0x80,  0x00,   0,    0,     2,      3,       8,    24,    24,    24, 3, 7,   6684, TRUE},
197      /* 27.0 Mb [25] */ {  TRUE_40,      TRUE_40,   TRUE_40,         WLAN_PHY_HT_40_SS,27500, 25900, 0x81,  0x00,   1,    2,     4,      3,       9,    25,    25,    25, 3, 7,  13368, TRUE},
198      /* 40.5 Mb [26] */ {  TRUE_40,      TRUE_40,   TRUE_40,         WLAN_PHY_HT_40_SS,40500, 38600, 0x82,  0x00,   2,    2,     6,      3,       10,   26,    26,    26, 3, 7,  20052, FALSE},
199      /*   54 Mb [27] */ {  TRUE_40,      TRUE_40,   TRUE_40,         WLAN_PHY_HT_40_SS,54000, 49800, 0x83,  0x00,   3,    4,     10,     3,       11,   27,    27,    27, 3, 7,  26738, FALSE},
200      /*   81 Mb [28] */ {  TRUE_40,      TRUE_40,   TRUE_40,         WLAN_PHY_HT_40_SS,81500, 72200, 0x84,  0x00,   4,    4,     14,     3,       12,   28,    28,    28, 3, 7,  40104, TRUE},
201      /*  108 Mb [29] */ {  FALSE,        TRUE_40,   TRUE_40,         WLAN_PHY_HT_40_SS,108000,92900, 0x85,  0x00,   5,    4,     20,     3,       13,   29,    29,    29, 1, 1,  53476, FALSE},
202      /* 121.5Mb [30] */ {  FALSE,        TRUE_40,   TRUE_40,         WLAN_PHY_HT_40_SS,121500,102700,0x86,  0x00,   6,    4,     23,     3,       14,   30,    30,    30, 1, 1,  60156, FALSE},
203      /*  135 Mb [31] */ {  FALSE,        TRUE_40,   FALSE,           WLAN_PHY_HT_40_SS,135000,112000,0x87,  0x00,   7,    4,     25,     3,       15,   31,    32,    32, 1, 1,  66840, TRUE},
204      /*  150 Mb [32] */ {  FALSE,        TRUE_40,   FALSE,       WLAN_PHY_HT_40_SS_HGI,150000,122000,0x87,  0x00,   7,    8,     25,     3,       15,   31,    32,    32, 1, 1, 65535, TRUE},     
205      /*   27 Mb [33] */ {  FALSE,        FALSE,     FALSE,           WLAN_PHY_HT_40_DS,27000, 25800, 0x88,  0x00,   8,    0,     2,      3,       16,   33,    33,    33, 3, 7,  13360, TRUE},
206      /*   54 Mb [34] */ {  FALSE,        FALSE,     FALSE,           WLAN_PHY_HT_40_DS,54000, 49800, 0x89,  0x00,   9,    2,     4,      3,       17,   34,    34,    34, 3, 7,  26720, FALSE},
207      /*   81 Mb [35] */ {  FALSE,        FALSE,     FALSE,           WLAN_PHY_HT_40_DS,81000, 71900, 0x8a,  0x00,   10,   2,     6,      3,       18,   35,    35,    35, 3, 7,  40080, TRUE},
208      /*  108 Mb [36] */ {  TRUE_40,      FALSE,     FALSE,           WLAN_PHY_HT_40_DS,108000,92500, 0x8b,  0x00,   11,   4,     10,     3,       19,   36,    36,    36, 3, 7,  53440, FALSE},
209      /*  162 Mb [37] */ {  TRUE_40,      FALSE,     TRUE_40,         WLAN_PHY_HT_40_DS,162000,130300,0x8c,  0x00,   12,   4,     14,     3,       20,   37,    37,    37, 3, 7,  80160, TRUE},
210      /*  216 Mb [38] */ {  TRUE_40,      FALSE,     TRUE_40,         WLAN_PHY_HT_40_DS,216000,162800,0x8d,  0x00,   13,   4,     20,     3,       21,   38,    38,    38, 3, 5, 106880, FALSE},
211      /*  243 Mb [39] */ {  TRUE_40,      FALSE,     TRUE_40,         WLAN_PHY_HT_40_DS,243000,178200,0x8e,  0x00,   14,   4,     23,     3,       22,   39,    39,    39, 3, 5, 120240, FALSE},
212      /*  270 Mb [40] */ {  TRUE_40,      FALSE,     TRUE_40,         WLAN_PHY_HT_40_DS,270000,192100,0x8f,  0x00,   15,   4,     25,     3,       23,   40,    41,    41, 3, 5, 133600, TRUE},
213      /*  300 Mb [41] */ {  TRUE_40,      FALSE,     TRUE_40,     WLAN_PHY_HT_40_DS_HGI,300000,207000,0x8f,  0x00,   15,   4,     25,     3,       23,   40,    41,    41, 3, 5, 148400, TRUE},
214      /*                    stream        stream                                                 rate  short    dot11 ctrl  RssiAck  RssiAck  Base  CW40   SGI    Ht  tx chain  4ms tx valid for */
215      /*                    valid         valid                                             Kbps   uKbps  Code  Preamble Rate  Rate  ValidMin DeltaMin Idx   Idx    Idx    Idx mask      limit  UAPSD     */     
216     },
217 };
218 #endif //ATH_SUPPORT_A_MODE
219
220 #endif //#ifdef MAGPIE_MERLIN // MAGPIE_MERLIN 
221
222 void
223 ar5416AttachRateTables(struct atheros_softc *sc)
224 {
225     sc->hwRateTable[WIRELESS_MODE_11NG]  = &ar5416_11ngRateTable;
226 #ifdef ATH_SUPPORT_A_MODE
227     sc->hwRateTable[WIRELESS_MODE_11NA]  = &ar5416_11naRateTable;
228 #endif
229 }