Annotation of sys/dev/ic/if_wi_hostap.h, Revision 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