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/mwl/mwlreg.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 /*-
    2  * Copyright (c) 2007-2009 Sam Leffler, Errno Consulting
    3  * Copyright (c) 2007-2009 Marvell Semiconductor, Inc.
    4  * All rights reserved.
    5  *
    6  * Redistribution and use in source and binary forms, with or without
    7  * modification, are permitted provided that the following conditions
    8  * are met:
    9  * 1. Redistributions of source code must retain the above copyright
   10  *    notice, this list of conditions and the following disclaimer,
   11  *    without modification.
   12  * 2. Redistributions in binary form must reproduce at minimum a disclaimer
   13  *    similar to the "NO WARRANTY" disclaimer below ("Disclaimer") and any
   14  *    redistribution must be conditioned upon including a substantially
   15  *    similar Disclaimer requirement for further binary redistribution.
   16  *
   17  * NO WARRANTY
   18  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
   19  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
   20  * LIMITED TO, THE IMPLIED WARRANTIES OF NONINFRINGEMENT, MERCHANTIBILITY
   21  * AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
   22  * THE COPYRIGHT HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY,
   23  * OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
   24  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
   25  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
   26  * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
   27  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
   28  * THE POSSIBILITY OF SUCH DAMAGES.
   29  *
   30  * $FreeBSD: releng/8.2/sys/dev/mwl/mwlreg.h 195171 2009-06-29 18:42:54Z sam $
   31  */
   32 
   33 /*
   34  * Definitions for the Marvell Wireless LAN controller Hardware Access Layer.
   35  */
   36 #ifndef _MWL_HALREG_H_
   37 #define _MWL_HALREG_H_
   38 
   39 #define MWL_ANT_INFO_SUPPORT            /* per-antenna data in rx descriptor */
   40 
   41 #define MACREG_REG_TSF_LOW      0xa600          /* TSF lo */
   42 #define MACREG_REG_TSF_HIGH     0xa604          /* TSF hi */
   43 #define MACREG_REG_CHIP_REV     0xa814          /* chip rev */
   44 
   45 //          Map to 0x80000000 (Bus control) on BAR0
   46 #define MACREG_REG_H2A_INTERRUPT_EVENTS         0x00000C18 // (From host to ARM)
   47 #define MACREG_REG_H2A_INTERRUPT_CAUSE          0x00000C1C // (From host to ARM)
   48 #define MACREG_REG_H2A_INTERRUPT_MASK           0x00000C20 // (From host to ARM)
   49 #define MACREG_REG_H2A_INTERRUPT_CLEAR_SEL      0x00000C24 // (From host to ARM)
   50 #define MACREG_REG_H2A_INTERRUPT_STATUS_MASK    0x00000C28 // (From host to ARM)
   51 
   52 #define MACREG_REG_A2H_INTERRUPT_EVENTS         0x00000C2C // (From ARM to host)
   53 #define MACREG_REG_A2H_INTERRUPT_CAUSE          0x00000C30 // (From ARM to host)
   54 #define MACREG_REG_A2H_INTERRUPT_MASK           0x00000C34 // (From ARM to host)
   55 #define MACREG_REG_A2H_INTERRUPT_CLEAR_SEL      0x00000C38 // (From ARM to host)
   56 #define MACREG_REG_A2H_INTERRUPT_STATUS_MASK    0x00000C3C // (From ARM to host)
   57 
   58 
   59 //  Map to 0x80000000 on BAR1
   60 #define MACREG_REG_GEN_PTR                  0x00000C10
   61 #define MACREG_REG_INT_CODE                 0x00000C14
   62 #define MACREG_REG_SCRATCH                  0x00000C40
   63 #define MACREG_REG_FW_PRESENT           0x0000BFFC
   64 
   65 #define MACREG_REG_PROMISCUOUS          0xA300
   66 
   67 //      Bit definitio for MACREG_REG_A2H_INTERRUPT_CAUSE (A2HRIC)
   68 #define MACREG_A2HRIC_BIT_TX_DONE       0x00000001 // bit 0
   69 #define MACREG_A2HRIC_BIT_RX_RDY        0x00000002 // bit 1
   70 #define MACREG_A2HRIC_BIT_OPC_DONE      0x00000004 // bit 2
   71 #define MACREG_A2HRIC_BIT_MAC_EVENT     0x00000008 // bit 3
   72 #define MACREG_A2HRIC_BIT_RX_PROBLEM    0x00000010 // bit 4
   73 
   74 #define MACREG_A2HRIC_BIT_RADIO_OFF     0x00000020 // bit 5
   75 #define MACREG_A2HRIC_BIT_RADIO_ON      0x00000040 // bit 6
   76 
   77 #define MACREG_A2HRIC_BIT_RADAR_DETECT  0x00000080 // bit 7
   78 
   79 #define MACREG_A2HRIC_BIT_ICV_ERROR     0x00000100 // bit 8
   80 #define MACREG_A2HRIC_BIT_MIC_ERROR     0x00000200 // bit 9
   81 #define MACREG_A2HRIC_BIT_QUEUE_EMPTY   0x00004000
   82 #define MACREG_A2HRIC_BIT_QUEUE_FULL    0x00000800
   83 #define MACREG_A2HRIC_BIT_CHAN_SWITCH   0x00001000
   84 #define MACREG_A2HRIC_BIT_TX_WATCHDOG   0x00002000
   85 #define MACREG_A2HRIC_BIT_BA_WATCHDOG   0x00000400
   86 #define MACREQ_A2HRIC_BIT_TX_ACK        0x00008000
   87 #define ISR_SRC_BITS        ((MACREG_A2HRIC_BIT_RX_RDY)   | \
   88                              (MACREG_A2HRIC_BIT_TX_DONE)  | \
   89                              (MACREG_A2HRIC_BIT_OPC_DONE) | \
   90                              (MACREG_A2HRIC_BIT_MAC_EVENT)| \
   91                              (MACREG_A2HRIC_BIT_MIC_ERROR)| \
   92                              (MACREG_A2HRIC_BIT_ICV_ERROR)| \
   93                              (MACREG_A2HRIC_BIT_RADAR_DETECT)| \
   94                              (MACREG_A2HRIC_BIT_CHAN_SWITCH)| \
   95                              (MACREG_A2HRIC_BIT_TX_WATCHDOG)| \
   96                              (MACREG_A2HRIC_BIT_QUEUE_EMPTY)| \
   97                              (MACREG_A2HRIC_BIT_BA_WATCHDOG)| \
   98                              (MACREQ_A2HRIC_BIT_TX_ACK))
   99 
  100 #define MACREG_A2HRIC_BIT_MASK      ISR_SRC_BITS                             
  101 
  102 
  103 //      Bit definitio for MACREG_REG_H2A_INTERRUPT_CAUSE (H2ARIC)
  104 #define MACREG_H2ARIC_BIT_PPA_READY     0x00000001 // bit 0
  105 #define MACREG_H2ARIC_BIT_DOOR_BELL     0x00000002 // bit 1
  106 #define ISR_RESET                                       (1<<15)
  107 
  108 //      INT code register event definition
  109 #define MACREG_INT_CODE_CMD_FINISHED        0x00000005
  110 
  111 /*
  112  * Host/Firmware Interface definitions.
  113  */
  114 
  115 /**
  116  * Define total number of TX queues in the shared memory.
  117  * This count includes the EDCA queues, Block Ack queues, and HCCA queues
  118  * In addition to this, there could be a management packet queue some 
  119  * time in the future
  120  */
  121 #define NUM_EDCA_QUEUES         4
  122 #define NUM_HCCA_QUEUES         0
  123 #define NUM_BA_QUEUES           0
  124 #define NUM_MGMT_QUEUES         0
  125 #define NUM_ACK_EVENT_QUEUE     1
  126 #define TOTAL_TX_QUEUES \
  127         (NUM_EDCA_QUEUES + NUM_HCCA_QUEUES + NUM_BA_QUEUES + NUM_MGMT_QUEUES + NUM_ACK_EVENT_QUEUE)
  128 #define MAX_TXWCB_QUEUES        TOTAL_TX_QUEUES - NUM_ACK_EVENT_QUEUE
  129 #define MAX_RXWCB_QUEUES        1
  130 
  131 //=============================================================================
  132 //          PUBLIC DEFINITIONS
  133 //=============================================================================
  134 
  135 #define RATE_INDEX_MAX_ARRAY        14
  136 #define WOW_MAX_STATION         32
  137 
  138 /*
  139  * Hardware tx/rx descriptors.
  140  *
  141  * NB: tx descriptor size must match f/w expected size
  142  * because f/w prefetch's the next descriptor linearly
  143  * and doesn't chase the next pointer.
  144  */
  145 struct mwl_txdesc {
  146         uint32_t        Status;
  147 #define EAGLE_TXD_STATUS_IDLE           0x00000000
  148 #define EAGLE_TXD_STATUS_USED           0x00000001 
  149 #define EAGLE_TXD_STATUS_OK             0x00000001
  150 #define EAGLE_TXD_STATUS_OK_RETRY       0x00000002
  151 #define EAGLE_TXD_STATUS_OK_MORE_RETRY  0x00000004
  152 #define EAGLE_TXD_STATUS_MULTICAST_TX   0x00000008
  153 #define EAGLE_TXD_STATUS_BROADCAST_TX   0x00000010
  154 #define EAGLE_TXD_STATUS_FAILED_LINK_ERROR              0x00000020
  155 #define EAGLE_TXD_STATUS_FAILED_EXCEED_LIMIT            0x00000040
  156 #define EAGLE_TXD_STATUS_FAILED_XRETRY  EAGLE_TXD_STATUS_FAILED_EXCEED_LIMIT
  157 #define EAGLE_TXD_STATUS_FAILED_AGING   0x00000080
  158 #define EAGLE_TXD_STATUS_FW_OWNED       0x80000000
  159         uint8_t         DataRate;
  160         uint8_t         TxPriority;
  161         uint16_t        QosCtrl;
  162         uint32_t        PktPtr;
  163         uint16_t        PktLen;
  164         uint8_t         DestAddr[6];
  165         uint32_t        pPhysNext;
  166         uint32_t        SapPktInfo;
  167 #define EAGLE_TXD_MODE_BONLY    1
  168 #define EAGLE_TXD_MODE_GONLY    2
  169 #define EAGLE_TXD_MODE_BG       3
  170 #define EAGLE_TXD_MODE_NONLY    4
  171 #define EAGLE_TXD_MODE_BN       5
  172 #define EAGLE_TXD_MODE_GN       6
  173 #define EAGLE_TXD_MODE_BGN      7
  174 #define EAGLE_TXD_MODE_AONLY    8
  175 #define EAGLE_TXD_MODE_AG       10
  176 #define EAGLE_TXD_MODE_AN       12
  177         uint16_t        Format;
  178 #define EAGLE_TXD_FORMAT        0x0001  /* frame format/rate */
  179 #define EAGLE_TXD_FORMAT_LEGACY 0x0000  /* legacy rate frame */
  180 #define EAGLE_TXD_FORMAT_HT     0x0001  /* HT rate frame */
  181 #define EAGLE_TXD_GI            0x0002  /* guard interval */
  182 #define EAGLE_TXD_GI_SHORT      0x0002  /* short guard interval */
  183 #define EAGLE_TXD_GI_LONG       0x0000  /* long guard interval */
  184 #define EAGLE_TXD_CHW           0x0004  /* channel width */
  185 #define EAGLE_TXD_CHW_20        0x0000  /* 20MHz channel width */
  186 #define EAGLE_TXD_CHW_40        0x0004  /* 40MHz channel width */
  187 #define EAGLE_TXD_RATE          0x01f8  /* tx rate (legacy)/ MCS */
  188 #define EAGLE_TXD_RATE_S        3
  189 #define EAGLE_TXD_ADV           0x0600  /* advanced coding */
  190 #define EAGLE_TXD_ADV_S         9
  191 #define EAGLE_TXD_ADV_NONE      0x0000
  192 #define EAGLE_TXD_ADV_LDPC      0x0200
  193 #define EAGLE_TXD_ADV_RS        0x0400
  194 /* NB: 3 is reserved */
  195 #define EAGLE_TXD_ANTENNA       0x1800  /* antenna select */
  196 #define EAGLE_TXD_ANTENNA_S     11
  197 #define EAGLE_TXD_EXTCHAN       0x6000  /* extension channel */
  198 #define EAGLE_TXD_EXTCHAN_S     13
  199 #define EAGLE_TXD_EXTCHAN_HI    0x0000  /* above */
  200 #define EAGLE_TXD_EXTCHAN_LO    0x2000  /* below */
  201 #define EAGLE_TXD_PREAMBLE      0x8000
  202 #define EAGLE_TXD_PREAMBLE_SHORT 0x8000 /* short preamble */
  203 #define EAGLE_TXD_PREAMBLE_LONG 0x0000  /* long preamble */
  204         uint16_t        pad;            /* align to 4-byte boundary */
  205 #define EAGLE_TXD_FIXED_RATE    0x0100  /* get tx rate from Format */
  206 #define EAGLE_TXD_DONT_AGGR     0x0200  /* don't aggregate frame */
  207         uint32_t        ack_wcb_addr;
  208 } __packed;
  209 
  210 struct mwl_ant_info {
  211         uint8_t         rssi_a; /* RSSI for antenna A */
  212         uint8_t         rssi_b; /* RSSI for antenna B */
  213         uint8_t         rssi_c; /* RSSI for antenna C */
  214         uint8_t         rsvd1;  /* Reserved */
  215         uint8_t         nf_a;   /* Noise floor for antenna A */
  216         uint8_t         nf_b;   /* Noise floor for antenna B */
  217         uint8_t         nf_c;   /* Noise floor for antenna C */
  218         uint8_t         rsvd2;  /* Reserved */
  219         uint8_t         nf;             /* Noise floor */
  220         uint8_t         rsvd3[3];   /* Reserved - To make word aligned */
  221 } __packed;
  222 
  223 struct mwl_rxdesc {
  224         uint8_t         RxControl;      /* control element */
  225 #define EAGLE_RXD_CTRL_DRIVER_OWN       0x00
  226 #define EAGLE_RXD_CTRL_OS_OWN           0x04
  227 #define EAGLE_RXD_CTRL_DMA_OWN          0x80
  228         uint8_t         RSSI;           /* received signal strengt indication */
  229         uint8_t         Status;         /* status field w/ USED bit */
  230 #define EAGLE_RXD_STATUS_IDLE           0x00
  231 #define EAGLE_RXD_STATUS_OK             0x01
  232 #define EAGLE_RXD_STATUS_MULTICAST_RX   0x02
  233 #define EAGLE_RXD_STATUS_BROADCAST_RX   0x04
  234 #define EAGLE_RXD_STATUS_FRAGMENT_RX    0x08
  235 #define EAGLE_RXD_STATUS_GENERAL_DECRYPT_ERR    0xff
  236 #define EAGLE_RXD_STATUS_DECRYPT_ERR_MASK       0x80
  237 #define EAGLE_RXD_STATUS_TKIP_MIC_DECRYPT_ERR   0x02
  238 #define EAGLE_RXD_STATUS_WEP_ICV_DECRYPT_ERR    0x04
  239 #define EAGLE_RXD_STATUS_TKIP_ICV_DECRYPT_ERR   0x08
  240         uint8_t         Channel;        /* channel # pkt received on */
  241         uint16_t        PktLen;         /* total length of received data */
  242         uint8_t         SQ2;            /* not used */
  243         uint8_t         Rate;           /* received data rate */
  244         uint32_t        pPhysBuffData;  /* physical address of payload data */
  245         uint32_t        pPhysNext;      /* physical address of next RX desc */ 
  246         uint16_t        QosCtrl;        /* received QosCtrl field variable */
  247         uint16_t        HtSig2;         /* like name states */
  248 #ifdef MWL_ANT_INFO_SUPPORT
  249         struct mwl_ant_info ai;         /* antenna info */
  250 #endif
  251 } __packed;
  252 
  253 /*
  254 //          Define OpMode for SoftAP/Station mode
  255 //
  256 //  The following mode signature has to be written to PCI scratch register#0
  257 //  right after successfully downloading the last block of firmware and
  258 //  before waiting for firmware ready signature
  259  */
  260 #define HostCmd_STA_MODE     0x5A
  261 #define HostCmd_SOFTAP_MODE  0xA5
  262 
  263 #define HostCmd_STA_FWRDY_SIGNATURE     0xF0F1F2F4
  264 #define HostCmd_SOFTAP_FWRDY_SIGNATURE  0xF1F2F4A5
  265 
  266 //***************************************************************************
  267 //***************************************************************************
  268 
  269 //***************************************************************************
  270 
  271 #define HostCmd_CMD_CODE_DNLD                   0x0001
  272 #define HostCmd_CMD_GET_HW_SPEC                 0x0003
  273 #define HostCmd_CMD_SET_HW_SPEC                 0x0004
  274 #define HostCmd_CMD_MAC_MULTICAST_ADR           0x0010
  275 #define HostCmd_CMD_802_11_GET_STAT             0x0014
  276 #define HostCmd_CMD_MAC_REG_ACCESS              0x0019
  277 #define HostCmd_CMD_BBP_REG_ACCESS              0x001a
  278 #define HostCmd_CMD_RF_REG_ACCESS               0x001b
  279 #define HostCmd_CMD_802_11_RADIO_CONTROL        0x001c
  280 #define HostCmd_CMD_802_11_RF_TX_POWER          0x001e
  281 #define HostCmd_CMD_802_11_RF_ANTENNA           0x0020
  282 #define HostCmd_CMD_SET_BEACON                  0x0100
  283 #define HostCmd_CMD_SET_AID                     0x010d
  284 #define HostCmd_CMD_SET_RF_CHANNEL              0x010a
  285 #define HostCmd_CMD_SET_INFRA_MODE              0x010e
  286 #define HostCmd_CMD_SET_G_PROTECT_FLAG          0x010f
  287 #define HostCmd_CMD_802_11_RTS_THSD             0x0113
  288 #define HostCmd_CMD_802_11_SET_SLOT             0x0114
  289 
  290 #define HostCmd_CMD_802_11H_DETECT_RADAR        0x0120
  291 #define HostCmd_CMD_SET_WMM_MODE                0x0123
  292 #define HostCmd_CMD_HT_GUARD_INTERVAL           0x0124
  293 #define HostCmd_CMD_SET_FIXED_RATE              0x0126 
  294 #define HostCmd_CMD_SET_LINKADAPT_CS_MODE       0x0129
  295 #define HostCmd_CMD_SET_MAC_ADDR                0x0202
  296 #define HostCmd_CMD_SET_RATE_ADAPT_MODE         0x0203
  297 #define HostCmd_CMD_GET_WATCHDOG_BITMAP         0x0205
  298 
  299 //SoftAP command code
  300 #define HostCmd_CMD_BSS_START                   0x1100  
  301 #define HostCmd_CMD_SET_NEW_STN                 0x1111
  302 #define HostCmd_CMD_SET_KEEP_ALIVE              0x1112
  303 #define HostCmd_CMD_SET_APMODE                  0x1114
  304 #define HostCmd_CMD_SET_SWITCH_CHANNEL          0x1121
  305 
  306 /*
  307         @HWENCR@
  308         Command to update firmware encryption keys.
  309 */
  310 #define HostCmd_CMD_UPDATE_ENCRYPTION           0x1122
  311 /*
  312         @11E-BA@
  313         Command to create/destroy block ACK
  314 */
  315 #define HostCmd_CMD_BASTREAM                    0x1125
  316 #define HostCmd_CMD_SET_RIFS                    0x1126
  317 #define HostCmd_CMD_SET_N_PROTECT_FLAG          0x1131
  318 #define HostCmd_CMD_SET_N_PROTECT_OPMODE        0x1132
  319 #define HostCmd_CMD_SET_OPTIMIZATION_LEVEL      0x1133
  320 #define HostCmd_CMD_GET_CALTABLE                0x1134
  321 #define HostCmd_CMD_SET_MIMOPSHT                0x1135
  322 #define HostCmd_CMD_GET_BEACON                  0x1138
  323 #define HostCmd_CMD_SET_REGION_CODE            0x1139
  324 #define HostCmd_CMD_SET_POWERSAVESTATION        0x1140
  325 #define HostCmd_CMD_SET_TIM                     0x1141
  326 #define HostCmd_CMD_GET_TIM                     0x1142
  327 #define HostCmd_CMD_GET_SEQNO                   0x1143
  328 #define HostCmd_CMD_DWDS_ENABLE                 0x1144
  329 #define HostCmd_CMD_AMPDU_RETRY_RATEDROP_MODE   0x1145
  330 #define HostCmd_CMD_CFEND_ENABLE                0x1146
  331 
  332 /*
  333 //          Define general result code for each command
  334  */
  335 #define HostCmd_RESULT_OK                       0x0000 // OK
  336 #define HostCmd_RESULT_ERROR                    0x0001 // Genenral error
  337 #define HostCmd_RESULT_NOT_SUPPORT              0x0002 // Command is not valid
  338 #define HostCmd_RESULT_PENDING                  0x0003 // Command is pending (will be processed)
  339 #define HostCmd_RESULT_BUSY                     0x0004 // System is busy (command ignored)
  340 #define HostCmd_RESULT_PARTIAL_DATA             0x0005 // Data buffer is not big enough
  341 
  342 
  343 /*
  344 //          Definition of action or option for each command
  345 //
  346 //          Define general purpose action
  347  */
  348 #define HostCmd_ACT_GEN_READ                    0x0000
  349 #define HostCmd_ACT_GEN_WRITE                   0x0001
  350 #define HostCmd_ACT_GEN_GET                     0x0000
  351 #define HostCmd_ACT_GEN_SET                     0x0001
  352 #define HostCmd_ACT_GEN_OFF                     0x0000
  353 #define HostCmd_ACT_GEN_ON                      0x0001
  354 
  355 #define HostCmd_ACT_DIFF_CHANNEL                0x0002
  356 #define HostCmd_ACT_GEN_SET_LIST                0x0002
  357 
  358 //          Define action or option for HostCmd_FW_USE_FIXED_RATE
  359 #define HostCmd_ACT_USE_FIXED_RATE              0x0001
  360 #define HostCmd_ACT_NOT_USE_FIXED_RATE          0x0002
  361 
  362 //          Define action or option for HostCmd_CMD_802_11_SET_WEP
  363 //#define HostCmd_ACT_ENABLE                    0x0001 // Use MAC control for WEP on/off
  364 //#define HostCmd_ACT_DISABLE                   0x0000
  365 #define HostCmd_ACT_ADD                         0x0002
  366 #define HostCmd_ACT_REMOVE                      0x0004
  367 #define HostCmd_ACT_USE_DEFAULT                 0x0008
  368 
  369 #define HostCmd_TYPE_WEP_40_BIT                 0x0001 // 40 bit
  370 #define HostCmd_TYPE_WEP_104_BIT                0x0002 // 104 bit
  371 #define HostCmd_TYPE_WEP_128_BIT                0x0003 // 128 bit
  372 #define HostCmd_TYPE_WEP_TX_KEY                 0x0004 // TX WEP
  373 
  374 #define HostCmd_NUM_OF_WEP_KEYS                 4
  375 
  376 #define HostCmd_WEP_KEY_INDEX_MASK              0x3fffffff
  377 
  378 
  379 //          Define action or option for HostCmd_CMD_802_11_RESET
  380 #define HostCmd_ACT_HALT                        0x0001
  381 #define HostCmd_ACT_RESTART                     0x0002
  382 
  383 //          Define action or option for HostCmd_CMD_802_11_RADIO_CONTROL 
  384 #define HostCmd_TYPE_AUTO_PREAMBLE              0x0001
  385 #define HostCmd_TYPE_SHORT_PREAMBLE             0x0002
  386 #define HostCmd_TYPE_LONG_PREAMBLE              0x0003
  387 
  388 //          Define action or option for CMD_802_11_RF_CHANNEL
  389 #define HostCmd_TYPE_802_11A                    0x0001
  390 #define HostCmd_TYPE_802_11B                    0x0002
  391 
  392 //          Define action or option for HostCmd_CMD_802_11_RF_TX_POWER
  393 #define HostCmd_ACT_TX_POWER_OPT_SET_HIGH       0x0003
  394 #define HostCmd_ACT_TX_POWER_OPT_SET_MID        0x0002
  395 #define HostCmd_ACT_TX_POWER_OPT_SET_LOW        0x0001
  396 #define HostCmd_ACT_TX_POWER_OPT_SET_AUTO        0x0000
  397 
  398 #define HostCmd_ACT_TX_POWER_LEVEL_MIN          0x000e // in dbm
  399 #define HostCmd_ACT_TX_POWER_LEVEL_GAP          0x0001 // in dbm
  400 //          Define action or option for HostCmd_CMD_802_11_DATA_RATE 
  401 #define HostCmd_ACT_SET_TX_AUTO                 0x0000
  402 #define HostCmd_ACT_SET_TX_FIX_RATE             0x0001
  403 #define HostCmd_ACT_GET_TX_RATE                 0x0002
  404 
  405 #define HostCmd_ACT_SET_RX                      0x0001
  406 #define HostCmd_ACT_SET_TX                      0x0002
  407 #define HostCmd_ACT_SET_BOTH                    0x0003
  408 #define HostCmd_ACT_GET_RX                      0x0004
  409 #define HostCmd_ACT_GET_TX                      0x0008
  410 #define HostCmd_ACT_GET_BOTH                    0x000c
  411 
  412 #define TYPE_ANTENNA_DIVERSITY                  0xffff
  413 
  414 //          Define action or option for HostCmd_CMD_802_11_PS_MODE 
  415 #define HostCmd_TYPE_CAM                        0x0000
  416 #define HostCmd_TYPE_MAX_PSP                    0x0001
  417 #define HostCmd_TYPE_FAST_PSP                   0x0002
  418 
  419 #define HostCmd_CMD_SET_EDCA_PARAMS             0x0115
  420 
  421 //=============================================================================
  422 //                      HOST COMMAND DEFINITIONS
  423 //=============================================================================
  424 
  425 //
  426 //          Definition of data structure for each command
  427 //
  428 //          Define general data structure
  429 typedef struct {
  430     uint16_t     Cmd;
  431     uint16_t     Length;
  432 #ifdef MWL_MBSS_SUPPORT
  433     uint8_t      SeqNum;
  434     uint8_t      MacId;
  435 #else
  436     uint16_t     SeqNum;
  437 #endif
  438     uint16_t     Result; 
  439 } __packed FWCmdHdr;  
  440 
  441 typedef struct {
  442     FWCmdHdr    CmdHdr;
  443     uint8_t     Version;                // HW revision
  444     uint8_t     HostIf;                 // Host interface
  445     uint16_t    NumOfMCastAdr;          // Max. number of Multicast address FW can handle
  446     uint8_t     PermanentAddr[6];       // MAC address
  447     uint16_t    RegionCode;             // Region Code
  448     uint32_t    FWReleaseNumber;        // 4 byte of FW release number
  449     uint32_t    ulFwAwakeCookie;        // Firmware awake cookie
  450     uint32_t    DeviceCaps;             // Device capabilities (see above)
  451     uint32_t    RxPdWrPtr;              // Rx shared memory queue
  452     uint32_t    NumTxQueues;            // # TX queues in WcbBase array
  453     uint32_t    WcbBase[MAX_TXWCB_QUEUES];      // TX WCB Rings
  454     uint32_t    Flags;
  455 #define SET_HW_SPEC_DISABLEMBSS         0x08
  456 #define SET_HW_SPEC_HOSTFORM_BEACON     0x10
  457 #define SET_HW_SPEC_HOSTFORM_PROBERESP  0x20
  458 #define SET_HW_SPEC_HOST_POWERSAVE      0x40
  459 #define SET_HW_SPEC_HOSTENCRDECR_MGMT   0x80
  460     uint32_t    TxWcbNumPerQueue;
  461     uint32_t    TotalRxWcb;
  462 } __packed HostCmd_DS_SET_HW_SPEC;
  463 
  464 typedef struct {
  465     FWCmdHdr    CmdHdr;
  466     u_int8_t    Version;          /* version of the HW                    */
  467     u_int8_t    HostIf;           /* host interface                       */
  468     u_int16_t   NumOfWCB;         /* Max. number of WCB FW can handle     */
  469     u_int16_t   NumOfMCastAddr;   /* MaxNbr of MC addresses FW can handle */
  470     u_int8_t    PermanentAddr[6]; /* MAC address programmed in HW         */
  471     u_int16_t   RegionCode;         
  472     u_int16_t   NumberOfAntenna;  /* Number of antenna used      */
  473     u_int32_t   FWReleaseNumber;  /* 4 byte of FW release number */
  474     u_int32_t   WcbBase0;
  475     u_int32_t   RxPdWrPtr;
  476     u_int32_t   RxPdRdPtr;
  477     u_int32_t   ulFwAwakeCookie;
  478     u_int32_t   WcbBase1[TOTAL_TX_QUEUES-1];
  479 } __packed HostCmd_DS_GET_HW_SPEC;
  480 
  481 typedef struct {
  482     FWCmdHdr    CmdHdr;
  483     u_int32_t   Enable;   /* FALSE: Disable or TRUE: Enable */
  484 } __packed HostCmd_DS_BSS_START;
  485 
  486 
  487 typedef struct {
  488     u_int8_t    ElemId;
  489     u_int8_t    Len;
  490     u_int8_t    OuiType[4]; /* 00:50:f2:01 */
  491     u_int8_t    Ver[2];
  492     u_int8_t    GrpKeyCipher[4];
  493     u_int8_t    PwsKeyCnt[2];
  494     u_int8_t    PwsKeyCipherList[4];
  495     u_int8_t    AuthKeyCnt[2];
  496     u_int8_t    AuthKeyList[4];
  497 } __packed RsnIE_t;
  498 
  499 typedef struct {
  500     u_int8_t    ElemId;
  501     u_int8_t    Len;
  502     u_int8_t    Ver[2];
  503     u_int8_t    GrpKeyCipher[4];
  504     u_int8_t    PwsKeyCnt[2];
  505     u_int8_t    PwsKeyCipherList[4];
  506     u_int8_t    AuthKeyCnt[2];
  507     u_int8_t    AuthKeyList[4];
  508     u_int8_t    RsnCap[2];
  509 } __packed Rsn48IE_t;
  510 
  511 typedef struct {
  512     u_int8_t    ElementId;
  513     u_int8_t    Len;
  514     u_int8_t    CfpCnt;
  515     u_int8_t    CfpPeriod;
  516     u_int16_t   CfpMaxDuration;
  517     u_int16_t   CfpDurationRemaining;
  518 } __packed CfParams_t;
  519 
  520 typedef struct {
  521     u_int8_t    ElementId;
  522     u_int8_t    Len;
  523     u_int16_t   AtimWindow;
  524 } __packed IbssParams_t;
  525 
  526 typedef union {
  527     CfParams_t   CfParamSet;
  528     IbssParams_t IbssParamSet;
  529 } __packed SsParams_t;
  530 
  531 typedef struct {
  532     u_int8_t    ElementId;
  533     u_int8_t    Len;
  534     u_int16_t   DwellTime;
  535     u_int8_t    HopSet;
  536     u_int8_t    HopPattern;
  537     u_int8_t    HopIndex;
  538 } __packed FhParams_t;
  539 
  540 typedef struct {
  541     u_int8_t    ElementId;
  542     u_int8_t    Len;
  543     u_int8_t    CurrentChan;
  544 } __packed DsParams_t;
  545 
  546 typedef union {
  547     FhParams_t  FhParamSet;
  548     DsParams_t  DsParamSet;
  549 } __packed PhyParams_t;
  550 
  551 typedef struct {
  552     u_int8_t    FirstChannelNum;
  553     u_int8_t    NumOfChannels;
  554     u_int8_t    MaxTxPwrLevel;
  555 } __packed ChannelInfo_t;
  556 
  557 typedef struct {
  558     u_int8_t       ElementId;
  559     u_int8_t       Len;
  560     u_int8_t       CountryStr[3];
  561     ChannelInfo_t  ChannelInfo[40];
  562 } __packed Country_t;
  563 
  564 typedef struct {
  565     u_int8_t AIFSN : 4;
  566     u_int8_t ACM : 1;
  567     u_int8_t ACI : 2;
  568     u_int8_t rsvd : 1;
  569 
  570 }__packed ACIAIFSN_field_t;
  571 
  572 typedef  struct {
  573     u_int8_t ECW_min : 4;
  574     u_int8_t ECW_max : 4;
  575 }__packed  ECWmin_max_field_t;
  576 
  577 typedef struct {
  578     ACIAIFSN_field_t ACI_AIFSN;
  579     ECWmin_max_field_t ECW_min_max;
  580     u_int16_t TXOP_lim;
  581 }__packed  ACparam_rcd_t;
  582 
  583 typedef struct {
  584     u_int8_t    ElementId;
  585     u_int8_t    Len;
  586     u_int8_t    OUI[3];
  587     u_int8_t    Type;
  588     u_int8_t    Subtype;
  589     u_int8_t    version;
  590     u_int8_t    rsvd;
  591     ACparam_rcd_t AC_BE;
  592     ACparam_rcd_t AC_BK;
  593     ACparam_rcd_t AC_VI;
  594     ACparam_rcd_t AC_VO;
  595 } __packed WMM_param_elem_t ;
  596 
  597 typedef struct {
  598 #ifdef MWL_MBSS_SUPPORT
  599     u_int8_t    StaMacAddr[6];
  600 #endif
  601     u_int8_t    SsId[32];
  602     u_int8_t    BssType;
  603     u_int16_t   BcnPeriod;
  604     u_int8_t    DtimPeriod;
  605     SsParams_t  SsParamSet;
  606     PhyParams_t PhyParamSet;
  607     u_int16_t   ProbeDelay;
  608     u_int16_t   CapInfo;                /* see below */
  609     u_int8_t    BssBasicRateSet[14];
  610     u_int8_t    OpRateSet[14];
  611     RsnIE_t     RsnIE;
  612     Rsn48IE_t   Rsn48IE;
  613     WMM_param_elem_t  WMMParam;
  614     Country_t   Country;
  615     u_int32_t   ApRFType; /* 0->B, 1->G, 2->Mixed, 3->A, 4->11J */
  616 } __packed StartCmd_t;
  617 
  618 #define HostCmd_CAPINFO_DEFAULT                0x0000
  619 #define HostCmd_CAPINFO_ESS                    0x0001
  620 #define HostCmd_CAPINFO_IBSS                   0x0002
  621 #define HostCmd_CAPINFO_CF_POLLABLE            0x0004
  622 #define HostCmd_CAPINFO_CF_REQUEST             0x0008
  623 #define HostCmd_CAPINFO_PRIVACY                0x0010
  624 #define HostCmd_CAPINFO_SHORT_PREAMBLE         0x0020
  625 #define HostCmd_CAPINFO_PBCC                   0x0040
  626 #define HostCmd_CAPINFO_CHANNEL_AGILITY        0x0080
  627 #define HostCmd_CAPINFO_SHORT_SLOT             0x0400
  628 #define HostCmd_CAPINFO_DSSS_OFDM              0x2000
  629 
  630 typedef struct {
  631     FWCmdHdr    CmdHdr;
  632     StartCmd_t  StartCmd;
  633 } __packed HostCmd_DS_AP_BEACON;
  634 
  635 typedef struct {
  636     FWCmdHdr    CmdHdr;
  637     uint16_t    FrmBodyLen;
  638     uint8_t     FrmBody[1];             /* NB: variable length */
  639 } __packed HostCmd_DS_SET_BEACON;
  640 
  641 //          Define data structure for HostCmd_CMD_MAC_MULTICAST_ADR
  642 typedef struct {
  643    FWCmdHdr    CmdHdr;
  644    uint16_t      Action;
  645    uint16_t      NumOfAdrs;
  646 #define MWL_HAL_MCAST_MAX       32
  647    uint8_t       MACList[6*32];
  648 } __packed HostCmd_DS_MAC_MULTICAST_ADR;
  649 
  650 // Indicate to FW the current state of AP ERP info
  651 typedef struct {
  652    FWCmdHdr    CmdHdr;
  653    uint32_t      GProtectFlag;
  654 } __packed HostCmd_FW_SET_G_PROTECT_FLAG;
  655 
  656 typedef struct {
  657    FWCmdHdr    CmdHdr;
  658 } __packed HostCmd_FW_SET_INFRA_MODE;
  659 
  660 //          Define data structure for HostCmd_CMD_802_11_RF_CHANNEL
  661 typedef struct {
  662    FWCmdHdr    CmdHdr;
  663    uint16_t      Action;
  664    uint8_t       CurrentChannel;        /* channel # */
  665    uint32_t     ChannelFlags;           /* see below */
  666 } __packed HostCmd_FW_SET_RF_CHANNEL;
  667 
  668 /* bits 0-5 specify frequency band */
  669 #define FREQ_BAND_2DOT4GHZ      0x0001
  670 #define FREQ_BAND_4DOT9GHZ      0x0002  /* XXX not implemented */
  671 #define FREQ_BAND_5GHZ          0x0004
  672 #define FREQ_BAND_5DOT2GHZ      0x0008  /* XXX not implemented */
  673 /* bits 6-10 specify channel width */
  674 #define CH_AUTO_WIDTH           0x0000  /* XXX not used? */
  675 #define CH_10_MHz_WIDTH         0x0040
  676 #define CH_20_MHz_WIDTH         0x0080
  677 #define CH_40_MHz_WIDTH         0x0100
  678 /* bits 11-12 specify extension channel */
  679 #define EXT_CH_NONE             0x0000  /* no extension channel */
  680 #define EXT_CH_ABOVE_CTRL_CH    0x0800  /* extension channel above */
  681 #define EXT_CH_AUTO             0x1000  /* XXX not used? */
  682 #define EXT_CH_BELOW_CTRL_CH    0x1800  /* extension channel below */
  683 /* bits 13-31 are reserved */
  684 
  685 #define FIXED_RATE_WITH_AUTO_RATE_DROP           0
  686 #define FIXED_RATE_WITHOUT_AUTORATE_DROP        1
  687 
  688 #define LEGACY_RATE_TYPE   0
  689 #define HT_RATE_TYPE    1
  690 
  691 #define RETRY_COUNT_VALID   0 
  692 #define RETRY_COUNT_INVALID     1
  693 
  694 typedef  struct {
  695                                                         // lower rate after the retry count
  696     uint32_t   FixRateType;     //0: legacy, 1: HT
  697     uint32_t   RetryCountValid; //0: retry count is not valid, 1: use retry count specified
  698 } __packed FIX_RATE_FLAG;
  699 
  700 typedef  struct {
  701     FIX_RATE_FLAG FixRateTypeFlags;
  702     uint32_t    FixedRate;      // legacy rate(not index) or an MCS code.
  703     uint32_t    RetryCount;
  704 } __packed FIXED_RATE_ENTRY;
  705         
  706 typedef  struct {
  707     FWCmdHdr    CmdHdr;
  708     uint32_t    Action; //HostCmd_ACT_GEN_GET           0x0000
  709                         //HostCmd_ACT_GEN_SET           0x0001
  710                         //HostCmd_ACT_NOT_USE_FIXED_RATE 0x0002
  711     uint32_t    AllowRateDrop;  // use fixed rate specified but firmware can drop to 
  712     uint32_t    EntryCount;
  713     FIXED_RATE_ENTRY FixedRateTable[4];
  714     uint8_t     MulticastRate;
  715     uint8_t     MultiRateTxType;
  716     uint8_t     ManagementRate;
  717 } __packed HostCmd_FW_USE_FIXED_RATE;
  718 
  719 typedef struct {
  720     uint32_t    AllowRateDrop;   
  721     uint32_t    EntryCount;
  722     FIXED_RATE_ENTRY FixedRateTable[4];
  723 } __packed USE_FIXED_RATE_INFO;
  724  
  725 typedef struct {
  726    FWCmdHdr    CmdHdr;
  727    uint32_t    Action;
  728    uint32_t     GIType;  
  729 #define GI_TYPE_LONG    0x0001
  730 #define GI_TYPE_SHORT   0x0002
  731 } __packed HostCmd_FW_HT_GUARD_INTERVAL;
  732 
  733 typedef struct {
  734    FWCmdHdr     CmdHdr;
  735    uint32_t     Action; 
  736    uint8_t      RxAntennaMap;
  737    uint8_t      TxAntennaMap;
  738 } __packed HostCmd_FW_HT_MIMO_CONFIG;
  739 
  740 typedef struct {
  741    FWCmdHdr    CmdHdr;
  742    uint16_t    Action;
  743    uint8_t     Slot;   // Slot=0 if regular, Slot=1 if short.
  744 } __packed HostCmd_FW_SET_SLOT;
  745 
  746 
  747 //          Define data structure for HostCmd_CMD_802_11_GET_STAT
  748 typedef struct {
  749     FWCmdHdr    CmdHdr;
  750     uint32_t    TxRetrySuccesses;
  751     uint32_t    TxMultipleRetrySuccesses;
  752     uint32_t    TxFailures;
  753     uint32_t    RTSSuccesses;
  754     uint32_t    RTSFailures;
  755     uint32_t    AckFailures;
  756     uint32_t    RxDuplicateFrames;
  757     uint32_t    FCSErrorCount;
  758     uint32_t    TxWatchDogTimeouts;
  759     uint32_t    RxOverflows;            //used
  760     uint32_t    RxFragErrors;           //used
  761     uint32_t    RxMemErrors;            //used
  762     uint32_t    PointerErrors;          //used
  763     uint32_t    TxUnderflows;           //used
  764     uint32_t    TxDone;
  765     uint32_t    TxDoneBufTryPut;
  766     uint32_t    TxDoneBufPut;
  767     uint32_t    Wait4TxBuf;             // Put size of requested buffer in here
  768     uint32_t    TxAttempts;
  769     uint32_t    TxSuccesses;
  770     uint32_t    TxFragments;
  771     uint32_t    TxMulticasts;
  772     uint32_t    RxNonCtlPkts;
  773     uint32_t    RxMulticasts;
  774     uint32_t    RxUndecryptableFrames;
  775     uint32_t    RxICVErrors;
  776     uint32_t    RxExcludedFrames;
  777 } __packed HostCmd_DS_802_11_GET_STAT;
  778 
  779 
  780 //          Define data structure for HostCmd_CMD_MAC_REG_ACCESS
  781 typedef struct {
  782    FWCmdHdr    CmdHdr;
  783    uint16_t      Action;
  784    uint16_t      Offset;
  785    uint32_t      Value;
  786    uint16_t      Reserved;
  787 } __packed HostCmd_DS_MAC_REG_ACCESS;
  788 
  789 //          Define data structure for HostCmd_CMD_BBP_REG_ACCESS
  790 typedef struct {
  791    FWCmdHdr    CmdHdr;
  792    uint16_t      Action;
  793    uint16_t      Offset;
  794    uint8_t       Value;
  795    uint8_t       Reserverd[3];
  796 } __packed HostCmd_DS_BBP_REG_ACCESS;
  797 
  798 //          Define data structure for HostCmd_CMD_RF_REG_ACCESS
  799 typedef struct {
  800    FWCmdHdr    CmdHdr;
  801    uint16_t      Action;
  802    uint16_t      Offset;
  803    uint8_t       Value;
  804    uint8_t       Reserverd[3];
  805 } __packed HostCmd_DS_RF_REG_ACCESS;
  806 
  807 
  808 //          Define data structure for HostCmd_CMD_802_11_RADIO_CONTROL
  809 typedef struct {
  810    FWCmdHdr    CmdHdr;
  811    uint16_t      Action;                   
  812    uint16_t      Control;       // @bit0: 1/0,on/off, @bit1: 1/0, long/short @bit2: 1/0,auto/fix
  813    uint16_t      RadioOn;
  814 } __packed HostCmd_DS_802_11_RADIO_CONTROL;
  815 
  816 
  817 #define TX_POWER_LEVEL_TOTAL  8
  818 //          Define data structure for HostCmd_CMD_802_11_RF_TX_POWER
  819 typedef struct {
  820    FWCmdHdr    CmdHdr;
  821    uint16_t      Action;
  822    uint16_t      SupportTxPowerLevel;     
  823    uint16_t      CurrentTxPowerLevel;     
  824    uint16_t      Reserved;
  825    uint16_t      PowerLevelList[TX_POWER_LEVEL_TOTAL];
  826 } __packed HostCmd_DS_802_11_RF_TX_POWER;
  827 
  828 //          Define data structure for HostCmd_CMD_802_11_RF_ANTENNA
  829 typedef struct _HostCmd_DS_802_11_RF_ANTENNA {
  830    FWCmdHdr    CmdHdr;
  831    uint16_t      Action;
  832    uint16_t      AntennaMode;             // Number of antennas or 0xffff(diversity)
  833 } __packed HostCmd_DS_802_11_RF_ANTENNA;
  834 
  835 //          Define data structure for HostCmd_CMD_802_11_PS_MODE
  836 typedef struct {
  837    FWCmdHdr    CmdHdr;
  838    uint16_t      Action;
  839    uint16_t      PowerMode;               // CAM, Max.PSP or Fast PSP
  840 } __packed HostCmd_DS_802_11_PS_MODE;
  841 
  842 typedef struct {
  843    FWCmdHdr             CmdHdr;
  844    uint16_t             Action;
  845    uint16_t             Threshold;
  846 } __packed HostCmd_DS_802_11_RTS_THSD;
  847 
  848 // used for stand alone bssid sets/clears
  849 typedef struct {
  850    FWCmdHdr    CmdHdr;
  851 #ifdef MWL_MBSS_SUPPORT
  852    uint16_t      MacType;
  853 #define WL_MAC_TYPE_PRIMARY_CLIENT      0
  854 #define WL_MAC_TYPE_SECONDARY_CLIENT    1
  855 #define WL_MAC_TYPE_PRIMARY_AP          2
  856 #define WL_MAC_TYPE_SECONDARY_AP        3
  857 #endif
  858    uint8_t       MacAddr[6];
  859 } __packed HostCmd_DS_SET_MAC,
  860   HostCmd_FW_SET_BSSID,
  861   HostCmd_FW_SET_MAC;
  862 
  863 // Indicate to FW to send out PS Poll
  864 typedef struct {
  865    FWCmdHdr    CmdHdr;
  866    uint32_t      PSPoll;
  867 } __packed HostCmd_FW_TX_POLL;
  868 
  869 // used for AID sets/clears
  870 typedef struct {
  871    FWCmdHdr    CmdHdr;
  872    uint16_t      AssocID;
  873    uint8_t       MacAddr[6]; //AP's Mac Address(BSSID)
  874    uint32_t      GProtection;
  875    uint8_t       ApRates[ RATE_INDEX_MAX_ARRAY];
  876 } __packed HostCmd_FW_SET_AID;
  877 
  878 typedef struct {
  879    uint32_t     LegacyRateBitMap;
  880    uint32_t     HTRateBitMap;
  881    uint16_t     CapInfo;
  882    uint16_t     HTCapabilitiesInfo;
  883    uint8_t      MacHTParamInfo;
  884    uint8_t      Rev;
  885    struct {
  886         uint8_t ControlChan;
  887         uint8_t AddChan;
  888         uint16_t OpMode;
  889         uint16_t stbc;
  890    } __packed AddHtInfo;
  891 } __packed PeerInfo_t;
  892 
  893 typedef struct {
  894    FWCmdHdr    CmdHdr;
  895    uint16_t      AID;
  896    uint8_t       MacAddr[6]; 
  897    uint16_t      StnId;
  898    uint16_t      Action;
  899    uint16_t      Reserved;
  900    PeerInfo_t    PeerInfo;
  901    uint8_t       Qosinfo;
  902    uint8_t       isQosSta;
  903    uint32_t      FwStaPtr;
  904 } __packed HostCmd_FW_SET_NEW_STN;
  905 
  906 typedef struct {
  907    FWCmdHdr    CmdHdr;
  908    uint8_t           tick;
  909 } __packed HostCmd_FW_SET_KEEP_ALIVE_TICK;
  910 
  911 typedef struct {
  912    FWCmdHdr    CmdHdr;
  913    uint8_t           QNum;
  914 } __packed HostCmd_FW_SET_RIFS;
  915 
  916 typedef struct {
  917    FWCmdHdr    CmdHdr;
  918    uint8_t      ApMode;
  919 } __packed HostCmd_FW_SET_APMODE;
  920 
  921 typedef struct {
  922     FWCmdHdr    CmdHdr;
  923     uint16_t Action;                    // see following
  924     uint16_t RadarTypeCode;
  925 } __packed HostCmd_802_11h_Detect_Radar;
  926 
  927 #define DR_DFS_DISABLE                          0
  928 #define DR_CHK_CHANNEL_AVAILABLE_START          1
  929 #define DR_CHK_CHANNEL_AVAILABLE_STOP           2
  930 #define DR_IN_SERVICE_MONITOR_START             3
  931 
  932 //New Structure for Update Tim 30/9/2003
  933 typedef struct  {
  934    FWCmdHdr    CmdHdr;
  935    uint16_t        Aid;
  936    uint32_t      Set;
  937 } __packed HostCmd_UpdateTIM;
  938 
  939 typedef struct {
  940     FWCmdHdr    CmdHdr;
  941     uint32_t    SsidBroadcastEnable;
  942 } __packed HostCmd_SSID_BROADCAST;
  943 
  944 typedef struct {
  945     FWCmdHdr    CmdHdr;
  946     uint32_t    WdsEnable;
  947 } __packed HostCmd_WDS;
  948 
  949 typedef struct {
  950     FWCmdHdr    CmdHdr;
  951     uint32_t    Next11hChannel;
  952     uint32_t    Mode;
  953     uint32_t    InitialCount;
  954         uint32_t ChannelFlags ;
  955 } __packed HostCmd_SET_SWITCH_CHANNEL;
  956 
  957 typedef struct {
  958     FWCmdHdr    CmdHdr;
  959     uint32_t    SpectrumMgmt;
  960 } __packed HostCmd_SET_SPECTRUM_MGMT;
  961 
  962 typedef struct {
  963     FWCmdHdr    CmdHdr;
  964     int32_t     PowerConstraint;
  965 } __packed HostCmd_SET_POWER_CONSTRAINT;
  966 
  967 typedef  struct {
  968     uint8_t FirstChannelNo;
  969     uint8_t NoofChannel;
  970     uint8_t MaxTransmitPw;
  971 } __packed DomainChannelEntry;
  972 
  973 typedef  struct {
  974     uint8_t CountryString[3];
  975     uint8_t GChannelLen;
  976     DomainChannelEntry DomainEntryG[1]; /** Assume only 1 G zone **/
  977     uint8_t AChannelLen;
  978     DomainChannelEntry DomainEntryA[20]; /** Assume max of 5 A zone **/
  979 } __packed DomainCountryInfo;
  980 
  981 typedef struct {
  982     FWCmdHdr    CmdHdr;
  983     uint32_t    Action ; // 0 -> unset, 1 ->set
  984     DomainCountryInfo DomainInfo ;
  985 } __packed HostCmd_SET_COUNTRY_INFO;
  986 
  987 typedef struct {
  988         FWCmdHdr    CmdHdr;
  989         uint16_t    regionCode ; 
  990 } __packed HostCmd_SET_REGIONCODE_INFO;
  991 
  992 // for HostCmd_CMD_SET_WMM_MODE
  993 typedef struct {
  994     FWCmdHdr    CmdHdr;
  995     uint16_t    Action;  // 0->unset, 1->set
  996 } __packed HostCmd_FW_SetWMMMode;
  997 
  998 typedef struct {
  999     FWCmdHdr    CmdHdr;
 1000     uint16_t    Action;  // 0->unset, 1->set
 1001     uint16_t    IeListLen;
 1002     uint8_t     IeList[200];
 1003 } __packed HostCmd_FW_SetIEs;
 1004 
 1005 #define EDCA_PARAM_SIZE                         18
 1006 #define BA_PARAM_SIZE                           2
 1007 
 1008 typedef struct {
 1009     FWCmdHdr    CmdHdr;
 1010     uint16_t    Action;   //0 = get all, 0x1 =set CWMin/Max,  0x2 = set TXOP , 0x4 =set AIFSN
 1011     uint16_t    TxOP;     // in unit of 32 us
 1012     uint32_t    CWMax;    // 0~15
 1013     uint32_t    CWMin;    // 0~15
 1014     uint8_t     AIFSN;
 1015     uint8_t     TxQNum;   // Tx Queue number.
 1016 } __packed HostCmd_FW_SET_EDCA_PARAMS;
 1017 
 1018 /******************************************************************************
 1019         @HWENCR@
 1020         Hardware Encryption related data structures and constant definitions.
 1021         Note that all related changes are marked with the @HWENCR@ tag.
 1022 *******************************************************************************/
 1023 
 1024 #define MAX_ENCR_KEY_LENGTH     16      /* max 128 bits - depends on type */
 1025 #define MIC_KEY_LENGTH          8       /* size of Tx/Rx MIC key - 8 bytes*/
 1026 
 1027 #define ENCR_KEY_TYPE_ID_WEP    0x00    /* Key type is WEP              */
 1028 #define ENCR_KEY_TYPE_ID_TKIP   0x01    /* Key type is TKIP             */
 1029 #define ENCR_KEY_TYPE_ID_AES    0x02    /* Key type is AES-CCMP */
 1030 
 1031 /* flags used in structure - same as driver EKF_XXX flags */
 1032 #define ENCR_KEY_FLAG_INUSE     0x00000001      /* indicate key is in use */
 1033 #define ENCR_KEY_FLAG_RXGROUPKEY 0x00000002     /* Group key for RX only */
 1034 #define ENCR_KEY_FLAG_TXGROUPKEY 0x00000004     /* Group key for TX */
 1035 #define ENCR_KEY_FLAG_PAIRWISE  0x00000008      /* pairwise */
 1036 #define ENCR_KEY_FLAG_RXONLY    0x00000010      /* only used for RX */
 1037 // These flags are new additions - for hardware encryption commands only.
 1038 #define ENCR_KEY_FLAG_AUTHENTICATOR     0x00000020      /* Key is for Authenticator */
 1039 #define ENCR_KEY_FLAG_TSC_VALID 0x00000040      /* Sequence counters valid */
 1040 #define ENCR_KEY_FLAG_WEP_TXKEY 0x01000000      /* Tx key for WEP */
 1041 #define ENCR_KEY_FLAG_MICKEY_VALID 0x02000000   /* Tx/Rx MIC keys are valid */
 1042 
 1043 /*
 1044         UPDATE_ENCRYPTION command action type.
 1045 */
 1046 typedef enum {
 1047         // request to enable/disable HW encryption
 1048         EncrActionEnableHWEncryption,
 1049         // request to set encryption key
 1050         EncrActionTypeSetKey,
 1051         // request to remove one or more keys
 1052         EncrActionTypeRemoveKey,
 1053         EncrActionTypeSetGroupKey
 1054 } ENCR_ACTION_TYPE;
 1055 
 1056 /*
 1057         Key material definitions (for WEP, TKIP, & AES-CCMP)
 1058 */
 1059 
 1060 /* 
 1061         WEP Key material definition
 1062         ----------------------------
 1063         WEPKey  --> An array of 'MAX_ENCR_KEY_LENGTH' bytes.
 1064                                 Note that we do not support 152bit WEP keys
 1065 */
 1066 typedef struct {
 1067     // WEP key material (max 128bit)
 1068     uint8_t   KeyMaterial[ MAX_ENCR_KEY_LENGTH ];
 1069 } __packed WEP_TYPE_KEY;
 1070 
 1071 /*
 1072         TKIP Key material definition
 1073         ----------------------------
 1074         This structure defines TKIP key material. Note that
 1075         the TxMicKey and RxMicKey may or may not be valid.
 1076 */
 1077 /* TKIP Sequence counter - 24 bits */
 1078 /* Incremented on each fragment MPDU */
 1079 typedef struct {
 1080     uint16_t low;
 1081     uint32_t high;
 1082 } __packed ENCR_TKIPSEQCNT;
 1083 
 1084 typedef struct {
 1085     // TKIP Key material. Key type (group or pairwise key) is
 1086     // determined by flags in KEY_PARAM_SET structure.
 1087     uint8_t             KeyMaterial[ MAX_ENCR_KEY_LENGTH ];
 1088     uint8_t             TkipTxMicKey[ MIC_KEY_LENGTH ];
 1089     uint8_t             TkipRxMicKey[ MIC_KEY_LENGTH ];
 1090     ENCR_TKIPSEQCNT     TkipRsc;
 1091     ENCR_TKIPSEQCNT     TkipTsc;
 1092 } __packed TKIP_TYPE_KEY;
 1093 
 1094 /*
 1095         AES-CCMP Key material definition
 1096         --------------------------------
 1097         This structure defines AES-CCMP key material.
 1098 */
 1099 typedef struct {
 1100     // AES Key material
 1101     uint8_t   KeyMaterial[ MAX_ENCR_KEY_LENGTH ];
 1102 } __packed AES_TYPE_KEY;
 1103 
 1104 /*
 1105         Encryption key definition.
 1106         --------------------------
 1107         This structure provides all required/essential
 1108         information about the key being set/removed.
 1109 */
 1110 typedef struct {
 1111     uint16_t  Length;           // Total length of this structure
 1112     uint16_t  KeyTypeId;        // Key type - WEP, TKIP or AES-CCMP.
 1113     uint32_t  KeyInfo;          // key flags (ENCR_KEY_FLAG_XXX_
 1114     uint32_t  KeyIndex;         // For WEP only - actual key index
 1115     uint16_t  KeyLen;           // Size of the key
 1116     union {                     // Key material (variable size array)
 1117         WEP_TYPE_KEY    WepKey;
 1118         TKIP_TYPE_KEY   TkipKey;
 1119         AES_TYPE_KEY    AesKey;
 1120     }__packed Key;
 1121 #ifdef MWL_MBSS_SUPPORT
 1122     uint8_t   Macaddr[6];
 1123 #endif
 1124 } __packed KEY_PARAM_SET;
 1125 
 1126 /*
 1127         HostCmd_FW_UPDATE_ENCRYPTION
 1128         ----------------------------
 1129         Define data structure for updating firmware encryption keys.
 1130 
 1131 */
 1132 typedef struct {
 1133     FWCmdHdr    CmdHdr;
 1134     uint32_t    ActionType;             // ENCR_ACTION_TYPE
 1135     uint32_t    DataLength;             // size of the data buffer attached.
 1136 #ifdef MWL_MBSS_SUPPORT
 1137     uint8_t     macaddr[6];
 1138 #endif
 1139     uint8_t     ActionData[1];
 1140 } __packed HostCmd_FW_UPDATE_ENCRYPTION;
 1141 
 1142 
 1143 typedef struct {
 1144     FWCmdHdr    CmdHdr;
 1145     uint32_t    ActionType;             // ENCR_ACTION_TYPE
 1146     uint32_t    DataLength;             // size of the data buffer attached.
 1147     KEY_PARAM_SET KeyParam;
 1148 #ifndef MWL_MBSS_SUPPORT
 1149     uint8_t     Macaddr[8];             /* XXX? */
 1150 #endif
 1151 } __packed HostCmd_FW_UPDATE_ENCRYPTION_SET_KEY;
 1152 
 1153 typedef struct {
 1154         // Rate flags - see above.
 1155         uint32_t        Flags;
 1156         // Rate in 500Kbps units.
 1157         uint8_t         RateKbps;
 1158         // 802.11 rate to conversion table index value.
 1159         // This is the value required by the firmware/hardware.
 1160         uint16_t        RateCodeToIndex;
 1161 }__packed RATE_INFO;
 1162 
 1163 /*
 1164         UPDATE_STADB command action type.
 1165 */
 1166 typedef enum {
 1167         // request to add entry to stainfo db
 1168         StaInfoDbActionAddEntry,
 1169         // request to modify peer entry
 1170         StaInfoDbActionModifyEntry,
 1171         // request to remove peer from stainfo db
 1172         StaInfoDbActionRemoveEntry
 1173 }__packed STADB_ACTION_TYPE;
 1174 
 1175 /*
 1176         @11E-BA@
 1177         802.11e/WMM Related command(s)/data structures
 1178 */
 1179 
 1180 // Flag to indicate if the stream is an immediate block ack stream.
 1181 // if this bit is not set, the stream is delayed block ack stream.
 1182 #define BASTREAM_FLAG_DELAYED_TYPE              0x00
 1183 #define BASTREAM_FLAG_IMMEDIATE_TYPE            0x01
 1184 
 1185 // Flag to indicate the direction of the stream (upstream/downstream).
 1186 // If this bit is not set, the direction is downstream.
 1187 #define BASTREAM_FLAG_DIRECTION_UPSTREAM        0x00
 1188 #define BASTREAM_FLAG_DIRECTION_DOWNSTREAM      0x02
 1189 #define BASTREAM_FLAG_DIRECTION_DLP             0x04
 1190 #define BASTREAM_FLAG_DIRECTION_BOTH            0x06
 1191 
 1192 typedef enum {
 1193         BaCreateStream,
 1194         BaUpdateStream,
 1195         BaDestroyStream,
 1196         BaFlushStream,
 1197         BaCheckCreateStream 
 1198 } BASTREAM_ACTION_TYPE;
 1199 
 1200 typedef struct {
 1201         uint32_t        Context;
 1202 } __packed BASTREAM_CONTEXT;
 1203 
 1204 // parameters for block ack creation
 1205 typedef struct {
 1206         // BA Creation flags - see above
 1207         uint32_t        Flags;
 1208         // idle threshold
 1209         uint32_t        IdleThrs;
 1210         // block ack transmit threshold (after how many pkts should we send BAR?)
 1211         uint32_t        BarThrs;
 1212         // receiver window size
 1213         uint32_t        WindowSize;
 1214         // MAC Address of the BA partner
 1215         uint8_t         PeerMacAddr[6];
 1216         // Dialog Token
 1217         uint8_t         DialogToken;
 1218         //TID for the traffic stream in this BA
 1219         uint8_t         Tid;
 1220         // shared memory queue ID (not sure if this is required)
 1221         uint8_t         QueueId;
 1222         uint8_t         ParamInfo;
 1223         // returned by firmware - firmware context pointer.
 1224         // this context pointer will be passed to firmware for all future commands.
 1225         BASTREAM_CONTEXT FwBaContext;
 1226         uint8_t         ResetSeqNo;  /** 0 or 1**/
 1227         uint16_t        StartSeqNo; 
 1228     
 1229         // proxy sta MAC Address
 1230         uint8_t         StaSrcMacAddr[6];
 1231 }__packed BASTREAM_CREATE_STREAM;
 1232 
 1233 // new transmit sequence number information 
 1234 typedef struct {
 1235         // BA flags - see above
 1236         uint32_t        Flags;
 1237         // returned by firmware in the create ba stream response
 1238         BASTREAM_CONTEXT FwBaContext;
 1239         // new sequence number for this block ack stream
 1240         uint16_t                         BaSeqNum;
 1241 }__packed BASTREAM_UPDATE_STREAM;
 1242 
 1243 typedef struct {
 1244         // BA Stream flags
 1245         uint32_t         Flags;
 1246         // returned by firmware in the create ba stream response
 1247         BASTREAM_CONTEXT FwBaContext;
 1248 }__packed BASTREAM_STREAM_INFO;
 1249 
 1250 //Command to create/destroy block ACK
 1251 typedef struct {
 1252         FWCmdHdr        CmdHdr;
 1253         uint32_t        ActionType;
 1254         union
 1255         {
 1256                 // information required to create BA Stream...
 1257                 BASTREAM_CREATE_STREAM  CreateParams;
 1258                 // update starting/new sequence number etc.
 1259                 BASTREAM_UPDATE_STREAM  UpdtSeqNum;
 1260                 // destroy an existing stream...
 1261                 BASTREAM_STREAM_INFO    DestroyParams;
 1262                 // destroy an existing stream...
 1263                 BASTREAM_STREAM_INFO    FlushParams;
 1264         }__packed BaInfo;
 1265 }__packed HostCmd_FW_BASTREAM;
 1266 
 1267 //          Define data structure for HostCmd_CMD_GET_WATCHDOG_BITMAP
 1268 typedef struct {
 1269    FWCmdHdr     CmdHdr;
 1270    uint8_t      Watchdogbitmap;         // for SW/BA
 1271 } __packed HostCmd_FW_GET_WATCHDOG_BITMAP;
 1272 
 1273 
 1274 
 1275 //          Define data structure for HostCmd_CMD_SET_REGION_POWER
 1276 typedef struct {
 1277    FWCmdHdr    CmdHdr;
 1278    uint16_t    MaxPowerLevel;     
 1279    uint16_t    Reserved;
 1280 } __packed HostCmd_DS_SET_REGION_POWER;
 1281 
 1282 //          Define data structure for HostCmd_CMD_SET_RATE_ADAPT_MODE
 1283 typedef struct {
 1284    FWCmdHdr     CmdHdr;
 1285    uint16_t     Action;
 1286    uint16_t     RateAdaptMode;     
 1287 } __packed HostCmd_DS_SET_RATE_ADAPT_MODE;
 1288 
 1289 //          Define data structure for HostCmd_CMD_SET_LINKADAPT_CS_MODE
 1290 typedef struct {
 1291    FWCmdHdr     CmdHdr;
 1292    uint16_t     Action;
 1293    uint16_t     CSMode;     
 1294 } __packed HostCmd_DS_SET_LINKADAPT_CS_MODE;
 1295 
 1296 typedef struct {
 1297    FWCmdHdr    CmdHdr;
 1298    uint32_t     NProtectFlag;
 1299 } __packed HostCmd_FW_SET_N_PROTECT_FLAG;
 1300 
 1301 typedef struct {
 1302    FWCmdHdr    CmdHdr;
 1303    uint8_t       NProtectOpMode;
 1304 } __packed HostCmd_FW_SET_N_PROTECT_OPMODE;
 1305 
 1306 typedef struct {
 1307    FWCmdHdr    CmdHdr;
 1308    uint8_t       OptLevel;
 1309 } __packed HostCmd_FW_SET_OPTIMIZATION_LEVEL;
 1310 
 1311 typedef struct {
 1312    FWCmdHdr    CmdHdr;
 1313    uint8_t     annex; 
 1314    uint8_t     index;
 1315    uint8_t     len;
 1316    uint8_t     Reserverd; 
 1317 #define CAL_TBL_SIZE        160
 1318    uint8_t     calTbl[CAL_TBL_SIZE];
 1319 } __packed HostCmd_FW_GET_CALTABLE;
 1320 
 1321 typedef struct {
 1322    FWCmdHdr    CmdHdr;
 1323    uint8_t     Addr[6]; 
 1324    uint8_t     Enable;
 1325    uint8_t     Mode;
 1326 } __packed HostCmd_FW_SET_MIMOPSHT;
 1327 
 1328 #define MAX_BEACON_SIZE        1024
 1329 typedef struct {
 1330    FWCmdHdr    CmdHdr;
 1331    uint16_t    Bcnlen;
 1332    uint8_t     Reserverd[2]; 
 1333    uint8_t     Bcn[MAX_BEACON_SIZE];
 1334 } __packed HostCmd_FW_GET_BEACON;
 1335 
 1336 typedef struct {
 1337         FWCmdHdr CmdHdr;
 1338         uint8_t NumberOfPowersave;
 1339         uint8_t reserved;
 1340 } __packed HostCmd_SET_POWERSAVESTATION;
 1341 
 1342 typedef struct {
 1343         FWCmdHdr CmdHdr;
 1344         uint16_t Aid;
 1345         uint32_t Set;
 1346         uint8_t reserved;
 1347 } __packed HostCmd_SET_TIM;
 1348 
 1349 typedef struct {
 1350         FWCmdHdr CmdHdr;
 1351         uint8_t TrafficMap[251];
 1352         uint8_t reserved;
 1353 } __packed HostCmd_GET_TIM;
 1354 
 1355 typedef struct {
 1356         FWCmdHdr CmdHdr;
 1357         uint8_t MacAddr[6]; 
 1358         uint8_t TID;
 1359         uint16_t SeqNo;
 1360         uint8_t reserved;
 1361 } __packed HostCmd_GET_SEQNO;
 1362 
 1363 typedef struct {
 1364         FWCmdHdr    CmdHdr;
 1365         uint32_t    Enable;    //0 -- Disbale. or 1 -- Enable.
 1366 } __packed HostCmd_DWDS_ENABLE;
 1367 
 1368 typedef struct {
 1369         FWCmdHdr    CmdHdr;
 1370         uint16_t    Action;  /* 0: Get. 1:Set */
 1371         uint32_t    Option;  /* 0: default. 1:Aggressive */
 1372         uint32_t    Threshold;  /* Range 0-200, default 8 */
 1373 }__packed HostCmd_FW_AMPDU_RETRY_RATEDROP_MODE;
 1374 
 1375 typedef struct {
 1376         FWCmdHdr    CmdHdr;
 1377         uint32_t    Enable; /* 0 -- Disable. or 1 -- Enable */
 1378 }__packed HostCmd_CFEND_ENABLE;
 1379 #endif /* _MWL_HALREG_H_ */

Cache object: 331b645da4c5ba09e4c91dfa7f17683b


[ 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.