Annotation of sys/dev/ic/if_wi_hostap.h, Revision 1.1.1.1
1.1 nbrk 1: /* $OpenBSD: if_wi_hostap.h,v 1.9 2003/10/21 18:58:49 jmc Exp $ */
2:
3: /*
4: * Copyright (c) 2002
5: * Thomas Skibo <skibo@pacbell.net>. 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 Thomas Skibo.
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 Thomas Skibo 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 Thomas Skibo OR HIS DRINKING PALS
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: * $FreeBSD: $
35: */
36:
37: #ifndef __WI_HOSTAP_H__
38: #define __WI_HOSTAP_H__
39:
40: #define WIHAP_MAX_STATIONS 1800
41:
42: struct hostap_sta {
43: u_int8_t addr[6];
44: u_int16_t asid;
45: u_int16_t flags;
46: u_int16_t sig_info; /* 15:8 signal, 7:0 noise */
47: u_int16_t capinfo;
48: u_int8_t rates;
49: };
50:
51: #define HOSTAP_FLAGS_AUTHEN 0x0001
52: #define HOSTAP_FLAGS_ASSOC 0x0002
53: #define HOSTAP_FLAGS_PERM 0x0004
54: #define HOSTAP_FLAGS_BITS "\20\01AUTH\02ASSOC\03PERM"
55:
56: #define SIOCHOSTAP_GET _IOWR('i', 210, struct ifreq)
57: #define SIOCHOSTAP_ADD _IOWR('i', 211, struct ifreq)
58: #define SIOCHOSTAP_DEL _IOWR('i', 212, struct ifreq)
59: #define SIOCHOSTAP_GETALL _IOWR('i', 213, struct ifreq)
60: #define SIOCHOSTAP_GFLAGS _IOWR('i', 214, struct ifreq)
61: #define SIOCHOSTAP_SFLAGS _IOWR('i', 215, struct ifreq)
62:
63: /* Flags for SIOCHOSTAP_GFLAGS/SFLAGS */
64: #define WIHAPFL_ACTIVE 0x0001
65: #define WIHAPFL_MAC_FILT 0x0002
66:
67: /* Flags set internally only: */
68: #define WIHAPFL_CANTCHANGE (WIHAPFL_ACTIVE)
69:
70: struct hostap_getall {
71: int nstations;
72: struct hostap_sta *addr;
73: int size;
74: };
75:
76:
77:
78: #ifdef _KERNEL
79: struct wihap_sta_info {
80: TAILQ_ENTRY(wihap_sta_info) list;
81: LIST_ENTRY(wihap_sta_info) hash;
82:
83: struct wi_softc *sc;
84: u_int8_t addr[6];
85: u_short flags;
86: struct timeout tmo;
87:
88: u_int16_t asid;
89: u_int16_t capinfo;
90: u_int16_t sig_info; /* 15:8 signal, 7:0 noise */
91: u_int8_t rates;
92: u_int8_t tx_curr_rate;
93: u_int8_t tx_max_rate;
94: u_int32_t *challenge;
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: #define WI_SIFLAGS_DEAD 0x1000
101:
102: #define WI_STA_HASH_SIZE 113
103:
104: #if WI_STA_HASH_SIZE*16 >= 2007 /* will generate ASID's too large. */
105: #error "WI_STA_HASH_SIZE too big"
106: #endif
107: #if WI_STA_HASH_SIZE*16 < WIHAP_MAX_STATIONS
108: #error "WI_STA_HASH_SIZE too small"
109: #endif
110:
111: struct wihap_info {
112: TAILQ_HEAD(sta_list, wihap_sta_info) sta_list;
113: LIST_HEAD(sta_hash, wihap_sta_info) sta_hash[WI_STA_HASH_SIZE];
114:
115: u_int16_t apflags;
116:
117: int n_stations;
118: u_int16_t asid_inuse_mask[WI_STA_HASH_SIZE];
119:
120: int inactivity_time;
121: struct timeout tmo;
122: };
123:
124: #define WIHAP_DFLT_INACTIVITY_TIME (120) /* 2 minutes */
125:
126: struct wi_softc;
127: struct wi_frame;
128:
129: int wihap_check_tx(struct wihap_info *, u_int8_t [], u_int8_t *);
130: int wihap_data_input(struct wi_softc *, struct wi_frame *, struct mbuf *);
131: int wihap_ioctl(struct wi_softc *, u_long, caddr_t);
132: void wihap_init(struct wi_softc *);
133: void wihap_mgmt_input(struct wi_softc *, struct wi_frame *, struct mbuf *);
134: void wihap_shutdown(struct wi_softc *);
135:
136: #endif /* _KERNEL */
137: #endif /* __WI_HOSTAP_H__ */
CVSweb