brcmfmac: remove some unused definitions
[deliverable/linux.git] / drivers / net / wireless / brcm80211 / brcmfmac / dhd.h
1 /*
2 * Copyright (c) 2010 Broadcom Corporation
3 *
4 * Permission to use, copy, modify, and/or distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
11 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
13 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
14 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 */
16
17 /****************
18 * Common types *
19 */
20
21 #ifndef _BRCMF_H_
22 #define _BRCMF_H_
23
24 #define BRCMF_VERSION_STR "4.218.248.5"
25
26 #include "fweh.h"
27
28 #define TOE_TX_CSUM_OL 0x00000001
29 #define TOE_RX_CSUM_OL 0x00000002
30
31 /* For supporting multiple interfaces */
32 #define BRCMF_MAX_IFS 16
33
34 #define DOT11_MAX_DEFAULT_KEYS 4
35
36 #define BRCMF_E_STATUS_SUCCESS 0
37 #define BRCMF_E_STATUS_FAIL 1
38 #define BRCMF_E_STATUS_TIMEOUT 2
39 #define BRCMF_E_STATUS_NO_NETWORKS 3
40 #define BRCMF_E_STATUS_ABORT 4
41 #define BRCMF_E_STATUS_NO_ACK 5
42 #define BRCMF_E_STATUS_UNSOLICITED 6
43 #define BRCMF_E_STATUS_ATTEMPT 7
44 #define BRCMF_E_STATUS_PARTIAL 8
45 #define BRCMF_E_STATUS_NEWSCAN 9
46 #define BRCMF_E_STATUS_NEWASSOC 10
47 #define BRCMF_E_STATUS_11HQUIET 11
48 #define BRCMF_E_STATUS_SUPPRESS 12
49 #define BRCMF_E_STATUS_NOCHANS 13
50 #define BRCMF_E_STATUS_CS_ABORT 15
51 #define BRCMF_E_STATUS_ERROR 16
52
53 #define BRCMF_E_REASON_INITIAL_ASSOC 0
54 #define BRCMF_E_REASON_LOW_RSSI 1
55 #define BRCMF_E_REASON_DEAUTH 2
56 #define BRCMF_E_REASON_DISASSOC 3
57 #define BRCMF_E_REASON_BCNS_LOST 4
58 #define BRCMF_E_REASON_MINTXRATE 9
59 #define BRCMF_E_REASON_TXFAIL 10
60
61 #define BRCMF_E_REASON_LINK_BSSCFG_DIS 4
62 #define BRCMF_E_REASON_FAST_ROAM_FAILED 5
63 #define BRCMF_E_REASON_DIRECTED_ROAM 6
64 #define BRCMF_E_REASON_TSPEC_REJECTED 7
65 #define BRCMF_E_REASON_BETTER_AP 8
66
67 #define BRCMF_E_IF_ADD 1
68 #define BRCMF_E_IF_DEL 2
69 #define BRCMF_E_IF_CHANGE 3
70
71 #define BRCMF_E_IF_FLAG_NOIF 1
72
73 #define BRCMF_E_IF_ROLE_STA 0
74 #define BRCMF_E_IF_ROLE_AP 1
75 #define BRCMF_E_IF_ROLE_WDS 2
76
77 /* Small, medium and maximum buffer size for dcmd
78 */
79 #define BRCMF_DCMD_SMLEN 256
80 #define BRCMF_DCMD_MEDLEN 1536
81 #define BRCMF_DCMD_MAXLEN 8192
82
83 #define BRCMF_AMPDU_RX_REORDER_MAXFLOWS 256
84
85 /* Length of firmware version string stored for
86 * ethtool driver info which uses 32 bytes as well.
87 */
88 #define BRCMF_DRIVER_FIRMWARE_VERSION_LEN 32
89
90 /* Bus independent dongle command */
91 struct brcmf_dcmd {
92 uint cmd; /* common dongle cmd definition */
93 void *buf; /* pointer to user buffer */
94 uint len; /* length of user buffer */
95 u8 set; /* get or set request (optional) */
96 uint used; /* bytes read or written (optional) */
97 uint needed; /* bytes needed (optional) */
98 };
99
100 /**
101 * struct brcmf_ampdu_rx_reorder - AMPDU receive reorder info
102 *
103 * @pktslots: dynamic allocated array for ordering AMPDU packets.
104 * @flow_id: AMPDU flow identifier.
105 * @cur_idx: last AMPDU index from firmware.
106 * @exp_idx: expected next AMPDU index.
107 * @max_idx: maximum amount of packets per AMPDU.
108 * @pend_pkts: number of packets currently in @pktslots.
109 */
110 struct brcmf_ampdu_rx_reorder {
111 struct sk_buff **pktslots;
112 u8 flow_id;
113 u8 cur_idx;
114 u8 exp_idx;
115 u8 max_idx;
116 u8 pend_pkts;
117 };
118
119 /* Forward decls for struct brcmf_pub (see below) */
120 struct brcmf_proto; /* device communication protocol info */
121 struct brcmf_cfg80211_dev; /* cfg80211 device info */
122 struct brcmf_fws_info; /* firmware signalling info */
123
124 /* Common structure for module and instance linkage */
125 struct brcmf_pub {
126 /* Linkage ponters */
127 struct brcmf_bus *bus_if;
128 struct brcmf_proto *proto;
129 struct brcmf_cfg80211_info *config;
130
131 /* Internal brcmf items */
132 uint hdrlen; /* Total BRCMF header length (proto + bus) */
133 uint rxsz; /* Rx buffer size bus module should use */
134 u8 wme_dp; /* wme discard priority */
135
136 /* Dongle media info */
137 char fwver[BRCMF_DRIVER_FIRMWARE_VERSION_LEN];
138 u8 mac[ETH_ALEN]; /* MAC address obtained from dongle */
139
140 /* Multicast data packets sent to dongle */
141 unsigned long tx_multicast;
142
143 struct brcmf_if *iflist[BRCMF_MAX_IFS];
144
145 struct mutex proto_block;
146 unsigned char proto_buf[BRCMF_DCMD_MAXLEN];
147
148 struct brcmf_fweh_info fweh;
149
150 struct brcmf_fws_info *fws;
151
152 struct brcmf_ampdu_rx_reorder
153 *reorder_flows[BRCMF_AMPDU_RX_REORDER_MAXFLOWS];
154 #ifdef DEBUG
155 struct dentry *dbgfs_dir;
156 #endif
157 };
158
159 struct brcmf_if_event {
160 u8 ifidx;
161 u8 action;
162 u8 flags;
163 u8 bssidx;
164 u8 role;
165 };
166
167 /* forward declarations */
168 struct brcmf_cfg80211_vif;
169 struct brcmf_fws_mac_descriptor;
170
171 /**
172 * enum brcmf_netif_stop_reason - reason for stopping netif queue.
173 *
174 * @BRCMF_NETIF_STOP_REASON_FWS_FC:
175 * netif stopped due to firmware signalling flow control.
176 * @BRCMF_NETIF_STOP_REASON_BLOCK_BUS:
177 * netif stopped due to bus blocking.
178 */
179 enum brcmf_netif_stop_reason {
180 BRCMF_NETIF_STOP_REASON_FWS_FC = 1,
181 BRCMF_NETIF_STOP_REASON_BLOCK_BUS = 2
182 };
183
184 /**
185 * struct brcmf_if - interface control information.
186 *
187 * @drvr: points to device related information.
188 * @vif: points to cfg80211 specific interface information.
189 * @ndev: associated network device.
190 * @stats: interface specific network statistics.
191 * @setmacaddr_work: worker object for setting mac address.
192 * @multicast_work: worker object for multicast provisioning.
193 * @fws_desc: interface specific firmware-signalling descriptor.
194 * @ifidx: interface index in device firmware.
195 * @bssidx: index of bss associated with this interface.
196 * @mac_addr: assigned mac address.
197 * @netif_stop: bitmap indicates reason why netif queues are stopped.
198 * @netif_stop_lock: spinlock for update netif_stop from multiple sources.
199 * @pend_8021x_cnt: tracks outstanding number of 802.1x frames.
200 * @pend_8021x_wait: used for signalling change in count.
201 */
202 struct brcmf_if {
203 struct brcmf_pub *drvr;
204 struct brcmf_cfg80211_vif *vif;
205 struct net_device *ndev;
206 struct net_device_stats stats;
207 struct work_struct setmacaddr_work;
208 struct work_struct multicast_work;
209 struct brcmf_fws_mac_descriptor *fws_desc;
210 int ifidx;
211 s32 bssidx;
212 u8 mac_addr[ETH_ALEN];
213 u8 netif_stop;
214 spinlock_t netif_stop_lock;
215 atomic_t pend_8021x_cnt;
216 wait_queue_head_t pend_8021x_wait;
217 };
218
219 struct brcmf_skb_reorder_data {
220 u8 *reorder;
221 };
222
223 int brcmf_netdev_wait_pend8021x(struct net_device *ndev);
224
225 /* Return pointer to interface name */
226 char *brcmf_ifname(struct brcmf_pub *drvr, int idx);
227
228 int brcmf_net_attach(struct brcmf_if *ifp, bool rtnl_locked);
229 struct brcmf_if *brcmf_add_if(struct brcmf_pub *drvr, s32 bssidx, s32 ifidx,
230 char *name, u8 *mac_addr);
231 void brcmf_del_if(struct brcmf_pub *drvr, s32 bssidx);
232 void brcmf_txflowblock_if(struct brcmf_if *ifp,
233 enum brcmf_netif_stop_reason reason, bool state);
234 u32 brcmf_get_chip_info(struct brcmf_if *ifp);
235 void brcmf_txfinalize(struct brcmf_pub *drvr, struct sk_buff *txp,
236 bool success);
237
238 /* Sets dongle media info (drv_version, mac address). */
239 int brcmf_c_preinit_dcmds(struct brcmf_if *ifp);
240
241 #endif /* _BRCMF_H_ */
This page took 0.160801 seconds and 5 git commands to generate.