Add the DragonFly cvs id and perform general cleanups on cvs/rcs/sccs ids. Most
[dragonfly.git] / sys / dev / netif / wi / wi_hostap.h
1 /*
2  * Copyright (c) 2002
3  *      Thomas Skibo <skibo@pacbell.net>.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. All advertising materials mentioning features or use of this software
14  *    must display the following acknowledgement:
15  *      This product includes software developed by Thomas Skibo.
16  * 4. Neither the name of the author nor the names of any co-contributors
17  *    may be used to endorse or promote products derived from this software
18  *    without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY Thomas Skibo AND CONTRIBUTORS ``AS IS'' AND
21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED.  IN NO EVENT SHALL Thomas Skibo OR HIS DRINKING PALS
24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30  * THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * $FreeBSD: src/sys/dev/wi/wi_hostap.h,v 1.3.2.3 2002/08/02 07:11:34 imp Exp $
33  * $DragonFly: src/sys/dev/netif/wi/Attic/wi_hostap.h,v 1.2 2003/06/17 04:28:33 dillon Exp $
34  */
35
36 #ifndef __WI_HOSTAP_H__
37 #define __WI_HOSTAP_H__
38
39 #define WIHAP_MAX_STATIONS      1800
40
41 struct hostap_sta {
42         u_int8_t        addr[6];
43         u_int16_t       asid;
44         u_int16_t       flags;
45         u_int16_t       sig_info;       /* 15:8 signal, 7:0 noise */
46         u_int16_t       capinfo;
47         u_int8_t        rates;
48 };
49
50 #define HOSTAP_FLAGS_AUTHEN     0x0001
51 #define HOSTAP_FLAGS_ASSOC      0x0002
52 #define HOSTAP_FLAGS_PERM       0x0004
53 #define HOSTAP_FLAGS_BITS       "\20\01ASSOC\02AUTH\03PERM"
54
55 #define SIOCHOSTAP_GET          _IOWR('i', 210, struct ifreq)
56 #define SIOCHOSTAP_ADD          _IOWR('i', 211, struct ifreq)
57 #define SIOCHOSTAP_DEL          _IOWR('i', 212, struct ifreq)
58 #define SIOCHOSTAP_GETALL       _IOWR('i', 213, struct ifreq)
59 #define SIOCHOSTAP_GFLAGS       _IOWR('i', 214, struct ifreq)
60 #define SIOCHOSTAP_SFLAGS       _IOWR('i', 215, struct ifreq)
61
62 /* Flags for SIOCHOSTAP_GFLAGS/SFLAGS */
63 #define WIHAPFL_ACTIVE          0x0001
64 #define WIHAPFL_MAC_FILT        0x0002
65
66 /* Flags set inernally only: */
67 #define WIHAPFL_CANTCHANGE      (WIHAPFL_ACTIVE)
68
69 struct hostap_getall {
70         int             nstations;
71         struct hostap_sta *addr;
72         int             size;
73 };
74
75
76
77 #ifdef _KERNEL
78 struct wihap_sta_info {
79         LIST_ENTRY(wihap_sta_info) list;
80         LIST_ENTRY(wihap_sta_info) hash;
81
82         struct wi_softc *sc;
83         u_int8_t        addr[6];
84         u_short         flags;
85         int             inactivity_timer;
86
87         u_int16_t       asid;
88         u_int16_t       capinfo;
89         u_int16_t       sig_info;       /* 15:8 signal, 7:0 noise */
90         u_int8_t        rates;
91         u_int8_t        tx_curr_rate;
92         u_int8_t        tx_max_rate;
93         u_int32_t       *challenge;
94         struct callout_handle   tmo;
95 };
96
97 #define WI_SIFLAGS_ASSOC        HOSTAP_FLAGS_ASSOC
98 #define WI_SIFLAGS_AUTHEN       HOSTAP_FLAGS_AUTHEN
99 #define WI_SIFLAGS_PERM         HOSTAP_FLAGS_PERM
100
101 #define WI_STA_HASH_SIZE        113
102
103 #if WI_STA_HASH_SIZE*16 >= 2007 /* will generate ASID's too large. */
104 #error "WI_STA_HASH_SIZE too big"
105 #endif
106 #if WI_STA_HASH_SIZE*16 < WIHAP_MAX_STATIONS
107 #error "WI_STA_HASH_SIZE too small"
108 #endif
109
110 struct wihap_info {
111         LIST_HEAD(sta_list, wihap_sta_info)     sta_list;
112         LIST_HEAD(sta_hash, wihap_sta_info)     sta_hash[WI_STA_HASH_SIZE];
113
114         u_int16_t               apflags;
115
116         int                     n_stations;
117         u_int16_t               asid_inuse_mask[WI_STA_HASH_SIZE];
118
119         int                     inactivity_time;
120 };
121
122 #define WIHAP_INTERVAL                  5
123 #define WIHAP_DFLT_INACTIVITY_TIME      120     /* 2 minutes */
124
125 struct wi_softc;
126 struct wi_frame;
127
128 void wihap_timer(void *);
129 void wihap_mgmt_input(struct wi_softc *, struct wi_frame *, struct mbuf *);
130 int  wihap_data_input(struct wi_softc *, struct wi_frame *, struct mbuf *);
131 int  wihap_check_tx(struct wihap_info *, u_int8_t [], u_int8_t *);
132 void wihap_init(struct wi_softc *);
133 void wihap_shutdown(struct wi_softc *);
134 int  wihap_ioctl(struct wi_softc *, u_long, caddr_t);
135
136 #endif /* _KERNEL */
137 #endif /* __WI_HOSTAP_H__ */