The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/dev/ic/acxreg.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*      $OpenBSD: acxreg.h,v 1.13 2022/01/09 05:42:38 jsg Exp $ */
    2 
    3 /*
    4  * Copyright (c) 2006 Jonathan Gray <jsg@openbsd.org>
    5  *
    6  * Permission to use, copy, modify, and distribute this software for any
    7  * purpose with or without fee is hereby granted, provided that the above
    8  * copyright notice and this permission notice appear in all copies.
    9  *
   10  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
   11  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
   12  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
   13  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
   14  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
   15  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
   16  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
   17  */
   18 
   19 /*
   20  * Copyright (c) 2006 The DragonFly Project.  All rights reserved.
   21  *
   22  * This code is derived from software contributed to The DragonFly Project
   23  * by Sepherosa Ziehau <sepherosa@gmail.com>
   24  *
   25  * Redistribution and use in source and binary forms, with or without
   26  * modification, are permitted provided that the following conditions
   27  * are met:
   28  *
   29  * 1. Redistributions of source code must retain the above copyright
   30  *    notice, this list of conditions and the following disclaimer.
   31  * 2. Redistributions in binary form must reproduce the above copyright
   32  *    notice, this list of conditions and the following disclaimer in
   33  *    the documentation and/or other materials provided with the
   34  *    distribution.
   35  * 3. Neither the name of The DragonFly Project nor the names of its
   36  *    contributors may be used to endorse or promote products derived
   37  *    from this software without specific, prior written permission.
   38  *
   39  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   40  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   41  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
   42  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE
   43  * COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
   44  * INCIDENTAL, SPECIAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES (INCLUDING,
   45  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
   46  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
   47  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   48  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   49  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   50  * SUCH DAMAGE.
   51  */
   52 
   53 #ifndef _ACXREG_H
   54 #define _ACXREG_H
   55 
   56 /*
   57  * IO register index
   58  */
   59 #define ACXREG_SOFT_RESET               0
   60 #define ACXREG_FWMEM_ADDR               1
   61 #define ACXREG_FWMEM_DATA               2
   62 #define ACXREG_FWMEM_CTRL               3
   63 #define ACXREG_FWMEM_START              4
   64 #define ACXREG_EVENT_MASK               5
   65 #define ACXREG_INTR_TRIG                6
   66 #define ACXREG_INTR_MASK                7
   67 #define ACXREG_INTR_STATUS              8
   68 #define ACXREG_INTR_STATUS_CLR          9       /* cleared after being read */
   69 #define ACXREG_INTR_ACK                 10
   70 #define ACXREG_HINTR_TRIG               11      /* XXX what's this? */
   71 #define ACXREG_RADIO_ENABLE             12
   72 #define ACXREG_EEPROM_INIT              13
   73 #define ACXREG_EEPROM_CTRL              14
   74 #define ACXREG_EEPROM_ADDR              15
   75 #define ACXREG_EEPROM_DATA              16
   76 #define ACXREG_EEPROM_CONF              17
   77 #define ACXREG_EEPROM_INFO              18
   78 #define ACXREG_PHY_ADDR                 19
   79 #define ACXREG_PHY_DATA                 20
   80 #define ACXREG_PHY_CTRL                 21
   81 #define ACXREG_GPIO_OUT_ENABLE          22
   82 #define ACXREG_GPIO_OUT                 23
   83 #define ACXREG_CMD_REG_OFFSET           24
   84 #define ACXREG_INFO_REG_OFFSET          25
   85 #define ACXREG_RESET_SENSE              26
   86 #define ACXREG_ECPU_CTRL                27
   87 #define ACXREG_MAX                      28
   88 #define ACXREG(reg, val)                [ACXREG_##reg] = val
   89 
   90 /*
   91  * Value read from ACXREG_EEPROM_INFO
   92  * upper 8bits are radio type
   93  * lower 8bits are form factor
   94  */
   95 #define ACX_EEINFO_RADIO_TYPE_SHIFT     8
   96 #define ACX_EEINFO_RADIO_TYPE_MASK      (0xff << ACX_EEINFO_RADIO_TYPE_SHIFT)
   97 #define ACX_EEINFO_FORM_FACTOR_MASK     0xff
   98 
   99 #define ACX_EEINFO_HAS_RADIO_TYPE(info) ((info) & ACX_EEINFO_RADIO_TYPE_MASK)
  100 #define ACX_EEINFO_RADIO_TYPE(info)     ((info) >> ACX_EEINFO_RADIO_TYPE_SHIFT)
  101 #define ACX_EEINFO_FORM_FACTOR(info)    ((info) & ACX_EEINFO_FORM_FACTOR_MASK)
  102 
  103 /*
  104  * Size of command register whose location is obtained
  105  * from ACXREG_CMD_REG_OFFSET IO register
  106  */
  107 #define ACX_CMD_REG_SIZE                4       /* 4 bytes */
  108 
  109 /*
  110  * Size of information register whose location is obtained
  111  * from ACXREG_INFO_REG_OFFSET IO register
  112  */
  113 #define ACX_INFO_REG_SIZE               4       /* 4 bytes */
  114 
  115 /*
  116  * Offset of EEPROM variables
  117  */
  118 #define ACX_EE_VERSION_OFS              0x05
  119 
  120 /*
  121  * Possible values for various IO registers
  122  */
  123 
  124 /* ACXREG_SOFT_RESET */
  125 #define ACXRV_SOFT_RESET                0x1
  126 
  127 /* ACXREG_FWMEM_START */
  128 #define ACXRV_FWMEM_START_OP            0x0
  129 
  130 /* ACXREG_FWMEM_CTRL */
  131 #define ACXRV_FWMEM_ADDR_AUTOINC        0x10000
  132 
  133 /* ACXREG_EVENT_MASK */
  134 #define ACXRV_EVENT_DISABLE             0x8000  /* XXX What's this?? */
  135 
  136 /* ACXREG_INTR_TRIG */
  137 #define ACXRV_TRIG_CMD_FINI             0x0001
  138 #define ACXRV_TRIG_TX_FINI              0x0004
  139 
  140 /* ACXREG_INTR_MASK */
  141 #define ACXRV_INTR_RX_DATA              0x0001
  142 #define ACXRV_INTR_TX_FINI              0x0002
  143 #define ACXRV_INTR_TX_XFER              0x0004
  144 #define ACXRV_INTR_RX_FINI              0x0008
  145 #define ACXRV_INTR_DTIM                 0x0010
  146 #define ACXRV_INTR_BEACON               0x0020
  147 #define ACXRV_INTR_TIMER                0x0040
  148 #define ACXRV_INTR_KEY_MISS             0x0080
  149 #define ACXRV_INTR_WEP_FAIL             0x0100
  150 #define ACXRV_INTR_CMD_FINI             0x0200
  151 #define ACXRV_INTR_INFO                 0x0400
  152 #define ACXRV_INTR_OVERFLOW             0x0800  /* XXX */
  153 #define ACXRV_INTR_PROC_ERR             0x1000  /* XXX */
  154 #define ACXRV_INTR_SCAN_FINI            0x2000
  155 #define ACXRV_INTR_FCS_THRESH           0x4000  /* XXX */
  156 #define ACXRV_INTR_UNKN                 0x8000
  157 #define ACXRV_INTR_ALL                  0xffff
  158 
  159 /* ACXREG_EEPROM_INIT */
  160 #define ACXRV_EEPROM_INIT               0x1
  161 
  162 /* ACXREG_EEPROM_CTRL */
  163 #define ACXRV_EEPROM_READ               0x2
  164 
  165 /* ACXREG_PHY_CTRL */
  166 #define ACXRV_PHY_WRITE                 0x1
  167 #define ACXRV_PHY_READ                  0x2
  168 
  169 /* ACXREG_PHY_ADDR */
  170 #define ACXRV_PHYREG_TXPOWER            0x11    /* axc100 */
  171 #define ACXRV_PHYREG_SENSITIVITY        0x30
  172 
  173 /* ACXREG_ECPU_CTRL */
  174 #define ACXRV_ECPU_HALT                 0x1
  175 #define ACXRV_ECPU_START                0x0
  176 
  177 /* Commands */
  178 #define ACXCMD_GET_CONF         0x01
  179 #define ACXCMD_SET_CONF         0x02
  180 #define ACXCMD_ENABLE_RXCHAN    0x03
  181 #define ACXCMD_ENABLE_TXCHAN    0x04
  182 #define ACXCMD_TMPLT_TIM        0x0a
  183 #define ACXCMD_JOIN_BSS         0x0b
  184 #define ACXCMD_WEP_MGMT         0x0c    /* acx111 */
  185 #define ACXCMD_SLEEP            0x0f
  186 #define ACXCMD_WAKEUP           0x10
  187 #define ACXCMD_INIT_MEM         0x12    /* acx100 */
  188 #define ACXCMD_TMPLT_BEACON     0x13
  189 #define ACXCMD_TMPLT_PROBE_RESP 0x14
  190 #define ACXCMD_TMPLT_NULL_DATA  0x15
  191 #define ACXCMD_TMPLT_PROBE_REQ  0x16
  192 #define ACXCMD_INIT_RADIO       0x18
  193 
  194 #if 0
  195 /*
  196  * acx111 does not agree with acx100 about
  197  * the meaning of following values.  So they
  198  * are put into chip specific files.
  199  */
  200 #define ACX_CONF_FW_RING        0x0003
  201 #define ACX_CONF_MEMOPT         0x0005
  202 #endif
  203 #define ACX_CONF_MEMBLK_SIZE    0x0004  /* acx100 */
  204 #define ACX_CONF_RATE_FALLBACK  0x0006
  205 #define ACX_CONF_WEPOPT         0x0007  /* acx100 */
  206 #define ACX_CONF_MMAP           0x0008
  207 #define ACX_CONF_FWREV          0x000d
  208 #define ACX_CONF_RXOPT          0x0010
  209 #define ACX_CONF_OPTION         0x0015  /* acx111 */
  210 #define ACX_CONF_EADDR          0x1001
  211 #define ACX_CONF_NRETRY_SHORT   0x1005
  212 #define ACX_CONF_NRETRY_LONG    0x1006
  213 #define ACX_CONF_WEPKEY         0x1007  /* acx100 */
  214 #define ACX_CONF_MSDU_LIFETIME  0x1008
  215 #define ACX_CONF_REGDOM         0x100a
  216 #define ACX_CONF_ANTENNA        0x100b
  217 #define ACX_CONF_TXPOWER        0x100d  /* acx111 */
  218 #define ACX_CONF_CCA_MODE       0x100e
  219 #define ACX_CONF_ED_THRESH      0x100f
  220 #define ACX_CONF_WEP_TXKEY      0x1010
  221 
  222 /*
  223  * NOTE:
  224  * Following structs' fields are little endian
  225  */
  226 
  227 struct acx_conf {
  228         uint16_t        conf_id;        /* see ACXCONF_ (_acxcmd.h) */
  229         uint16_t        conf_data_len;
  230 } __packed;
  231 
  232 struct acx_conf_mmap {
  233         struct acx_conf confcom;
  234         uint32_t        code_start;
  235         uint32_t        code_end;
  236         uint32_t        wep_cache_start;
  237         uint32_t        wep_cache_end;
  238         uint32_t        pkt_tmplt_start;
  239         uint32_t        pkt_tmplt_end;
  240         uint32_t        fw_desc_start;
  241         uint32_t        fw_desc_end;
  242         uint32_t        memblk_start;
  243         uint32_t        memblk_end;
  244 } __packed;
  245 
  246 struct acx_conf_wepopt {
  247         struct acx_conf confcom;
  248         uint16_t        nkey;
  249         uint8_t         opt;    /* see WEPOPT_ */
  250 } __packed;
  251 
  252 #define WEPOPT_HDWEP    0       /* hardware WEP */
  253 
  254 struct acx_conf_eaddr {
  255         struct acx_conf confcom;
  256         uint8_t         eaddr[IEEE80211_ADDR_LEN];
  257 } __packed;
  258 
  259 struct acx_conf_regdom {
  260         struct acx_conf confcom;
  261         uint8_t         regdom;
  262         uint8_t         unknown;
  263 } __packed;
  264 
  265 struct acx_conf_antenna {
  266         struct acx_conf confcom;
  267         uint8_t         antenna;
  268 } __packed;
  269 
  270 struct acx_conf_fwrev {
  271         struct acx_conf confcom;
  272 #define ACX_FWREV_LEN   20
  273         /*
  274          * "Rev xx.xx.xx.xx"
  275          * '\0' terminated
  276          */
  277         char            fw_rev[ACX_FWREV_LEN];
  278         uint32_t        hw_id;
  279 } __packed;
  280 
  281 struct acx_conf_nretry_long {
  282         struct acx_conf confcom;
  283         uint8_t         nretry;
  284 } __packed;
  285 
  286 struct acx_conf_nretry_short {
  287         struct acx_conf confcom;
  288         uint8_t         nretry;
  289 } __packed;
  290 
  291 struct acx_conf_msdu_lifetime {
  292         struct acx_conf confcom;
  293         uint32_t        lifetime;
  294 } __packed;
  295 
  296 struct acx_conf_rate_fallback {
  297         struct acx_conf confcom;
  298         uint8_t         ratefb_enable;  /* 0/1 */
  299 } __packed;
  300 
  301 struct acx_conf_rxopt {
  302         struct acx_conf confcom;
  303         uint16_t        opt1;   /* see RXOPT1_ */
  304         uint16_t        opt2;   /* see RXOPT2_ */
  305 } __packed;
  306 
  307 #define RXOPT1_INCL_RXBUF_HDR   0x2000  /* rxbuf with acx_rxbuf_hdr */
  308 #define RXOPT1_RECV_SSID        0x0400  /* recv frame for joined SSID */
  309 #define RXOPT1_FILT_BCAST       0x0200  /* filt broadcast pkt */
  310 #define RXOPT1_RECV_MCAST1      0x0100  /* recv pkt for multicast addr1 */
  311 #define RXOPT1_RECV_MCAST0      0x0080  /* recv pkt for multicast addr0 */
  312 #define RXOPT1_FILT_ALLMULTI    0x0040  /* filt allmulti pkt */
  313 #define RXOPT1_FILT_FSSID       0x0020  /* filt frame for foreign SSID */
  314 #define RXOPT1_FILT_FDEST       0x0010  /* filt frame for foreign dest addr */
  315 #define RXOPT1_PROMISC          0x0008  /* promisc mode */
  316 #define RXOPT1_INCL_FCS         0x0004
  317 #define RXOPT1_INCL_PHYHDR      0x0000  /* XXX 0x0002 */
  318 
  319 #define RXOPT2_RECV_ASSOC_REQ   0x0800
  320 #define RXOPT2_RECV_AUTH        0x0400
  321 #define RXOPT2_RECV_BEACON      0x0200
  322 #define RXOPT2_RECV_CF          0x0100
  323 #define RXOPT2_RECV_CTRL        0x0080
  324 #define RXOPT2_RECV_DATA        0x0040
  325 #define RXOPT2_RECV_BROKEN      0x0020  /* broken frame */
  326 #define RXOPT2_RECV_MGMT        0x0010
  327 #define RXOPT2_RECV_PROBE_REQ   0x0008
  328 #define RXOPT2_RECV_PROBE_RESP  0x0004
  329 #define RXOPT2_RECV_ACK         0x0002  /* RTS/CTS/ACK */
  330 #define RXOPT2_RECV_OTHER       0x0001
  331 
  332 struct acx_conf_wep_txkey {
  333         struct acx_conf confcom;
  334         uint8_t         wep_txkey;
  335 } __packed;
  336 
  337 
  338 struct acx_tmplt_null_data {
  339         uint16_t        size;
  340         struct ieee80211_frame data;
  341 } __packed;
  342 
  343 struct acx_tmplt_probe_req {
  344         uint16_t        size;
  345         union {
  346                 struct {
  347                         struct ieee80211_frame f;
  348                         uint8_t         var[1];
  349                 } __packed      u_data;
  350                 uint8_t         u_mem[0x44];
  351         }               data;
  352 } __packed;
  353 
  354 #define ACX_TMPLT_PROBE_REQ_SIZ(var_len)        \
  355         (sizeof(uint16_t) + sizeof(struct ieee80211_frame) + (var_len))
  356 
  357 struct acx_tmplt_probe_resp {
  358         uint16_t        size;
  359         union {
  360                 struct {
  361                         struct ieee80211_frame f;
  362                         uint8_t         time_stamp[8];
  363                         uint16_t        beacon_intvl;
  364                         uint16_t        cap;
  365                         uint8_t         var[1];
  366                 } __packed      u_data;
  367                 uint8_t         u_mem[0x54];
  368         }               data;
  369 } __packed;
  370 
  371 #define ACX_TMPLT_PROBE_RESP_SIZ(var_len)                               \
  372         (sizeof(uint16_t) + sizeof(struct ieee80211_frame) +            \
  373          8 * sizeof(uint8_t) + sizeof(uint16_t) + sizeof(uint16_t) + (var_len))
  374 
  375 /* XXX same as acx_tmplt_probe_resp */
  376 struct acx_tmplt_beacon {
  377         uint16_t        size;
  378         union {
  379                 struct {
  380                         struct ieee80211_frame f;
  381                         uint8_t         time_stamp[8];
  382                         uint16_t        beacon_intvl;
  383                         uint16_t        cap;
  384                         uint8_t         var[1];
  385                 } __packed      u_data;
  386                 uint8_t         u_mem[0x54];
  387         }               data;
  388 } __packed;
  389 
  390 /* XXX C&P of ACX_TMPLT_PROVE_RESP_SIZ() */
  391 #define ACX_TMPLT_BEACON_SIZ(var_len)                                   \
  392         (sizeof(uint16_t) + sizeof(struct ieee80211_frame) +            \
  393          8 * sizeof(uint8_t) + sizeof(uint16_t) + sizeof(uint16_t) + (var_len))
  394 
  395 /* XXX do NOT belong here */
  396 struct tim_head {
  397         uint8_t eid;
  398         uint8_t len;
  399         uint8_t dtim_count;
  400         uint8_t dtim_period;
  401         uint8_t bitmap_ctrl;
  402 } __packed;
  403 
  404 /* For tim_head.len (tim_head - eid - len + bitmap) */
  405 #define ACX_TIM_LEN(bitmap_len) \
  406         (sizeof(struct tim_head) - (2 * sizeof(uint8_t)) + (bitmap_len))
  407 #define ACX_TIM_BITMAP_LEN      1
  408 
  409 struct acx_tmplt_tim {
  410         uint16_t        size;
  411         union {
  412                 struct {
  413                         struct tim_head th;
  414                         uint8_t         bitmap[1];
  415                 } __packed      u_data;
  416                 uint8_t         u_mem[0x100];
  417         }               data;
  418 #define tim_eid         data.u_data.th.eid
  419 #define tim_len         data.u_data.th.len
  420 #define tim_dtim_count  data.u_data.th.dtim_count
  421 #define tim_dtim_period data.u_data.th.dtim_period
  422 #define tim_bitmap_ctrl data.u_data.th.bitmap_ctrl
  423 #define tim_bitmap      data.u_data.bitmap
  424 } __packed;
  425 
  426 #define ACX_TMPLT_TIM_SIZ(bitmap_len)   \
  427         (sizeof(uint16_t) + sizeof(struct tim_head) + (bitmap_len))
  428 
  429 #define CMDPRM_WRITE_REGION_1(sc, r, rlen)              \
  430         bus_space_write_region_1((sc)->sc_mem2_bt,      \
  431                                  (sc)->sc_mem2_bh,      \
  432                                  (sc)->sc_cmd_param,    \
  433                                  (const uint8_t *)(r), (rlen))
  434 
  435 #define CMDPRM_READ_REGION_1(sc, r, rlen)                               \
  436         bus_space_read_region_1((sc)->sc_mem2_bt, (sc)->sc_mem2_bh,     \
  437                                 (sc)->sc_cmd_param, (uint8_t *)(r), (rlen))
  438 
  439 /*
  440  * This will clear previous command's
  441  * execution status too
  442  */
  443 #define CMD_WRITE_4(sc, val)                                    \
  444         bus_space_write_4((sc)->sc_mem2_bt, (sc)->sc_mem2_bh,   \
  445                           (sc)->sc_cmd, (val))
  446 #define CMD_READ_4(sc)          \
  447         bus_space_read_4((sc)->sc_mem2_bt, (sc)->sc_mem2_bh, (sc)->sc_cmd)
  448 
  449 /*
  450  * acx command register layerout:
  451  * upper 16bits are command execution status
  452  * lower 16bits are command to be executed
  453  */
  454 #define ACX_CMD_STATUS_SHIFT    16
  455 #define ACX_CMD_STATUS_OK       1
  456 
  457 struct radio_init {
  458         uint32_t        radio_ofs;      /* radio firmware offset */
  459         uint32_t        radio_len;      /* radio firmware length */
  460 } __packed;
  461 
  462 struct bss_join_hdr {
  463         uint8_t         bssid[IEEE80211_ADDR_LEN];
  464         uint16_t        beacon_intvl;
  465         uint8_t         chip_spec[3];
  466         uint8_t         ndata_txrate;   /* see ACX_NDATA_TXRATE_ */
  467         uint8_t         ndata_txopt;    /* see ACX_NDATA_TXOPT_ */
  468         uint8_t         mode;           /* see ACX_MODE_ */
  469         uint8_t         channel;
  470         uint8_t         esslen;
  471         char            essid[1];
  472 } __packed;
  473 
  474 /*
  475  * non-data frame tx rate
  476  */
  477 #define ACX_NDATA_TXRATE_1              10      /* 1Mbits/s */
  478 #define ACX_NDATA_TXRATE_2              20      /* 2Mbits/s */
  479 
  480 /*
  481  * non-data frame tx options
  482  */
  483 #define ACX_NDATA_TXOPT_PBCC            0x40
  484 #define ACX_NDATA_TXOPT_OFDM            0x20
  485 #define ACX_NDATA_TXOPT_SHORT_PREAMBLE  0x10
  486 
  487 #define BSS_JOIN_BUFLEN         \
  488         (sizeof(struct bss_join_hdr) + IEEE80211_NWID_LEN - 1)
  489 #define BSS_JOIN_PARAM_SIZE(bj) \
  490         (sizeof(struct bss_join_hdr) + (bj)->esslen - 1)
  491 
  492 
  493 #define PCIR_BAR(x)     (PCI_MAPS + (x) * 4)
  494 
  495 #endif  /* !_ACXREG_H */

Cache object: 670ad86a7ae85802e5ff2a4014de1db6


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.