1 /* hfa384x.h 2 * 3 * Defines the constants and data structures for the hfa384x 4 * 5 * Copyright (C) 1999 AbsoluteValue Systems, Inc. All Rights Reserved. 6 * -------------------------------------------------------------------- 7 * 8 * linux-wlan 9 * 10 * The contents of this file are subject to the Mozilla Public 11 * License Version 1.1 (the "License"); you may not use this file 12 * except in compliance with the License. You may obtain a copy of 13 * the License at http://www.mozilla.org/MPL/ 14 * 15 * Software distributed under the License is distributed on an "AS 16 * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or 17 * implied. See the License for the specific language governing 18 * rights and limitations under the License. 19 * 20 * Alternatively, the contents of this file may be used under the 21 * terms of the GNU Public License version 2 (the "GPL"), in which 22 * case the provisions of the GPL are applicable instead of the 23 * above. If you wish to allow the use of your version of this file 24 * only under the terms of the GPL and not to allow others to use 25 * your version of this file under the MPL, indicate your decision 26 * by deleting the provisions above and replace them with the notice 27 * and other provisions required by the GPL. If you do not delete 28 * the provisions above, a recipient may use your version of this 29 * file under either the MPL or the GPL. 30 * 31 * -------------------------------------------------------------------- 32 * 33 * Inquiries regarding the linux-wlan Open Source project can be 34 * made directly to: 35 * 36 * AbsoluteValue Systems Inc. 37 * info@linux-wlan.com 38 * http://www.linux-wlan.com 39 * 40 * -------------------------------------------------------------------- 41 * 42 * Portions of the development of this software were funded by 43 * Intersil Corporation as part of PRISM(R) chipset product development. 44 * 45 * -------------------------------------------------------------------- 46 * 47 * [Implementation and usage notes] 48 * 49 * [References] 50 * CW10 Programmer's Manual v1.5 51 * IEEE 802.11 D10.0 52 * 53 * -------------------------------------------------------------------- 54 */ 55 56 #ifndef _HFA384x_H 57 #define _HFA384x_H 58 59 /*=============================================================*/ 60 #define HFA384x_FIRMWARE_VERSION(a,b,c) (((a) << 16) + ((b) << 8) + (c)) 61 62 #define HFA384x_LEVEL_TO_dBm(v) (0x100 + (v) * 100 / 255 - 100) 63 64 #include <linux/if_ether.h> 65 66 /*------ Constants --------------------------------------------*/ 67 /*--- Mins & Maxs -----------------------------------*/ 68 #define HFA384x_CMD_ALLOC_LEN_MIN ((u16)4) 69 #define HFA384x_CMD_ALLOC_LEN_MAX ((u16)2400) 70 #define HFA384x_BAP_DATALEN_MAX ((u16)4096) 71 #define HFA384x_BAP_OFFSET_MAX ((u16)4096) 72 #define HFA384x_PORTID_MAX ((u16)7) 73 #define HFA384x_NUMPORTS_MAX ((u16)(HFA384x_PORTID_MAX+1)) 74 #define HFA384x_PDR_LEN_MAX ((u16)512) /* in bytes, from EK */ 75 #define HFA384x_PDA_RECS_MAX ((u16)200) /* a guess */ 76 #define HFA384x_PDA_LEN_MAX ((u16)1024) /* in bytes, from EK */ 77 #define HFA384x_SCANRESULT_MAX ((u16)31) 78 #define HFA384x_HSCANRESULT_MAX ((u16)31) 79 #define HFA384x_CHINFORESULT_MAX ((u16)16) 80 #define HFA384x_DRVR_FIDSTACKLEN_MAX (10) 81 #define HFA384x_DRVR_TXBUF_MAX (sizeof(hfa384x_tx_frame_t) + \ 82 WLAN_DATA_MAXLEN - \ 83 WLAN_WEP_IV_LEN - \ 84 WLAN_WEP_ICV_LEN + 2) 85 #define HFA384x_DRVR_MAGIC (0x4a2d) 86 #define HFA384x_INFODATA_MAXLEN (sizeof(hfa384x_infodata_t)) 87 #define HFA384x_INFOFRM_MAXLEN (sizeof(hfa384x_InfFrame_t)) 88 #define HFA384x_RID_GUESSING_MAXLEN 2048 /* I'm not really sure */ 89 #define HFA384x_RIDDATA_MAXLEN HFA384x_RID_GUESSING_MAXLEN 90 #define HFA384x_USB_RWMEM_MAXLEN 2048 91 92 /*--- Support Constants -----------------------------*/ 93 #define HFA384x_BAP_PROC ((u16)0) 94 #define HFA384x_BAP_int ((u16)1) 95 #define HFA384x_PORTTYPE_IBSS ((u16)0) 96 #define HFA384x_PORTTYPE_BSS ((u16)1) 97 #define HFA384x_PORTTYPE_WDS ((u16)2) 98 #define HFA384x_PORTTYPE_PSUEDOIBSS ((u16)3) 99 #define HFA384x_PORTTYPE_HOSTAP ((u16)6) 100 #define HFA384x_WEPFLAGS_PRIVINVOKED ((u16)BIT(0)) 101 #define HFA384x_WEPFLAGS_EXCLUDE ((u16)BIT(1)) 102 #define HFA384x_WEPFLAGS_DISABLE_TXCRYPT ((u16)BIT(4)) 103 #define HFA384x_WEPFLAGS_DISABLE_RXCRYPT ((u16)BIT(7)) 104 #define HFA384x_WEPFLAGS_DISALLOW_MIXED ((u16)BIT(11)) 105 #define HFA384x_WEPFLAGS_IV_intERVAL1 ((u16)0) 106 #define HFA384x_WEPFLAGS_IV_intERVAL10 ((u16)BIT(5)) 107 #define HFA384x_WEPFLAGS_IV_intERVAL50 ((u16)BIT(6)) 108 #define HFA384x_WEPFLAGS_IV_intERVAL100 ((u16)(BIT(5) | BIT(6))) 109 #define HFA384x_WEPFLAGS_FIRMWARE_WPA ((u16)BIT(8)) 110 #define HFA384x_WEPFLAGS_HOST_MIC ((u16)BIT(9)) 111 #define HFA384x_ROAMMODE_FWSCAN_FWROAM ((u16)1) 112 #define HFA384x_ROAMMODE_FWSCAN_HOSTROAM ((u16)2) 113 #define HFA384x_ROAMMODE_HOSTSCAN_HOSTROAM ((u16)3) 114 #define HFA384x_PORTSTATUS_DISABLED ((u16)1) 115 #define HFA384x_PORTSTATUS_INITSRCH ((u16)2) 116 #define HFA384x_PORTSTATUS_CONN_IBSS ((u16)3) 117 #define HFA384x_PORTSTATUS_CONN_ESS ((u16)4) 118 #define HFA384x_PORTSTATUS_OOR_ESS ((u16)5) 119 #define HFA384x_PORTSTATUS_CONN_WDS ((u16)6) 120 #define HFA384x_PORTSTATUS_HOSTAP ((u16)8) 121 #define HFA384x_RATEBIT_1 ((u16)1) 122 #define HFA384x_RATEBIT_2 ((u16)2) 123 #define HFA384x_RATEBIT_5dot5 ((u16)4) 124 #define HFA384x_RATEBIT_11 ((u16)8) 125 126 /*--- Just some symbolic names for legibility -------*/ 127 #define HFA384x_TXCMD_NORECL ((u16)0) 128 #define HFA384x_TXCMD_RECL ((u16)1) 129 130 /*--- MAC Internal memory constants and macros ------*/ 131 /* masks and macros used to manipulate MAC internal memory addresses. */ 132 /* MAC internal memory addresses are 23 bit quantities. The MAC uses 133 * a paged address space where the upper 16 bits are the page number 134 * and the lower 7 bits are the offset. There are various Host API 135 * elements that require two 16-bit quantities to specify a MAC 136 * internal memory address. Unfortunately, some of the API's use a 137 * page/offset format where the offset value is JUST the lower seven 138 * bits and the page is the remaining 16 bits. Some of the API's 139 * assume that the 23 bit address has been split at the 16th bit. We 140 * refer to these two formats as AUX format and CMD format. The 141 * macros below help handle some of this. 142 */ 143 144 /* Handy constant */ 145 #define HFA384x_ADDR_AUX_OFF_MAX ((u16)0x007f) 146 147 /* Mask bits for discarding unwanted pieces in a flat address */ 148 #define HFA384x_ADDR_FLAT_AUX_PAGE_MASK (0x007fff80) 149 #define HFA384x_ADDR_FLAT_AUX_OFF_MASK (0x0000007f) 150 #define HFA384x_ADDR_FLAT_CMD_PAGE_MASK (0xffff0000) 151 #define HFA384x_ADDR_FLAT_CMD_OFF_MASK (0x0000ffff) 152 153 /* Mask bits for discarding unwanted pieces in AUX format 16-bit address parts */ 154 #define HFA384x_ADDR_AUX_PAGE_MASK (0xffff) 155 #define HFA384x_ADDR_AUX_OFF_MASK (0x007f) 156 157 /* Mask bits for discarding unwanted pieces in CMD format 16-bit address parts */ 158 #define HFA384x_ADDR_CMD_PAGE_MASK (0x007f) 159 #define HFA384x_ADDR_CMD_OFF_MASK (0xffff) 160 161 /* Make a 32-bit flat address from AUX format 16-bit page and offset */ 162 #define HFA384x_ADDR_AUX_MKFLAT(p,o) \ 163 (((u32)(((u16)(p))&HFA384x_ADDR_AUX_PAGE_MASK)) <<7) | \ 164 ((u32)(((u16)(o))&HFA384x_ADDR_AUX_OFF_MASK)) 165 166 /* Make a 32-bit flat address from CMD format 16-bit page and offset */ 167 #define HFA384x_ADDR_CMD_MKFLAT(p,o) \ 168 (((u32)(((u16)(p))&HFA384x_ADDR_CMD_PAGE_MASK)) <<16) | \ 169 ((u32)(((u16)(o))&HFA384x_ADDR_CMD_OFF_MASK)) 170 171 /* Make AUX format offset and page from a 32-bit flat address */ 172 #define HFA384x_ADDR_AUX_MKPAGE(f) \ 173 ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_AUX_PAGE_MASK)>>7)) 174 #define HFA384x_ADDR_AUX_MKOFF(f) \ 175 ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_AUX_OFF_MASK)) 176 177 /* Make CMD format offset and page from a 32-bit flat address */ 178 #define HFA384x_ADDR_CMD_MKPAGE(f) \ 179 ((u16)((((u32)(f))&HFA384x_ADDR_FLAT_CMD_PAGE_MASK)>>16)) 180 #define HFA384x_ADDR_CMD_MKOFF(f) \ 181 ((u16)(((u32)(f))&HFA384x_ADDR_FLAT_CMD_OFF_MASK)) 182 183 /*--- Aux register masks/tests ----------------------*/ 184 /* Some of the upper bits of the AUX offset register are used to */ 185 /* select address space. */ 186 #define HFA384x_AUX_CTL_EXTDS (0x00) 187 #define HFA384x_AUX_CTL_NV (0x01) 188 #define HFA384x_AUX_CTL_PHY (0x02) 189 #define HFA384x_AUX_CTL_ICSRAM (0x03) 190 191 /* Make AUX register offset and page values from a flat address */ 192 #define HFA384x_AUX_MKOFF(f, c) \ 193 (HFA384x_ADDR_AUX_MKOFF(f) | (((u16)(c))<<12)) 194 #define HFA384x_AUX_MKPAGE(f) HFA384x_ADDR_AUX_MKPAGE(f) 195 196 197 /*--- Controller Memory addresses -------------------*/ 198 #define HFA3842_PDA_BASE (0x007f0000UL) 199 #define HFA3841_PDA_BASE (0x003f0000UL) 200 #define HFA3841_PDA_BOGUS_BASE (0x00390000UL) 201 202 /*--- Driver Download states -----------------------*/ 203 #define HFA384x_DLSTATE_DISABLED 0 204 #define HFA384x_DLSTATE_RAMENABLED 1 205 #define HFA384x_DLSTATE_FLASHENABLED 2 206 #define HFA384x_DLSTATE_FLASHWRITTEN 3 207 #define HFA384x_DLSTATE_FLASHWRITEPENDING 4 208 #define HFA384x_DLSTATE_GENESIS 5 209 210 #define HFA384x_CMD_OFF (0x00) 211 #define HFA384x_PARAM0_OFF (0x04) 212 #define HFA384x_PARAM1_OFF (0x08) 213 #define HFA384x_PARAM2_OFF (0x0c) 214 #define HFA384x_STATUS_OFF (0x10) 215 #define HFA384x_RESP0_OFF (0x14) 216 #define HFA384x_RESP1_OFF (0x18) 217 #define HFA384x_RESP2_OFF (0x1c) 218 #define HFA384x_INFOFID_OFF (0x20) 219 #define HFA384x_RXFID_OFF (0x40) 220 #define HFA384x_ALLOCFID_OFF (0x44) 221 #define HFA384x_TXCOMPLFID_OFF (0x48) 222 #define HFA384x_SELECT0_OFF (0x30) 223 #define HFA384x_OFFSET0_OFF (0x38) 224 #define HFA384x_DATA0_OFF (0x6c) 225 #define HFA384x_SELECT1_OFF (0x34) 226 #define HFA384x_OFFSET1_OFF (0x3c) 227 #define HFA384x_DATA1_OFF (0x70) 228 #define HFA384x_EVSTAT_OFF (0x60) 229 #define HFA384x_intEN_OFF (0x64) 230 #define HFA384x_EVACK_OFF (0x68) 231 #define HFA384x_CONTROL_OFF (0x28) 232 #define HFA384x_SWSUPPORT0_OFF (0x50) 233 #define HFA384x_SWSUPPORT1_OFF (0x54) 234 #define HFA384x_SWSUPPORT2_OFF (0x58) 235 #define HFA384x_AUXPAGE_OFF (0x74) 236 #define HFA384x_AUXOFFSET_OFF (0x78) 237 #define HFA384x_AUXDATA_OFF (0x7c) 238 #define HFA384x_PCICOR_OFF (0x4c) 239 #define HFA384x_PCIHCR_OFF (0x5c) 240 #define HFA384x_PCI_M0_ADDRH_OFF (0x80) 241 #define HFA384x_PCI_M0_ADDRL_OFF (0x84) 242 #define HFA384x_PCI_M0_LEN_OFF (0x88) 243 #define HFA384x_PCI_M0_CTL_OFF (0x8c) 244 #define HFA384x_PCI_STATUS_OFF (0x98) 245 #define HFA384x_PCI_M1_ADDRH_OFF (0xa0) 246 #define HFA384x_PCI_M1_ADDRL_OFF (0xa4) 247 #define HFA384x_PCI_M1_LEN_OFF (0xa8) 248 #define HFA384x_PCI_M1_CTL_OFF (0xac) 249 250 /*--- Register Field Masks --------------------------*/ 251 #define HFA384x_CMD_BUSY ((u16)BIT(15)) 252 #define HFA384x_CMD_AINFO ((u16)(BIT(14) | BIT(13) | BIT(12) | BIT(11) | BIT(10) | BIT(9) | BIT(8))) 253 #define HFA384x_CMD_MACPORT ((u16)(BIT(10) | BIT(9) | BIT(8))) 254 #define HFA384x_CMD_RECL ((u16)BIT(8)) 255 #define HFA384x_CMD_WRITE ((u16)BIT(8)) 256 #define HFA384x_CMD_PROGMODE ((u16)(BIT(9) | BIT(8))) 257 #define HFA384x_CMD_CMDCODE ((u16)(BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1) | BIT(0))) 258 259 #define HFA384x_STATUS_RESULT ((u16)(BIT(14) | BIT(13) | BIT(12) | BIT(11) | BIT(10) | BIT(9) | BIT(8))) 260 #define HFA384x_STATUS_CMDCODE ((u16)(BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1) | BIT(0))) 261 262 #define HFA384x_OFFSET_BUSY ((u16)BIT(15)) 263 #define HFA384x_OFFSET_ERR ((u16)BIT(14)) 264 #define HFA384x_OFFSET_DATAOFF ((u16)(BIT(11) | BIT(10) | BIT(9) | BIT(8) | BIT(7) | BIT(6) | BIT(5) | BIT(4) | BIT(3) | BIT(2) | BIT(1))) 265 266 #define HFA384x_EVSTAT_TICK ((u16)BIT(15)) 267 #define HFA384x_EVSTAT_WTERR ((u16)BIT(14)) 268 #define HFA384x_EVSTAT_INFDROP ((u16)BIT(13)) 269 #define HFA384x_EVSTAT_INFO ((u16)BIT(7)) 270 #define HFA384x_EVSTAT_DTIM ((u16)BIT(5)) 271 #define HFA384x_EVSTAT_CMD ((u16)BIT(4)) 272 #define HFA384x_EVSTAT_ALLOC ((u16)BIT(3)) 273 #define HFA384x_EVSTAT_TXEXC ((u16)BIT(2)) 274 #define HFA384x_EVSTAT_TX ((u16)BIT(1)) 275 #define HFA384x_EVSTAT_RX ((u16)BIT(0) 276 277 #define HFA384x_int_BAP_OP (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC) 278 279 #define HFA384x_int_NORMAL (HFA384x_EVSTAT_INFO|HFA384x_EVSTAT_RX|HFA384x_EVSTAT_TX|HFA384x_EVSTAT_TXEXC|HFA384x_EVSTAT_INFDROP|HFA384x_EVSTAT_ALLOC|HFA384x_EVSTAT_DTIM) 280 281 #define HFA384x_intEN_TICK ((u16)BIT(15)) 282 #define HFA384x_intEN_WTERR ((u16)BIT(14)) 283 #define HFA384x_intEN_INFDROP ((u16)BIT(13)) 284 #define HFA384x_intEN_INFO ((u16)BIT(7)) 285 #define HFA384x_intEN_DTIM ((u16)BIT(5)) 286 #define HFA384x_intEN_CMD ((u16)BIT(4)) 287 #define HFA384x_intEN_ALLOC ((u16)BIT(3)) 288 #define HFA384x_intEN_TXEXC ((u16)BIT(2)) 289 #define HFA384x_intEN_TX ((u16)BIT(1)) 290 #define HFA384x_intEN_RX ((u16)BIT(0) 291 292 #define HFA384x_EVACK_TICK ((u16)BIT(15)) 293 #define HFA384x_EVACK_WTERR ((u16)BIT(14)) 294 #define HFA384x_EVACK_INFDROP ((u16)BIT(13)) 295 #define HFA384x_EVACK_INFO ((u16)BIT(7)) 296 #define HFA384x_EVACK_DTIM ((u16)BIT(5)) 297 #define HFA384x_EVACK_CMD ((u16)BIT(4)) 298 #define HFA384x_EVACK_ALLOC ((u16)BIT(3)) 299 #define HFA384x_EVACK_TXEXC ((u16)BIT(2)) 300 #define HFA384x_EVACK_TX ((u16)BIT(1)) 301 #define HFA384x_EVACK_RX ((u16)BIT(0) 302 303 #define HFA384x_CONTROL_AUXEN ((u16)(BIT(15) | BIT(14))) 304 305 306 /*--- Command Code Constants --------------------------*/ 307 /*--- Controller Commands --------------------------*/ 308 #define HFA384x_CMDCODE_INIT ((u16)0x00) 309 #define HFA384x_CMDCODE_ENABLE ((u16)0x01) 310 #define HFA384x_CMDCODE_DISABLE ((u16)0x02) 311 #define HFA384x_CMDCODE_DIAG ((u16)0x03) 312 313 /*--- Buffer Mgmt Commands --------------------------*/ 314 #define HFA384x_CMDCODE_ALLOC ((u16)0x0A) 315 #define HFA384x_CMDCODE_TX ((u16)0x0B) 316 #define HFA384x_CMDCODE_CLRPRST ((u16)0x12) 317 318 /*--- Regulate Commands --------------------------*/ 319 #define HFA384x_CMDCODE_NOTIFY ((u16)0x10) 320 #define HFA384x_CMDCODE_INQ ((u16)0x11) 321 322 /*--- Configure Commands --------------------------*/ 323 #define HFA384x_CMDCODE_ACCESS ((u16)0x21) 324 #define HFA384x_CMDCODE_DOWNLD ((u16)0x22) 325 326 /*--- Debugging Commands -----------------------------*/ 327 #define HFA384x_CMDCODE_MONITOR ((u16)(0x38)) 328 #define HFA384x_MONITOR_ENABLE ((u16)(0x0b)) 329 #define HFA384x_MONITOR_DISABLE ((u16)(0x0f)) 330 331 /*--- Result Codes --------------------------*/ 332 #define HFA384x_SUCCESS ((u16)(0x00)) 333 #define HFA384x_CARD_FAIL ((u16)(0x01)) 334 #define HFA384x_NO_BUFF ((u16)(0x05)) 335 #define HFA384x_CMD_ERR ((u16)(0x7F)) 336 337 /*--- Programming Modes -------------------------- 338 MODE 0: Disable programming 339 MODE 1: Enable volatile memory programming 340 MODE 2: Enable non-volatile memory programming 341 MODE 3: Program non-volatile memory section 342 --------------------------------------------------*/ 343 #define HFA384x_PROGMODE_DISABLE ((u16)0x00) 344 #define HFA384x_PROGMODE_RAM ((u16)0x01) 345 #define HFA384x_PROGMODE_NV ((u16)0x02) 346 #define HFA384x_PROGMODE_NVWRITE ((u16)0x03) 347 348 /*--- AUX register enable --------------------------*/ 349 #define HFA384x_AUXPW0 ((u16)0xfe01) 350 #define HFA384x_AUXPW1 ((u16)0xdc23) 351 #define HFA384x_AUXPW2 ((u16)0xba45) 352 353 #define HFA384x_CONTROL_AUX_ISDISABLED ((u16)0x0000) 354 #define HFA384x_CONTROL_AUX_ISENABLED ((u16)0xc000) 355 #define HFA384x_CONTROL_AUX_DOENABLE ((u16)0x8000) 356 #define HFA384x_CONTROL_AUX_DODISABLE ((u16)0x4000) 357 358 /*--- Record ID Constants --------------------------*/ 359 /*-------------------------------------------------------------------- 360 Configuration RIDs: Network Parameters, Static Configuration Entities 361 --------------------------------------------------------------------*/ 362 #define HFA384x_RID_CNFPORTTYPE ((u16)0xFC00) 363 #define HFA384x_RID_CNFOWNMACADDR ((u16)0xFC01) 364 #define HFA384x_RID_CNFDESIREDSSID ((u16)0xFC02) 365 #define HFA384x_RID_CNFOWNCHANNEL ((u16)0xFC03) 366 #define HFA384x_RID_CNFOWNSSID ((u16)0xFC04) 367 #define HFA384x_RID_CNFOWNATIMWIN ((u16)0xFC05) 368 #define HFA384x_RID_CNFSYSSCALE ((u16)0xFC06) 369 #define HFA384x_RID_CNFMAXDATALEN ((u16)0xFC07) 370 #define HFA384x_RID_CNFWDSADDR ((u16)0xFC08) 371 #define HFA384x_RID_CNFPMENABLED ((u16)0xFC09) 372 #define HFA384x_RID_CNFPMEPS ((u16)0xFC0A) 373 #define HFA384x_RID_CNFMULTICASTRX ((u16)0xFC0B) 374 #define HFA384x_RID_CNFMAXSLEEPDUR ((u16)0xFC0C) 375 #define HFA384x_RID_CNFPMHOLDDUR ((u16)0xFC0D) 376 #define HFA384x_RID_CNFOWNNAME ((u16)0xFC0E) 377 #define HFA384x_RID_CNFOWNDTIMPER ((u16)0xFC10) 378 #define HFA384x_RID_CNFWDSADDR1 ((u16)0xFC11) 379 #define HFA384x_RID_CNFWDSADDR2 ((u16)0xFC12) 380 #define HFA384x_RID_CNFWDSADDR3 ((u16)0xFC13) 381 #define HFA384x_RID_CNFWDSADDR4 ((u16)0xFC14) 382 #define HFA384x_RID_CNFWDSADDR5 ((u16)0xFC15) 383 #define HFA384x_RID_CNFWDSADDR6 ((u16)0xFC16) 384 #define HFA384x_RID_CNFMCASTPMBUFF ((u16)0xFC17) 385 386 /*-------------------------------------------------------------------- 387 Configuration RID lengths: Network Params, Static Config Entities 388 This is the length of JUST the DATA part of the RID (does not 389 include the len or code fields) 390 --------------------------------------------------------------------*/ 391 /* TODO: fill in the rest of these */ 392 #define HFA384x_RID_CNFPORTTYPE_LEN ((u16)2) 393 #define HFA384x_RID_CNFOWNMACADDR_LEN ((u16)6) 394 #define HFA384x_RID_CNFDESIREDSSID_LEN ((u16)34) 395 #define HFA384x_RID_CNFOWNCHANNEL_LEN ((u16)2) 396 #define HFA384x_RID_CNFOWNSSID_LEN ((u16)34) 397 #define HFA384x_RID_CNFOWNATIMWIN_LEN ((u16)2) 398 #define HFA384x_RID_CNFSYSSCALE_LEN ((u16)0) 399 #define HFA384x_RID_CNFMAXDATALEN_LEN ((u16)0) 400 #define HFA384x_RID_CNFWDSADDR_LEN ((u16)6) 401 #define HFA384x_RID_CNFPMENABLED_LEN ((u16)0) 402 #define HFA384x_RID_CNFPMEPS_LEN ((u16)0) 403 #define HFA384x_RID_CNFMULTICASTRX_LEN ((u16)0) 404 #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((u16)0) 405 #define HFA384x_RID_CNFPMHOLDDUR_LEN ((u16)0) 406 #define HFA384x_RID_CNFOWNNAME_LEN ((u16)34) 407 #define HFA384x_RID_CNFOWNDTIMPER_LEN ((u16)0) 408 #define HFA384x_RID_CNFWDSADDR1_LEN ((u16)6) 409 #define HFA384x_RID_CNFWDSADDR2_LEN ((u16)6) 410 #define HFA384x_RID_CNFWDSADDR3_LEN ((u16)6) 411 #define HFA384x_RID_CNFWDSADDR4_LEN ((u16)6) 412 #define HFA384x_RID_CNFWDSADDR5_LEN ((u16)6) 413 #define HFA384x_RID_CNFWDSADDR6_LEN ((u16)6) 414 #define HFA384x_RID_CNFMCASTPMBUFF_LEN ((u16)0) 415 #define HFA384x_RID_CNFAUTHENTICATION_LEN ((u16)sizeof(u16)) 416 #define HFA384x_RID_CNFMAXSLEEPDUR_LEN ((u16)0) 417 418 /*-------------------------------------------------------------------- 419 Configuration RIDs: Network Parameters, Dynamic Configuration Entities 420 --------------------------------------------------------------------*/ 421 #define HFA384x_RID_GROUPADDR ((u16)0xFC80) 422 #define HFA384x_RID_CREATEIBSS ((u16)0xFC81) 423 #define HFA384x_RID_FRAGTHRESH ((u16)0xFC82) 424 #define HFA384x_RID_RTSTHRESH ((u16)0xFC83) 425 #define HFA384x_RID_TXRATECNTL ((u16)0xFC84) 426 #define HFA384x_RID_PROMISCMODE ((u16)0xFC85) 427 #define HFA384x_RID_FRAGTHRESH0 ((u16)0xFC90) 428 #define HFA384x_RID_FRAGTHRESH1 ((u16)0xFC91) 429 #define HFA384x_RID_FRAGTHRESH2 ((u16)0xFC92) 430 #define HFA384x_RID_FRAGTHRESH3 ((u16)0xFC93) 431 #define HFA384x_RID_FRAGTHRESH4 ((u16)0xFC94) 432 #define HFA384x_RID_FRAGTHRESH5 ((u16)0xFC95) 433 #define HFA384x_RID_FRAGTHRESH6 ((u16)0xFC96) 434 #define HFA384x_RID_RTSTHRESH0 ((u16)0xFC97) 435 #define HFA384x_RID_RTSTHRESH1 ((u16)0xFC98) 436 #define HFA384x_RID_RTSTHRESH2 ((u16)0xFC99) 437 #define HFA384x_RID_RTSTHRESH3 ((u16)0xFC9A) 438 #define HFA384x_RID_RTSTHRESH4 ((u16)0xFC9B) 439 #define HFA384x_RID_RTSTHRESH5 ((u16)0xFC9C) 440 #define HFA384x_RID_RTSTHRESH6 ((u16)0xFC9D) 441 #define HFA384x_RID_TXRATECNTL0 ((u16)0xFC9E) 442 #define HFA384x_RID_TXRATECNTL1 ((u16)0xFC9F) 443 #define HFA384x_RID_TXRATECNTL2 ((u16)0xFCA0) 444 #define HFA384x_RID_TXRATECNTL3 ((u16)0xFCA1) 445 #define HFA384x_RID_TXRATECNTL4 ((u16)0xFCA2) 446 #define HFA384x_RID_TXRATECNTL5 ((u16)0xFCA3) 447 #define HFA384x_RID_TXRATECNTL6 ((u16)0xFCA4) 448 449 /*-------------------------------------------------------------------- 450 Configuration RID Lengths: Network Param, Dynamic Config Entities 451 This is the length of JUST the DATA part of the RID (does not 452 include the len or code fields) 453 --------------------------------------------------------------------*/ 454 /* TODO: fill in the rest of these */ 455 #define HFA384x_RID_GROUPADDR_LEN ((u16)16 * ETH_ALEN) 456 #define HFA384x_RID_CREATEIBSS_LEN ((u16)0) 457 #define HFA384x_RID_FRAGTHRESH_LEN ((u16)0) 458 #define HFA384x_RID_RTSTHRESH_LEN ((u16)0) 459 #define HFA384x_RID_TXRATECNTL_LEN ((u16)4) 460 #define HFA384x_RID_PROMISCMODE_LEN ((u16)2) 461 #define HFA384x_RID_FRAGTHRESH0_LEN ((u16)0) 462 #define HFA384x_RID_FRAGTHRESH1_LEN ((u16)0) 463 #define HFA384x_RID_FRAGTHRESH2_LEN ((u16)0) 464 #define HFA384x_RID_FRAGTHRESH3_LEN ((u16)0) 465 #define HFA384x_RID_FRAGTHRESH4_LEN ((u16)0) 466 #define HFA384x_RID_FRAGTHRESH5_LEN ((u16)0) 467 #define HFA384x_RID_FRAGTHRESH6_LEN ((u16)0) 468 #define HFA384x_RID_RTSTHRESH0_LEN ((u16)0) 469 #define HFA384x_RID_RTSTHRESH1_LEN ((u16)0) 470 #define HFA384x_RID_RTSTHRESH2_LEN ((u16)0) 471 #define HFA384x_RID_RTSTHRESH3_LEN ((u16)0) 472 #define HFA384x_RID_RTSTHRESH4_LEN ((u16)0) 473 #define HFA384x_RID_RTSTHRESH5_LEN ((u16)0) 474 #define HFA384x_RID_RTSTHRESH6_LEN ((u16)0) 475 #define HFA384x_RID_TXRATECNTL0_LEN ((u16)0) 476 #define HFA384x_RID_TXRATECNTL1_LEN ((u16)0) 477 #define HFA384x_RID_TXRATECNTL2_LEN ((u16)0) 478 #define HFA384x_RID_TXRATECNTL3_LEN ((u16)0) 479 #define HFA384x_RID_TXRATECNTL4_LEN ((u16)0) 480 #define HFA384x_RID_TXRATECNTL5_LEN ((u16)0) 481 #define HFA384x_RID_TXRATECNTL6_LEN ((u16)0) 482 483 /*-------------------------------------------------------------------- 484 Configuration RIDs: Behavior Parameters 485 --------------------------------------------------------------------*/ 486 #define HFA384x_RID_ITICKTIME ((u16)0xFCE0) 487 488 /*-------------------------------------------------------------------- 489 Configuration RID Lengths: Behavior Parameters 490 This is the length of JUST the DATA part of the RID (does not 491 include the len or code fields) 492 --------------------------------------------------------------------*/ 493 #define HFA384x_RID_ITICKTIME_LEN ((u16)2) 494 495 /*---------------------------------------------------------------------- 496 Information RIDs: NIC Information 497 --------------------------------------------------------------------*/ 498 #define HFA384x_RID_MAXLOADTIME ((u16)0xFD00) 499 #define HFA384x_RID_DOWNLOADBUFFER ((u16)0xFD01) 500 #define HFA384x_RID_PRIIDENTITY ((u16)0xFD02) 501 #define HFA384x_RID_PRISUPRANGE ((u16)0xFD03) 502 #define HFA384x_RID_PRI_CFIACTRANGES ((u16)0xFD04) 503 #define HFA384x_RID_NICSERIALNUMBER ((u16)0xFD0A) 504 #define HFA384x_RID_NICIDENTITY ((u16)0xFD0B) 505 #define HFA384x_RID_MFISUPRANGE ((u16)0xFD0C) 506 #define HFA384x_RID_CFISUPRANGE ((u16)0xFD0D) 507 #define HFA384x_RID_CHANNELLIST ((u16)0xFD10) 508 #define HFA384x_RID_REGULATORYDOMAINS ((u16)0xFD11) 509 #define HFA384x_RID_TEMPTYPE ((u16)0xFD12) 510 #define HFA384x_RID_CIS ((u16)0xFD13) 511 #define HFA384x_RID_STAIDENTITY ((u16)0xFD20) 512 #define HFA384x_RID_STASUPRANGE ((u16)0xFD21) 513 #define HFA384x_RID_STA_MFIACTRANGES ((u16)0xFD22) 514 #define HFA384x_RID_STA_CFIACTRANGES ((u16)0xFD23) 515 #define HFA384x_RID_BUILDSEQ ((u16)0xFFFE) 516 #define HFA384x_RID_FWID ((u16)0xFFFF) 517 518 /*---------------------------------------------------------------------- 519 Information RID Lengths: NIC Information 520 This is the length of JUST the DATA part of the RID (does not 521 include the len or code fields) 522 --------------------------------------------------------------------*/ 523 #define HFA384x_RID_MAXLOADTIME_LEN ((u16)0) 524 #define HFA384x_RID_DOWNLOADBUFFER_LEN ((u16)sizeof(hfa384x_downloadbuffer_t)) 525 #define HFA384x_RID_PRIIDENTITY_LEN ((u16)8) 526 #define HFA384x_RID_PRISUPRANGE_LEN ((u16)10) 527 #define HFA384x_RID_CFIACTRANGES_LEN ((u16)10) 528 #define HFA384x_RID_NICSERIALNUMBER_LEN ((u16)12) 529 #define HFA384x_RID_NICIDENTITY_LEN ((u16)8) 530 #define HFA384x_RID_MFISUPRANGE_LEN ((u16)10) 531 #define HFA384x_RID_CFISUPRANGE_LEN ((u16)10) 532 #define HFA384x_RID_CHANNELLIST_LEN ((u16)0) 533 #define HFA384x_RID_REGULATORYDOMAINS_LEN ((u16)12) 534 #define HFA384x_RID_TEMPTYPE_LEN ((u16)0) 535 #define HFA384x_RID_CIS_LEN ((u16)480) 536 #define HFA384x_RID_STAIDENTITY_LEN ((u16)8) 537 #define HFA384x_RID_STASUPRANGE_LEN ((u16)10) 538 #define HFA384x_RID_MFIACTRANGES_LEN ((u16)10) 539 #define HFA384x_RID_CFIACTRANGES2_LEN ((u16)10) 540 #define HFA384x_RID_BUILDSEQ_LEN ((u16)sizeof(hfa384x_BuildSeq_t)) 541 #define HFA384x_RID_FWID_LEN ((u16)sizeof(hfa384x_FWID_t)) 542 543 /*-------------------------------------------------------------------- 544 Information RIDs: MAC Information 545 --------------------------------------------------------------------*/ 546 #define HFA384x_RID_PORTSTATUS ((u16)0xFD40) 547 #define HFA384x_RID_CURRENTSSID ((u16)0xFD41) 548 #define HFA384x_RID_CURRENTBSSID ((u16)0xFD42) 549 #define HFA384x_RID_COMMSQUALITY ((u16)0xFD43) 550 #define HFA384x_RID_CURRENTTXRATE ((u16)0xFD44) 551 #define HFA384x_RID_CURRENTBCNint ((u16)0xFD45) 552 #define HFA384x_RID_CURRENTSCALETHRESH ((u16)0xFD46) 553 #define HFA384x_RID_PROTOCOLRSPTIME ((u16)0xFD47) 554 #define HFA384x_RID_SHORTRETRYLIMIT ((u16)0xFD48) 555 #define HFA384x_RID_LONGRETRYLIMIT ((u16)0xFD49) 556 #define HFA384x_RID_MAXTXLIFETIME ((u16)0xFD4A) 557 #define HFA384x_RID_MAXRXLIFETIME ((u16)0xFD4B) 558 #define HFA384x_RID_CFPOLLABLE ((u16)0xFD4C) 559 #define HFA384x_RID_AUTHALGORITHMS ((u16)0xFD4D) 560 #define HFA384x_RID_PRIVACYOPTIMP ((u16)0xFD4F) 561 #define HFA384x_RID_DBMCOMMSQUALITY ((u16)0xFD51) 562 #define HFA384x_RID_CURRENTTXRATE1 ((u16)0xFD80) 563 #define HFA384x_RID_CURRENTTXRATE2 ((u16)0xFD81) 564 #define HFA384x_RID_CURRENTTXRATE3 ((u16)0xFD82) 565 #define HFA384x_RID_CURRENTTXRATE4 ((u16)0xFD83) 566 #define HFA384x_RID_CURRENTTXRATE5 ((u16)0xFD84) 567 #define HFA384x_RID_CURRENTTXRATE6 ((u16)0xFD85) 568 #define HFA384x_RID_OWNMACADDRESS ((u16)0xFD86) 569 // #define HFA384x_RID_PCFINFO ((u16)0xFD87) 570 #define HFA384x_RID_SCANRESULTS ((u16)0xFD88) // NEW 571 #define HFA384x_RID_HOSTSCANRESULTS ((u16)0xFD89) // NEW 572 #define HFA384x_RID_AUTHENTICATIONUSED ((u16)0xFD8A) // NEW 573 #define HFA384x_RID_ASSOCIATEFAILURE ((u16)0xFD8D) // 1.8.0 574 575 /*-------------------------------------------------------------------- 576 Information RID Lengths: MAC Information 577 This is the length of JUST the DATA part of the RID (does not 578 include the len or code fields) 579 --------------------------------------------------------------------*/ 580 #define HFA384x_RID_PORTSTATUS_LEN ((u16)0) 581 #define HFA384x_RID_CURRENTSSID_LEN ((u16)34) 582 #define HFA384x_RID_CURRENTBSSID_LEN ((u16)WLAN_BSSID_LEN) 583 #define HFA384x_RID_COMMSQUALITY_LEN ((u16)sizeof(hfa384x_commsquality_t)) 584 #define HFA384x_RID_DBMCOMMSQUALITY_LEN ((u16)sizeof(hfa384x_dbmcommsquality_t)) 585 #define HFA384x_RID_CURRENTTXRATE_LEN ((u16)0) 586 #define HFA384x_RID_CURRENTBCNint_LEN ((u16)0) 587 #define HFA384x_RID_STACURSCALETHRESH_LEN ((u16)12) 588 #define HFA384x_RID_APCURSCALETHRESH_LEN ((u16)6) 589 #define HFA384x_RID_PROTOCOLRSPTIME_LEN ((u16)0) 590 #define HFA384x_RID_SHORTRETRYLIMIT_LEN ((u16)0) 591 #define HFA384x_RID_LONGRETRYLIMIT_LEN ((u16)0) 592 #define HFA384x_RID_MAXTXLIFETIME_LEN ((u16)0) 593 #define HFA384x_RID_MAXRXLIFETIME_LEN ((u16)0) 594 #define HFA384x_RID_CFPOLLABLE_LEN ((u16)0) 595 #define HFA384x_RID_AUTHALGORITHMS_LEN ((u16)4) 596 #define HFA384x_RID_PRIVACYOPTIMP_LEN ((u16)0) 597 #define HFA384x_RID_CURRENTTXRATE1_LEN ((u16)0) 598 #define HFA384x_RID_CURRENTTXRATE2_LEN ((u16)0) 599 #define HFA384x_RID_CURRENTTXRATE3_LEN ((u16)0) 600 #define HFA384x_RID_CURRENTTXRATE4_LEN ((u16)0) 601 #define HFA384x_RID_CURRENTTXRATE5_LEN ((u16)0) 602 #define HFA384x_RID_CURRENTTXRATE6_LEN ((u16)0) 603 #define HFA384x_RID_OWNMACADDRESS_LEN ((u16)6) 604 #define HFA384x_RID_PCFINFO_LEN ((u16)6) 605 #define HFA384x_RID_CNFAPPCFINFO_LEN ((u16)sizeof(hfa384x_PCFInfo_data_t)) 606 #define HFA384x_RID_SCANREQUEST_LEN ((u16)sizeof(hfa384x_ScanRequest_data_t)) 607 #define HFA384x_RID_JOINREQUEST_LEN ((u16)sizeof(hfa384x_JoinRequest_data_t)) 608 #define HFA384x_RID_AUTHENTICATESTA_LEN ((u16)sizeof(hfa384x_authenticateStation_data_t)) 609 #define HFA384x_RID_CHANNELINFOREQUEST_LEN ((u16)sizeof(hfa384x_ChannelInfoRequest_data_t)) 610 /*-------------------------------------------------------------------- 611 Information RIDs: Modem Information 612 --------------------------------------------------------------------*/ 613 #define HFA384x_RID_PHYTYPE ((u16)0xFDC0) 614 #define HFA384x_RID_CURRENTCHANNEL ((u16)0xFDC1) 615 #define HFA384x_RID_CURRENTPOWERSTATE ((u16)0xFDC2) 616 #define HFA384x_RID_CCAMODE ((u16)0xFDC3) 617 #define HFA384x_RID_SUPPORTEDDATARATES ((u16)0xFDC6) 618 #define HFA384x_RID_LFOSTATUS ((u16)0xFDC7) // 1.7.1 619 620 /*-------------------------------------------------------------------- 621 Information RID Lengths: Modem Information 622 This is the length of JUST the DATA part of the RID (does not 623 include the len or code fields) 624 --------------------------------------------------------------------*/ 625 #define HFA384x_RID_PHYTYPE_LEN ((u16)0) 626 #define HFA384x_RID_CURRENTCHANNEL_LEN ((u16)0) 627 #define HFA384x_RID_CURRENTPOWERSTATE_LEN ((u16)0) 628 #define HFA384x_RID_CCAMODE_LEN ((u16)0) 629 #define HFA384x_RID_SUPPORTEDDATARATES_LEN ((u16)10) 630 631 /*-------------------------------------------------------------------- 632 API ENHANCEMENTS (NOT ALREADY IMPLEMENTED) 633 --------------------------------------------------------------------*/ 634 #define HFA384x_RID_CNFWEPDEFAULTKEYID ((u16)0xFC23) 635 #define HFA384x_RID_CNFWEPDEFAULTKEY0 ((u16)0xFC24) 636 #define HFA384x_RID_CNFWEPDEFAULTKEY1 ((u16)0xFC25) 637 #define HFA384x_RID_CNFWEPDEFAULTKEY2 ((u16)0xFC26) 638 #define HFA384x_RID_CNFWEPDEFAULTKEY3 ((u16)0xFC27) 639 #define HFA384x_RID_CNFWEPFLAGS ((u16)0xFC28) 640 #define HFA384x_RID_CNFWEPKEYMAPTABLE ((u16)0xFC29) 641 #define HFA384x_RID_CNFAUTHENTICATION ((u16)0xFC2A) 642 #define HFA384x_RID_CNFMAXASSOCSTATIONS ((u16)0xFC2B) 643 #define HFA384x_RID_CNFTXCONTROL ((u16)0xFC2C) 644 #define HFA384x_RID_CNFROAMINGMODE ((u16)0xFC2D) 645 #define HFA384x_RID_CNFHOSTAUTHASSOC ((u16)0xFC2E) 646 #define HFA384x_RID_CNFRCVCRCERROR ((u16)0xFC30) 647 // #define HFA384x_RID_CNFMMLIFE ((u16)0xFC31) 648 #define HFA384x_RID_CNFALTRETRYCNT ((u16)0xFC32) 649 #define HFA384x_RID_CNFAPBCNint ((u16)0xFC33) 650 #define HFA384x_RID_CNFAPPCFINFO ((u16)0xFC34) 651 #define HFA384x_RID_CNFSTAPCFINFO ((u16)0xFC35) 652 #define HFA384x_RID_CNFPRIORITYQUSAGE ((u16)0xFC37) 653 #define HFA384x_RID_CNFTIMCTRL ((u16)0xFC40) 654 #define HFA384x_RID_CNFTHIRTY2TALLY ((u16)0xFC42) 655 #define HFA384x_RID_CNFENHSECURITY ((u16)0xFC43) 656 #define HFA384x_RID_CNFDBMADJUST ((u16)0xFC46) // NEW 657 #define HFA384x_RID_CNFWPADATA ((u16)0xFC48) // 1.7.0 658 #define HFA384x_RID_CNFPROPOGATIONDELAY ((u16)0xFC49) // 1.7.6 659 #define HFA384x_RID_CNFSHORTPREAMBLE ((u16)0xFCB0) 660 #define HFA384x_RID_CNFEXCLONGPREAMBLE ((u16)0xFCB1) 661 #define HFA384x_RID_CNFAUTHRSPTIMEOUT ((u16)0xFCB2) 662 #define HFA384x_RID_CNFBASICRATES ((u16)0xFCB3) 663 #define HFA384x_RID_CNFSUPPRATES ((u16)0xFCB4) 664 #define HFA384x_RID_CNFFALLBACKCTRL ((u16)0xFCB5) // NEW 665 #define HFA384x_RID_WEPKEYSTATUS ((u16)0xFCB6) // NEW 666 #define HFA384x_RID_WEPKEYMAPINDEX ((u16)0xFCB7) // NEW 667 #define HFA384x_RID_BROADCASTKEYID ((u16)0xFCB8) // NEW 668 #define HFA384x_RID_ENTSECFLAGEYID ((u16)0xFCB9) // NEW 669 #define HFA384x_RID_CNFPASSIVESCANCTRL ((u16)0xFCBA) // NEW STA 670 #define HFA384x_RID_CNFWPAHANDLING ((u16)0xFCBB) // 1.7.0 671 #define HFA384x_RID_MDCCONTROL ((u16)0xFCBC) // 1.7.0/1.4.0 672 #define HFA384x_RID_MDCCOUNTRY ((u16)0xFCBD) // 1.7.0/1.4.0 673 #define HFA384x_RID_TXPOWERMAX ((u16)0xFCBE) // 1.7.0/1.4.0 674 #define HFA384x_RID_CNFLFOENBLED ((u16)0xFCBF) // 1.6.3 675 #define HFA384x_RID_CAPINFO ((u16)0xFCC0) // 1.7.0/1.3.7 676 #define HFA384x_RID_LISTENintERVAL ((u16)0xFCC1) // 1.7.0/1.3.7 677 #define HFA384x_RID_DIVERSITYENABLED ((u16)0xFCC2) // 1.7.0/1.3.7 678 #define HFA384x_RID_LED_CONTROL ((u16)0xFCC4) // 1.7.6 679 #define HFA384x_RID_HFO_DELAY ((u16)0xFCC5) // 1.7.6 680 #define HFA384x_RID_DISSALOWEDBSSID ((u16)0xFCC6) // 1.8.0 681 #define HFA384x_RID_SCANREQUEST ((u16)0xFCE1) 682 #define HFA384x_RID_JOINREQUEST ((u16)0xFCE2) 683 #define HFA384x_RID_AUTHENTICATESTA ((u16)0xFCE3) 684 #define HFA384x_RID_CHANNELINFOREQUEST ((u16)0xFCE4) 685 #define HFA384x_RID_HOSTSCAN ((u16)0xFCE5) // NEW STA 686 #define HFA384x_RID_ASSOCIATESTA ((u16)0xFCE6) 687 688 #define HFA384x_RID_CNFWEPDEFAULTKEY_LEN ((u16)6) 689 #define HFA384x_RID_CNFWEP128DEFAULTKEY_LEN ((u16)14) 690 #define HFA384x_RID_CNFPRIOQUSAGE_LEN ((u16)4) 691 /*-------------------------------------------------------------------- 692 PD Record codes 693 --------------------------------------------------------------------*/ 694 #define HFA384x_PDR_PCB_PARTNUM ((u16)0x0001) 695 #define HFA384x_PDR_PDAVER ((u16)0x0002) 696 #define HFA384x_PDR_NIC_SERIAL ((u16)0x0003) 697 #define HFA384x_PDR_MKK_MEASUREMENTS ((u16)0x0004) 698 #define HFA384x_PDR_NIC_RAMSIZE ((u16)0x0005) 699 #define HFA384x_PDR_MFISUPRANGE ((u16)0x0006) 700 #define HFA384x_PDR_CFISUPRANGE ((u16)0x0007) 701 #define HFA384x_PDR_NICID ((u16)0x0008) 702 //#define HFA384x_PDR_REFDAC_MEASUREMENTS ((u16)0x0010) 703 //#define HFA384x_PDR_VGDAC_MEASUREMENTS ((u16)0x0020) 704 //#define HFA384x_PDR_LEVEL_COMP_MEASUREMENTS ((u16)0x0030) 705 //#define HFA384x_PDR_MODEM_TRIMDAC_MEASUREMENTS ((u16)0x0040) 706 //#define HFA384x_PDR_COREGA_HACK ((u16)0x00ff) 707 #define HFA384x_PDR_MAC_ADDRESS ((u16)0x0101) 708 //#define HFA384x_PDR_MKK_CALLNAME ((u16)0x0102) 709 #define HFA384x_PDR_REGDOMAIN ((u16)0x0103) 710 #define HFA384x_PDR_ALLOWED_CHANNEL ((u16)0x0104) 711 #define HFA384x_PDR_DEFAULT_CHANNEL ((u16)0x0105) 712 //#define HFA384x_PDR_PRIVACY_OPTION ((u16)0x0106) 713 #define HFA384x_PDR_TEMPTYPE ((u16)0x0107) 714 //#define HFA384x_PDR_REFDAC_SETUP ((u16)0x0110) 715 //#define HFA384x_PDR_VGDAC_SETUP ((u16)0x0120) 716 //#define HFA384x_PDR_LEVEL_COMP_SETUP ((u16)0x0130) 717 //#define HFA384x_PDR_TRIMDAC_SETUP ((u16)0x0140) 718 #define HFA384x_PDR_IFR_SETTING ((u16)0x0200) 719 #define HFA384x_PDR_RFR_SETTING ((u16)0x0201) 720 #define HFA384x_PDR_HFA3861_BASELINE ((u16)0x0202) 721 #define HFA384x_PDR_HFA3861_SHADOW ((u16)0x0203) 722 #define HFA384x_PDR_HFA3861_IFRF ((u16)0x0204) 723 #define HFA384x_PDR_HFA3861_CHCALSP ((u16)0x0300) 724 #define HFA384x_PDR_HFA3861_CHCALI ((u16)0x0301) 725 #define HFA384x_PDR_MAX_TX_POWER ((u16)0x0302) 726 #define HFA384x_PDR_MASTER_CHAN_LIST ((u16)0x0303) 727 #define HFA384x_PDR_3842_NIC_CONFIG ((u16)0x0400) 728 #define HFA384x_PDR_USB_ID ((u16)0x0401) 729 #define HFA384x_PDR_PCI_ID ((u16)0x0402) 730 #define HFA384x_PDR_PCI_IFCONF ((u16)0x0403) 731 #define HFA384x_PDR_PCI_PMCONF ((u16)0x0404) 732 #define HFA384x_PDR_RFENRGY ((u16)0x0406) 733 #define HFA384x_PDR_USB_POWER_TYPE ((u16)0x0407) 734 //#define HFA384x_PDR_UNKNOWN408 ((u16)0x0408) 735 #define HFA384x_PDR_USB_MAX_POWER ((u16)0x0409) 736 #define HFA384x_PDR_USB_MANUFACTURER ((u16)0x0410) 737 #define HFA384x_PDR_USB_PRODUCT ((u16)0x0411) 738 #define HFA384x_PDR_ANT_DIVERSITY ((u16)0x0412) 739 #define HFA384x_PDR_HFO_DELAY ((u16)0x0413) 740 #define HFA384x_PDR_SCALE_THRESH ((u16)0x0414) 741 742 #define HFA384x_PDR_HFA3861_MANF_TESTSP ((u16)0x0900) 743 #define HFA384x_PDR_HFA3861_MANF_TESTI ((u16)0x0901) 744 #define HFA384x_PDR_END_OF_PDA ((u16)0x0000) 745 746 747 /*=============================================================*/ 748 /*------ Macros -----------------------------------------------*/ 749 750 /*--- Register ID macros ------------------------*/ 751 752 #define HFA384x_CMD HFA384x_CMD_OFF 753 #define HFA384x_PARAM0 HFA384x_PARAM0_OFF 754 #define HFA384x_PARAM1 HFA384x_PARAM1_OFF 755 #define HFA384x_PARAM2 HFA384x_PARAM2_OFF 756 #define HFA384x_STATUS HFA384x_STATUS_OFF 757 #define HFA384x_RESP0 HFA384x_RESP0_OFF 758 #define HFA384x_RESP1 HFA384x_RESP1_OFF 759 #define HFA384x_RESP2 HFA384x_RESP2_OFF 760 #define HFA384x_INFOFID HFA384x_INFOFID_OFF 761 #define HFA384x_RXFID HFA384x_RXFID_OFF 762 #define HFA384x_ALLOCFID HFA384x_ALLOCFID_OFF 763 #define HFA384x_TXCOMPLFID HFA384x_TXCOMPLFID_OFF 764 #define HFA384x_SELECT0 HFA384x_SELECT0_OFF 765 #define HFA384x_OFFSET0 HFA384x_OFFSET0_OFF 766 #define HFA384x_DATA0 HFA384x_DATA0_OFF 767 #define HFA384x_SELECT1 HFA384x_SELECT1_OFF 768 #define HFA384x_OFFSET1 HFA384x_OFFSET1_OFF 769 #define HFA384x_DATA1 HFA384x_DATA1_OFF 770 #define HFA384x_EVSTAT HFA384x_EVSTAT_OFF 771 #define HFA384x_intEN HFA384x_INTEN_OFF 772 #define HFA384x_EVACK HFA384x_EVACK_OFF 773 #define HFA384x_CONTROL HFA384x_CONTROL_OFF 774 #define HFA384x_SWSUPPORT0 HFA384x_SWSUPPORT0_OFF 775 #define HFA384x_SWSUPPORT1 HFA384x_SWSUPPORT1_OFF 776 #define HFA384x_SWSUPPORT2 HFA384x_SWSUPPORT2_OFF 777 #define HFA384x_AUXPAGE HFA384x_AUXPAGE_OFF 778 #define HFA384x_AUXOFFSET HFA384x_AUXOFFSET_OFF 779 #define HFA384x_AUXDATA HFA384x_AUXDATA_OFF 780 #define HFA384x_PCICOR HFA384x_PCICOR_OFF 781 #define HFA384x_PCIHCR HFA384x_PCIHCR_OFF 782 783 784 /*--- Register Test/Get/Set Field macros ------------------------*/ 785 786 #define HFA384x_CMD_ISBUSY(value) ((u16)(((u16)value) & HFA384x_CMD_BUSY)) 787 #define HFA384x_CMD_AINFO_GET(value) ((u16)(((u16)(value) & HFA384x_CMD_AINFO) >> 8)) 788 #define HFA384x_CMD_AINFO_SET(value) ((u16)((u16)(value) << 8)) 789 #define HFA384x_CMD_MACPORT_GET(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_MACPORT))) 790 #define HFA384x_CMD_MACPORT_SET(value) ((u16)HFA384x_CMD_AINFO_SET(value)) 791 #define HFA384x_CMD_ISRECL(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_RECL))) 792 #define HFA384x_CMD_RECL_SET(value) ((u16)HFA384x_CMD_AINFO_SET(value)) 793 #define HFA384x_CMD_QOS_GET(value) ((u16)((((u16)(value))&((u16)0x3000)) >> 12)) 794 #define HFA384x_CMD_QOS_SET(value) ((u16)((((u16)(value)) << 12) & 0x3000)) 795 #define HFA384x_CMD_ISWRITE(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_WRITE))) 796 #define HFA384x_CMD_WRITE_SET(value) ((u16)HFA384x_CMD_AINFO_SET((u16)value)) 797 #define HFA384x_CMD_PROGMODE_GET(value) ((u16)(HFA384x_CMD_AINFO_GET((u16)(value) & HFA384x_CMD_PROGMODE))) 798 #define HFA384x_CMD_PROGMODE_SET(value) ((u16)HFA384x_CMD_AINFO_SET((u16)value)) 799 #define HFA384x_CMD_CMDCODE_GET(value) ((u16)(((u16)(value)) & HFA384x_CMD_CMDCODE)) 800 #define HFA384x_CMD_CMDCODE_SET(value) ((u16)(value)) 801 802 #define HFA384x_STATUS_RESULT_GET(value) ((u16)((((u16)(value)) & HFA384x_STATUS_RESULT) >> 8)) 803 #define HFA384x_STATUS_RESULT_SET(value) (((u16)(value)) << 8) 804 #define HFA384x_STATUS_CMDCODE_GET(value) (((u16)(value)) & HFA384x_STATUS_CMDCODE) 805 #define HFA384x_STATUS_CMDCODE_SET(value) ((u16)(value)) 806 807 #define HFA384x_OFFSET_ISBUSY(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_BUSY)) 808 #define HFA384x_OFFSET_ISERR(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_ERR)) 809 #define HFA384x_OFFSET_DATAOFF_GET(value) ((u16)(((u16)(value)) & HFA384x_OFFSET_DATAOFF)) 810 #define HFA384x_OFFSET_DATAOFF_SET(value) ((u16)(value)) 811 812 #define HFA384x_EVSTAT_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TICK)) 813 #define HFA384x_EVSTAT_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_WTERR)) 814 #define HFA384x_EVSTAT_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFDROP)) 815 #define HFA384x_EVSTAT_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_INFO)) 816 #define HFA384x_EVSTAT_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_DTIM)) 817 #define HFA384x_EVSTAT_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_CMD)) 818 #define HFA384x_EVSTAT_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_ALLOC)) 819 #define HFA384x_EVSTAT_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TXEXC)) 820 #define HFA384x_EVSTAT_ISTX(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_TX)) 821 #define HFA384x_EVSTAT_ISRX(value) ((u16)(((u16)(value)) & HFA384x_EVSTAT_RX)) 822 823 #define HFA384x_EVSTAT_ISBAP_OP(value) ((u16)(((u16)(value)) & HFA384x_int_BAP_OP)) 824 825 #define HFA384x_intEN_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TICK)) 826 #define HFA384x_intEN_TICK_SET(value) ((u16)(((u16)(value)) << 15)) 827 #define HFA384x_intEN_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_INTEN_WTERR)) 828 #define HFA384x_intEN_WTERR_SET(value) ((u16)(((u16)(value)) << 14)) 829 #define HFA384x_intEN_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_INTEN_INFDROP)) 830 #define HFA384x_intEN_INFDROP_SET(value) ((u16)(((u16)(value)) << 13)) 831 #define HFA384x_intEN_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_INTEN_INFO)) 832 #define HFA384x_intEN_INFO_SET(value) ((u16)(((u16)(value)) << 7)) 833 #define HFA384x_intEN_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_INTEN_DTIM)) 834 #define HFA384x_intEN_DTIM_SET(value) ((u16)(((u16)(value)) << 5)) 835 #define HFA384x_intEN_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_INTEN_CMD)) 836 #define HFA384x_intEN_CMD_SET(value) ((u16)(((u16)(value)) << 4)) 837 #define HFA384x_intEN_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_INTEN_ALLOC)) 838 #define HFA384x_intEN_ALLOC_SET(value) ((u16)(((u16)(value)) << 3)) 839 #define HFA384x_intEN_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TXEXC)) 840 #define HFA384x_intEN_TXEXC_SET(value) ((u16)(((u16)(value)) << 2)) 841 #define HFA384x_intEN_ISTX(value) ((u16)(((u16)(value)) & HFA384x_INTEN_TX)) 842 #define HFA384x_intEN_TX_SET(value) ((u16)(((u16)(value)) << 1)) 843 #define HFA384x_intEN_ISRX(value) ((u16)(((u16)(value)) & HFA384x_INTEN_RX)) 844 #define HFA384x_intEN_RX_SET(value) ((u16)(((u16)(value)) << 0)) 845 846 #define HFA384x_EVACK_ISTICK(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TICK)) 847 #define HFA384x_EVACK_TICK_SET(value) ((u16)(((u16)(value)) << 15)) 848 #define HFA384x_EVACK_ISWTERR(value) ((u16)(((u16)(value)) & HFA384x_EVACK_WTERR)) 849 #define HFA384x_EVACK_WTERR_SET(value) ((u16)(((u16)(value)) << 14)) 850 #define HFA384x_EVACK_ISINFDROP(value) ((u16)(((u16)(value)) & HFA384x_EVACK_INFDROP)) 851 #define HFA384x_EVACK_INFDROP_SET(value) ((u16)(((u16)(value)) << 13)) 852 #define HFA384x_EVACK_ISINFO(value) ((u16)(((u16)(value)) & HFA384x_EVACK_INFO)) 853 #define HFA384x_EVACK_INFO_SET(value) ((u16)(((u16)(value)) << 7)) 854 #define HFA384x_EVACK_ISDTIM(value) ((u16)(((u16)(value)) & HFA384x_EVACK_DTIM)) 855 #define HFA384x_EVACK_DTIM_SET(value) ((u16)(((u16)(value)) << 5)) 856 #define HFA384x_EVACK_ISCMD(value) ((u16)(((u16)(value)) & HFA384x_EVACK_CMD)) 857 #define HFA384x_EVACK_CMD_SET(value) ((u16)(((u16)(value)) << 4)) 858 #define HFA384x_EVACK_ISALLOC(value) ((u16)(((u16)(value)) & HFA384x_EVACK_ALLOC)) 859 #define HFA384x_EVACK_ALLOC_SET(value) ((u16)(((u16)(value)) << 3)) 860 #define HFA384x_EVACK_ISTXEXC(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TXEXC)) 861 #define HFA384x_EVACK_TXEXC_SET(value) ((u16)(((u16)(value)) << 2)) 862 #define HFA384x_EVACK_ISTX(value) ((u16)(((u16)(value)) & HFA384x_EVACK_TX)) 863 #define HFA384x_EVACK_TX_SET(value) ((u16)(((u16)(value)) << 1)) 864 #define HFA384x_EVACK_ISRX(value) ((u16)(((u16)(value)) & HFA384x_EVACK_RX)) 865 #define HFA384x_EVACK_RX_SET(value) ((u16)(((u16)(value)) << 0)) 866 867 #define HFA384x_CONTROL_AUXEN_SET(value) ((u16)(((u16)(value)) << 14)) 868 #define HFA384x_CONTROL_AUXEN_GET(value) ((u16)(((u16)(value)) >> 14)) 869 870 /* Byte Order */ 871 #ifdef __KERNEL__ 872 #define hfa384x2host_16(n) (__le16_to_cpu((u16)(n))) 873 #define hfa384x2host_32(n) (__le32_to_cpu((u32)(n))) 874 #define host2hfa384x_16(n) (__cpu_to_le16((u16)(n))) 875 #define host2hfa384x_32(n) (__cpu_to_le32((u32)(n))) 876 #endif 877 878 /* Host Maintained State Info */ 879 #define HFA384x_STATE_PREINIT 0 880 #define HFA384x_STATE_INIT 1 881 #define HFA384x_STATE_RUNNING 2 882 883 /*=============================================================*/ 884 /*------ Types and their related constants --------------------*/ 885 886 #define HFA384x_HOSTAUTHASSOC_HOSTAUTH BIT(0) 887 #define HFA384x_HOSTAUTHASSOC_HOSTASSOC BIT(1) 888 889 #define HFA384x_WHAHANDLING_DISABLED 0 890 #define HFA384x_WHAHANDLING_PASSTHROUGH BIT(1) 891 892 /*-------------------------------------------------------------*/ 893 /* Commonly used basic types */ 894 typedef struct hfa384x_bytestr 895 { 896 u16 len; 897 u8 data[0]; 898 } __attribute__((packed)) hfa384x_bytestr_t; 899 900 typedef struct hfa384x_bytestr32 901 { 902 u16 len; 903 u8 data[32]; 904 } __attribute__((packed)) hfa384x_bytestr32_t; 905 906 /*-------------------------------------------------------------------- 907 Configuration Record Structures: 908 Network Parameters, Static Configuration Entities 909 --------------------------------------------------------------------*/ 910 /* Prototype structure: all configuration record structures start with 911 these members */ 912 913 typedef struct hfa384x_record 914 { 915 u16 reclen; 916 u16 rid; 917 } __attribute__((packed)) hfa384x_rec_t; 918 919 typedef struct hfa384x_record16 920 { 921 u16 reclen; 922 u16 rid; 923 u16 val; 924 } __attribute__((packed)) hfa384x_rec16_t; 925 926 typedef struct hfa384x_record32 927 { 928 u16 reclen; 929 u16 rid; 930 u32 val; 931 } __attribute__((packed)) hfa384x_rec32; 932 933 /*-- Hardware/Firmware Component Information ----------*/ 934 typedef struct hfa384x_compident 935 { 936 u16 id; 937 u16 variant; 938 u16 major; 939 u16 minor; 940 } __attribute__((packed)) hfa384x_compident_t; 941 942 typedef struct hfa384x_caplevel 943 { 944 u16 role; 945 u16 id; 946 u16 variant; 947 u16 bottom; 948 u16 top; 949 } __attribute__((packed)) hfa384x_caplevel_t; 950 951 /*-- Configuration Record: cnfPortType --*/ 952 typedef struct hfa384x_cnfPortType 953 { 954 u16 cnfPortType; 955 } __attribute__((packed)) hfa384x_cnfPortType_t; 956 957 /*-- Configuration Record: cnfOwnMACAddress --*/ 958 typedef struct hfa384x_cnfOwnMACAddress 959 { 960 u8 cnfOwnMACAddress[6]; 961 } __attribute__((packed)) hfa384x_cnfOwnMACAddress_t; 962 963 /*-- Configuration Record: cnfDesiredSSID --*/ 964 typedef struct hfa384x_cnfDesiredSSID 965 { 966 u8 cnfDesiredSSID[34]; 967 } __attribute__((packed)) hfa384x_cnfDesiredSSID_t; 968 969 /*-- Configuration Record: cnfOwnChannel --*/ 970 typedef struct hfa384x_cnfOwnChannel 971 { 972 u16 cnfOwnChannel; 973 } __attribute__((packed)) hfa384x_cnfOwnChannel_t; 974 975 /*-- Configuration Record: cnfOwnSSID --*/ 976 typedef struct hfa384x_cnfOwnSSID 977 { 978 u8 cnfOwnSSID[34]; 979 } __attribute__((packed)) hfa384x_cnfOwnSSID_t; 980 981 /*-- Configuration Record: cnfOwnATIMWindow --*/ 982 typedef struct hfa384x_cnfOwnATIMWindow 983 { 984 u16 cnfOwnATIMWindow; 985 } __attribute__((packed)) hfa384x_cnfOwnATIMWindow_t; 986 987 /*-- Configuration Record: cnfSystemScale --*/ 988 typedef struct hfa384x_cnfSystemScale 989 { 990 u16 cnfSystemScale; 991 } __attribute__((packed)) hfa384x_cnfSystemScale_t; 992 993 /*-- Configuration Record: cnfMaxDataLength --*/ 994 typedef struct hfa384x_cnfMaxDataLength 995 { 996 u16 cnfMaxDataLength; 997 } __attribute__((packed)) hfa384x_cnfMaxDataLength_t; 998 999 /*-- Configuration Record: cnfWDSAddress --*/ 1000 typedef struct hfa384x_cnfWDSAddress 1001 { 1002 u8 cnfWDSAddress[6]; 1003 } __attribute__((packed)) hfa384x_cnfWDSAddress_t; 1004 1005 /*-- Configuration Record: cnfPMEnabled --*/ 1006 typedef struct hfa384x_cnfPMEnabled 1007 { 1008 u16 cnfPMEnabled; 1009 } __attribute__((packed)) hfa384x_cnfPMEnabled_t; 1010 1011 /*-- Configuration Record: cnfPMEPS --*/ 1012 typedef struct hfa384x_cnfPMEPS 1013 { 1014 u16 cnfPMEPS; 1015 } __attribute__((packed)) hfa384x_cnfPMEPS_t; 1016 1017 /*-- Configuration Record: cnfMulticastReceive --*/ 1018 typedef struct hfa384x_cnfMulticastReceive 1019 { 1020 u16 cnfMulticastReceive; 1021 } __attribute__((packed)) hfa384x_cnfMulticastReceive_t; 1022 1023 /*-- Configuration Record: cnfAuthentication --*/ 1024 #define HFA384x_CNFAUTHENTICATION_OPENSYSTEM 0x0001 1025 #define HFA384x_CNFAUTHENTICATION_SHAREDKEY 0x0002 1026 #define HFA384x_CNFAUTHENTICATION_LEAP 0x0004 1027 1028 /*-- Configuration Record: cnfMaxSleepDuration --*/ 1029 typedef struct hfa384x_cnfMaxSleepDuration 1030 { 1031 u16 cnfMaxSleepDuration; 1032 } __attribute__((packed)) hfa384x_cnfMaxSleepDuration_t; 1033 1034 /*-- Configuration Record: cnfPMHoldoverDuration --*/ 1035 typedef struct hfa384x_cnfPMHoldoverDuration 1036 { 1037 u16 cnfPMHoldoverDuration; 1038 } __attribute__((packed)) hfa384x_cnfPMHoldoverDuration_t; 1039 1040 /*-- Configuration Record: cnfOwnName --*/ 1041 typedef struct hfa384x_cnfOwnName 1042 { 1043 u8 cnfOwnName[34]; 1044 } __attribute__((packed)) hfa384x_cnfOwnName_t; 1045 1046 /*-- Configuration Record: cnfOwnDTIMPeriod --*/ 1047 typedef struct hfa384x_cnfOwnDTIMPeriod 1048 { 1049 u16 cnfOwnDTIMPeriod; 1050 } __attribute__((packed)) hfa384x_cnfOwnDTIMPeriod_t; 1051 1052 /*-- Configuration Record: cnfWDSAddress --*/ 1053 typedef struct hfa384x_cnfWDSAddressN 1054 { 1055 u8 cnfWDSAddress[6]; 1056 } __attribute__((packed)) hfa384x_cnfWDSAddressN_t; 1057 1058 /*-- Configuration Record: cnfMulticastPMBuffering --*/ 1059 typedef struct hfa384x_cnfMulticastPMBuffering 1060 { 1061 u16 cnfMulticastPMBuffering; 1062 } __attribute__((packed)) hfa384x_cnfMulticastPMBuffering_t; 1063 1064 /*-------------------------------------------------------------------- 1065 Configuration Record Structures: 1066 Network Parameters, Dynamic Configuration Entities 1067 --------------------------------------------------------------------*/ 1068 1069 /*-- Configuration Record: GroupAddresses --*/ 1070 typedef struct hfa384x_GroupAddresses 1071 { 1072 u8 MACAddress[16][6]; 1073 } __attribute__((packed)) hfa384x_GroupAddresses_t; 1074 1075 /*-- Configuration Record: CreateIBSS --*/ 1076 typedef struct hfa384x_CreateIBSS 1077 { 1078 u16 CreateIBSS; 1079 } __attribute__((packed)) hfa384x_CreateIBSS_t; 1080 1081 #define HFA384x_CREATEIBSS_JOINCREATEIBSS 0 1082 #define HFA384x_CREATEIBSS_JOINESS_JOINCREATEIBSS 1 1083 #define HFA384x_CREATEIBSS_JOINIBSS 2 1084 #define HFA384x_CREATEIBSS_JOINESS_JOINIBSS 3 1085 1086 /*-- Configuration Record: FragmentationThreshold --*/ 1087 typedef struct hfa384x_FragmentationThreshold 1088 { 1089 u16 FragmentationThreshold; 1090 } __attribute__((packed)) hfa384x_FragmentationThreshold_t; 1091 1092 /*-- Configuration Record: RTSThreshold --*/ 1093 typedef struct hfa384x_RTSThreshold 1094 { 1095 u16 RTSThreshold; 1096 } __attribute__((packed)) hfa384x_RTSThreshold_t; 1097 1098 /*-- Configuration Record: TxRateControl --*/ 1099 typedef struct hfa384x_TxRateControl 1100 { 1101 u16 TxRateControl; 1102 } __attribute__((packed)) hfa384x_TxRateControl_t; 1103 1104 /*-- Configuration Record: PromiscuousMode --*/ 1105 typedef struct hfa384x_PromiscuousMode 1106 { 1107 u16 PromiscuousMode; 1108 } __attribute__((packed)) hfa384x_PromiscuousMode_t; 1109 1110 /*-- Configuration Record: ScanRequest (data portion only) --*/ 1111 typedef struct hfa384x_ScanRequest_data 1112 { 1113 u16 channelList; 1114 u16 txRate; 1115 } __attribute__((packed)) hfa384x_ScanRequest_data_t; 1116 1117 /*-- Configuration Record: HostScanRequest (data portion only) --*/ 1118 typedef struct hfa384x_HostScanRequest_data 1119 { 1120 u16 channelList; 1121 u16 txRate; 1122 hfa384x_bytestr32_t ssid; 1123 } __attribute__((packed)) hfa384x_HostScanRequest_data_t; 1124 1125 /*-- Configuration Record: JoinRequest (data portion only) --*/ 1126 typedef struct hfa384x_JoinRequest_data 1127 { 1128 u8 bssid[WLAN_BSSID_LEN]; 1129 u16 channel; 1130 } __attribute__((packed)) hfa384x_JoinRequest_data_t; 1131 1132 /*-- Configuration Record: authenticateStation (data portion only) --*/ 1133 typedef struct hfa384x_authenticateStation_data 1134 { 1135 u8 address[ETH_ALEN]; 1136 u16 status; 1137 u16 algorithm; 1138 } __attribute__((packed)) hfa384x_authenticateStation_data_t; 1139 1140 /*-- Configuration Record: associateStation (data portion only) --*/ 1141 typedef struct hfa384x_associateStation_data 1142 { 1143 u8 address[ETH_ALEN]; 1144 u16 status; 1145 u16 type; 1146 } __attribute__((packed)) hfa384x_associateStation_data_t; 1147 1148 /*-- Configuration Record: ChannelInfoRequest (data portion only) --*/ 1149 typedef struct hfa384x_ChannelInfoRequest_data 1150 { 1151 u16 channelList; 1152 u16 channelDwellTime; 1153 } __attribute__((packed)) hfa384x_ChannelInfoRequest_data_t; 1154 1155 /*-- Configuration Record: WEPKeyMapping (data portion only) --*/ 1156 typedef struct hfa384x_WEPKeyMapping 1157 { 1158 u8 address[ETH_ALEN]; 1159 u16 key_index; 1160 u8 key[16]; 1161 u8 mic_transmit_key[4]; 1162 u8 mic_receive_key[4]; 1163 } __attribute__((packed)) hfa384x_WEPKeyMapping_t; 1164 1165 /*-- Configuration Record: WPAData (data portion only) --*/ 1166 typedef struct hfa384x_WPAData 1167 { 1168 u16 datalen; 1169 u8 data[0]; // max 80 1170 } __attribute__((packed)) hfa384x_WPAData_t; 1171 1172 /*-------------------------------------------------------------------- 1173 Configuration Record Structures: Behavior Parameters 1174 --------------------------------------------------------------------*/ 1175 1176 /*-- Configuration Record: TickTime --*/ 1177 typedef struct hfa384x_TickTime 1178 { 1179 u16 TickTime; 1180 } __attribute__((packed)) hfa384x_TickTime_t; 1181 1182 /*-------------------------------------------------------------------- 1183 Information Record Structures: NIC Information 1184 --------------------------------------------------------------------*/ 1185 1186 /*-- Information Record: MaxLoadTime --*/ 1187 typedef struct hfa384x_MaxLoadTime 1188 { 1189 u16 MaxLoadTime; 1190 } __attribute__((packed)) hfa384x_MaxLoadTime_t; 1191 1192 /*-- Information Record: DownLoadBuffer --*/ 1193 /* NOTE: The page and offset are in AUX format */ 1194 typedef struct hfa384x_downloadbuffer 1195 { 1196 u16 page; 1197 u16 offset; 1198 u16 len; 1199 } __attribute__((packed)) hfa384x_downloadbuffer_t; 1200 1201 /*-- Information Record: PRIIdentity --*/ 1202 typedef struct hfa384x_PRIIdentity 1203 { 1204 u16 PRICompID; 1205 u16 PRIVariant; 1206 u16 PRIMajorVersion; 1207 u16 PRIMinorVersion; 1208 } __attribute__((packed)) hfa384x_PRIIdentity_t; 1209 1210 /*-- Information Record: PRISupRange --*/ 1211 typedef struct hfa384x_PRISupRange 1212 { 1213 u16 PRIRole; 1214 u16 PRIID; 1215 u16 PRIVariant; 1216 u16 PRIBottom; 1217 u16 PRITop; 1218 } __attribute__((packed)) hfa384x_PRISupRange_t; 1219 1220 /*-- Information Record: CFIActRanges --*/ 1221 typedef struct hfa384x_CFIActRanges 1222 { 1223 u16 CFIRole; 1224 u16 CFIID; 1225 u16 CFIVariant; 1226 u16 CFIBottom; 1227 u16 CFITop; 1228 } __attribute__((packed)) hfa384x_CFIActRanges_t; 1229 1230 /*-- Information Record: NICSerialNumber --*/ 1231 typedef struct hfa384x_NICSerialNumber 1232 { 1233 u8 NICSerialNumber[12]; 1234 } __attribute__((packed)) hfa384x_NICSerialNumber_t; 1235 1236 /*-- Information Record: NICIdentity --*/ 1237 typedef struct hfa384x_NICIdentity 1238 { 1239 u16 NICCompID; 1240 u16 NICVariant; 1241 u16 NICMajorVersion; 1242 u16 NICMinorVersion; 1243 } __attribute__((packed)) hfa384x_NICIdentity_t; 1244 1245 /*-- Information Record: MFISupRange --*/ 1246 typedef struct hfa384x_MFISupRange 1247 { 1248 u16 MFIRole; 1249 u16 MFIID; 1250 u16 MFIVariant; 1251 u16 MFIBottom; 1252 u16 MFITop; 1253 } __attribute__((packed)) hfa384x_MFISupRange_t; 1254 1255 /*-- Information Record: CFISupRange --*/ 1256 typedef struct hfa384x_CFISupRange 1257 { 1258 u16 CFIRole; 1259 u16 CFIID; 1260 u16 CFIVariant; 1261 u16 CFIBottom; 1262 u16 CFITop; 1263 } __attribute__((packed)) hfa384x_CFISupRange_t; 1264 1265 /*-- Information Record: BUILDSEQ:BuildSeq --*/ 1266 typedef struct hfa384x_BuildSeq { 1267 u16 primary; 1268 u16 secondary; 1269 } __attribute__((packed)) hfa384x_BuildSeq_t; 1270 1271 /*-- Information Record: FWID --*/ 1272 #define HFA384x_FWID_LEN 14 1273 typedef struct hfa384x_FWID { 1274 u8 primary[HFA384x_FWID_LEN]; 1275 u8 secondary[HFA384x_FWID_LEN]; 1276 } __attribute__((packed)) hfa384x_FWID_t; 1277 1278 /*-- Information Record: ChannelList --*/ 1279 typedef struct hfa384x_ChannelList 1280 { 1281 u16 ChannelList; 1282 } __attribute__((packed)) hfa384x_ChannelList_t; 1283 1284 /*-- Information Record: RegulatoryDomains --*/ 1285 typedef struct hfa384x_RegulatoryDomains 1286 { 1287 u8 RegulatoryDomains[12]; 1288 } __attribute__((packed)) hfa384x_RegulatoryDomains_t; 1289 1290 /*-- Information Record: TempType --*/ 1291 typedef struct hfa384x_TempType 1292 { 1293 u16 TempType; 1294 } __attribute__((packed)) hfa384x_TempType_t; 1295 1296 /*-- Information Record: CIS --*/ 1297 typedef struct hfa384x_CIS 1298 { 1299 u8 CIS[480]; 1300 } __attribute__((packed)) hfa384x_CIS_t; 1301 1302 /*-- Information Record: STAIdentity --*/ 1303 typedef struct hfa384x_STAIdentity 1304 { 1305 u16 STACompID; 1306 u16 STAVariant; 1307 u16 STAMajorVersion; 1308 u16 STAMinorVersion; 1309 } __attribute__((packed)) hfa384x_STAIdentity_t; 1310 1311 /*-- Information Record: STASupRange --*/ 1312 typedef struct hfa384x_STASupRange 1313 { 1314 u16 STARole; 1315 u16 STAID; 1316 u16 STAVariant; 1317 u16 STABottom; 1318 u16 STATop; 1319 } __attribute__((packed)) hfa384x_STASupRange_t; 1320 1321 /*-- Information Record: MFIActRanges --*/ 1322 typedef struct hfa384x_MFIActRanges 1323 { 1324 u16 MFIRole; 1325 u16 MFIID; 1326 u16 MFIVariant; 1327 u16 MFIBottom; 1328 u16 MFITop; 1329 } __attribute__((packed)) hfa384x_MFIActRanges_t; 1330 1331 /*-------------------------------------------------------------------- 1332 Information Record Structures: NIC Information 1333 --------------------------------------------------------------------*/ 1334 1335 /*-- Information Record: PortStatus --*/ 1336 typedef struct hfa384x_PortStatus 1337 { 1338 u16 PortStatus; 1339 } __attribute__((packed)) hfa384x_PortStatus_t; 1340 1341 #define HFA384x_PSTATUS_DISABLED ((u16)1) 1342 #define HFA384x_PSTATUS_SEARCHING ((u16)2) 1343 #define HFA384x_PSTATUS_CONN_IBSS ((u16)3) 1344 #define HFA384x_PSTATUS_CONN_ESS ((u16)4) 1345 #define HFA384x_PSTATUS_OUTOFRANGE ((u16)5) 1346 #define HFA384x_PSTATUS_CONN_WDS ((u16)6) 1347 1348 /*-- Information Record: CurrentSSID --*/ 1349 typedef struct hfa384x_CurrentSSID 1350 { 1351 u8 CurrentSSID[34]; 1352 } __attribute__((packed)) hfa384x_CurrentSSID_t; 1353 1354 /*-- Information Record: CurrentBSSID --*/ 1355 typedef struct hfa384x_CurrentBSSID 1356 { 1357 u8 CurrentBSSID[6]; 1358 } __attribute__((packed)) hfa384x_CurrentBSSID_t; 1359 1360 /*-- Information Record: commsquality --*/ 1361 typedef struct hfa384x_commsquality 1362 { 1363 u16 CQ_currBSS; 1364 u16 ASL_currBSS; 1365 u16 ANL_currFC; 1366 } __attribute__((packed)) hfa384x_commsquality_t; 1367 1368 /*-- Information Record: dmbcommsquality --*/ 1369 typedef struct hfa384x_dbmcommsquality 1370 { 1371 u16 CQdbm_currBSS; 1372 u16 ASLdbm_currBSS; 1373 u16 ANLdbm_currFC; 1374 } __attribute__((packed)) hfa384x_dbmcommsquality_t; 1375 1376 /*-- Information Record: CurrentTxRate --*/ 1377 typedef struct hfa384x_CurrentTxRate 1378 { 1379 u16 CurrentTxRate; 1380 } __attribute__((packed)) hfa384x_CurrentTxRate_t; 1381 1382 /*-- Information Record: CurrentBeaconInterval --*/ 1383 typedef struct hfa384x_CurrentBeaconInterval 1384 { 1385 u16 CurrentBeaconInterval; 1386 } __attribute__((packed)) hfa384x_CurrentBeaconInterval_t; 1387 1388 /*-- Information Record: CurrentScaleThresholds --*/ 1389 typedef struct hfa384x_CurrentScaleThresholds 1390 { 1391 u16 EnergyDetectThreshold; 1392 u16 CarrierDetectThreshold; 1393 u16 DeferDetectThreshold; 1394 u16 CellSearchThreshold; /* Stations only */ 1395 u16 DeadSpotThreshold; /* Stations only */ 1396 } __attribute__((packed)) hfa384x_CurrentScaleThresholds_t; 1397 1398 /*-- Information Record: ProtocolRspTime --*/ 1399 typedef struct hfa384x_ProtocolRspTime 1400 { 1401 u16 ProtocolRspTime; 1402 } __attribute__((packed)) hfa384x_ProtocolRspTime_t; 1403 1404 /*-- Information Record: ShortRetryLimit --*/ 1405 typedef struct hfa384x_ShortRetryLimit 1406 { 1407 u16 ShortRetryLimit; 1408 } __attribute__((packed)) hfa384x_ShortRetryLimit_t; 1409 1410 /*-- Information Record: LongRetryLimit --*/ 1411 typedef struct hfa384x_LongRetryLimit 1412 { 1413 u16 LongRetryLimit; 1414 } __attribute__((packed)) hfa384x_LongRetryLimit_t; 1415 1416 /*-- Information Record: MaxTransmitLifetime --*/ 1417 typedef struct hfa384x_MaxTransmitLifetime 1418 { 1419 u16 MaxTransmitLifetime; 1420 } __attribute__((packed)) hfa384x_MaxTransmitLifetime_t; 1421 1422 /*-- Information Record: MaxReceiveLifetime --*/ 1423 typedef struct hfa384x_MaxReceiveLifetime 1424 { 1425 u16 MaxReceiveLifetime; 1426 } __attribute__((packed)) hfa384x_MaxReceiveLifetime_t; 1427 1428 /*-- Information Record: CFPollable --*/ 1429 typedef struct hfa384x_CFPollable 1430 { 1431 u16 CFPollable; 1432 } __attribute__((packed)) hfa384x_CFPollable_t; 1433 1434 /*-- Information Record: AuthenticationAlgorithms --*/ 1435 typedef struct hfa384x_AuthenticationAlgorithms 1436 { 1437 u16 AuthenticationType; 1438 u16 TypeEnabled; 1439 } __attribute__((packed)) hfa384x_AuthenticationAlgorithms_t; 1440 1441 /*-- Information Record: AuthenticationAlgorithms 1442 (data only --*/ 1443 typedef struct hfa384x_AuthenticationAlgorithms_data 1444 { 1445 u16 AuthenticationType; 1446 u16 TypeEnabled; 1447 } __attribute__((packed)) hfa384x_AuthenticationAlgorithms_data_t; 1448 1449 /*-- Information Record: PrivacyOptionImplemented --*/ 1450 typedef struct hfa384x_PrivacyOptionImplemented 1451 { 1452 u16 PrivacyOptionImplemented; 1453 } __attribute__((packed)) hfa384x_PrivacyOptionImplemented_t; 1454 1455 /*-- Information Record: OwnMACAddress --*/ 1456 typedef struct hfa384x_OwnMACAddress 1457 { 1458 u8 OwnMACAddress[6]; 1459 } __attribute__((packed)) hfa384x_OwnMACAddress_t; 1460 1461 /*-- Information Record: PCFInfo --*/ 1462 typedef struct hfa384x_PCFInfo 1463 { 1464 u16 MediumOccupancyLimit; 1465 u16 CFPPeriod; 1466 u16 CFPMaxDuration; 1467 u16 CFPFlags; 1468 } __attribute__((packed)) hfa384x_PCFInfo_t; 1469 1470 /*-- Information Record: PCFInfo (data portion only) --*/ 1471 typedef struct hfa384x_PCFInfo_data 1472 { 1473 u16 MediumOccupancyLimit; 1474 u16 CFPPeriod; 1475 u16 CFPMaxDuration; 1476 u16 CFPFlags; 1477 } __attribute__((packed)) hfa384x_PCFInfo_data_t; 1478 1479 /*-------------------------------------------------------------------- 1480 Information Record Structures: Modem Information Records 1481 --------------------------------------------------------------------*/ 1482 1483 /*-- Information Record: PHYType --*/ 1484 typedef struct hfa384x_PHYType 1485 { 1486 u16 PHYType; 1487 } __attribute__((packed)) hfa384x_PHYType_t; 1488 1489 /*-- Information Record: CurrentChannel --*/ 1490 typedef struct hfa384x_CurrentChannel 1491 { 1492 u16 CurrentChannel; 1493 } __attribute__((packed)) hfa384x_CurrentChannel_t; 1494 1495 /*-- Information Record: CurrentPowerState --*/ 1496 typedef struct hfa384x_CurrentPowerState 1497 { 1498 u16 CurrentPowerState; 1499 } __attribute__((packed)) hfa384x_CurrentPowerState_t; 1500 1501 /*-- Information Record: CCAMode --*/ 1502 typedef struct hfa384x_CCAMode 1503 { 1504 u16 CCAMode; 1505 } __attribute__((packed)) hfa384x_CCAMode_t; 1506 1507 /*-- Information Record: SupportedDataRates --*/ 1508 typedef struct hfa384x_SupportedDataRates 1509 { 1510 u8 SupportedDataRates[10]; 1511 } __attribute__((packed)) hfa384x_SupportedDataRates_t; 1512 1513 /*-- Information Record: LFOStatus --*/ 1514 typedef struct hfa384x_LFOStatus 1515 { 1516 u16 TestResults; 1517 u16 LFOResult; 1518 u16 VRHFOResult; 1519 } __attribute__((packed)) hfa384x_LFOStatus_t; 1520 1521 #define HFA384x_TESTRESULT_ALLPASSED BIT(0) 1522 #define HFA384x_TESTRESULT_LFO_FAIL BIT(1) 1523 #define HFA384x_TESTRESULT_VR_HF0_FAIL BIT(2) 1524 #define HFA384x_HOST_FIRM_COORDINATE BIT(7) 1525 #define HFA384x_TESTRESULT_COORDINATE BIT(15) 1526 1527 /*-- Information Record: LEDControl --*/ 1528 typedef struct hfa384x_LEDControl 1529 { 1530 u16 searching_on; 1531 u16 searching_off; 1532 u16 assoc_on; 1533 u16 assoc_off; 1534 u16 activity; 1535 } __attribute__((packed)) hfa384x_LEDControl_t; 1536 1537 /*-------------------------------------------------------------------- 1538 FRAME DESCRIPTORS AND FRAME STRUCTURES 1539 1540 FRAME DESCRIPTORS: Offsets 1541 1542 ---------------------------------------------------------------------- 1543 Control Info (offset 44-51) 1544 --------------------------------------------------------------------*/ 1545 #define HFA384x_FD_STATUS_OFF ((u16)0x44) 1546 #define HFA384x_FD_TIME_OFF ((u16)0x46) 1547 #define HFA384x_FD_SWSUPPORT_OFF ((u16)0x4A) 1548 #define HFA384x_FD_SILENCE_OFF ((u16)0x4A) 1549 #define HFA384x_FD_SIGNAL_OFF ((u16)0x4B) 1550 #define HFA384x_FD_RATE_OFF ((u16)0x4C) 1551 #define HFA384x_FD_RXFLOW_OFF ((u16)0x4D) 1552 #define HFA384x_FD_RESERVED_OFF ((u16)0x4E) 1553 #define HFA384x_FD_TXCONTROL_OFF ((u16)0x50) 1554 /*-------------------------------------------------------------------- 1555 802.11 Header (offset 52-6B) 1556 --------------------------------------------------------------------*/ 1557 #define HFA384x_FD_FRAMECONTROL_OFF ((u16)0x52) 1558 #define HFA384x_FD_DURATIONID_OFF ((u16)0x54) 1559 #define HFA384x_FD_ADDRESS1_OFF ((u16)0x56) 1560 #define HFA384x_FD_ADDRESS2_OFF ((u16)0x5C) 1561 #define HFA384x_FD_ADDRESS3_OFF ((u16)0x62) 1562 #define HFA384x_FD_SEQCONTROL_OFF ((u16)0x68) 1563 #define HFA384x_FD_ADDRESS4_OFF ((u16)0x6A) 1564 #define HFA384x_FD_DATALEN_OFF ((u16)0x70) 1565 /*-------------------------------------------------------------------- 1566 802.3 Header (offset 72-7F) 1567 --------------------------------------------------------------------*/ 1568 #define HFA384x_FD_DESTADDRESS_OFF ((u16)0x72) 1569 #define HFA384x_FD_SRCADDRESS_OFF ((u16)0x78) 1570 #define HFA384x_FD_DATALENGTH_OFF ((u16)0x7E) 1571 1572 /*-------------------------------------------------------------------- 1573 FRAME STRUCTURES: Communication Frames 1574 ---------------------------------------------------------------------- 1575 Communication Frames: Transmit Frames 1576 --------------------------------------------------------------------*/ 1577 /*-- Communication Frame: Transmit Frame Structure --*/ 1578 typedef struct hfa384x_tx_frame 1579 { 1580 u16 status; 1581 u16 reserved1; 1582 u16 reserved2; 1583 u32 sw_support; 1584 u8 tx_retrycount; 1585 u8 tx_rate; 1586 u16 tx_control; 1587 1588 /*-- 802.11 Header Information --*/ 1589 1590 u16 frame_control; 1591 u16 duration_id; 1592 u8 address1[6]; 1593 u8 address2[6]; 1594 u8 address3[6]; 1595 u16 sequence_control; 1596 u8 address4[6]; 1597 u16 data_len; /* little endian format */ 1598 1599 /*-- 802.3 Header Information --*/ 1600 1601 u8 dest_addr[6]; 1602 u8 src_addr[6]; 1603 u16 data_length; /* big endian format */ 1604 } __attribute__((packed)) hfa384x_tx_frame_t; 1605 /*-------------------------------------------------------------------- 1606 Communication Frames: Field Masks for Transmit Frames 1607 --------------------------------------------------------------------*/ 1608 /*-- Status Field --*/ 1609 #define HFA384x_TXSTATUS_ACKERR ((u16)BIT(5)) 1610 #define HFA384x_TXSTATUS_FORMERR ((u16)BIT(3)) 1611 #define HFA384x_TXSTATUS_DISCON ((u16)BIT(2)) 1612 #define HFA384x_TXSTATUS_AGEDERR ((u16)BIT(1)) 1613 #define HFA384x_TXSTATUS_RETRYERR ((u16)BIT(0)) 1614 /*-- Transmit Control Field --*/ 1615 #define HFA384x_TX_CFPOLL ((u16)BIT(12)) 1616 #define HFA384x_TX_PRST ((u16)BIT(11)) 1617 #define HFA384x_TX_MACPORT ((u16)(BIT(10) | BIT(9) | BIT(8))) 1618 #define HFA384x_TX_NOENCRYPT ((u16)BIT(7)) 1619 #define HFA384x_TX_RETRYSTRAT ((u16)(BIT(6) | BIT(5))) 1620 #define HFA384x_TX_STRUCTYPE ((u16)(BIT(4) | BIT(3))) 1621 #define HFA384x_TX_TXEX ((u16)BIT(2)) 1622 #define HFA384x_TX_TXOK ((u16)BIT(1)) 1623 /*-------------------------------------------------------------------- 1624 Communication Frames: Test/Get/Set Field Values for Transmit Frames 1625 --------------------------------------------------------------------*/ 1626 /*-- Status Field --*/ 1627 #define HFA384x_TXSTATUS_ISERROR(v) \ 1628 (((u16)(v))&\ 1629 (HFA384x_TXSTATUS_ACKERR|HFA384x_TXSTATUS_FORMERR|\ 1630 HFA384x_TXSTATUS_DISCON|HFA384x_TXSTATUS_AGEDERR|\ 1631 HFA384x_TXSTATUS_RETRYERR)) 1632 1633 #define HFA384x_TXSTATUS_ISACKERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_ACKERR)) 1634 #define HFA384x_TXSTATUS_ISFORMERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_FORMERR)) 1635 #define HFA384x_TXSTATUS_ISDISCON(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_DISCON)) 1636 #define HFA384x_TXSTATUS_ISAGEDERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_AGEDERR)) 1637 #define HFA384x_TXSTATUS_ISRETRYERR(v) ((u16)(((u16)(v)) & HFA384x_TXSTATUS_RETRYERR)) 1638 1639 #define HFA384x_TX_GET(v,m,s) ((((u16)(v))&((u16)(m)))>>((u16)(s))) 1640 #define HFA384x_TX_SET(v,m,s) ((((u16)(v))<<((u16)(s)))&((u16)(m))) 1641 1642 #define HFA384x_TX_CFPOLL_GET(v) HFA384x_TX_GET(v, HFA384x_TX_CFPOLL,12) 1643 #define HFA384x_TX_CFPOLL_SET(v) HFA384x_TX_SET(v, HFA384x_TX_CFPOLL,12) 1644 #define HFA384x_TX_PRST_GET(v) HFA384x_TX_GET(v, HFA384x_TX_PRST,11) 1645 #define HFA384x_TX_PRST_SET(v) HFA384x_TX_SET(v, HFA384x_TX_PRST,11) 1646 #define HFA384x_TX_MACPORT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_MACPORT, 8) 1647 #define HFA384x_TX_MACPORT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_MACPORT, 8) 1648 #define HFA384x_TX_NOENCRYPT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_NOENCRYPT, 7) 1649 #define HFA384x_TX_NOENCRYPT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_NOENCRYPT, 7) 1650 #define HFA384x_TX_RETRYSTRAT_GET(v) HFA384x_TX_GET(v, HFA384x_TX_RETRYSTRAT, 5) 1651 #define HFA384x_TX_RETRYSTRAT_SET(v) HFA384x_TX_SET(v, HFA384x_TX_RETRYSTRAT, 5) 1652 #define HFA384x_TX_STRUCTYPE_GET(v) HFA384x_TX_GET(v, HFA384x_TX_STRUCTYPE, 3) 1653 #define HFA384x_TX_STRUCTYPE_SET(v) HFA384x_TX_SET(v, HFA384x_TX_STRUCTYPE, 3) 1654 #define HFA384x_TX_TXEX_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXEX, 2) 1655 #define HFA384x_TX_TXEX_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXEX, 2) 1656 #define HFA384x_TX_TXOK_GET(v) HFA384x_TX_GET(v, HFA384x_TX_TXOK, 1) 1657 #define HFA384x_TX_TXOK_SET(v) HFA384x_TX_SET(v, HFA384x_TX_TXOK, 1) 1658 /*-------------------------------------------------------------------- 1659 Communication Frames: Receive Frames 1660 --------------------------------------------------------------------*/ 1661 /*-- Communication Frame: Receive Frame Structure --*/ 1662 typedef struct hfa384x_rx_frame 1663 { 1664 /*-- MAC rx descriptor (hfa384x byte order) --*/ 1665 u16 status; 1666 u32 time; 1667 u8 silence; 1668 u8 signal; 1669 u8 rate; 1670 u8 rx_flow; 1671 u16 reserved1; 1672 u16 reserved2; 1673 1674 /*-- 802.11 Header Information (802.11 byte order) --*/ 1675 u16 frame_control; 1676 u16 duration_id; 1677 u8 address1[6]; 1678 u8 address2[6]; 1679 u8 address3[6]; 1680 u16 sequence_control; 1681 u8 address4[6]; 1682 u16 data_len; /* hfa384x (little endian) format */ 1683 1684 /*-- 802.3 Header Information --*/ 1685 u8 dest_addr[6]; 1686 u8 src_addr[6]; 1687 u16 data_length; /* IEEE? (big endian) format */ 1688 } __attribute__((packed)) hfa384x_rx_frame_t; 1689 /*-------------------------------------------------------------------- 1690 Communication Frames: Field Masks for Receive Frames 1691 --------------------------------------------------------------------*/ 1692 /*-- Offsets --------*/ 1693 #define HFA384x_RX_DATA_LEN_OFF ((u16)44) 1694 #define HFA384x_RX_80211HDR_OFF ((u16)14) 1695 #define HFA384x_RX_DATA_OFF ((u16)60) 1696 1697 /*-- Status Fields --*/ 1698 #define HFA384x_RXSTATUS_MSGTYPE ((u16)(BIT(15) | BIT(14) | BIT(13))) 1699 #define HFA384x_RXSTATUS_MACPORT ((u16)(BIT(10) | BIT(9) | BIT(8))) 1700 #define HFA384x_RXSTATUS_UNDECR ((u16)BIT(1)) 1701 #define HFA384x_RXSTATUS_FCSERR ((u16)BIT(0)) 1702 /*-------------------------------------------------------------------- 1703 Communication Frames: Test/Get/Set Field Values for Receive Frames 1704 --------------------------------------------------------------------*/ 1705 #define HFA384x_RXSTATUS_MSGTYPE_GET(value) ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MSGTYPE) >> 13)) 1706 #define HFA384x_RXSTATUS_MSGTYPE_SET(value) ((u16)(((u16)(value)) << 13)) 1707 #define HFA384x_RXSTATUS_MACPORT_GET(value) ((u16)((((u16)(value)) & HFA384x_RXSTATUS_MACPORT) >> 8)) 1708 #define HFA384x_RXSTATUS_MACPORT_SET(value) ((u16)(((u16)(value)) << 8)) 1709 #define HFA384x_RXSTATUS_ISUNDECR(value) ((u16)(((u16)(value)) & HFA384x_RXSTATUS_UNDECR)) 1710 #define HFA384x_RXSTATUS_ISFCSERR(value) ((u16)(((u16)(value)) & HFA384x_RXSTATUS_FCSERR)) 1711 /*-------------------------------------------------------------------- 1712 FRAME STRUCTURES: Information Types and Information Frame Structures 1713 ---------------------------------------------------------------------- 1714 Information Types 1715 --------------------------------------------------------------------*/ 1716 #define HFA384x_IT_HANDOVERADDR ((u16)0xF000UL) 1717 #define HFA384x_IT_HANDOVERDEAUTHADDRESS ((u16)0xF001UL)//AP 1.3.7 1718 #define HFA384x_IT_COMMTALLIES ((u16)0xF100UL) 1719 #define HFA384x_IT_SCANRESULTS ((u16)0xF101UL) 1720 #define HFA384x_IT_CHINFORESULTS ((u16)0xF102UL) 1721 #define HFA384x_IT_HOSTSCANRESULTS ((u16)0xF103UL) 1722 #define HFA384x_IT_LINKSTATUS ((u16)0xF200UL) 1723 #define HFA384x_IT_ASSOCSTATUS ((u16)0xF201UL) 1724 #define HFA384x_IT_AUTHREQ ((u16)0xF202UL) 1725 #define HFA384x_IT_PSUSERCNT ((u16)0xF203UL) 1726 #define HFA384x_IT_KEYIDCHANGED ((u16)0xF204UL) 1727 #define HFA384x_IT_ASSOCREQ ((u16)0xF205UL) 1728 #define HFA384x_IT_MICFAILURE ((u16)0xF206UL) 1729 1730 /*-------------------------------------------------------------------- 1731 Information Frames Structures 1732 ---------------------------------------------------------------------- 1733 Information Frames: Notification Frame Structures 1734 --------------------------------------------------------------------*/ 1735 /*-- Notification Frame,MAC Mgmt: Handover Address --*/ 1736 typedef struct hfa384x_HandoverAddr 1737 { 1738 u16 framelen; 1739 u16 infotype; 1740 u8 handover_addr[WLAN_BSSID_LEN]; 1741 } __attribute__((packed)) hfa384x_HandoverAddr_t; 1742 1743 /*-- Inquiry Frame, Diagnose: Communication Tallies --*/ 1744 typedef struct hfa384x_CommTallies16 1745 { 1746 u16 txunicastframes; 1747 u16 txmulticastframes; 1748 u16 txfragments; 1749 u16 txunicastoctets; 1750 u16 txmulticastoctets; 1751 u16 txdeferredtrans; 1752 u16 txsingleretryframes; 1753 u16 txmultipleretryframes; 1754 u16 txretrylimitexceeded; 1755 u16 txdiscards; 1756 u16 rxunicastframes; 1757 u16 rxmulticastframes; 1758 u16 rxfragments; 1759 u16 rxunicastoctets; 1760 u16 rxmulticastoctets; 1761 u16 rxfcserrors; 1762 u16 rxdiscardsnobuffer; 1763 u16 txdiscardswrongsa; 1764 u16 rxdiscardswepundecr; 1765 u16 rxmsginmsgfrag; 1766 u16 rxmsginbadmsgfrag; 1767 } __attribute__((packed)) hfa384x_CommTallies16_t; 1768 1769 typedef struct hfa384x_CommTallies32 1770 { 1771 u32 txunicastframes; 1772 u32 txmulticastframes; 1773 u32 txfragments; 1774 u32 txunicastoctets; 1775 u32 txmulticastoctets; 1776 u32 txdeferredtrans; 1777 u32 txsingleretryframes; 1778 u32 txmultipleretryframes; 1779 u32 txretrylimitexceeded; 1780 u32 txdiscards; 1781 u32 rxunicastframes; 1782 u32 rxmulticastframes; 1783 u32 rxfragments; 1784 u32 rxunicastoctets; 1785 u32 rxmulticastoctets; 1786 u32 rxfcserrors; 1787 u32 rxdiscardsnobuffer; 1788 u32 txdiscardswrongsa; 1789 u32 rxdiscardswepundecr; 1790 u32 rxmsginmsgfrag; 1791 u32 rxmsginbadmsgfrag; 1792 } __attribute__((packed)) hfa384x_CommTallies32_t; 1793 1794 /*-- Inquiry Frame, Diagnose: Scan Results & Subfields--*/ 1795 typedef struct hfa384x_ScanResultSub 1796 { 1797 u16 chid; 1798 u16 anl; 1799 u16 sl; 1800 u8 bssid[WLAN_BSSID_LEN]; 1801 u16 bcnint; 1802 u16 capinfo; 1803 hfa384x_bytestr32_t ssid; 1804 u8 supprates[10]; /* 802.11 info element */ 1805 u16 proberesp_rate; 1806 } __attribute__((packed)) hfa384x_ScanResultSub_t; 1807 1808 typedef struct hfa384x_ScanResult 1809 { 1810 u16 rsvd; 1811 u16 scanreason; 1812 hfa384x_ScanResultSub_t 1813 result[HFA384x_SCANRESULT_MAX]; 1814 } __attribute__((packed)) hfa384x_ScanResult_t; 1815 1816 /*-- Inquiry Frame, Diagnose: ChInfo Results & Subfields--*/ 1817 typedef struct hfa384x_ChInfoResultSub 1818 { 1819 u16 chid; 1820 u16 anl; 1821 u16 pnl; 1822 u16 active; 1823 } __attribute__((packed)) hfa384x_ChInfoResultSub_t; 1824 1825 #define HFA384x_CHINFORESULT_BSSACTIVE BIT(0) 1826 #define HFA384x_CHINFORESULT_PCFACTIVE BIT(1) 1827 1828 typedef struct hfa384x_ChInfoResult 1829 { 1830 u16 scanchannels; 1831 hfa384x_ChInfoResultSub_t 1832 result[HFA384x_CHINFORESULT_MAX]; 1833 } __attribute__((packed)) hfa384x_ChInfoResult_t; 1834 1835 /*-- Inquiry Frame, Diagnose: Host Scan Results & Subfields--*/ 1836 typedef struct hfa384x_HScanResultSub 1837 { 1838 u16 chid; 1839 u16 anl; 1840 u16 sl; 1841 u8 bssid[WLAN_BSSID_LEN]; 1842 u16 bcnint; 1843 u16 capinfo; 1844 hfa384x_bytestr32_t ssid; 1845 u8 supprates[10]; /* 802.11 info element */ 1846 u16 proberesp_rate; 1847 u16 atim; 1848 } __attribute__((packed)) hfa384x_HScanResultSub_t; 1849 1850 typedef struct hfa384x_HScanResult 1851 { 1852 u16 nresult; 1853 u16 rsvd; 1854 hfa384x_HScanResultSub_t 1855 result[HFA384x_HSCANRESULT_MAX]; 1856 } __attribute__((packed)) hfa384x_HScanResult_t; 1857 1858 /*-- Unsolicited Frame, MAC Mgmt: LinkStatus --*/ 1859 1860 #define HFA384x_LINK_NOTCONNECTED ((u16)0) 1861 #define HFA384x_LINK_CONNECTED ((u16)1) 1862 #define HFA384x_LINK_DISCONNECTED ((u16)2) 1863 #define HFA384x_LINK_AP_CHANGE ((u16)3) 1864 #define HFA384x_LINK_AP_OUTOFRANGE ((u16)4) 1865 #define HFA384x_LINK_AP_INRANGE ((u16)5) 1866 #define HFA384x_LINK_ASSOCFAIL ((u16)6) 1867 1868 typedef struct hfa384x_LinkStatus 1869 { 1870 u16 linkstatus; 1871 } __attribute__((packed)) hfa384x_LinkStatus_t; 1872 1873 1874 /*-- Unsolicited Frame, MAC Mgmt: AssociationStatus (--*/ 1875 1876 #define HFA384x_ASSOCSTATUS_STAASSOC ((u16)1) 1877 #define HFA384x_ASSOCSTATUS_REASSOC ((u16)2) 1878 #define HFA384x_ASSOCSTATUS_DISASSOC ((u16)3) 1879 #define HFA384x_ASSOCSTATUS_ASSOCFAIL ((u16)4) 1880 #define HFA384x_ASSOCSTATUS_AUTHFAIL ((u16)5) 1881 1882 typedef struct hfa384x_AssocStatus 1883 { 1884 u16 assocstatus; 1885 u8 sta_addr[ETH_ALEN]; 1886 /* old_ap_addr is only valid if assocstatus == 2 */ 1887 u8 old_ap_addr[ETH_ALEN]; 1888 u16 reason; 1889 u16 reserved; 1890 } __attribute__((packed)) hfa384x_AssocStatus_t; 1891 1892 /*-- Unsolicited Frame, MAC Mgmt: AuthRequest (AP Only) --*/ 1893 1894 typedef struct hfa384x_AuthRequest 1895 { 1896 u8 sta_addr[ETH_ALEN]; 1897 u16 algorithm; 1898 } __attribute__((packed)) hfa384x_AuthReq_t; 1899 1900 /*-- Unsolicited Frame, MAC Mgmt: AssocRequest (AP Only) --*/ 1901 1902 typedef struct hfa384x_AssocRequest 1903 { 1904 u8 sta_addr[ETH_ALEN]; 1905 u16 type; 1906 u8 wpa_data[80]; 1907 } __attribute__((packed)) hfa384x_AssocReq_t; 1908 1909 1910 #define HFA384x_ASSOCREQ_TYPE_ASSOC 0 1911 #define HFA384x_ASSOCREQ_TYPE_REASSOC 1 1912 1913 /*-- Unsolicited Frame, MAC Mgmt: MIC Failure (AP Only) --*/ 1914 1915 typedef struct hfa384x_MicFailure 1916 { 1917 u8 sender[ETH_ALEN]; 1918 u8 dest[ETH_ALEN]; 1919 } __attribute__((packed)) hfa384x_MicFailure_t; 1920 1921 /*-- Unsolicited Frame, MAC Mgmt: PSUserCount (AP Only) --*/ 1922 1923 typedef struct hfa384x_PSUserCount 1924 { 1925 u16 usercnt; 1926 } __attribute__((packed)) hfa384x_PSUserCount_t; 1927 1928 typedef struct hfa384x_KeyIDChanged 1929 { 1930 u8 sta_addr[ETH_ALEN]; 1931 u16 keyid; 1932 } __attribute__((packed)) hfa384x_KeyIDChanged_t; 1933 1934 /*-- Collection of all Inf frames ---------------*/ 1935 typedef union hfa384x_infodata { 1936 hfa384x_CommTallies16_t commtallies16; 1937 hfa384x_CommTallies32_t commtallies32; 1938 hfa384x_ScanResult_t scanresult; 1939 hfa384x_ChInfoResult_t chinforesult; 1940 hfa384x_HScanResult_t hscanresult; 1941 hfa384x_LinkStatus_t linkstatus; 1942 hfa384x_AssocStatus_t assocstatus; 1943 hfa384x_AuthReq_t authreq; 1944 hfa384x_PSUserCount_t psusercnt; 1945 hfa384x_KeyIDChanged_t keyidchanged; 1946 } __attribute__((packed)) hfa384x_infodata_t; 1947 1948 typedef struct hfa384x_InfFrame 1949 { 1950 u16 framelen; 1951 u16 infotype; 1952 hfa384x_infodata_t info; 1953 } __attribute__((packed)) hfa384x_InfFrame_t; 1954 1955 /*-------------------------------------------------------------------- 1956 USB Packet structures and constants. 1957 --------------------------------------------------------------------*/ 1958 1959 /* Should be sent to the ctrlout endpoint */ 1960 #define HFA384x_USB_ENBULKIN 6 1961 1962 /* Should be sent to the bulkout endpoint */ 1963 #define HFA384x_USB_TXFRM 0 1964 #define HFA384x_USB_CMDREQ 1 1965 #define HFA384x_USB_WRIDREQ 2 1966 #define HFA384x_USB_RRIDREQ 3 1967 #define HFA384x_USB_WMEMREQ 4 1968 #define HFA384x_USB_RMEMREQ 5 1969 1970 /* Received from the bulkin endpoint */ 1971 #define HFA384x_USB_ISFRM(a) (!((a) & 0x8000)) 1972 #define HFA384x_USB_ISTXFRM(a) (((a) & 0x9000) == 0x1000) 1973 #define HFA384x_USB_ISRXFRM(a) (!((a) & 0x9000)) 1974 #define HFA384x_USB_INFOFRM 0x8000 1975 #define HFA384x_USB_CMDRESP 0x8001 1976 #define HFA384x_USB_WRIDRESP 0x8002 1977 #define HFA384x_USB_RRIDRESP 0x8003 1978 #define HFA384x_USB_WMEMRESP 0x8004 1979 #define HFA384x_USB_RMEMRESP 0x8005 1980 #define HFA384x_USB_BUFAVAIL 0x8006 1981 #define HFA384x_USB_ERROR 0x8007 1982 1983 /*------------------------------------*/ 1984 /* Request (bulk OUT) packet contents */ 1985 1986 typedef struct hfa384x_usb_txfrm { 1987 hfa384x_tx_frame_t desc; 1988 u8 data[WLAN_DATA_MAXLEN]; 1989 } __attribute__((packed)) hfa384x_usb_txfrm_t; 1990 1991 typedef struct hfa384x_usb_cmdreq { 1992 u16 type; 1993 u16 cmd; 1994 u16 parm0; 1995 u16 parm1; 1996 u16 parm2; 1997 u8 pad[54]; 1998 } __attribute__((packed)) hfa384x_usb_cmdreq_t; 1999 2000 typedef struct hfa384x_usb_wridreq { 2001 u16 type; 2002 u16 frmlen; 2003 u16 rid; 2004 u8 data[HFA384x_RIDDATA_MAXLEN]; 2005 } __attribute__((packed)) hfa384x_usb_wridreq_t; 2006 2007 typedef struct hfa384x_usb_rridreq { 2008 u16 type; 2009 u16 frmlen; 2010 u16 rid; 2011 u8 pad[58]; 2012 } __attribute__((packed)) hfa384x_usb_rridreq_t; 2013 2014 typedef struct hfa384x_usb_wmemreq { 2015 u16 type; 2016 u16 frmlen; 2017 u16 offset; 2018 u16 page; 2019 u8 data[HFA384x_USB_RWMEM_MAXLEN]; 2020 } __attribute__((packed)) hfa384x_usb_wmemreq_t; 2021 2022 typedef struct hfa384x_usb_rmemreq { 2023 u16 type; 2024 u16 frmlen; 2025 u16 offset; 2026 u16 page; 2027 u8 pad[56]; 2028 } __attribute__((packed)) hfa384x_usb_rmemreq_t; 2029 2030 /*------------------------------------*/ 2031 /* Response (bulk IN) packet contents */ 2032 2033 typedef struct hfa384x_usb_rxfrm { 2034 hfa384x_rx_frame_t desc; 2035 u8 data[WLAN_DATA_MAXLEN]; 2036 } __attribute__((packed)) hfa384x_usb_rxfrm_t; 2037 2038 typedef struct hfa384x_usb_infofrm { 2039 u16 type; 2040 hfa384x_InfFrame_t info; 2041 } __attribute__((packed)) hfa384x_usb_infofrm_t; 2042 2043 typedef struct hfa384x_usb_statusresp { 2044 u16 type; 2045 u16 status; 2046 u16 resp0; 2047 u16 resp1; 2048 u16 resp2; 2049 } __attribute__((packed)) hfa384x_usb_cmdresp_t; 2050 2051 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wridresp_t; 2052 2053 typedef struct hfa384x_usb_rridresp { 2054 u16 type; 2055 u16 frmlen; 2056 u16 rid; 2057 u8 data[HFA384x_RIDDATA_MAXLEN]; 2058 } __attribute__((packed)) hfa384x_usb_rridresp_t; 2059 2060 typedef hfa384x_usb_cmdresp_t hfa384x_usb_wmemresp_t; 2061 2062 typedef struct hfa384x_usb_rmemresp { 2063 u16 type; 2064 u16 frmlen; 2065 u8 data[HFA384x_USB_RWMEM_MAXLEN]; 2066 } __attribute__((packed)) hfa384x_usb_rmemresp_t; 2067 2068 typedef struct hfa384x_usb_bufavail { 2069 u16 type; 2070 u16 frmlen; 2071 } __attribute__((packed)) hfa384x_usb_bufavail_t; 2072 2073 typedef struct hfa384x_usb_error { 2074 u16 type; 2075 u16 errortype; 2076 } __attribute__((packed)) hfa384x_usb_error_t; 2077 2078 /*----------------------------------------------------------*/ 2079 /* Unions for packaging all the known packet types together */ 2080 2081 typedef union hfa384x_usbout { 2082 u16 type; 2083 hfa384x_usb_txfrm_t txfrm; 2084 hfa384x_usb_cmdreq_t cmdreq; 2085 hfa384x_usb_wridreq_t wridreq; 2086 hfa384x_usb_rridreq_t rridreq; 2087 hfa384x_usb_wmemreq_t wmemreq; 2088 hfa384x_usb_rmemreq_t rmemreq; 2089 } __attribute__((packed)) hfa384x_usbout_t; 2090 2091 typedef union hfa384x_usbin { 2092 u16 type; 2093 hfa384x_usb_rxfrm_t rxfrm; 2094 hfa384x_usb_txfrm_t txfrm; 2095 hfa384x_usb_infofrm_t infofrm; 2096 hfa384x_usb_cmdresp_t cmdresp; 2097 hfa384x_usb_wridresp_t wridresp; 2098 hfa384x_usb_rridresp_t rridresp; 2099 hfa384x_usb_wmemresp_t wmemresp; 2100 hfa384x_usb_rmemresp_t rmemresp; 2101 hfa384x_usb_bufavail_t bufavail; 2102 hfa384x_usb_error_t usberror; 2103 u8 boguspad[3000]; 2104 } __attribute__((packed)) hfa384x_usbin_t; 2105 2106 /*-------------------------------------------------------------------- 2107 PD record structures. 2108 --------------------------------------------------------------------*/ 2109 2110 typedef struct hfa384x_pdr_pcb_partnum 2111 { 2112 u8 num[8]; 2113 } __attribute__((packed)) hfa384x_pdr_pcb_partnum_t; 2114 2115 typedef struct hfa384x_pdr_pcb_tracenum 2116 { 2117 u8 num[8]; 2118 } __attribute__((packed)) hfa384x_pdr_pcb_tracenum_t; 2119 2120 typedef struct hfa384x_pdr_nic_serial 2121 { 2122 u8 num[12]; 2123 } __attribute__((packed)) hfa384x_pdr_nic_serial_t; 2124 2125 typedef struct hfa384x_pdr_mkk_measurements 2126 { 2127 double carrier_freq; 2128 double occupied_band; 2129 double power_density; 2130 double tx_spur_f1; 2131 double tx_spur_f2; 2132 double tx_spur_f3; 2133 double tx_spur_f4; 2134 double tx_spur_l1; 2135 double tx_spur_l2; 2136 double tx_spur_l3; 2137 double tx_spur_l4; 2138 double rx_spur_f1; 2139 double rx_spur_f2; 2140 double rx_spur_l1; 2141 double rx_spur_l2; 2142 } __attribute__((packed)) hfa384x_pdr_mkk_measurements_t; 2143 2144 typedef struct hfa384x_pdr_nic_ramsize 2145 { 2146 u8 size[12]; /* units of KB */ 2147 } __attribute__((packed)) hfa384x_pdr_nic_ramsize_t; 2148 2149 typedef struct hfa384x_pdr_mfisuprange 2150 { 2151 u16 id; 2152 u16 variant; 2153 u16 bottom; 2154 u16 top; 2155 } __attribute__((packed)) hfa384x_pdr_mfisuprange_t; 2156 2157 typedef struct hfa384x_pdr_cfisuprange 2158 { 2159 u16 id; 2160 u16 variant; 2161 u16 bottom; 2162 u16 top; 2163 } __attribute__((packed)) hfa384x_pdr_cfisuprange_t; 2164 2165 typedef struct hfa384x_pdr_nicid 2166 { 2167 u16 id; 2168 u16 variant; 2169 u16 major; 2170 u16 minor; 2171 } __attribute__((packed)) hfa384x_pdr_nicid_t; 2172 2173 2174 typedef struct hfa384x_pdr_refdac_measurements 2175 { 2176 u16 value[0]; 2177 } __attribute__((packed)) hfa384x_pdr_refdac_measurements_t; 2178 2179 typedef struct hfa384x_pdr_vgdac_measurements 2180 { 2181 u16 value[0]; 2182 } __attribute__((packed)) hfa384x_pdr_vgdac_measurements_t; 2183 2184 typedef struct hfa384x_pdr_level_comp_measurements 2185 { 2186 u16 value[0]; 2187 } __attribute__((packed)) hfa384x_pdr_level_compc_measurements_t; 2188 2189 typedef struct hfa384x_pdr_mac_address 2190 { 2191 u8 addr[6]; 2192 } __attribute__((packed)) hfa384x_pdr_mac_address_t; 2193 2194 typedef struct hfa384x_pdr_mkk_callname 2195 { 2196 u8 callname[8]; 2197 } __attribute__((packed)) hfa384x_pdr_mkk_callname_t; 2198 2199 typedef struct hfa384x_pdr_regdomain 2200 { 2201 u16 numdomains; 2202 u16 domain[5]; 2203 } __attribute__((packed)) hfa384x_pdr_regdomain_t; 2204 2205 typedef struct hfa384x_pdr_allowed_channel 2206 { 2207 u16 ch_bitmap; 2208 } __attribute__((packed)) hfa384x_pdr_allowed_channel_t; 2209 2210 typedef struct hfa384x_pdr_default_channel 2211 { 2212 u16 channel; 2213 } __attribute__((packed)) hfa384x_pdr_default_channel_t; 2214 2215 typedef struct hfa384x_pdr_privacy_option 2216 { 2217 u16 available; 2218 } __attribute__((packed)) hfa384x_pdr_privacy_option_t; 2219 2220 typedef struct hfa384x_pdr_temptype 2221 { 2222 u16 type; 2223 } __attribute__((packed)) hfa384x_pdr_temptype_t; 2224 2225 typedef struct hfa384x_pdr_refdac_setup 2226 { 2227 u16 ch_value[14]; 2228 } __attribute__((packed)) hfa384x_pdr_refdac_setup_t; 2229 2230 typedef struct hfa384x_pdr_vgdac_setup 2231 { 2232 u16 ch_value[14]; 2233 } __attribute__((packed)) hfa384x_pdr_vgdac_setup_t; 2234 2235 typedef struct hfa384x_pdr_level_comp_setup 2236 { 2237 u16 ch_value[14]; 2238 } __attribute__((packed)) hfa384x_pdr_level_comp_setup_t; 2239 2240 typedef struct hfa384x_pdr_trimdac_setup 2241 { 2242 u16 trimidac; 2243 u16 trimqdac; 2244 } __attribute__((packed)) hfa384x_pdr_trimdac_setup_t; 2245 2246 typedef struct hfa384x_pdr_ifr_setting 2247 { 2248 u16 value[3]; 2249 } __attribute__((packed)) hfa384x_pdr_ifr_setting_t; 2250 2251 typedef struct hfa384x_pdr_rfr_setting 2252 { 2253 u16 value[3]; 2254 } __attribute__((packed)) hfa384x_pdr_rfr_setting_t; 2255 2256 typedef struct hfa384x_pdr_hfa3861_baseline 2257 { 2258 u16 value[50]; 2259 } __attribute__((packed)) hfa384x_pdr_hfa3861_baseline_t; 2260 2261 typedef struct hfa384x_pdr_hfa3861_shadow 2262 { 2263 u32 value[32]; 2264 } __attribute__((packed)) hfa384x_pdr_hfa3861_shadow_t; 2265 2266 typedef struct hfa384x_pdr_hfa3861_ifrf 2267 { 2268 u32 value[20]; 2269 } __attribute__((packed)) hfa384x_pdr_hfa3861_ifrf_t; 2270 2271 typedef struct hfa384x_pdr_hfa3861_chcalsp 2272 { 2273 u16 value[14]; 2274 } __attribute__((packed)) hfa384x_pdr_hfa3861_chcalsp_t; 2275 2276 typedef struct hfa384x_pdr_hfa3861_chcali 2277 { 2278 u16 value[17]; 2279 } __attribute__((packed)) hfa384x_pdr_hfa3861_chcali_t; 2280 2281 typedef struct hfa384x_pdr_hfa3861_nic_config 2282 { 2283 u16 config_bitmap; 2284 } __attribute__((packed)) hfa384x_pdr_nic_config_t; 2285 2286 typedef struct hfa384x_pdr_hfo_delay 2287 { 2288 u8 hfo_delay; 2289 } __attribute__((packed)) hfa384x_hfo_delay_t; 2290 2291 typedef struct hfa384x_pdr_hfa3861_manf_testsp 2292 { 2293 u16 value[30]; 2294 } __attribute__((packed)) hfa384x_pdr_hfa3861_manf_testsp_t; 2295 2296 typedef struct hfa384x_pdr_hfa3861_manf_testi 2297 { 2298 u16 value[30]; 2299 } __attribute__((packed)) hfa384x_pdr_hfa3861_manf_testi_t; 2300 2301 typedef struct hfa384x_end_of_pda 2302 { 2303 u16 crc; 2304 } __attribute__((packed)) hfa384x_pdr_end_of_pda_t; 2305 2306 typedef struct hfa384x_pdrec 2307 { 2308 u16 len; /* in words */ 2309 u16 code; 2310 union pdr { 2311 hfa384x_pdr_pcb_partnum_t pcb_partnum; 2312 hfa384x_pdr_pcb_tracenum_t pcb_tracenum; 2313 hfa384x_pdr_nic_serial_t nic_serial; 2314 hfa384x_pdr_mkk_measurements_t mkk_measurements; 2315 hfa384x_pdr_nic_ramsize_t nic_ramsize; 2316 hfa384x_pdr_mfisuprange_t mfisuprange; 2317 hfa384x_pdr_cfisuprange_t cfisuprange; 2318 hfa384x_pdr_nicid_t nicid; 2319 hfa384x_pdr_refdac_measurements_t refdac_measurements; 2320 hfa384x_pdr_vgdac_measurements_t vgdac_measurements; 2321 hfa384x_pdr_level_compc_measurements_t level_compc_measurements; 2322 hfa384x_pdr_mac_address_t mac_address; 2323 hfa384x_pdr_mkk_callname_t mkk_callname; 2324 hfa384x_pdr_regdomain_t regdomain; 2325 hfa384x_pdr_allowed_channel_t allowed_channel; 2326 hfa384x_pdr_default_channel_t default_channel; 2327 hfa384x_pdr_privacy_option_t privacy_option; 2328 hfa384x_pdr_temptype_t temptype; 2329 hfa384x_pdr_refdac_setup_t refdac_setup; 2330 hfa384x_pdr_vgdac_setup_t vgdac_setup; 2331 hfa384x_pdr_level_comp_setup_t level_comp_setup; 2332 hfa384x_pdr_trimdac_setup_t trimdac_setup; 2333 hfa384x_pdr_ifr_setting_t ifr_setting; 2334 hfa384x_pdr_rfr_setting_t rfr_setting; 2335 hfa384x_pdr_hfa3861_baseline_t hfa3861_baseline; 2336 hfa384x_pdr_hfa3861_shadow_t hfa3861_shadow; 2337 hfa384x_pdr_hfa3861_ifrf_t hfa3861_ifrf; 2338 hfa384x_pdr_hfa3861_chcalsp_t hfa3861_chcalsp; 2339 hfa384x_pdr_hfa3861_chcali_t hfa3861_chcali; 2340 hfa384x_pdr_nic_config_t nic_config; 2341 hfa384x_hfo_delay_t hfo_delay; 2342 hfa384x_pdr_hfa3861_manf_testsp_t hfa3861_manf_testsp; 2343 hfa384x_pdr_hfa3861_manf_testi_t hfa3861_manf_testi; 2344 hfa384x_pdr_end_of_pda_t end_of_pda; 2345 2346 } data; 2347 } __attribute__((packed)) hfa384x_pdrec_t; 2348 2349 2350 #ifdef __KERNEL__ 2351 /*-------------------------------------------------------------------- 2352 --- MAC state structure, argument to all functions -- 2353 --- Also, a collection of support types -- 2354 --------------------------------------------------------------------*/ 2355 typedef struct hfa384x_statusresult 2356 { 2357 u16 status; 2358 u16 resp0; 2359 u16 resp1; 2360 u16 resp2; 2361 } hfa384x_cmdresult_t; 2362 2363 /* USB Control Exchange (CTLX): 2364 * A queue of the structure below is maintained for all of the 2365 * Request/Response type USB packets supported by Prism2. 2366 */ 2367 /* The following hfa384x_* structures are arguments to 2368 * the usercb() for the different CTLX types. 2369 */ 2370 typedef hfa384x_cmdresult_t hfa384x_wridresult_t; 2371 typedef hfa384x_cmdresult_t hfa384x_wmemresult_t; 2372 2373 typedef struct hfa384x_rridresult 2374 { 2375 u16 rid; 2376 const void *riddata; 2377 unsigned int riddata_len; 2378 } hfa384x_rridresult_t; 2379 2380 enum ctlx_state { 2381 CTLX_START = 0, /* Start state, not queued */ 2382 2383 CTLX_COMPLETE, /* CTLX successfully completed */ 2384 CTLX_REQ_FAILED, /* OUT URB completed w/ error */ 2385 2386 CTLX_PENDING, /* Queued, data valid */ 2387 CTLX_REQ_SUBMITTED, /* OUT URB submitted */ 2388 CTLX_REQ_COMPLETE, /* OUT URB complete */ 2389 CTLX_RESP_COMPLETE /* IN URB received */ 2390 }; 2391 typedef enum ctlx_state CTLX_STATE; 2392 2393 struct hfa384x_usbctlx; 2394 struct hfa384x; 2395 2396 typedef void (*ctlx_cmdcb_t)( struct hfa384x*, const struct hfa384x_usbctlx* ); 2397 2398 typedef void (*ctlx_usercb_t)( 2399 struct hfa384x *hw, 2400 void *ctlxresult, 2401 void *usercb_data); 2402 2403 typedef struct hfa384x_usbctlx 2404 { 2405 struct list_head list; 2406 2407 size_t outbufsize; 2408 hfa384x_usbout_t outbuf; /* pkt buf for OUT */ 2409 hfa384x_usbin_t inbuf; /* pkt buf for IN(a copy) */ 2410 2411 CTLX_STATE state; /* Tracks running state */ 2412 2413 struct completion done; 2414 volatile int reapable; /* Food for the reaper task */ 2415 2416 ctlx_cmdcb_t cmdcb; /* Async command callback */ 2417 ctlx_usercb_t usercb; /* Async user callback, */ 2418 void *usercb_data; /* at CTLX completion */ 2419 2420 int variant; /* Identifies cmd variant */ 2421 } hfa384x_usbctlx_t; 2422 2423 typedef struct hfa384x_usbctlxq 2424 { 2425 spinlock_t lock; 2426 struct list_head pending; 2427 struct list_head active; 2428 struct list_head completing; 2429 struct list_head reapable; 2430 } hfa384x_usbctlxq_t; 2431 2432 typedef struct hfa484x_metacmd 2433 { 2434 u16 cmd; 2435 2436 u16 parm0; 2437 u16 parm1; 2438 u16 parm2; 2439 2440 hfa384x_cmdresult_t result; 2441 } hfa384x_metacmd_t; 2442 2443 #define MAX_PRISM2_GRP_ADDR 16 2444 #define MAX_GRP_ADDR 32 2445 #define WLAN_COMMENT_MAX 80 /* Max. length of user comment string. */ 2446 2447 #define MM_SAT_PCF (BIT(14)) 2448 #define MM_GCSD_PCF (BIT(15)) 2449 #define MM_GCSD_PCF_EB (BIT(14) | BIT(15)) 2450 2451 #define WLAN_STATE_STOPPED 0 /* Network is not active. */ 2452 #define WLAN_STATE_STARTED 1 /* Network has been started. */ 2453 2454 #define WLAN_AUTH_MAX 60 /* Max. # of authenticated stations. */ 2455 #define WLAN_ACCESS_MAX 60 /* Max. # of stations in an access list. */ 2456 #define WLAN_ACCESS_NONE 0 /* No stations may be authenticated. */ 2457 #define WLAN_ACCESS_ALL 1 /* All stations may be authenticated. */ 2458 #define WLAN_ACCESS_ALLOW 2 /* Authenticate only "allowed" stations. */ 2459 #define WLAN_ACCESS_DENY 3 /* Do not authenticate "denied" stations. */ 2460 2461 /* XXX These are going away ASAP */ 2462 typedef struct prism2sta_authlist 2463 { 2464 unsigned int cnt; 2465 u8 addr[WLAN_AUTH_MAX][ETH_ALEN]; 2466 u8 assoc[WLAN_AUTH_MAX]; 2467 } prism2sta_authlist_t; 2468 2469 typedef struct prism2sta_accesslist 2470 { 2471 unsigned int modify; 2472 unsigned int cnt; 2473 u8 addr[WLAN_ACCESS_MAX][ETH_ALEN]; 2474 unsigned int cnt1; 2475 u8 addr1[WLAN_ACCESS_MAX][ETH_ALEN]; 2476 } prism2sta_accesslist_t; 2477 2478 typedef struct hfa384x 2479 { 2480 /* USB support data */ 2481 struct usb_device *usb; 2482 struct urb rx_urb; 2483 struct sk_buff *rx_urb_skb; 2484 struct urb tx_urb; 2485 struct urb ctlx_urb; 2486 hfa384x_usbout_t txbuff; 2487 hfa384x_usbctlxq_t ctlxq; 2488 struct timer_list reqtimer; 2489 struct timer_list resptimer; 2490 2491 struct timer_list throttle; 2492 2493 struct tasklet_struct reaper_bh; 2494 struct tasklet_struct completion_bh; 2495 2496 struct work_struct usb_work; 2497 2498 unsigned long usb_flags; 2499 #define THROTTLE_RX 0 2500 #define THROTTLE_TX 1 2501 #define WORK_RX_HALT 2 2502 #define WORK_TX_HALT 3 2503 #define WORK_RX_RESUME 4 2504 #define WORK_TX_RESUME 5 2505 2506 unsigned short req_timer_done:1; 2507 unsigned short resp_timer_done:1; 2508 2509 int endp_in; 2510 int endp_out; 2511 2512 int sniff_fcs; 2513 int sniff_channel; 2514 int sniff_truncate; 2515 int sniffhdr; 2516 2517 wait_queue_head_t cmdq; /* wait queue itself */ 2518 2519 /* Controller state */ 2520 u32 state; 2521 u32 isap; 2522 u8 port_enabled[HFA384x_NUMPORTS_MAX]; 2523 2524 /* Download support */ 2525 unsigned int dlstate; 2526 hfa384x_downloadbuffer_t bufinfo; 2527 u16 dltimeout; 2528 2529 int scanflag; /* to signal scan comlete */ 2530 int join_ap; /* are we joined to a specific ap */ 2531 int join_retries; /* number of join retries till we fail */ 2532 hfa384x_JoinRequest_data_t joinreq; /* join request saved data */ 2533 2534 wlandevice_t *wlandev; 2535 /* Timer to allow for the deferred processing of linkstatus messages */ 2536 struct work_struct link_bh; 2537 2538 struct work_struct commsqual_bh; 2539 hfa384x_commsquality_t qual; 2540 struct timer_list commsqual_timer; 2541 2542 u16 link_status; 2543 u16 link_status_new; 2544 struct sk_buff_head authq; 2545 2546 /* And here we have stuff that used to be in priv */ 2547 2548 /* State variables */ 2549 unsigned int presniff_port_type; 2550 u16 presniff_wepflags; 2551 u32 dot11_desired_bss_type; 2552 2553 int dbmadjust; 2554 2555 /* Group Addresses - right now, there are up to a total 2556 of MAX_GRP_ADDR group addresses */ 2557 u8 dot11_grp_addr[MAX_GRP_ADDR][ETH_ALEN]; 2558 unsigned int dot11_grpcnt; 2559 2560 /* Component Identities */ 2561 hfa384x_compident_t ident_nic; 2562 hfa384x_compident_t ident_pri_fw; 2563 hfa384x_compident_t ident_sta_fw; 2564 hfa384x_compident_t ident_ap_fw; 2565 u16 mm_mods; 2566 2567 /* Supplier compatibility ranges */ 2568 hfa384x_caplevel_t cap_sup_mfi; 2569 hfa384x_caplevel_t cap_sup_cfi; 2570 hfa384x_caplevel_t cap_sup_pri; 2571 hfa384x_caplevel_t cap_sup_sta; 2572 hfa384x_caplevel_t cap_sup_ap; 2573 2574 /* Actor compatibility ranges */ 2575 hfa384x_caplevel_t cap_act_pri_cfi; /* pri f/w to controller interface */ 2576 hfa384x_caplevel_t cap_act_sta_cfi; /* sta f/w to controller interface */ 2577 hfa384x_caplevel_t cap_act_sta_mfi; /* sta f/w to modem interface */ 2578 hfa384x_caplevel_t cap_act_ap_cfi; /* ap f/w to controller interface */ 2579 hfa384x_caplevel_t cap_act_ap_mfi; /* ap f/w to modem interface */ 2580 2581 u32 psusercount; /* Power save user count. */ 2582 hfa384x_CommTallies32_t tallies; /* Communication tallies. */ 2583 u8 comment[WLAN_COMMENT_MAX+1]; /* User comment */ 2584 2585 /* Channel Info request results (AP only) */ 2586 struct { 2587 atomic_t done; 2588 u8 count; 2589 hfa384x_ChInfoResult_t results; 2590 } channel_info; 2591 2592 hfa384x_InfFrame_t *scanresults; 2593 2594 2595 prism2sta_authlist_t authlist; /* Authenticated station list. */ 2596 unsigned int accessmode; /* Access mode. */ 2597 prism2sta_accesslist_t allow; /* Allowed station list. */ 2598 prism2sta_accesslist_t deny; /* Denied station list. */ 2599 2600 } hfa384x_t; 2601 2602 /*=============================================================*/ 2603 /*--- Function Declarations -----------------------------------*/ 2604 /*=============================================================*/ 2605 void 2606 hfa384x_create( 2607 hfa384x_t *hw, 2608 struct usb_device *usb); 2609 2610 void hfa384x_destroy(hfa384x_t *hw); 2611 2612 int 2613 hfa384x_corereset( hfa384x_t *hw, int holdtime, int settletime, int genesis); 2614 int 2615 hfa384x_drvr_chinforesults( hfa384x_t *hw); 2616 int 2617 hfa384x_drvr_commtallies( hfa384x_t *hw); 2618 int 2619 hfa384x_drvr_disable(hfa384x_t *hw, u16 macport); 2620 int 2621 hfa384x_drvr_enable(hfa384x_t *hw, u16 macport); 2622 int 2623 hfa384x_drvr_flashdl_enable(hfa384x_t *hw); 2624 int 2625 hfa384x_drvr_flashdl_disable(hfa384x_t *hw); 2626 int 2627 hfa384x_drvr_flashdl_write(hfa384x_t *hw, u32 daddr, void* buf, u32 len); 2628 int 2629 hfa384x_drvr_getconfig(hfa384x_t *hw, u16 rid, void *buf, u16 len); 2630 int 2631 hfa384x_drvr_handover( hfa384x_t *hw, u8 *addr); 2632 int 2633 hfa384x_drvr_hostscanresults( hfa384x_t *hw); 2634 int 2635 hfa384x_drvr_low_level(hfa384x_t *hw, hfa384x_metacmd_t *cmd); 2636 int 2637 hfa384x_drvr_mmi_read(hfa384x_t *hw, u32 address, u32 *result); 2638 int 2639 hfa384x_drvr_mmi_write(hfa384x_t *hw, u32 address, u32 data); 2640 int 2641 hfa384x_drvr_ramdl_enable(hfa384x_t *hw, u32 exeaddr); 2642 int 2643 hfa384x_drvr_ramdl_disable(hfa384x_t *hw); 2644 int 2645 hfa384x_drvr_ramdl_write(hfa384x_t *hw, u32 daddr, void* buf, u32 len); 2646 int 2647 hfa384x_drvr_readpda(hfa384x_t *hw, void *buf, unsigned int len); 2648 int 2649 hfa384x_drvr_scanresults( hfa384x_t *hw); 2650 2651 int 2652 hfa384x_drvr_setconfig(hfa384x_t *hw, u16 rid, void *buf, u16 len); 2653 2654 static inline int 2655 hfa384x_drvr_getconfig16(hfa384x_t *hw, u16 rid, void *val) 2656 { 2657 int result = 0; 2658 result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(u16)); 2659 if ( result == 0 ) { 2660 *((u16*)val) = hfa384x2host_16(*((u16*)val)); 2661 } 2662 return result; 2663 } 2664 2665 static inline int 2666 hfa384x_drvr_getconfig32(hfa384x_t *hw, u16 rid, void *val) 2667 { 2668 int result = 0; 2669 2670 result = hfa384x_drvr_getconfig(hw, rid, val, sizeof(u32)); 2671 if ( result == 0 ) { 2672 *((u32*)val) = hfa384x2host_32(*((u32*)val)); 2673 } 2674 2675 return result; 2676 } 2677 2678 static inline int 2679 hfa384x_drvr_setconfig16(hfa384x_t *hw, u16 rid, u16 val) 2680 { 2681 u16 value = host2hfa384x_16(val); 2682 return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value)); 2683 } 2684 2685 static inline int 2686 hfa384x_drvr_setconfig32(hfa384x_t *hw, u16 rid, u32 val) 2687 { 2688 u32 value = host2hfa384x_32(val); 2689 return hfa384x_drvr_setconfig(hw, rid, &value, sizeof(value)); 2690 } 2691 2692 int 2693 hfa384x_drvr_getconfig_async(hfa384x_t *hw, 2694 u16 rid, 2695 ctlx_usercb_t usercb, 2696 void *usercb_data); 2697 2698 int 2699 hfa384x_drvr_setconfig_async(hfa384x_t *hw, 2700 u16 rid, 2701 void *buf, 2702 u16 len, 2703 ctlx_usercb_t usercb, 2704 void *usercb_data); 2705 2706 static inline int 2707 hfa384x_drvr_setconfig16_async(hfa384x_t *hw, u16 rid, u16 val) 2708 { 2709 u16 value = host2hfa384x_16(val); 2710 return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value), 2711 NULL , NULL); 2712 } 2713 2714 static inline int 2715 hfa384x_drvr_setconfig32_async(hfa384x_t *hw, u16 rid, u32 val) 2716 { 2717 u32 value = host2hfa384x_32(val); 2718 return hfa384x_drvr_setconfig_async(hw, rid, &value, sizeof(value), 2719 NULL , NULL); 2720 } 2721 2722 2723 int 2724 hfa384x_drvr_start(hfa384x_t *hw); 2725 int 2726 hfa384x_drvr_stop(hfa384x_t *hw); 2727 int 2728 hfa384x_drvr_txframe(hfa384x_t *hw, struct sk_buff *skb, p80211_hdr_t *p80211_hdr, p80211_metawep_t *p80211_wep); 2729 void 2730 hfa384x_tx_timeout(wlandevice_t *wlandev); 2731 2732 int 2733 hfa384x_cmd_initialize(hfa384x_t *hw); 2734 int 2735 hfa384x_cmd_enable(hfa384x_t *hw, u16 macport); 2736 int 2737 hfa384x_cmd_disable(hfa384x_t *hw, u16 macport); 2738 int 2739 hfa384x_cmd_diagnose(hfa384x_t *hw); 2740 int 2741 hfa384x_cmd_allocate(hfa384x_t *hw, u16 len); 2742 int 2743 hfa384x_cmd_transmit(hfa384x_t *hw, u16 reclaim, u16 qos, u16 fid); 2744 int 2745 hfa384x_cmd_clearpersist(hfa384x_t *hw, u16 fid); 2746 int 2747 hfa384x_cmd_access(hfa384x_t *hw, u16 write, u16 rid, void *buf, u16 len); 2748 int 2749 hfa384x_cmd_monitor(hfa384x_t *hw, u16 enable); 2750 int 2751 hfa384x_cmd_download( 2752 hfa384x_t *hw, 2753 u16 mode, 2754 u16 lowaddr, 2755 u16 highaddr, 2756 u16 codelen); 2757 int 2758 hfa384x_cmd_aux_enable(hfa384x_t *hw, int force); 2759 int 2760 hfa384x_cmd_aux_disable(hfa384x_t *hw); 2761 int 2762 hfa384x_copy_from_bap( 2763 hfa384x_t *hw, 2764 u16 bap, 2765 u16 id, 2766 u16 offset, 2767 void *buf, 2768 unsigned int len); 2769 int 2770 hfa384x_copy_to_bap( 2771 hfa384x_t *hw, 2772 u16 bap, 2773 u16 id, 2774 u16 offset, 2775 void *buf, 2776 unsigned int len); 2777 void 2778 hfa384x_copy_from_aux( 2779 hfa384x_t *hw, 2780 u32 cardaddr, 2781 u32 auxctl, 2782 void *buf, 2783 unsigned int len); 2784 void 2785 hfa384x_copy_to_aux( 2786 hfa384x_t *hw, 2787 u32 cardaddr, 2788 u32 auxctl, 2789 void *buf, 2790 unsigned int len); 2791 2792 #endif /* __KERNEL__ */ 2793 2794 #endif /* _HFA384x_H */ 2795