blob: 3527fdec57412cdc57c5a0e0f57d86df0c2b5321 [file] [log] [blame]
Jeff Johnson295189b2012-06-20 16:38:30 -07001/*
Jeff Johnson32d95a32012-09-10 13:15:23 -07002 * Copyright (c) 2012, The Linux Foundation. All rights reserved.
Jeff Johnson295189b2012-06-20 16:38:30 -07003 *
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
22/**
23 *
24 * @file: wlan_qct_dev_defs.h
25 *
26 * @brief: This file contains the hardware related definitions.
27 *
28 * Copyright (C) 2008, Qualcomm, Inc. All rights reserved.
29 */
30
31#ifndef __WLAN_QCT_DEV_DEFS_H
32#define __WLAN_QCT_DEV_DEFS_H
33
34
35/* --------------------------------------------------------------------
36 * HW definitions for WLAN Chip
37 * --------------------------------------------------------------------
38 */
39
Jeff Johnsone7245742012-09-05 17:12:55 -070040#ifdef WCN_PRONTO
41#ifdef WCN_PRONTO_V1
42
43/* In Pronto 1.0 TPE descriptor size is increased to 1K per station
44 * but not the cMEM allocated for hardware descriptors. Due to this
45 * memory limitation the number of stations are limited to 9 and BSS
46 * to 2 respectively.
47 *
48 * In Pronto 2.0, TPE descriptor size is reverted
49 * back to 512 bytes and hence more stations and BSSs can be supported
50 * from Pronto 2.0
51 *
52 * In Pronto 1.0, 9 HW stations are supported including BCAST STA(staId 0)
53 * and SELF STA(staId 1). So total ASSOC stations which can connect to
54 * Pronto 1.0 Softap = 9 - 1(self sta) - 1(Bcast sta) = 7 stations
55 */
56#define HAL_NUM_STA 9
57#define HAL_NUM_BSSID 2
58#define HAL_NUM_UMA_DESC_ENTRIES 9
59
60#else /* WCN_PRONTO_V1 */
61
62#define HAL_NUM_STA 14
63#define HAL_NUM_BSSID 4
64#define HAL_NUM_UMA_DESC_ENTRIES 14
65
66#endif /* WCN_PRONTO_V1 */
67#else /* WCN_PRONTO */
68
Jeff Johnson295189b2012-06-20 16:38:30 -070069/*In prima 12 HW stations are supported including BCAST STA(staId 0)
70 and SELF STA(staId 1) so total ASSOC stations which can connect to Prima
71 SoftAP = 12 - 1(Self STa) - 1(Bcast Sta) = 10 Stations. */
Jeff Johnson295189b2012-06-20 16:38:30 -070072#define HAL_NUM_STA 12
73#define HAL_NUM_BSSID 2
74#define HAL_NUM_UMA_DESC_ENTRIES 12
75
Jeff Johnsone7245742012-09-05 17:12:55 -070076#endif /* WCN_PRONTO */
77
78
Jeff Johnson295189b2012-06-20 16:38:30 -070079#define HAL_INVALID_BSSIDX HAL_NUM_BSSID
80
81#define MAX_NUM_OF_BACKOFFS 8
82#define HAL_MAX_ASSOC_ID HAL_NUM_STA
83
84#define WLANHAL_TX_BD_HEADER_SIZE 40 //FIXME_PRIMA - Revisit
85#define WLANHAL_RX_BD_HEADER_SIZE 76
86
87/*
88 * From NOVA Mac Arch document
89 * Encryp. mode The encryption mode
90 * 000: Encryption functionality is not enabled
91 * 001: Encryption is set to WEP
92 * 010: Encryption is set to WEP 104
93 * 011: Encryption is set to TKIP
94 * 100: Encryption is set to AES
95 * 101 - 111: Reserved for future
96 */
97
98#define HAL_ENC_POLICY_NULL 0
99#define HAL_ENC_POLICY_WEP40 1
100#define HAL_ENC_POLICY_WEP104 2
101#define HAL_ENC_POLICY_TKIP 3
102#define HAL_ENC_POLICY_AES_CCM 4
103
104/* --------------------------------------------------------------------- */
105/* BMU */
106/* --------------------------------------------------------------------- */
107
108/*
109 * BMU WQ assignment, as per Prima Programmer's Guide - FIXME_PRIMA: Revisit
110 *
111 */
112
113typedef enum sBmuWqId {
114
115 /* ====== In use WQs ====== */
116
117 /* BMU */
118 BMUWQ_BMU_IDLE_BD = 0,
119 BMUWQ_BMU_IDLE_PDU = 1,
120
121 /* RxP */
122 BMUWQ_RXP_UNKNWON_ADDR = 2, /* currently unhandled by HAL */
123
124 /* DPU RX */
125 BMUWQ_DPU_RX = 3,
126
127 /* DPU TX */
128 BMUWQ_DPU_TX = 6,
129
130 /* Firmware */
131 BMUWQ_FW_TRANSMIT = 12, /* DPU Tx->FW Tx */
132 BMUWQ_FW_RECV = 7, /* DPU Rx->FW Rx */
133
134 BMUWQ_FW_RPE_RECV = 16, /* RXP/RPE Rx->FW Rx */
135 FW_SCO_WQ = BMUWQ_FW_RPE_RECV,
136
137 /* DPU Error */
138 BMUWQ_DPU_ERROR_WQ = 8,
139
140 /* DXE RX */
141 BMUWQ_DXE_RX = 11,
142
143 BMUWQ_DXE_RX_HI = 4,
144
145 /* ADU/UMA */
146 BMUWQ_ADU_UMA_TX = 23,
147 BMUWQ_ADU_UMA_RX = 24,
148
149 /* BMU BTQM */
150 BMUWQ_BTQM = 25,
151
152 /* Special WQ for BMU to dropping all frames coming to this WQ ID */
153 BMUWQ_SINK = 255,
154
Jeff Johnsone7245742012-09-05 17:12:55 -0700155#ifdef WCN_PRONTO
156 BMUWQ_BMU_CMEM_IDLE_BD = 27,
157 /* Total BMU WQ count in Pronto */
158 BMUWQ_NUM = 28,
159
160 //WQs 17 through 22 are enabled in Pronto. So, set not supported mask to 0.
161 BMUWQ_NOT_SUPPORTED_MASK = 0x0,
162#else
163 /* Total BMU WQ count in Prima */
Jeff Johnson295189b2012-06-20 16:38:30 -0700164 BMUWQ_NUM = 27,
165
Jeff Johnsone7245742012-09-05 17:12:55 -0700166 //Prima has excluded support for WQs 17 through 22.
Jeff Johnson295189b2012-06-20 16:38:30 -0700167 BMUWQ_NOT_SUPPORTED_MASK = 0x7e0000,
Jeff Johnsone7245742012-09-05 17:12:55 -0700168#endif //WCN_PRONTO
169
Jeff Johnson295189b2012-06-20 16:38:30 -0700170
171 /* Aliases */
172 BMUWQ_BTQM_TX_MGMT = BMUWQ_BTQM,
173 BMUWQ_BTQM_TX_DATA = BMUWQ_BTQM,
174 BMUWQ_BMU_WQ2 = BMUWQ_RXP_UNKNWON_ADDR,
175 BMUWQ_FW_DPU_TX = 5,
176
177 //WQ where all the frames with addr1/addr2/addr3 with value 254/255 go to.
178 BMUWQ_FW_RECV_EXCEPTION = 14, //using BMUWQ_FW_MESSAGE WQ for this purpose.
179
180 //WQ where all frames with unknown Addr2 filter exception cases frames will pushed if FW wants host to
181 //send deauth to the sender.
182 BMUWQ_HOST_RX_UNKNOWN_ADDR2_FRAMES = 15, //using BMUWQ_FW_DXECH2_0 for this purpose.
183
184 /* ====== Unused/Reserved WQ ====== */
185
186 /* ADU/UMA Error WQ */
187 BMUWQ_ADU_UMA_TX_ERROR_WQ = 13, /* Not in use by HAL */
188 BMUWQ_ADU_UMA_RX_ERROR_WQ = 10, /* Not in use by HAL */
189
190 /* DPU Error WQ2 */
191 BMUWQ_DPU_ERROR_WQ2 = 9, /* Not in use by HAL */
192
193 /* FW WQs */
194 //This WQ is being used for RXP to push in frames in exception cases ( addr1/add2/addr3 254/255)
195 //BMUWQ_FW_MESG = 14, /* DxE Tx->FW, Not in use by FW */
196 //BMUWQ_FW_DXECH2_0 = 15, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
197 BMUWQ_FW_DXECH2_1 = 16, /* BD/PDU<->MEM conversion using DxE CH2. Not in use by FW */
198
199/* These WQs are not supported in Volans
200 BMUWQ_BMU_WQ17 = 17,
201 BMUWQ_BMU_WQ18 = 18,
202 BMUWQ_BMU_WQ19 = 19,
203 BMUWQ_BMU_WQ20 = 20,
204 BMUWQ_BMU_WQ21 = 21,
205 BMUWQ_BMU_WQ22 = 22
206*/
207} tBmuWqId;
208
209typedef enum
210{
211 BTQM_QID0 = 0,
212 BTQM_QID1,
213 BTQM_QID2,
214 BTQM_QID3,
215 BTQM_QID4,
216 BTQM_QID5,
217 BTQM_QID6,
218 BTQM_QID7,
219 BTQM_QID8,
220 BTQM_QID9,
221 BTQM_QID10,
222
223 BTQM_QUEUE_TX_TID_0 = BTQM_QID0,
224 BTQM_QUEUE_TX_TID_1,
225 BTQM_QUEUE_TX_TID_2,
226 BTQM_QUEUE_TX_TID_3,
227 BTQM_QUEUE_TX_TID_4,
228 BTQM_QUEUE_TX_TID_5,
229 BTQM_QUEUE_TX_TID_6,
230 BTQM_QUEUE_TX_TID_7,
231
232
233 /* Queue Id <-> BO
234 */
235 BTQM_QUEUE_TX_nQOS = BTQM_QID8,
236 BTQM_QUEUE_SELF_STA_BCAST_MGMT = BTQM_QID10,
237 BTQM_QUEUE_SELF_STA_UCAST_MGMT = BTQM_QID9,
238 BTQM_QUEUE_SELF_STA_UCAST_DATA = BTQM_QID9,
239 BTQM_QUEUE_NULL_FRAME = BTQM_QID9,
240 BTQM_QUEUE_SELF_STA_PROBE_RSP = BTQM_QID9,
241 BTQM_QUEUE_TX_AC_BE = BTQM_QUEUE_TX_TID_0,
242 BTQM_QUEUE_TX_AC_BK = BTQM_QUEUE_TX_TID_2,
243 BTQM_QUEUE_TX_AC_VI = BTQM_QUEUE_TX_TID_4,
244 BTQM_QUEUE_TX_AC_VO = BTQM_QUEUE_TX_TID_6
245}tBtqmQId;
246
247#define STACFG_MAX_TC 8
248
249/* --------------------------------------------------------------------- */
250/* BD type*/
251/* --------------------------------------------------------------------- */
252#define HWBD_TYPE_GENERIC 0 /* generic BD format */
253#define HWBD_TYPE_FRAG 1 /* fragmentation BD format*/
254
255#endif /* __WLAN_QCT_DEV_DEFS_H */