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