Mark files without an existing BSD licence as having a QCA ClearBSD
[open-ath9k-htc-firmware.git] / target_firmware / wlan / ar5416_phy.c
1 /*
2  * Copyright (c) 2013 Qualcomm Atheros, Inc.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted (subject to the limitations in the
7  * disclaimer below) provided that the following conditions are met:
8  *
9  *  * Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  *
12  *  * Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the
15  *    distribution.
16  *
17  *  * Neither the name of Qualcomm Atheros nor the names of its
18  *    contributors may be used to endorse or promote products derived
19  *    from this software without specific prior written permission.
20  *
21  * NO EXPRESS OR IMPLIED LICENSES TO ANY PARTY'S PATENT RIGHTS ARE
22  * GRANTED BY THIS LICENSE.  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT
23  * HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
24  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26  * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
27  * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
28  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
29  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
30  * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
31  * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
32  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
33  * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34  */
35
36 #include "opt_ah.h"
37 #include "ah.h"
38 #include "ah_internal.h"
39 #include "ar5416.h"
40
41 #ifdef MAGPIE_MERLIN
42
43 #define OFDM    IEEE80211_T_OFDM
44 #define CCK     IEEE80211_T_CCK
45 #define TURBO   IEEE80211_T_TURBO
46 #define XR      ATHEROS_T_XR
47 #define HT      IEEE80211_T_HT
48
49 HAL_RATE_TABLE ar5416_11a_table = {
50         8,  /* number of rates */
51         { 0 },
52         {
53                 /*                                                  short            ctrl  */
54                 /*                valid                 rateCode Preamble  dot11Rate Rate */
55                 /*   6 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,   6000,     0x0b,    0x00, (0x80|12),   0 },
56                 /*   9 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,   9000,     0x0f,    0x00,        18,   0 },
57                 /*  12 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  12000,     0x0a,    0x00, (0x80|24),   2 },
58                 /*  18 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  18000,     0x0e,    0x00,        36,   2 },
59                 /*  24 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  24000,     0x09,    0x00, (0x80|48),   4 },
60                 /*  36 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  36000,     0x0d,    0x00,        72,   4 },
61                 /*  48 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  48000,     0x08,    0x00,        96,   4 },
62                 /*  54 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  54000,     0x0c,    0x00,       108,   4 }
63         },
64 };
65
66 HAL_RATE_TABLE ar5416_11b_table = {
67         4,  /* number of rates */
68         { 0 },
69         {
70                 /*                                                 short            ctrl  */
71                 /*                valid                rateCode Preamble  dot11Rate Rate */
72                 /*   1 Mb */ {  AH_TRUE,  CCK, 60, 60, 60,  1000,    0x1b,    0x00, (0x80| 2),   0 },
73                 /*   2 Mb */ {  AH_TRUE,  CCK, 60, 60, 60,  2000,    0x1a,    0x04, (0x80| 4),   1 },
74                 /* 5.5 Mb */ {  AH_TRUE,  CCK, 60, 60, 60,  5500,    0x19,    0x04, (0x80|11),   1 },
75                 /*  11 Mb */ {  AH_TRUE,  CCK, 60, 60, 60, 11000,    0x18,    0x04, (0x80|22),   1 }
76         },
77 };
78
79 HAL_RATE_TABLE ar5416_11g_table = {
80         12,  /* number of rates */
81         { 0 },
82         {
83         /*                                                 short            ctrl  */
84         /*                valid                rateCode Preamble  dot11Rate Rate */
85                 /*   1 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 1000,    0x1b,    0x00, (0x80| 2),   0 },
86                 /*   2 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 2000,    0x1a,    0x04, (0x80| 4),   1 },
87                 /* 5.5 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 5500,    0x19,    0x04, (0x80|11),   2 },
88                 /*  11 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 11000,   0x18,    0x04, (0x80|22),   3 },
89                 /* Hardware workaround - remove rates 6, 9 from rate ctrl */
90                 /*   6 Mb */ { AH_FALSE, OFDM, 60,  60, 60,  6000,    0x0b,    0x00,        12,   4 },
91                 /*   9 Mb */ { AH_FALSE, OFDM, 60,  60, 60,  9000,    0x0f,    0x00,        18,   4 },
92                 /*  12 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 12000,    0x0a,    0x00,        24,   6 },
93                 /*  18 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 18000,    0x0e,    0x00,        36,   6 },
94                 /*  24 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 24000,    0x09,    0x00,        48,   8 },
95                 /*  36 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 36000,    0x0d,    0x00,        72,   8 },
96                 /*  48 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 48000,    0x08,    0x00,        96,   8 },
97                 /*  54 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 54000,    0x0c,    0x00,       108,   8 }
98         },
99 };
100
101 HAL_RATE_TABLE ar5416_11ng_table = {
102
103         28,  /* number of rates */
104         { -1 },
105         {
106                 /*                                                 short            ctrl  */
107                 /*                valid                rateCode Preamble  dot11Rate Rate */
108                 /*   1 Mb */ {  AH_TRUE, CCK,  60, 60, 60,  1000,    0x1b,    0x00, (0x80| 2),   0 },
109                 /*   2 Mb */ {  AH_TRUE, CCK,  60, 60, 60,   2000,    0x1a,    0x04, (0x80| 4),   1 },
110                 /* 5.5 Mb */ {  AH_TRUE, CCK,  60, 60, 60,   5500,    0x19,    0x04, (0x80|11),   2 },
111                 /*  11 Mb */ {  AH_TRUE, CCK,  60, 60, 60,  11000,    0x18,    0x04, (0x80|22),   3 },
112                 /* Hardware workaround - remove rates 6, 9 from rate ctrl */
113                 /*   6 Mb */ { AH_FALSE, OFDM, 60, 60, 60,  6000,    0x0b,    0x00,        12,   4 },
114                 /*   9 Mb */ { AH_FALSE, OFDM, 60, 60, 60,  9000,    0x0f,    0x00,        18,   4 },
115                 /*  12 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  12000,    0x0a,    0x00,        24,   6 },
116                 /*  18 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 18000,    0x0e,    0x00,        36,   6 },
117                 /*  24 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  24000,    0x09,    0x00,        48,   8 },
118                 /*  36 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  36000,    0x0d,    0x00,        72,   8 },
119                 /*  48 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  48000,    0x08,    0x00,        96,   8 },
120                 /*  54 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  54000,    0x0c,    0x00,       108,   8 },
121                 /* 6.5 Mb */ {  AH_TRUE, HT,   60,60, 60,   6500,    0x80,    0x00,         0,   4 },
122                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60,  13000,   0x81,    0x00,         1,   6 },
123                 /*19.5 Mb */ {  AH_TRUE, HT,   60,60, 60,   19500,  0x82,    0x00,         2,   6 },
124                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60,  26000,  0x83,    0x00,         3,   8 },
125                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60,  39000,  0x84,    0x00,         4,   8 },
126                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60,  52000,  0x85,    0x00,         5,   8 },
127                 /*58.5 Mb */ {  AH_TRUE, HT,   60,60,60,  58500,  0x86,    0x00,         6,   8 },
128                 /*  65 Mb */ {  AH_TRUE, HT,   60, 60, 60,  65000,  0x87,    0x00,         7,   8 },
129                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60,  13000,  0x88,    0x00,         8,   4 },
130                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60,   26000,  0x89,    0x00,         9,   6 },
131                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60,   39000,  0x8a,    0x00,        10,   6 },
132                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60,   52000,  0x8b,    0x00,        11,   8 },
133                 /*  78 Mb */ {  AH_TRUE, HT,   60, 60, 60,   78000,  0x8c,    0x00,        12,   8 },
134                 /* 104 Mb */ {  AH_TRUE, HT,   60, 60, 60,  104000,  0x8d,    0x00,        13,   8 },
135                 /* 117 Mb */ {  AH_TRUE, HT,   60, 60, 60,  117000,  0x8e,    0x00,        14,   8 },
136                 /* 130 Mb */ {  AH_TRUE, HT,   60, 60, 60,  130000,  0x8f,    0x00,        15,   8 },
137         },
138 };
139
140 HAL_RATE_TABLE ar5416_11na_table = {
141
142         24,  /* number of rates */
143         { -1 },
144         {
145                 /*                                                 short            ctrl  */
146                 /*                valid                rateCode Preamble  dot11Rate Rate */
147                 /*   6 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 6000,    0x0b,    0x00, (0x80|12),   0 },
148                 /*   9 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 9000,    0x0f,    0x00,        18,   0 },
149                 /*  12 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 12000,    0x0a,    0x00, (0x80|24),   2 },
150                 /*  18 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 18000,    0x0e,    0x00,        36,   2 },
151                 /*  24 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 24000,    0x09,    0x00, (0x80|48),   4 },
152                 /*  36 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 36000,    0x0d,    0x00,        72,   4 },
153                 /*  48 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 48000,    0x08,    0x00,        96,   4 },
154                 /*  54 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 54000,    0x0c,    0x00,       108,   4 },
155                 /* 6.5 Mb */ {  AH_TRUE, HT,   60, 60, 60, 6500,    0x80,    0x00,         0,    0 },
156                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60, 13000,    0x81,    0x00,         1,   2 },
157                 /*19.5 Mb */ {  AH_TRUE, HT,   60, 60, 60, 19500,    0x82,    0x00,         2,   2 },
158                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60, 26000,    0x83,    0x00,         3,   4 },
159                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60, 39000,    0x84,    0x00,         4,   4 },
160                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60, 52000,    0x85,    0x00,         5,   4 },
161                 /*58.5 Mb */ {  AH_TRUE, HT,   60, 60, 60, 58500,    0x86,    0x00,         6,   4 },
162                 /*  65 Mb */ {  AH_TRUE, HT,   60, 60, 60, 65000,    0x87,    0x00,         7,   4 },
163                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60, 13000,    0x88,    0x00,         8,   0 },
164                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60, 26000,    0x89,    0x00,         9,   2 },
165                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60, 39000,    0x8a,    0x00,        10,   2 },
166                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60, 52000,    0x8b,    0x00,        11,   4 },
167                 /*  78 Mb */ {  AH_TRUE, HT,   60, 60, 60, 78000,    0x8c,    0x00,        12,   4 },
168                 /* 104 Mb */ {  AH_TRUE, HT,   60, 60, 60, 104000,    0x8d,    0x00,       13,   4 },
169                 /* 117 Mb */ {  AH_TRUE, HT,   60, 60, 60, 117000,    0x8e,    0x00,       14,   4 },
170                 /* 130 Mb */ {  AH_TRUE, HT,   60, 60, 60, 130000,    0x8f,    0x00,       15,   4 },
171         },
172 };
173
174 adf_os_export_symbol(ar5416_11na_table);
175
176 #undef  OFDM
177 #undef  CCK
178 #undef  TURBO
179 #undef  XR
180 #undef  HT
181 #undef  HT_HGI
182
183 const HAL_RATE_TABLE *
184 ar5416GetRateTable(struct ath_hal *ah, a_uint32_t mode)
185 {
186         HAL_RATE_TABLE *rt;
187         switch (mode) {
188         case HAL_MODE_11A:
189                 rt = &ar5416_11a_table;
190                 break;
191         case HAL_MODE_11B:
192                 rt = &ar5416_11b_table;
193                 break;
194         case HAL_MODE_11G:
195                 rt =  &ar5416_11g_table;
196                 break;
197         case HAL_MODE_11NG:
198                 rt = &ar5416_11ng_table;
199                 break;
200         case HAL_MODE_11NA:
201                 rt = &ar5416_11na_table;
202                 break;
203         default:
204                 return AH_NULL;
205         }
206
207         return rt;
208 }
209
210 #else
211
212 #define OFDM    IEEE80211_T_OFDM
213 #define CCK     IEEE80211_T_CCK
214 #define TURBO   IEEE80211_T_TURBO
215 #define XR      ATHEROS_T_XR
216 #define HT      IEEE80211_T_HT
217
218 HAL_RATE_TABLE ar5416_11ng_table = {
219
220         33,  /* number of rates */
221         { -1 },
222         {
223                 /*                                                 short            ctrl  */
224                 /*                valid                rateCode Preamble  dot11Rate Rate */
225                 /*[ 0]   1 Mb */ {  AH_TRUE, CCK,     1000,    0x1b,    0x00, (0x80| 2),   0 },
226                 /*[ 1]   2 Mb */ {  AH_TRUE, CCK,     2000,    0x1a,    0x04, (0x80| 4),   1 },
227                 /*[ 2] 5.5 Mb */ {  AH_TRUE, CCK,     5500,    0x19,    0x04, (0x80|11),   2 },
228                 /*[ 3]  11 Mb */ {  AH_TRUE, CCK,    11000,    0x18,    0x04, (0x80|22),   3 },
229                 /* Hardware workaround - remove rates 6, 9 from rate ctrl */
230                 /*[ 4]   6 Mb */ { AH_FALSE, OFDM,    6000,    0x0b,    0x00,        12,   4 },
231                 /*[ 5]   9 Mb */ { AH_FALSE, OFDM,    9000,    0x0f,    0x00,        18,   4 },
232                 /*[ 6]  12 Mb */ {  AH_TRUE, OFDM,   12000,    0x0a,    0x00,        24,   6 },
233                 /*[ 7]  18 Mb */ {  AH_TRUE, OFDM,   18000,    0x0e,    0x00,        36,   6 },
234                 /*[ 8]  24 Mb */ {  AH_TRUE, OFDM,   24000,    0x09,    0x00,        48,   8 },
235                 /*[ 9]  36 Mb */ {  AH_TRUE, OFDM,   36000,    0x0d,    0x00,        72,   8 },
236                 /*[10]  48 Mb */ {  AH_TRUE, OFDM,   48000,    0x08,    0x00,        96,   8 },
237                 /*[11]  54 Mb */ {  AH_TRUE, OFDM,   54000,    0x0c,    0x00,       108,   8 },
238                 /*[12] 6.5 Mb */ {  AH_TRUE, HT,      6500,    0x80,    0x00,             0,   4 },
239                 /*[13]  13 Mb */ {  AH_TRUE, HT,         13000,    0x81,    0x00,         1,   6 },
240                 /*[14]19.5 Mb */ {  AH_TRUE, HT,         19500,    0x82,    0x00,         2,   6 },
241                 /*[15]  26 Mb */ {  AH_TRUE, HT,         26000,    0x83,    0x00,         3,   8 },
242                 /*[16]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   8 },
243                 /*[17]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   8 },
244                 /*[18]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   8 },
245                 /*[19]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   8 },
246                 /*[20]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   8 },
247                 /*[21]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   8 },
248                 /*[22]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   8 },
249                 /*[23]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   8 },
250                 /*[24]  52 Mb */ {  AH_TRUE, HT,         52000,    0x8b,    0x00,        11,   8 },
251                 /*[25]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   8 },
252                 /*[26]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   8 },
253                 /*[27] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   8 },
254                 /*[28] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   8 },
255                 /*[29] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   8 },
256                 /*[30] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   8 },
257                 /*[31] 130 Mb */ {  AH_TRUE, HT,        130000,    0x8f,    0x00,        15,   8 },
258                 /*[32] 130 Mb */ {  AH_TRUE, HT,        130000,    0x8f,    0x00,        15,   8 },
259         },
260 };
261
262 #ifdef ATH_SUPPORT_A_MODE
263
264 HAL_RATE_TABLE ar5416_11na_table = {
265
266         28,  /* number of rates */
267         { -1 },
268         {
269                 /*                                                 short            ctrl  */
270                 /*                valid                rateCode Preamble  dot11Rate Rate */
271                 /*[ 0]   6 Mb */ {  AH_TRUE, OFDM,    6000,    0x0b,    0x00, (0x80|12),   0 },
272                 /*[ 1]   9 Mb */ {  AH_TRUE, OFDM,    9000,    0x0f,    0x00,        18,   0 },
273                 /*[ 2]  12 Mb */ {  AH_TRUE, OFDM,   12000,    0x0a,    0x00, (0x80|24),   2 },
274                 /*[ 3]  18 Mb */ {  AH_TRUE, OFDM,   18000,    0x0e,    0x00,        36,   2 },
275                 /*[ 4]  24 Mb */ {  AH_TRUE, OFDM,   24000,    0x09,    0x00, (0x80|48),   4 },
276                 /*[ 5]  36 Mb */ {  AH_TRUE, OFDM,   36000,    0x0d,    0x00,        72,   4 },
277                 /*[ 6]  48 Mb */ {  AH_TRUE, OFDM,   48000,    0x08,    0x00,        96,   4 },
278                 /*[ 7]  54 Mb */ {  AH_TRUE, OFDM,   54000,    0x0c,    0x00,       108,   4 },
279                 /*[ 8] 6.5 Mb */ {  AH_TRUE, HT,      6500,    0x80,    0x00,         0,   0 },
280                 /*[ 9]  13 Mb */ {  AH_TRUE, HT,         13000,    0x81,    0x00,         1,   2 },
281                 /*[10]19.5 Mb */ {  AH_TRUE, HT,         19500,    0x82,    0x00,         2,   2 },
282                 /*[11]  26 Mb */ {  AH_TRUE, HT,         26000,    0x83,    0x00,         3,   4 },
283                 /*[12]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   4 },
284                 /*[13]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   4 },
285                 /*[14]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   4 },
286                 /*[15]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   4 },
287                 /*[16]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   4 },
288                 /*[17]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   4 },
289                 /*[18]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   4 },
290                 /*[19]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   4 },
291                 /*[20]  52 Mb */ {  AH_TRUE, HT,         52000,    0x8b,    0x00,        11,   4 },
292                 /*[21]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   4 },
293                 /*[22]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   4 },
294                 /*[23] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   4 },
295                 /*[24] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   4 },
296                 /*[25] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   4 },
297                 /*[26] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   4 },
298                 /*[27] 130 Mb */ {  AH_TRUE, HT,        130000,    0x8f,    0x00,        15,   4 },
299         },
300 };
301 #endif
302
303 #undef  OFDM
304 #undef  CCK
305 #undef  TURBO
306 #undef  XR
307 #undef  HT
308 #undef  HT_HGI
309
310 const HAL_RATE_TABLE *
311 ar5416GetRateTable(struct ath_hal *ah, a_uint32_t mode)
312 {
313         HAL_RATE_TABLE *rt;
314         switch (mode) {
315         case HAL_MODE_11NG:
316                 rt = &ar5416_11ng_table;
317                 break;
318 #ifdef ATH_SUPPORT_A_MODE
319         case HAL_MODE_11NA:
320                 rt = &ar5416_11na_table;
321                 break;
322 #endif
323         default:
324                 return AH_NULL;
325         }
326
327         return rt;
328 }
329
330 #endif