blob: 51a1263b3a38c6cc628dab73ef8e5d2f6be3bc8b [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Gopichand Nakkala9c070ad2013-01-08 21:16:34 -08002 * Copyright (c) 2012-2013, The Linux Foundation. All rights reserved.
3 *
4 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
5 *
6 *
7 * Permission to use, copy, modify, and/or distribute this software for
8 * any purpose with or without fee is hereby granted, provided that the
9 * above copyright notice and this permission notice appear in all
10 * copies.
11 *
12 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
13 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
14 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
15 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
16 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
17 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
18 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
19 * PERFORMANCE OF THIS SOFTWARE.
20 */
21/*
Jeff Johnson32d95a32012-09-10 13:15:23 -070022 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -070023 *
24 * Previously licensed under the ISC license by Qualcomm Atheros, Inc.
25 *
26 *
27 * Permission to use, copy, modify, and/or distribute this software for
28 * any purpose with or without fee is hereby granted, provided that the
29 * above copyright notice and this permission notice appear in all
30 * copies.
31 *
32 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
33 * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
34 * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
35 * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
36 * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
37 * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
38 * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
39 * PERFORMANCE OF THIS SOFTWARE.
40 */
41
42/**
43 *
44 * @file: wlan_qct_dev_defs.h
45 *
46 * @brief: This file contains the hardware related definitions.
47 *
48 * Copyright (C) 2008, Qualcomm, Inc. All rights reserved.
49 */
50
51#ifndef __WLAN_QCT_DEV_DEFS_H
52#define __WLAN_QCT_DEV_DEFS_H
53
54
55/* --------------------------------------------------------------------
56 * HW definitions for WLAN Chip
57 * --------------------------------------------------------------------
58 */
59
Jeff Johnsone7245742012-09-05 17:12:55 -070060#ifdef WCN_PRONTO
Gopichand Nakkalaba261272013-01-03 15:45:56 -080061
62#ifdef WLAN_SOFTAP_VSTA_FEATURE
63#define HAL_NUM_ASSOC_STA 16
64#define HAL_NUM_STA 18
65#define HAL_NUM_HW_STA 10
66#define HAL_NUM_GPSTA 2
67#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA // or HAL_NUM_STA
68
Jeff Johnsone7245742012-09-05 17:12:55 -070069#ifdef WCN_PRONTO_V1
Gopichand Nakkalaba261272013-01-03 15:45:56 -080070#define HAL_NUM_BSSID 2
71#define HAL_NUM_STA_WITHOUT_VSTA 9
72#else /* WCN_PRONTO_V1 */
73#define HAL_NUM_BSSID 4
74#define HAL_NUM_STA_WITHOUT_VSTA 14
75#endif
76
77
78#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
79#define QWLANFW_MAX_NUM_VSTA (HAL_NUM_VSTA)
80#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
81#define QWLAN_VSTA_MIN_IDX (HAL_NUM_HW_STA)
82#define QWLANFW_NUM_GPSTA (HAL_NUM_GPSTA)
83
84
85#define IS_VSTA_VALID_IDX(__x) \
86 ((__x) != QWLANFW_VSTA_INVALID_IDX)
87
88#define IS_VSTA_IDX(__x) \
89 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
90
91#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
92
93// is the STA a General Purpose STA?
94#define IS_GPSTA_IDX(__x) \
95 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
96 ((__x) < HAL_NUM_HW_STA))
97
98// is the STA a HW STA (excluding GP STAs)
99#define IS_HWSTA_IDX(__x) \
100 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
101
102#define HAL_NUM_STA_INCLUDING_VSTA 32
103
104#elif WCN_PRONTO_V1
Jeff Johnsone7245742012-09-05 17:12:55 -0700105
106/* In Pronto 1.0 TPE descriptor size is increased to 1K per station
107 * but not the cMEM allocated for hardware descriptors. Due to this
108 * memory limitation the number of stations are limited to 9 and BSS
109 * to 2 respectively.
110 *
111 * In Pronto 2.0, TPE descriptor size is reverted
112 * back to 512 bytes and hence more stations and BSSs can be supported
113 * from Pronto 2.0
114 *
115 * In Pronto 1.0, 9 HW stations are supported including BCAST STA(staId 0)
116 * and SELF STA(staId 1). So total ASSOC stations which can connect to
117 * Pronto 1.0 Softap = 9 - 1(self sta) - 1(Bcast sta) = 7 stations
118 */
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800119#define HAL_NUM_HW_STA 9
120#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -0700121#define HAL_NUM_BSSID 2
122#define HAL_NUM_UMA_DESC_ENTRIES 9
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800123#define HAL_NUM_ASSOC_STA 7
124
Jeff Johnsone7245742012-09-05 17:12:55 -0700125
126#else /* WCN_PRONTO_V1 */
127
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800128#define HAL_NUM_HW_STA 14
129#define HAL_NUM_STA (HAL_NUM_HW_STA)
Jeff Johnsone7245742012-09-05 17:12:55 -0700130#define HAL_NUM_BSSID 4
131#define HAL_NUM_UMA_DESC_ENTRIES 14
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800132#define HAL_NUM_ASSOC_STA 12
Jeff Johnsone7245742012-09-05 17:12:55 -0700133
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800134
135#endif /* WCN_PRONTO_V1 and WLAN_SOFTAP_VSTA_FEATURE*/
Jeff Johnsone7245742012-09-05 17:12:55 -0700136#else /* WCN_PRONTO */
137
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800138/*
139 * Riva supports 16 stations in hardware
140 *
141 * Riva without Virtual STA feature can only support 12 stations:
142 * 1 Broadcast STA (hard)
143 * 1 "Self" STA (hard)
144 * 10 Soft AP Stations (hard)
145 *
146 * Riva with Virtual STA feature supports 38 stations:
147 * 1 Broadcast STA (hard)
148 * 1 "Self" STA (hard)
149 * 4 General Purpose Stations to support Virtual STAs (hard)
150 * 32 Soft AP Stations (10 hard/22 virtual)
151 */
152#ifdef WLAN_SOFTAP_VSTA_FEATURE
153#define HAL_NUM_ASSOC_STA 32
154#define HAL_NUM_STA 38
155#define HAL_NUM_HW_STA 16
156#define HAL_NUM_GPSTA 4
157#define HAL_NUM_VSTA (HAL_NUM_STA - HAL_NUM_HW_STA)
158
159#define QWLANFW_MAX_NUM_VSTA HAL_NUM_VSTA
160#define QWLANFW_VSTA_INVALID_IDX (HAL_NUM_STA+1)
161#define QWLAN_VSTA_MIN_IDX HAL_NUM_HW_STA
162#define QWLANFW_NUM_GPSTA HAL_NUM_GPSTA
163
164
165#define IS_VSTA_VALID_IDX(__x) \
166 ((__x) != QWLANFW_VSTA_INVALID_IDX)
167
168#define IS_VSTA_IDX(__x) \
169 (((__x) >= QWLAN_VSTA_MIN_IDX) && ((__x) < HAL_NUM_STA))
170
171#define GET_VSTA_INDEX_FOR_STA_INDEX(__idx) ((__idx) - QWLAN_VSTA_MIN_IDX)
172
173// is the STA a General Purpose STA?
174#define IS_GPSTA_IDX(__x) \
175 (((__x) >= (HAL_NUM_HW_STA-HAL_NUM_GPSTA)) && \
176 ((__x) < HAL_NUM_HW_STA))
177
178// is the STA a HW STA (excluding GP STAs)
179#define IS_HWSTA_IDX(__x) \
180 ((__x) < (HAL_NUM_HW_STA-HAL_NUM_GPSTA))
181
182#define HAL_NUM_STA_INCLUDING_VSTA 32
183#define HAL_NUM_STA_WITHOUT_VSTA 12
184
185#else
Jeff Johnson295189b2012-06-20 16:38:30 -0700186#define HAL_NUM_STA 12
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800187#define HAL_NUM_ASSOC_STA 10
188#define HAL_NUM_HW_STA 12
189#endif
190
Jeff Johnson295189b2012-06-20 16:38:30 -0700191#define HAL_NUM_BSSID 2
Gopichand Nakkalaba261272013-01-03 15:45:56 -0800192#define HAL_NUM_UMA_DESC_ENTRIES HAL_NUM_HW_STA
Jeff Johnson295189b2012-06-20 16:38:30 -0700193
Jeff Johnsone7245742012-09-05 17:12:55 -0700194#endif /* WCN_PRONTO */
195
Jeff Johnson295189b2012-06-20 16:38:30 -0700196#define HAL_INVALID_BSSIDX HAL_NUM_BSSID
197
198#define MAX_NUM_OF_BACKOFFS 8
199#define HAL_MAX_ASSOC_ID HAL_NUM_STA
200
201#define WLANHAL_TX_BD_HEADER_SIZE 40 //FIXME_PRIMA - Revisit
202#define WLANHAL_RX_BD_HEADER_SIZE 76
203
204/*
205 * From NOVA Mac Arch document
206 * Encryp. mode The encryption mode
207 * 000: Encryption functionality is not enabled
208 * 001: Encryption is set to WEP
209 * 010: Encryption is set to WEP 104
210 * 011: Encryption is set to TKIP
211 * 100: Encryption is set to AES
212 * 101 - 111: Reserved for future
213 */
214
215#define HAL_ENC_POLICY_NULL 0
216#define HAL_ENC_POLICY_WEP40 1
217#define HAL_ENC_POLICY_WEP104 2
218#define HAL_ENC_POLICY_TKIP 3
219#define HAL_ENC_POLICY_AES_CCM 4
220
221/* --------------------------------------------------------------------- */
222/* BMU */
223/* --------------------------------------------------------------------- */
224
225/*
226 * BMU WQ assignment, as per Prima Programmer's Guide - FIXME_PRIMA: Revisit
227 *
228 */
229
230typedef enum sBmuWqId {
231
232 /* ====== In use WQs ====== */
233
234 /* BMU */
235 BMUWQ_BMU_IDLE_BD = 0,
236 BMUWQ_BMU_IDLE_PDU = 1,
237
238 /* RxP */
239 BMUWQ_RXP_UNKNWON_ADDR = 2, /* currently unhandled by HAL */
240
241 /* DPU RX */
242 BMUWQ_DPU_RX = 3,
243
244 /* DPU TX */
245 BMUWQ_DPU_TX = 6,
246
247 /* Firmware */
248 BMUWQ_FW_TRANSMIT = 12, /* DPU Tx->FW Tx */
249 BMUWQ_FW_RECV = 7, /* DPU Rx->FW Rx */
250
251 BMUWQ_FW_RPE_RECV = 16, /* RXP/RPE Rx->FW Rx */
252 FW_SCO_WQ = BMUWQ_FW_RPE_RECV,
253
254 /* DPU Error */
255 BMUWQ_DPU_ERROR_WQ = 8,
256
257 /* DXE RX */
258 BMUWQ_DXE_RX = 11,
259
260 BMUWQ_DXE_RX_HI = 4,
261
262 /* ADU/UMA */
263 BMUWQ_ADU_UMA_TX = 23,
264 BMUWQ_ADU_UMA_RX = 24,
265
266 /* BMU BTQM */
267 BMUWQ_BTQM = 25,
268
269 /* Special WQ for BMU to dropping all frames coming to this WQ ID */
270 BMUWQ_SINK = 255,
271
Jeff Johnsone7245742012-09-05 17:12:55 -0700272#ifdef WCN_PRONTO
273 BMUWQ_BMU_CMEM_IDLE_BD = 27,
274 /* Total BMU WQ count in Pronto */
275 BMUWQ_NUM = 28,
276
277 //WQs 17 through 22 are enabled in Pronto. So, set not supported mask to 0.
278 BMUWQ_NOT_SUPPORTED_MASK = 0x0,
279#else
280 /* Total BMU WQ count in Prima */
Jeff Johnson295189b2012-06-20 16:38:30 -0700281 BMUWQ_NUM = 27,
282
Jeff Johnsone7245742012-09-05 17:12:55 -0700283 //Prima has excluded support for WQs 17 through 22.
Jeff Johnson295189b2012-06-20 16:38:30 -0700284 BMUWQ_NOT_SUPPORTED_MASK = 0x7e0000,
Jeff Johnsone7245742012-09-05 17:12:55 -0700285#endif //WCN_PRONTO
286
Jeff Johnson295189b2012-06-20 16:38:30 -0700287
288 /* Aliases */
289 BMUWQ_BTQM_TX_MGMT = BMUWQ_BTQM,
290 BMUWQ_BTQM_TX_DATA = BMUWQ_BTQM,
291 BMUWQ_BMU_WQ2 = BMUWQ_RXP_UNKNWON_ADDR,
292 BMUWQ_FW_DPU_TX = 5,
293
294 //WQ where all the frames with addr1/addr2/addr3 with value 254/255 go to.
295 BMUWQ_FW_RECV_EXCEPTION = 14, //using BMUWQ_FW_MESSAGE WQ for this purpose.
296
297 //WQ where all frames with unknown Addr2 filter exception cases frames will pushed if FW wants host to
298 //send deauth to the sender.
299 BMUWQ_HOST_RX_UNKNOWN_ADDR2_FRAMES = 15, //using BMUWQ_FW_DXECH2_0 for this purpose.
300
301 /* ====== Unused/Reserved WQ ====== */
302
303 /* ADU/UMA Error WQ */
304 BMUWQ_ADU_UMA_TX_ERROR_WQ = 13, /* Not in use by HAL */
305 BMUWQ_ADU_UMA_RX_ERROR_WQ = 10, /* Not in use by HAL */
306
307 /* DPU Error WQ2 */
308 BMUWQ_DPU_ERROR_WQ2 = 9, /* Not in use by HAL */
309
310 /* FW WQs */
311 //This WQ is being used for RXP to push in frames in exception cases ( addr1/add2/addr3 254/255)
312 //BMUWQ_FW_MESG = 14, /* DxE Tx->FW, Not in use by FW */
313 //BMUWQ_FW_DXECH2_0 = 15, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
314 BMUWQ_FW_DXECH2_1 = 16, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
315
316/* These WQs are not supported in Volans
317 BMUWQ_BMU_WQ17 = 17,
318 BMUWQ_BMU_WQ18 = 18,
319 BMUWQ_BMU_WQ19 = 19,
320 BMUWQ_BMU_WQ20 = 20,
321 BMUWQ_BMU_WQ21 = 21,
322 BMUWQ_BMU_WQ22 = 22
323*/
324} tBmuWqId;
325
326typedef enum
327{
328 BTQM_QID0 = 0,
329 BTQM_QID1,
330 BTQM_QID2,
331 BTQM_QID3,
332 BTQM_QID4,
333 BTQM_QID5,
334 BTQM_QID6,
335 BTQM_QID7,
336 BTQM_QID8,
337 BTQM_QID9,
338 BTQM_QID10,
339
340 BTQM_QUEUE_TX_TID_0 = BTQM_QID0,
341 BTQM_QUEUE_TX_TID_1,
342 BTQM_QUEUE_TX_TID_2,
343 BTQM_QUEUE_TX_TID_3,
344 BTQM_QUEUE_TX_TID_4,
345 BTQM_QUEUE_TX_TID_5,
346 BTQM_QUEUE_TX_TID_6,
347 BTQM_QUEUE_TX_TID_7,
348
349
350 /* Queue Id <-> BO
351 */
352 BTQM_QUEUE_TX_nQOS = BTQM_QID8,
353 BTQM_QUEUE_SELF_STA_BCAST_MGMT = BTQM_QID10,
354 BTQM_QUEUE_SELF_STA_UCAST_MGMT = BTQM_QID9,
355 BTQM_QUEUE_SELF_STA_UCAST_DATA = BTQM_QID9,
356 BTQM_QUEUE_NULL_FRAME = BTQM_QID9,
357 BTQM_QUEUE_SELF_STA_PROBE_RSP = BTQM_QID9,
358 BTQM_QUEUE_TX_AC_BE = BTQM_QUEUE_TX_TID_0,
359 BTQM_QUEUE_TX_AC_BK = BTQM_QUEUE_TX_TID_2,
360 BTQM_QUEUE_TX_AC_VI = BTQM_QUEUE_TX_TID_4,
361 BTQM_QUEUE_TX_AC_VO = BTQM_QUEUE_TX_TID_6
362}tBtqmQId;
363
364#define STACFG_MAX_TC 8
365
366/* --------------------------------------------------------------------- */
367/* BD type*/
368/* --------------------------------------------------------------------- */
369#define HWBD_TYPE_GENERIC 0 /* generic BD format */
370#define HWBD_TYPE_FRAG 1 /* fragmentation BD format*/
371
372#endif /* __WLAN_QCT_DEV_DEFS_H */