Setting up repository
[linux-libre-firmware.git] / ath9k_htc / 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 "ah.h"
37 #include "ah_internal.h"
38 #include "ar5416.h"
39
40 #ifdef MAGPIE_MERLIN
41
42 #define OFDM    IEEE80211_T_OFDM
43 #define CCK     IEEE80211_T_CCK
44 #define TURBO   IEEE80211_T_TURBO
45 #define XR      ATHEROS_T_XR
46 #define HT      IEEE80211_T_HT
47
48 HAL_RATE_TABLE ar5416_11a_table = {
49         8,  /* number of rates */
50         { 0 },
51         {
52                 /*                                                  short            ctrl  */
53                 /*                valid                 rateCode Preamble  dot11Rate Rate */
54                 /*   6 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,   6000,     0x0b,    0x00, (0x80|12),   0 },
55                 /*   9 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,   9000,     0x0f,    0x00,        18,   0 },
56                 /*  12 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  12000,     0x0a,    0x00, (0x80|24),   2 },
57                 /*  18 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  18000,     0x0e,    0x00,        36,   2 },
58                 /*  24 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  24000,     0x09,    0x00, (0x80|48),   4 },
59                 /*  36 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  36000,     0x0d,    0x00,        72,   4 },
60                 /*  48 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  48000,     0x08,    0x00,        96,   4 },
61                 /*  54 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  54000,     0x0c,    0x00,       108,   4 }
62         },
63 };
64
65 HAL_RATE_TABLE ar5416_11b_table = {
66         4,  /* number of rates */
67         { 0 },
68         {
69                 /*                                                 short            ctrl  */
70                 /*                valid                rateCode Preamble  dot11Rate Rate */
71                 /*   1 Mb */ {  AH_TRUE,  CCK, 60, 60, 60,  1000,    0x1b,    0x00, (0x80| 2),   0 },
72                 /*   2 Mb */ {  AH_TRUE,  CCK, 60, 60, 60,  2000,    0x1a,    0x04, (0x80| 4),   1 },
73                 /* 5.5 Mb */ {  AH_TRUE,  CCK, 60, 60, 60,  5500,    0x19,    0x04, (0x80|11),   1 },
74                 /*  11 Mb */ {  AH_TRUE,  CCK, 60, 60, 60, 11000,    0x18,    0x04, (0x80|22),   1 }
75         },
76 };
77
78 HAL_RATE_TABLE ar5416_11g_table = {
79         12,  /* number of rates */
80         { 0 },
81         {
82         /*                                                 short            ctrl  */
83         /*                valid                rateCode Preamble  dot11Rate Rate */
84                 /*   1 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 1000,    0x1b,    0x00, (0x80| 2),   0 },
85                 /*   2 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 2000,    0x1a,    0x04, (0x80| 4),   1 },
86                 /* 5.5 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 5500,    0x19,    0x04, (0x80|11),   2 },
87                 /*  11 Mb */ {  AH_TRUE, CCK,  60,  60,  60, 11000,   0x18,    0x04, (0x80|22),   3 },
88                 /* Hardware workaround - remove rates 6, 9 from rate ctrl */
89                 /*   6 Mb */ { AH_FALSE, OFDM, 60,  60, 60,  6000,    0x0b,    0x00,        12,   4 },
90                 /*   9 Mb */ { AH_FALSE, OFDM, 60,  60, 60,  9000,    0x0f,    0x00,        18,   4 },
91                 /*  12 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 12000,    0x0a,    0x00,        24,   6 },
92                 /*  18 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 18000,    0x0e,    0x00,        36,   6 },
93                 /*  24 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 24000,    0x09,    0x00,        48,   8 },
94                 /*  36 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 36000,    0x0d,    0x00,        72,   8 },
95                 /*  48 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 48000,    0x08,    0x00,        96,   8 },
96                 /*  54 Mb */ {  AH_TRUE, OFDM, 60,  60, 60, 54000,    0x0c,    0x00,       108,   8 }
97         },
98 };
99
100 HAL_RATE_TABLE ar5416_11ng_table = {
101
102         28,  /* number of rates */
103         { -1 },
104         {
105                 /*                                                 short            ctrl  */
106                 /*                valid                rateCode Preamble  dot11Rate Rate */
107                 /*   1 Mb */ {  AH_TRUE, CCK,  60, 60, 60,  1000,    0x1b,    0x00, (0x80| 2),   0 },
108                 /*   2 Mb */ {  AH_TRUE, CCK,  60, 60, 60,   2000,    0x1a,    0x04, (0x80| 4),   1 },
109                 /* 5.5 Mb */ {  AH_TRUE, CCK,  60, 60, 60,   5500,    0x19,    0x04, (0x80|11),   2 },
110                 /*  11 Mb */ {  AH_TRUE, CCK,  60, 60, 60,  11000,    0x18,    0x04, (0x80|22),   3 },
111                 /* Hardware workaround - remove rates 6, 9 from rate ctrl */
112                 /*   6 Mb */ { AH_FALSE, OFDM, 60, 60, 60,  6000,    0x0b,    0x00,        12,   4 },
113                 /*   9 Mb */ { AH_FALSE, OFDM, 60, 60, 60,  9000,    0x0f,    0x00,        18,   4 },
114                 /*  12 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  12000,    0x0a,    0x00,        24,   6 },
115                 /*  18 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 18000,    0x0e,    0x00,        36,   6 },
116                 /*  24 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  24000,    0x09,    0x00,        48,   8 },
117                 /*  36 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  36000,    0x0d,    0x00,        72,   8 },
118                 /*  48 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  48000,    0x08,    0x00,        96,   8 },
119                 /*  54 Mb */ {  AH_TRUE, OFDM, 60, 60, 60,  54000,    0x0c,    0x00,       108,   8 },
120                 /* 6.5 Mb */ {  AH_TRUE, HT,   60,60, 60,   6500,    0x80,    0x00,         0,   4 },
121                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60,  13000,   0x81,    0x00,         1,   6 },
122                 /*19.5 Mb */ {  AH_TRUE, HT,   60,60, 60,   19500,  0x82,    0x00,         2,   6 },
123                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60,  26000,  0x83,    0x00,         3,   8 },
124                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60,  39000,  0x84,    0x00,         4,   8 },
125                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60,  52000,  0x85,    0x00,         5,   8 },
126                 /*58.5 Mb */ {  AH_TRUE, HT,   60,60,60,  58500,  0x86,    0x00,         6,   8 },
127                 /*  65 Mb */ {  AH_TRUE, HT,   60, 60, 60,  65000,  0x87,    0x00,         7,   8 },
128                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60,  13000,  0x88,    0x00,         8,   4 },
129                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60,   26000,  0x89,    0x00,         9,   6 },
130                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60,   39000,  0x8a,    0x00,        10,   6 },
131                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60,   52000,  0x8b,    0x00,        11,   8 },
132                 /*  78 Mb */ {  AH_TRUE, HT,   60, 60, 60,   78000,  0x8c,    0x00,        12,   8 },
133                 /* 104 Mb */ {  AH_TRUE, HT,   60, 60, 60,  104000,  0x8d,    0x00,        13,   8 },
134                 /* 117 Mb */ {  AH_TRUE, HT,   60, 60, 60,  117000,  0x8e,    0x00,        14,   8 },
135                 /* 130 Mb */ {  AH_TRUE, HT,   60, 60, 60,  130000,  0x8f,    0x00,        15,   8 },
136         },
137 };
138
139 HAL_RATE_TABLE ar5416_11na_table = {
140
141         24,  /* number of rates */
142         { -1 },
143         {
144                 /*                                                 short            ctrl  */
145                 /*                valid                rateCode Preamble  dot11Rate Rate */
146                 /*   6 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 6000,    0x0b,    0x00, (0x80|12),   0 },
147                 /*   9 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 9000,    0x0f,    0x00,        18,   0 },
148                 /*  12 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 12000,    0x0a,    0x00, (0x80|24),   2 },
149                 /*  18 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 18000,    0x0e,    0x00,        36,   2 },
150                 /*  24 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 24000,    0x09,    0x00, (0x80|48),   4 },
151                 /*  36 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 36000,    0x0d,    0x00,        72,   4 },
152                 /*  48 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 48000,    0x08,    0x00,        96,   4 },
153                 /*  54 Mb */ {  AH_TRUE, OFDM, 60, 60, 60, 54000,    0x0c,    0x00,       108,   4 },
154                 /* 6.5 Mb */ {  AH_TRUE, HT,   60, 60, 60, 6500,    0x80,    0x00,         0,    0 },
155                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60, 13000,    0x81,    0x00,         1,   2 },
156                 /*19.5 Mb */ {  AH_TRUE, HT,   60, 60, 60, 19500,    0x82,    0x00,         2,   2 },
157                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60, 26000,    0x83,    0x00,         3,   4 },
158                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60, 39000,    0x84,    0x00,         4,   4 },
159                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60, 52000,    0x85,    0x00,         5,   4 },
160                 /*58.5 Mb */ {  AH_TRUE, HT,   60, 60, 60, 58500,    0x86,    0x00,         6,   4 },
161                 /*  65 Mb */ {  AH_TRUE, HT,   60, 60, 60, 65000,    0x87,    0x00,         7,   4 },
162                 /*  13 Mb */ {  AH_TRUE, HT,   60, 60, 60, 13000,    0x88,    0x00,         8,   0 },
163                 /*  26 Mb */ {  AH_TRUE, HT,   60, 60, 60, 26000,    0x89,    0x00,         9,   2 },
164                 /*  39 Mb */ {  AH_TRUE, HT,   60, 60, 60, 39000,    0x8a,    0x00,        10,   2 },
165                 /*  52 Mb */ {  AH_TRUE, HT,   60, 60, 60, 52000,    0x8b,    0x00,        11,   4 },
166                 /*  78 Mb */ {  AH_TRUE, HT,   60, 60, 60, 78000,    0x8c,    0x00,        12,   4 },
167                 /* 104 Mb */ {  AH_TRUE, HT,   60, 60, 60, 104000,    0x8d,    0x00,       13,   4 },
168                 /* 117 Mb */ {  AH_TRUE, HT,   60, 60, 60, 117000,    0x8e,    0x00,       14,   4 },
169                 /* 130 Mb */ {  AH_TRUE, HT,   60, 60, 60, 130000,    0x8f,    0x00,       15,   4 },
170         },
171 };
172
173 #undef  OFDM
174 #undef  CCK
175 #undef  TURBO
176 #undef  XR
177 #undef  HT
178 #undef  HT_HGI
179
180 const HAL_RATE_TABLE *
181 ar5416GetRateTable(struct ath_hal *ah, a_uint32_t mode)
182 {
183         HAL_RATE_TABLE *rt;
184         switch (mode) {
185         case HAL_MODE_11A:
186                 rt = &ar5416_11a_table;
187                 break;
188         case HAL_MODE_11B:
189                 rt = &ar5416_11b_table;
190                 break;
191         case HAL_MODE_11G:
192                 rt =  &ar5416_11g_table;
193                 break;
194         case HAL_MODE_11NG:
195                 rt = &ar5416_11ng_table;
196                 break;
197         case HAL_MODE_11NA:
198                 rt = &ar5416_11na_table;
199                 break;
200         default:
201                 return AH_NULL;
202         }
203
204         return rt;
205 }
206
207 #else
208
209 #define OFDM    IEEE80211_T_OFDM
210 #define CCK     IEEE80211_T_CCK
211 #define TURBO   IEEE80211_T_TURBO
212 #define XR      ATHEROS_T_XR
213 #define HT      IEEE80211_T_HT
214
215 HAL_RATE_TABLE ar5416_11ng_table = {
216
217         33,  /* number of rates */
218         { -1 },
219         {
220                 /*                                                 short            ctrl  */
221                 /*                valid                rateCode Preamble  dot11Rate Rate */
222                 /*[ 0]   1 Mb */ {  AH_TRUE, CCK,     1000,    0x1b,    0x00, (0x80| 2),   0 },
223                 /*[ 1]   2 Mb */ {  AH_TRUE, CCK,     2000,    0x1a,    0x04, (0x80| 4),   1 },
224                 /*[ 2] 5.5 Mb */ {  AH_TRUE, CCK,     5500,    0x19,    0x04, (0x80|11),   2 },
225                 /*[ 3]  11 Mb */ {  AH_TRUE, CCK,    11000,    0x18,    0x04, (0x80|22),   3 },
226                 /* Hardware workaround - remove rates 6, 9 from rate ctrl */
227                 /*[ 4]   6 Mb */ { AH_FALSE, OFDM,    6000,    0x0b,    0x00,        12,   4 },
228                 /*[ 5]   9 Mb */ { AH_FALSE, OFDM,    9000,    0x0f,    0x00,        18,   4 },
229                 /*[ 6]  12 Mb */ {  AH_TRUE, OFDM,   12000,    0x0a,    0x00,        24,   6 },
230                 /*[ 7]  18 Mb */ {  AH_TRUE, OFDM,   18000,    0x0e,    0x00,        36,   6 },
231                 /*[ 8]  24 Mb */ {  AH_TRUE, OFDM,   24000,    0x09,    0x00,        48,   8 },
232                 /*[ 9]  36 Mb */ {  AH_TRUE, OFDM,   36000,    0x0d,    0x00,        72,   8 },
233                 /*[10]  48 Mb */ {  AH_TRUE, OFDM,   48000,    0x08,    0x00,        96,   8 },
234                 /*[11]  54 Mb */ {  AH_TRUE, OFDM,   54000,    0x0c,    0x00,       108,   8 },
235                 /*[12] 6.5 Mb */ {  AH_TRUE, HT,      6500,    0x80,    0x00,             0,   4 },
236                 /*[13]  13 Mb */ {  AH_TRUE, HT,         13000,    0x81,    0x00,         1,   6 },
237                 /*[14]19.5 Mb */ {  AH_TRUE, HT,         19500,    0x82,    0x00,         2,   6 },
238                 /*[15]  26 Mb */ {  AH_TRUE, HT,         26000,    0x83,    0x00,         3,   8 },
239                 /*[16]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   8 },
240                 /*[17]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   8 },
241                 /*[18]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   8 },
242                 /*[19]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   8 },
243                 /*[20]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   8 },
244                 /*[21]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   8 },
245                 /*[22]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   8 },
246                 /*[23]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   8 },
247                 /*[24]  52 Mb */ {  AH_TRUE, HT,         52000,    0x8b,    0x00,        11,   8 },
248                 /*[25]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   8 },
249                 /*[26]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   8 },
250                 /*[27] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   8 },
251                 /*[28] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   8 },
252                 /*[29] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   8 },
253                 /*[30] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   8 },
254                 /*[31] 130 Mb */ {  AH_TRUE, HT,        130000,    0x8f,    0x00,        15,   8 },
255                 /*[32] 130 Mb */ {  AH_TRUE, HT,        130000,    0x8f,    0x00,        15,   8 },
256         },
257 };
258
259 #ifdef ATH_SUPPORT_A_MODE
260
261 HAL_RATE_TABLE ar5416_11na_table = {
262
263         28,  /* number of rates */
264         { -1 },
265         {
266                 /*                                                 short            ctrl  */
267                 /*                valid                rateCode Preamble  dot11Rate Rate */
268                 /*[ 0]   6 Mb */ {  AH_TRUE, OFDM,    6000,    0x0b,    0x00, (0x80|12),   0 },
269                 /*[ 1]   9 Mb */ {  AH_TRUE, OFDM,    9000,    0x0f,    0x00,        18,   0 },
270                 /*[ 2]  12 Mb */ {  AH_TRUE, OFDM,   12000,    0x0a,    0x00, (0x80|24),   2 },
271                 /*[ 3]  18 Mb */ {  AH_TRUE, OFDM,   18000,    0x0e,    0x00,        36,   2 },
272                 /*[ 4]  24 Mb */ {  AH_TRUE, OFDM,   24000,    0x09,    0x00, (0x80|48),   4 },
273                 /*[ 5]  36 Mb */ {  AH_TRUE, OFDM,   36000,    0x0d,    0x00,        72,   4 },
274                 /*[ 6]  48 Mb */ {  AH_TRUE, OFDM,   48000,    0x08,    0x00,        96,   4 },
275                 /*[ 7]  54 Mb */ {  AH_TRUE, OFDM,   54000,    0x0c,    0x00,       108,   4 },
276                 /*[ 8] 6.5 Mb */ {  AH_TRUE, HT,      6500,    0x80,    0x00,         0,   0 },
277                 /*[ 9]  13 Mb */ {  AH_TRUE, HT,         13000,    0x81,    0x00,         1,   2 },
278                 /*[10]19.5 Mb */ {  AH_TRUE, HT,         19500,    0x82,    0x00,         2,   2 },
279                 /*[11]  26 Mb */ {  AH_TRUE, HT,         26000,    0x83,    0x00,         3,   4 },
280                 /*[12]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   4 },
281                 /*[13]  39 Mb */ {  AH_TRUE, HT,         39000,    0x84,    0x00,         4,   4 },
282                 /*[14]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   4 },
283                 /*[15]  52 Mb */ {  AH_TRUE, HT,         52000,    0x85,    0x00,         5,   4 },
284                 /*[16]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   4 },
285                 /*[17]58.5 Mb */ {  AH_TRUE, HT,         58500,    0x86,    0x00,         6,   4 },
286                 /*[18]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   4 },
287                 /*[19]  65 Mb */ {  AH_TRUE, HT,         65000,    0x87,    0x00,         7,   4 },
288                 /*[20]  52 Mb */ {  AH_TRUE, HT,         52000,    0x8b,    0x00,        11,   4 },
289                 /*[21]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   4 },
290                 /*[22]  78 Mb */ {  AH_TRUE, HT,         78000,    0x8c,    0x00,        12,   4 },
291                 /*[23] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   4 },
292                 /*[24] 104 Mb */ {  AH_TRUE, HT,        104000,    0x8d,    0x00,        13,   4 },
293                 /*[25] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   4 },
294                 /*[26] 117 Mb */ {  AH_TRUE, HT,        117000,    0x8e,    0x00,        14,   4 },
295                 /*[27] 130 Mb */ {  AH_TRUE, HT,        130000,    0x8f,    0x00,        15,   4 },
296         },
297 };
298 #endif
299
300 #undef  OFDM
301 #undef  CCK
302 #undef  TURBO
303 #undef  XR
304 #undef  HT
305 #undef  HT_HGI
306
307 const HAL_RATE_TABLE *
308 ar5416GetRateTable(struct ath_hal *ah, a_uint32_t mode)
309 {
310         HAL_RATE_TABLE *rt;
311         switch (mode) {
312         case HAL_MODE_11NG:
313                 rt = &ar5416_11ng_table;
314                 break;
315 #ifdef ATH_SUPPORT_A_MODE
316         case HAL_MODE_11NA:
317                 rt = &ar5416_11na_table;
318                 break;
319 #endif
320         default:
321                 return AH_NULL;
322         }
323
324         return rt;
325 }
326
327 #endif