xref: /netbsd/sys/dev/ic/wivar.h (revision bf9ec67e)
1 /*	$NetBSD: wivar.h,v 1.14 2002/04/05 00:54:52 ichiro Exp $	*/
2 
3 /*
4  * Copyright (c) 1997, 1998, 1999
5  *	Bill Paul <wpaul@ctr.columbia.edu>.  All rights reserved.
6  *
7  * Redistribution and use in source and binary forms, with or without
8  * modification, are permitted provided that the following conditions
9  * are met:
10  * 1. Redistributions of source code must retain the above copyright
11  *    notice, this list of conditions and the following disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  * 3. All advertising materials mentioning features or use of this software
16  *    must display the following acknowledgement:
17  *	This product includes software developed by Bill Paul.
18  * 4. Neither the name of the author nor the names of any co-contributors
19  *    may be used to endorse or promote products derived from this software
20  *    without specific prior written permission.
21  *
22  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
23  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
24  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
25  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
26  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
27  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
28  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
29  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
30  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
31  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
32  * THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 
35 
36 /*
37  * FreeBSD driver ported to NetBSD by Bill Sommerfeld in the back of the
38  * Oslo IETF plenary meeting.
39  */
40 
41 struct wi_softc	{
42 	struct device		sc_dev;
43 	struct ethercom		sc_ethercom;
44 	struct ifnet		*sc_ifp;
45 	void			*sc_ih; /* interrupt handler */
46 	int			(*sc_enable) __P((struct wi_softc *));
47 	void			(*sc_disable) __P((struct wi_softc *));
48 
49 	int sc_attached;
50 	int sc_enabled;
51 	int sc_firmware_type;
52 #define	WI_NOTYPE	0
53 #define	WI_LUCENT	1
54 #define	WI_INTERSIL	2
55 #define	WI_SYMBOL	3
56 	int sc_pri_firmware_ver;	/* Primary firmware version */
57 	int sc_sta_firmware_ver;	/* Station firmware version */
58 	int sc_pci;			/* attach to PCI-Bus */
59 
60 	bus_space_tag_t		sc_iot;	/* bus cookie */
61 	bus_space_handle_t	sc_ioh; /* bus i/o handle */
62 
63 	struct callout		wi_inquire_ch;
64 	struct callout		wi_scan_sh;
65 
66 	u_int8_t		sc_macaddr[ETHER_ADDR_LEN];
67 
68 	struct ifmedia		sc_media;
69 	int			wi_tx_data_id;
70 	int			wi_tx_mgmt_id;
71 	int			wi_if_flags;
72 	u_int16_t		wi_ptype;
73 	u_int16_t		wi_portnum;
74 	u_int16_t		wi_max_data_len;
75 	u_int16_t		wi_rts_thresh;
76 	u_int16_t		wi_ap_density;
77 	u_int16_t		wi_tx_rate;
78 	u_int16_t		wi_create_ibss;
79 	u_int16_t		wi_channel;
80 	u_int16_t		wi_pm_enabled;
81 	u_int16_t		wi_mor_enabled;
82 	u_int16_t		wi_max_sleep;
83 	u_int16_t		wi_authtype;
84 	u_int16_t		wi_roaming;
85 
86 	struct ieee80211_nwid	wi_nodeid;
87 	struct ieee80211_nwid	wi_netid;
88 	struct ieee80211_nwid	wi_ibssid;
89 
90 	u_int16_t		wi_txbuf[1596 / 2];
91 	int                     wi_has_wep;
92 	int                     wi_use_wep;
93 	int                     wi_tx_key;
94 	struct wi_ltv_keys      wi_keys;
95 	struct wi_counters	wi_stats;
96 
97 	struct wi_apinfo	wi_aps[MAXAPINFO];
98 	int 			wi_naps;
99 	int			wi_scanning;	/* scan mode */
100 };
101 
102 struct wi_card_ident {
103 	u_int16_t	card_id;
104 	char		*card_name;
105 	u_int8_t	firm_type;
106 };
107 
108 int	wi_attach __P((struct wi_softc *));
109 int	wi_detach __P((struct wi_softc *));
110 int	wi_activate __P((struct device *, enum devact));
111 int	wi_intr __P((void *arg));
112 void	wi_power __P((struct wi_softc *, int));
113 void	wi_shutdown __P((struct wi_softc *));
114