| 1 | /* |
| 2 | * Custom OID/ioctl definitions for |
| 3 | * Broadcom 802.11abg Networking Device Driver |
| 4 | * |
| 5 | * Definitions subject to change without notice. |
| 6 | * |
| 7 | * Copyright 2006, Broadcom Corporation |
| 8 | * All Rights Reserved. |
| 9 | * |
| 10 | * THIS SOFTWARE IS OFFERED "AS IS", AND BROADCOM GRANTS NO WARRANTIES OF ANY |
| 11 | * KIND, EXPRESS OR IMPLIED, BY STATUTE, COMMUNICATION OR OTHERWISE. BROADCOM |
| 12 | * SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS |
| 13 | * FOR A SPECIFIC PURPOSE OR NONINFRINGEMENT CONCERNING THIS SOFTWARE. |
| 14 | * |
| 15 | */ |
| 16 | |
| 17 | #ifndef _BROADCOM_H |
| 18 | #define _BROADCOM_H |
| 19 | |
| 20 | #define WL_MCSSET_LEN 16 |
| 21 | #define WL_MAX_STA_COUNT 32 |
| 22 | |
| 23 | #define WL_BSS_RSSI_OFFSET 82 |
| 24 | #define WL_BSS_NOISE_OFFSET 84 |
| 25 | |
| 26 | #define WLC_IOCTL_MAGIC 0x14e46c77 |
| 27 | #define WLC_IOCTL_MAXLEN 8192 |
| 28 | |
| 29 | #define WLC_CNTRY_BUF_SZ 4 |
| 30 | |
| 31 | #define WLC_GET_MAGIC 0 |
| 32 | #define WLC_GET_RATE 12 |
| 33 | #define WLC_GET_INFRA 19 |
| 34 | #define WLC_GET_AUTH 21 |
| 35 | #define WLC_GET_BSSID 23 |
| 36 | #define WLC_GET_SSID 25 |
| 37 | #define WLC_GET_CHANNEL 29 |
| 38 | #define WLC_GET_PASSIVE 48 |
| 39 | #define WLC_GET_COUNTRY 83 |
| 40 | #define WLC_GET_REVINFO 98 |
| 41 | #define WLC_GET_AP 117 |
| 42 | #define WLC_GET_RSSI 127 |
| 43 | #define WLC_GET_WSEC 133 |
| 44 | #define WLC_GET_PHY_NOISE 135 |
| 45 | #define WLC_GET_BSS_INFO 136 |
| 46 | #define WLC_GET_ASSOCLIST 159 |
| 47 | #define WLC_GET_WPA_AUTH 164 |
| 48 | #define WLC_GET_COUNTRY_LIST 261 |
| 49 | #define WLC_GET_VAR 262 |
| 50 | |
| 51 | |
| 52 | struct wl_ether_addr { |
| 53 | uint8_t octet[6]; |
| 54 | }; |
| 55 | |
| 56 | struct wl_maclist { |
| 57 | uint count; |
| 58 | struct wl_ether_addr ea[1]; |
| 59 | }; |
| 60 | |
| 61 | typedef struct wl_sta_rssi { |
| 62 | int rssi; |
| 63 | char mac[6]; |
| 64 | uint16_t foo; |
| 65 | } wl_sta_rssi_t; |
| 66 | |
| 67 | #define WL_NUMRATES 255 /* max # of rates in a rateset */ |
| 68 | typedef struct wl_rateset { |
| 69 | uint32_t count; /* # rates in this set */ |
| 70 | uint8_t rates[WL_NUMRATES]; /* rates in 500kbps units w/hi bit set if basic */ |
| 71 | } wl_rateset_t; |
| 72 | |
| 73 | typedef struct wl_sta_info { |
| 74 | uint16_t ver; /* version of this struct */ |
| 75 | uint16_t len; /* length in bytes of this structure */ |
| 76 | uint16_t cap; /* sta's advertised capabilities */ |
| 77 | uint32_t flags; /* flags defined below */ |
| 78 | uint32_t idle; /* time since data pkt rx'd from sta */ |
| 79 | unsigned char ea[6]; /* Station address */ |
| 80 | wl_rateset_t rateset; /* rateset in use */ |
| 81 | uint32_t in; /* seconds elapsed since associated */ |
| 82 | uint32_t listen_interval_inms; /* Min Listen interval in ms for this STA */ |
| 83 | uint32_t tx_pkts; /* # of packets transmitted */ |
| 84 | uint32_t tx_failures; /* # of packets failed */ |
| 85 | uint32_t rx_ucast_pkts; /* # of unicast packets received */ |
| 86 | uint32_t rx_mcast_pkts; /* # of multicast packets received */ |
| 87 | uint32_t tx_rate; /* Rate of last successful tx frame */ |
| 88 | uint32_t rx_rate; /* Rate of last successful rx frame */ |
| 89 | } wl_sta_info_t; |
| 90 | |
| 91 | typedef struct wlc_ssid { |
| 92 | uint32_t ssid_len; |
| 93 | unsigned char ssid[32]; |
| 94 | } wlc_ssid_t; |
| 95 | |
| 96 | /* Linux network driver ioctl encoding */ |
| 97 | typedef struct wl_ioctl { |
| 98 | uint32_t cmd; /* common ioctl definition */ |
| 99 | void *buf; /* pointer to user buffer */ |
| 100 | uint32_t len; /* length of user buffer */ |
| 101 | uint8_t set; /* get or set request (optional) */ |
| 102 | uint32_t used; /* bytes read or written (optional) */ |
| 103 | uint32_t needed; /* bytes needed (optional) */ |
| 104 | } wl_ioctl_t; |
| 105 | |
| 106 | /* Revision info */ |
| 107 | typedef struct wlc_rev_info { |
| 108 | uint vendorid; /* PCI vendor id */ |
| 109 | uint deviceid; /* device id of chip */ |
| 110 | uint radiorev; /* radio revision */ |
| 111 | uint chiprev; /* chip revision */ |
| 112 | uint corerev; /* core revision */ |
| 113 | uint boardid; /* board identifier (usu. PCI sub-device id) */ |
| 114 | uint boardvendor; /* board vendor (usu. PCI sub-vendor id) */ |
| 115 | uint boardrev; /* board revision */ |
| 116 | uint driverrev; /* driver version */ |
| 117 | uint ucoderev; /* microcode version */ |
| 118 | uint bus; /* bus type */ |
| 119 | uint chipnum; /* chip number */ |
| 120 | } wlc_rev_info_t; |
| 121 | |
| 122 | typedef struct wl_country_list { |
| 123 | uint32_t buflen; |
| 124 | uint32_t band_set; |
| 125 | uint32_t band; |
| 126 | uint32_t count; |
| 127 | char country_abbrev[1]; |
| 128 | } wl_country_list_t; |
| 129 | |
| 130 | |
| 131 | #endif |
| 132 | |