[BACK]Return to pgtreg.h CVS log [TXT][DIR] Up to [local] / sys / dev / ic

Annotation of sys/dev/ic/pgtreg.h, Revision 1.1

1.1     ! nbrk        1: /*     $OpenBSD: pgtreg.h,v 1.7 2006/10/11 12:10:19 claudio Exp $  */
        !             2:
        !             3: /*
        !             4:  * Copyright (c) 2006 Claudio Jeker <claudio@openbsd.org>
        !             5:  * Copyright (c) 2006 Marcus Glocker <mglocker@openbsd.org>
        !             6:  *
        !             7:  * Permission to use, copy, modify, and distribute this software for any
        !             8:  * purpose with or without fee is hereby granted, provided that the above
        !             9:  * copyright notice and this permission notice appear in all copies.
        !            10:  *
        !            11:  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
        !            12:  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
        !            13:  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
        !            14:  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
        !            15:  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
        !            16:  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
        !            17:  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
        !            18:  */
        !            19:
        !            20: /*
        !            21:  * Copyright (c) 2004 Fujitsu Laboratories of America, Inc.
        !            22:  * Copyright (c) 2004 Brian Fundakowski Feldman
        !            23:  * All rights reserved.
        !            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:  * 1. Redistributions of source code must retain the above copyright
        !            29:  *    notice, this list of conditions and the following disclaimer.
        !            30:  * 2. Redistributions in binary form must reproduce the above copyright
        !            31:  *    notice, this list of conditions and the following disclaimer in the
        !            32:  *    documentation and/or other materials provided with the distribution.
        !            33:  *
        !            34:  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
        !            35:  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
        !            36:  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
        !            37:  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
        !            38:  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
        !            39:  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
        !            40:  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
        !            41:  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
        !            42:  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
        !            43:  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
        !            44:  * SUCH DAMAGE.
        !            45:  */
        !            46:
        !            47: #ifndef __PGTREG_H__
        !            48: #define __PGTREG_H__
        !            49:
        !            50: /* Sizes, delays, etc. */
        !            51: #define        PGT_TX_LIST_CNT                 32
        !            52: #define        PGT_RX_LIST_CNT                 8
        !            53: #define        PGT_FRAG_SIZE                   1536    /* overkill for mgmt frames */
        !            54: #define        PGT_DIRECT_MEMORY_OFFSET        0x1000
        !            55: #define        PGT_DIRECT_MEMORY_SIZE          0x1000
        !            56: #define        PGT_FIRMWARE_INTERNAL_OFFSET    0x20000
        !            57: #define        PGT_WRITEIO_DELAY               10
        !            58: #define        PGT_RESET_DELAY                 50000
        !            59:
        !            60: /* Registers */
        !            61: #define PGT_REG_DEV_INT                        0x0000  /* device interrupt */
        !            62: #define        PGT_DEV_INT_RESET               0x00000001
        !            63: #define        PGT_DEV_INT_UPDATE              0x00000002
        !            64: #define        PGT_DEV_INT_WAKEUP              0x00000008
        !            65: #define        PGT_DEV_INT_SLEEP               0x00000010
        !            66: #define        PGT_REG_INT_STAT                0x0010  /* interrupt status */
        !            67: #define        PGT_INT_STAT_UPDATE             0x00000002
        !            68: #define        PGT_INT_STAT_INIT               0x00000004
        !            69: #define        PGT_INT_STAT_WAKEUP             0x00000008
        !            70: #define        PGT_INT_STAT_SLEEP              0x00000010
        !            71: #define        PGT_INT_STAT_UNKNOWN0           0x00004000
        !            72: #define        PGT_INT_STAT_UNKNOWN1           0x80000000
        !            73: #define        PGT_INT_STAT_SOURCES            0x8000401e
        !            74: #define        PGT_REG_INT_ACK                 0x0014  /* interrupt acknowledgement */
        !            75: #define        PGT_REG_INT_EN                  0x0018  /* interrupt enable */
        !            76: #define        PGT_REG_CTRL_BLK_BASE           0x0020  /* control block address */
        !            77: #define        PGT_REG_GEN_PURP_COM            0x0024
        !            78: #define        PGT_REG_DIR_MEM_BASE            0x0030
        !            79: #define        PGT_REG_CTRL_STAT               0x0078
        !            80: #define        PGT_CTRL_STAT_SLEEPMODE         0x00000200
        !            81: #define        PGT_CTRL_STAT_CLOCKRUN          0x00800000
        !            82: #define        PGT_CTRL_STAT_RESET             0x10000000
        !            83: #define        PGT_CTRL_STAT_RAMBOOT           0x20000000
        !            84: #define        PGT_CTRL_STAT_STARTHALTED       0x40000000
        !            85: #define        PGT_CTRL_STAT_HOST_OVERRIDE     0x80000000
        !            86:
        !            87: /*
        !            88:  * The control block consists of a set of queues for low- and high-priority
        !            89:  * data, and management, transmission and reception queues.  There is a
        !            90:  * set of indices that gives the index (modulo queue size) of the current
        !            91:  * progress in each.  Nearly all configuration is done from the management
        !            92:  * queue interface.  Almost every structure is little-endian.
        !            93:  */
        !            94: enum pgt_queue {
        !            95:        PGT_QUEUE_DATA_LOW_RX =         0,
        !            96:        PGT_QUEUE_DATA_LOW_TX =         1,
        !            97:        PGT_QUEUE_DATA_HIGH_RX =        2,
        !            98:        PGT_QUEUE_DATA_HIGH_TX =        3,
        !            99:        PGT_QUEUE_MGMT_RX =             4,
        !           100:        PGT_QUEUE_MGMT_TX =             5
        !           101: };
        !           102:
        !           103: #define        PGT_QUEUE_COUNT                 6
        !           104: #define        PGT_QUEUE_DATA_RX_SIZE          8
        !           105: #define        PGT_QUEUE_DATA_TX_SIZE          32
        !           106: #define        PGT_QUEUE_MGMT_SIZE             4
        !           107: #define        PGT_QUEUE_FULL_THRESHOLD        8
        !           108:
        !           109: struct pgt_frag {
        !           110:        uint32_t pf_addr;               /* physical host address */
        !           111:        uint16_t pf_size;
        !           112:        uint16_t pf_flags;
        !           113: #define        PF_FLAG_MF      0x0001          /* more frags (frame continues) */
        !           114: };
        !           115:
        !           116: struct pgt_control_block {
        !           117:        uint32_t        pcb_driver_curfrag[PGT_QUEUE_COUNT];
        !           118:        uint32_t        pcb_device_curfrag[PGT_QUEUE_COUNT];
        !           119:        struct pgt_frag pcb_data_low_rx[PGT_QUEUE_DATA_RX_SIZE];
        !           120:        struct pgt_frag pcb_data_low_tx[PGT_QUEUE_DATA_TX_SIZE];
        !           121:        struct pgt_frag pcb_data_high_rx[PGT_QUEUE_DATA_RX_SIZE];
        !           122:        struct pgt_frag pcb_data_high_tx[PGT_QUEUE_DATA_TX_SIZE];
        !           123:        struct pgt_frag pcb_mgmt_rx[PGT_QUEUE_MGMT_SIZE];
        !           124:        struct pgt_frag pcb_mgmt_tx[PGT_QUEUE_MGMT_SIZE];
        !           125:        uint32_t        pcb_padding;
        !           126: };
        !           127:
        !           128: /*
        !           129:  * Unlike the rest of the structures, this is big-endian by default.
        !           130:  * The Linux driver defines a PIMFOR_ETHERTYPE as 0x8828 (why?)
        !           131:  */
        !           132: enum pgt_mgmt_operation {
        !           133:        PMF_OP_GET =            0,
        !           134:        PMF_OP_SET =            1,
        !           135:        PMF_OP_RESPONSE =       2,
        !           136:        PMF_OP_ERROR =          3,
        !           137:        PMF_OP_TRAP =           4
        !           138:        /* may be more */
        !           139: };
        !           140:
        !           141: struct pgt_mgmt_frame {
        !           142:        uint8_t         pmf_version;
        !           143: #define        PMF_VER         0x01
        !           144:        uint8_t         pmf_operation;
        !           145:        uint32_t        pmf_oid;
        !           146:        uint8_t         pmf_device;
        !           147: #define PMF_DEV                0x00
        !           148:        uint8_t         pmf_flags;
        !           149: #define        PMF_FLAG_APP    0x01            /* application origin (?) */
        !           150: #define        PMF_FLAG_LE     0x02            /* little-endian */
        !           151: #define        PMF_FLAG_VALID  (PMF_FLAG_APP | PMF_FLAG_LE)
        !           152:        uint32_t        pmf_size;
        !           153:        /*              data[];                 */
        !           154: } __packed;
        !           155:
        !           156: struct pgt_rx_header {
        !           157:        uint16_t                pra_unknown0;   /* always 0x0000 */
        !           158:        uint16_t                pra_length;     /* always 0x1400 */
        !           159:        uint32_t                pra_clock;      /* 1MHz timestamp */
        !           160:        uint8_t                 pra_flags;
        !           161: #define        PRA_FLAG_BAD            0x01
        !           162:        uint8_t                 pra_unknown1;
        !           163:        uint8_t                 pra_rate;
        !           164:        uint8_t                 pra_unknown2;
        !           165:        uint16_t                pra_frequency;
        !           166:        uint16_t                pra_unknown3;
        !           167:        uint8_t                 pra_rssi;
        !           168:        uint8_t                 pra_pad[3];
        !           169: } __packed;
        !           170:
        !           171: struct pgt_rx_annex {
        !           172:        uint8_t                 pra_ether_dhost[ETHER_ADDR_LEN];
        !           173:        uint8_t                 pra_ether_shost[ETHER_ADDR_LEN];
        !           174:        struct pgt_rx_header    pra_header;
        !           175:        uint16_t                pra_ether_type;
        !           176: } __packed;
        !           177:
        !           178: /*
        !           179:  * OIDs used to communicate management information.
        !           180:  */
        !           181: enum pgt_oid {
        !           182:        PGT_OID_MAC_ADDRESS =                           0x00000000,
        !           183:        /* uint8_t ether[6]; */
        !           184:        PGT_OID_LINK_STATE =                            0x00000001,
        !           185:        /* uint32_t rate; (500kbps units) */
        !           186:        PGT_OID_BSS_TYPE =                              0x10000000,
        !           187:        /* uint32_t network; */
        !           188: #define        PGT_BSS_TYPE_NONE                       0
        !           189: #define        PGT_BSS_TYPE_STA                        1
        !           190: #define        PGT_BSS_TYPE_IBSS                       2
        !           191: #define        PGT_BSS_TYPE_ANY                        3
        !           192:        PGT_OID_BSSID =                                 0x10000001,
        !           193:        /* uint8_t bssid[6]; */
        !           194:        PGT_OID_SSID =                                  0x10000002,
        !           195:        /* struct pgt_obj_ssid; */
        !           196:        PGT_OID_COUNTRY =                               0x10000005,
        !           197:        /* uint32_t country; guessing until I see some foreign hardware... */
        !           198: #define        PGT_COUNTRY_USA                         0
        !           199:        PGT_OID_SSID_OVERRIDE =                         0x10000006,
        !           200:        /* struct pgt_obj_ssid; */
        !           201:        PGT_OID_AUTH_MODE =                             0x12000000,
        !           202:        /* uint32_t auth; */
        !           203: #define        PGT_AUTH_MODE_NONE                      0
        !           204: #define        PGT_AUTH_MODE_OPEN                      1
        !           205: #define        PGT_AUTH_MODE_SHARED                    2
        !           206: #define        PGT_AUTH_MODE_BOTH                      3
        !           207:        PGT_OID_PRIVACY_INVOKED =                       0x12000001,
        !           208:        /* uint32_t privacy; */
        !           209:        PGT_OID_EXCLUDE_UNENCRYPTED =                   0x12000002,
        !           210:        /* uint32_t exunencrypted; */
        !           211:        PGT_OID_DEFAULT_KEYNUM =                        0x12000003,
        !           212:        /* uint32_t defkey; */
        !           213:        PGT_OID_DEFAULT_KEY0 =                          0x12000004,
        !           214:        /* struct pgt_obj_key; */
        !           215:        PGT_OID_DEFAULT_KEY1 =                          0x12000005,
        !           216:        /* struct pgt_obj_key; */
        !           217:        PGT_OID_DEFAULT_KEY2 =                          0x12000006,
        !           218:        /* struct pgt_obj_key; */
        !           219:        PGT_OID_DEFAULT_KEY3 =                          0x12000007,
        !           220:        /* struct pgt_obj_key; */
        !           221:        PGT_OID_STA_KEY =                               0x12000008,
        !           222:        PGT_OID_PSM =                                   0x14000000,
        !           223:        /* uint32_t powersave; */
        !           224:        PGT_OID_EAPAUTHSTA =                            0x150007de,
        !           225:        /* uint8_t sta[6]; */
        !           226:        PGT_OID_EAPUNAUTHSTA =                          0x150007df,
        !           227:        /* uint8_t sta[6]; */
        !           228:        PGT_OID_DOT1X =                                 0x150007e0,
        !           229:        /* uint32_t dot1x; */
        !           230: #define        PGT_DOT1X_AUTH_NONE                     0
        !           231: #define        PGT_DOT1X_AUTH_ENABLED                  1
        !           232: #define        PGT_DOT1X_KEYTX_ENABLED                 2
        !           233:        PGT_OID_SLOT_TIME =                             0x17000000,
        !           234:        /* uint32_t slottime; */
        !           235:        PGT_OID_CHANNEL =                               0x17000007,
        !           236:        /* uint32_t channel; */
        !           237:        PGT_OID_PREAMBLE_MODE =                         0x17000009,
        !           238:        /* uint32_t preamble; */
        !           239: #define        PGT_OID_PREAMBLE_MODE_LONG              0
        !           240: #define        PGT_OID_PREAMBLE_MODE_SHORT             1
        !           241: #define        PGT_OID_PREAMBLE_MODE_DYNAMIC           2
        !           242:        PGT_OID_RATES =                                 0x1700000a,
        !           243:        /* uint8_t rates[]; nul terminated */
        !           244:        PGT_OID_RSSI_VECTOR =                           0x1700000d,
        !           245:        PGT_OID_OUTPUT_POWER_TABLE =                    0x1700000e,
        !           246:        PGT_OID_OUTPUT_POWER =                          0x1700000f,
        !           247:        PGT_OID_SUPPORTED_RATES =                       0x17000010,
        !           248:        /* uint8_t rates[]; nul terminated */
        !           249:        PGT_OID_NOISE_FLOOR =                           0x17000013,
        !           250:        /* uint32_t noise; */
        !           251:        PGT_OID_SLOT_MODE =                             0x17000017,
        !           252:        /* uint32_t slot; */
        !           253: #define        PGT_OID_SLOT_MODE_LONG                  0
        !           254: #define        PGT_OID_SLOT_MODE_SHORT                 1
        !           255: #define        PGT_OID_SLOT_MODE_DYNAMIC               2
        !           256:        PGT_OID_EXTENDED_RATES =                        0x17000020,
        !           257:        /* uint8_t rates[]; nul terminated */
        !           258:        PGT_OID_FREQUENCY =                             0x17000011,
        !           259:        /* uint32_t frequency; */
        !           260:        PGT_OID_SUPPORTED_FREQUENCIES =                 0x17000012,
        !           261:        /* struct pgt_obj_freq; */
        !           262:        PGT_OID_PROFILE =                               0x17000019,
        !           263:        /* uint32_t profile; */
        !           264: #define        PGT_PROFILE_B_ONLY                      0
        !           265: #define        PGT_PROFILE_MIXED_G_WIFI                1
        !           266: #define        PGT_PROFILE_MIXED_LONG                  2
        !           267: #define        PGT_PROFILE_G_ONLY                      3
        !           268: #define        PGT_PROFILE_TEST                        4
        !           269: #define        PGT_PROFILE_B_WIFI                      5
        !           270: #define        PGT_PROFILE_A_ONLY                      6
        !           271: #define        PGT_PROFILE_MIXED_SHORT                 7
        !           272:        PGT_OID_DEAUTHENTICATE =                        0x18000000,
        !           273:        /* struct pgt_obj_mlme; */
        !           274:        PGT_OID_AUTHENTICATE =                          0x18000001,
        !           275:        /* struct pgt_obj_mlme; */
        !           276:        PGT_OID_DISASSOCIATE =                          0x18000002,
        !           277:        /* struct pgt_obj_mlme; */
        !           278:        PGT_OID_ASSOCIATE =                             0x18000003,
        !           279:        /* struct pgt_obj_mlme; */
        !           280:        PGT_OID_SCAN =                                  0x18000004,
        !           281:        PGT_OID_BEACON =                                0x18000005,
        !           282:        /* struct pgt_obj_mlmeex; */
        !           283:        PGT_OID_PROBE =                                 0x18000006,
        !           284:        /* struct pgt_obj_mlmeex; */
        !           285:        PGT_OID_DEAUTHENTICATEEX =                      0x18000007,
        !           286:        /* struct pgt_obj_mlmeex; */
        !           287:        PGT_OID_AUTHENTICATEEX =                        0x18000008,
        !           288:        /* struct pgt_obj_mlmeex; */
        !           289:        PGT_OID_DISASSOCIATEEX =                        0x18000009,
        !           290:        /* struct pgt_obj_mlmeex; */
        !           291:        PGT_OID_ASSOCIATEEX =                           0x1800000a,
        !           292:        /* struct pgt_obj_mlmeex; */
        !           293:        PGT_OID_REASSOCIATE =                           0x1800000b,
        !           294:        /* struct pgt_obj_mlmeex; */
        !           295:        PGT_OID_REASSOCIATEEX =                         0x1800000c,
        !           296:        /* struct pgt_obj_mlmeex; */
        !           297:        PGT_OID_MLME_AUTO_LEVEL =                       0x19000001,
        !           298:        /* uint32_t mlme; */
        !           299: #define        PGT_MLME_AUTO_LEVEL_AUTO                0
        !           300: #define        PGT_MLME_AUTO_LEVEL_INTERMEDIATE        1
        !           301: #define        PGT_MLME_AUTO_LEVEL_EXTENDED            2
        !           302:        /* struct pgt_obj_buffer;*/
        !           303:        PGT_OID_PSM_BUFFER =                            0x19000004,
        !           304:        /* struct pgt_obj_buffer;*/
        !           305: #define        PGT_PSM_BUFFER_FRAME_COUNT              64
        !           306:        PGT_OID_MAX_FRAME_BURST =                       0x1b000008,
        !           307:        /* uint32_t max_usec_grouped; */
        !           308:        PGT_OID_BSS_FIND =                              0x1c000042,
        !           309:        /* struct pgt_obj_bss; */
        !           310:        PGT_OID_BSS_LIST =                              0x1c000043,
        !           311:        /* struct pgt_obj_bsslist; */
        !           312:        /* Initial settings. */
        !           313:        PGT_OID_MODE =                                  0xff020003,
        !           314:        /* uint32_t mode; */
        !           315: #define        PGT_MODE_PROMISCUOUS                    0
        !           316: #define        PGT_MODE_CLIENT                         1
        !           317: #define        PGT_MODE_AP                             2
        !           318: #define        PGT_MODE_SNIFFER                        3
        !           319:        PGT_OID_CONFIG =                                0xff020008,
        !           320:        /* uint32_t flags; */
        !           321: #define        PGT_CONFIG_MANUAL_RUN                   0x00000001
        !           322: #define        PGT_CONFIG_FRAME_TRAP                   0x00000002
        !           323: #define        PGT_CONFIG_RX_ANNEX                     0x00000004
        !           324: #define        PGT_CONFIG_TX_ANNEX                     0x00000008
        !           325: #define        PGT_CONFIG_WDS                          0x00000010
        !           326:        PGT_OID_PHY =                                   0xff02000d,
        !           327: #define        PGT_OID_PHY_2400MHZ                     0x00000001
        !           328: #define        PGT_OID_PHY_5000MHZ                     0x00000002
        !           329: #define        PGT_OID_PHY_FAA                         0x80000000
        !           330: };
        !           331:
        !           332: /*
        !           333:  * Structures used to communicate via the OIDs.
        !           334:  */
        !           335: struct pgt_obj_ssid {
        !           336:        uint8_t                 pos_length;
        !           337:        char                    pos_ssid[33];
        !           338: } __packed;
        !           339:
        !           340: struct pgt_obj_key {
        !           341:        uint8_t                 pok_type;
        !           342: #define        PGT_OBJ_KEY_TYPE_WEP    0
        !           343: #define        PGT_OBJ_KEY_TYPE_TKIP   1
        !           344:        uint8_t                 pok_length;
        !           345:        uint8_t                 pok_key[32];
        !           346: } __packed;
        !           347:
        !           348: /*
        !           349:  * Each mlme received includes the current 802.11 state.
        !           350:  */
        !           351: #define        PGT_MLME_STATE_NONE     0
        !           352: #define        PGT_MLME_STATE_AUTHING  1
        !           353: #define        PGT_MLME_STATE_AUTH     2
        !           354: #define        PGT_MLME_STATE_ASSOCING 3
        !           355:
        !           356: #define        PGT_MLME_STATE_ASSOC    5
        !           357: #define        PGT_MLME_STATE_IBSS     6
        !           358: #define        PGT_MLME_STATE_WDS      7
        !           359:
        !           360: struct pgt_obj_mlme {
        !           361:        uint8_t                 pom_address[6];
        !           362:        uint16_t                pom_id;         /* 802.11 association number */
        !           363:        uint16_t                pom_state;
        !           364:        uint16_t                pom_code;       /* 802.11 reason code */
        !           365: } __packed;
        !           366:
        !           367: struct pgt_obj_mlmeex {
        !           368:        uint8_t                 pom_address[6];
        !           369:        uint16_t                pom_id;
        !           370:        uint16_t                pom_state;
        !           371:        uint16_t                pom_code;
        !           372:        uint16_t                pom_size;
        !           373:        uint8_t                 pom_data[0];
        !           374: } __packed;
        !           375:
        !           376: struct pgt_obj_buffer {
        !           377:        uint32_t                pob_size;
        !           378:        uint32_t                pob_addr;
        !           379: } __packed;
        !           380:
        !           381: struct pgt_obj_bss {
        !           382:        uint8_t                 pob_address[6];
        !           383:        uint16_t                pob_padding0;
        !           384:        uint8_t                 pob_state;
        !           385:        uint8_t                 pob_reserved;
        !           386:        uint16_t                pob_age;
        !           387:        uint8_t                 pob_quality;
        !           388:        uint8_t                 pob_rssi;
        !           389:        struct pgt_obj_ssid     pob_ssid;
        !           390:        uint16_t                pob_channel;
        !           391:        uint8_t                 pob_beacon_period;
        !           392:        uint8_t                 pob_dtim_period;
        !           393:        uint16_t                pob_capinfo;
        !           394:        uint16_t                pob_rates;
        !           395:        uint16_t                pob_basic_rates;
        !           396:        uint16_t                pob_padding1;
        !           397: } __packed;
        !           398:
        !           399: struct pgt_obj_bsslist {
        !           400:        uint32_t                pob_count;
        !           401:        struct pgt_obj_bss      pob_bsslist[0];
        !           402: #define        PGT_OBJ_BSSLIST_NBSS    24
        !           403: } __packed;
        !           404:
        !           405: struct pgt_obj_frequencies {
        !           406:        uint16_t                pof_count;
        !           407:        uint16_t                pof_freqlist_mhz[0];
        !           408: } __packed;
        !           409:
        !           410: #endif

CVSweb