Initial commit
[project/iwinfo.git] / api / broadcom.h
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_PHYTYPE 39
39 #define WLC_GET_PASSIVE 48
40 #define WLC_GET_COUNTRY 83
41 #define WLC_GET_REVINFO 98
42 #define WLC_GET_AP 117
43 #define WLC_GET_RSSI 127
44 #define WLC_GET_WSEC 133
45 #define WLC_GET_PHY_NOISE 135
46 #define WLC_GET_BSS_INFO 136
47 #define WLC_GET_BANDLIST 140
48 #define WLC_GET_ASSOCLIST 159
49 #define WLC_GET_WPA_AUTH 164
50 #define WLC_GET_COUNTRY_LIST 261
51 #define WLC_GET_VAR 262
52
53 #define WLC_PHY_TYPE_A 0
54 #define WLC_PHY_TYPE_B 1
55 #define WLC_PHY_TYPE_G 2
56 #define WLC_PHY_TYPE_N 4
57 #define WLC_PHY_TYPE_LP 5
58
59 #define WLC_BAND_5G 1
60 #define WLC_BAND_2G 2
61 #define WLC_BAND_ALL 3
62
63
64 struct wl_ether_addr {
65 uint8_t octet[6];
66 };
67
68 struct wl_maclist {
69 uint count;
70 struct wl_ether_addr ea[1];
71 };
72
73 typedef struct wl_sta_rssi {
74 int rssi;
75 char mac[6];
76 uint16_t foo;
77 } wl_sta_rssi_t;
78
79 #define WL_NUMRATES 255 /* max # of rates in a rateset */
80 typedef struct wl_rateset {
81 uint32_t count; /* # rates in this set */
82 uint8_t rates[WL_NUMRATES]; /* rates in 500kbps units w/hi bit set if basic */
83 } wl_rateset_t;
84
85 typedef struct wl_sta_info {
86 uint16_t ver; /* version of this struct */
87 uint16_t len; /* length in bytes of this structure */
88 uint16_t cap; /* sta's advertised capabilities */
89 uint32_t flags; /* flags defined below */
90 uint32_t idle; /* time since data pkt rx'd from sta */
91 unsigned char ea[6]; /* Station address */
92 wl_rateset_t rateset; /* rateset in use */
93 uint32_t in; /* seconds elapsed since associated */
94 uint32_t listen_interval_inms; /* Min Listen interval in ms for this STA */
95 uint32_t tx_pkts; /* # of packets transmitted */
96 uint32_t tx_failures; /* # of packets failed */
97 uint32_t rx_ucast_pkts; /* # of unicast packets received */
98 uint32_t rx_mcast_pkts; /* # of multicast packets received */
99 uint32_t tx_rate; /* Rate of last successful tx frame */
100 uint32_t rx_rate; /* Rate of last successful rx frame */
101 } wl_sta_info_t;
102
103 typedef struct wlc_ssid {
104 uint32_t ssid_len;
105 unsigned char ssid[32];
106 } wlc_ssid_t;
107
108 /* Linux network driver ioctl encoding */
109 typedef struct wl_ioctl {
110 uint32_t cmd; /* common ioctl definition */
111 void *buf; /* pointer to user buffer */
112 uint32_t len; /* length of user buffer */
113 uint8_t set; /* get or set request (optional) */
114 uint32_t used; /* bytes read or written (optional) */
115 uint32_t needed; /* bytes needed (optional) */
116 } wl_ioctl_t;
117
118 /* Revision info */
119 typedef struct wlc_rev_info {
120 uint vendorid; /* PCI vendor id */
121 uint deviceid; /* device id of chip */
122 uint radiorev; /* radio revision */
123 uint chiprev; /* chip revision */
124 uint corerev; /* core revision */
125 uint boardid; /* board identifier (usu. PCI sub-device id) */
126 uint boardvendor; /* board vendor (usu. PCI sub-vendor id) */
127 uint boardrev; /* board revision */
128 uint driverrev; /* driver version */
129 uint ucoderev; /* microcode version */
130 uint bus; /* bus type */
131 uint chipnum; /* chip number */
132 uint phytype; /* phy type */
133 uint phyrev; /* phy revision */
134 uint anarev; /* anacore rev */
135 } wlc_rev_info_t;
136
137 typedef struct wl_country_list {
138 uint32_t buflen;
139 uint32_t band_set;
140 uint32_t band;
141 uint32_t count;
142 char country_abbrev[1];
143 } wl_country_list_t;
144
145
146 #endif