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