diff options
Diffstat (limited to 'sys')
-rw-r--r-- | sys/dev/ic/if_wi.c | 16 | ||||
-rw-r--r-- | sys/dev/ic/if_wi_ieee.h | 3 | ||||
-rw-r--r-- | sys/dev/ic/if_wivar.h | 4 |
3 files changed, 19 insertions, 4 deletions
diff --git a/sys/dev/ic/if_wi.c b/sys/dev/ic/if_wi.c index fbf0ff0097b..4e62eb80a5d 100644 --- a/sys/dev/ic/if_wi.c +++ b/sys/dev/ic/if_wi.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_wi.c,v 1.107 2004/03/15 21:50:26 millert Exp $ */ +/* $OpenBSD: if_wi.c,v 1.108 2004/03/18 16:16:10 millert Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -126,7 +126,7 @@ u_int32_t widebug = WIDEBUG; #if !defined(lint) && !defined(__OpenBSD__) static const char rcsid[] = - "$OpenBSD: if_wi.c,v 1.107 2004/03/15 21:50:26 millert Exp $"; + "$OpenBSD: if_wi.c,v 1.108 2004/03/18 16:16:10 millert Exp $"; #endif /* lint */ #ifdef foo @@ -301,6 +301,8 @@ wi_attach(struct wi_softc *sc, struct wi_funcs *funcs) sc->wi_flags |= WI_FLAGS_HAS_IBSS; sc->wi_flags |= WI_FLAGS_HAS_CREATE_IBSS; } + if (sc->sc_sta_firmware_ver >= 10603) + sc->wi_flags |= WI_FLAGS_HAS_ENH_SECURITY; sc->wi_ibss_port = htole16(0); break; case WI_SYMBOL: @@ -1516,6 +1518,9 @@ wi_setdef(sc, wreq) case WI_RID_SYMBOL_DIVERSITY: sc->wi_diversity = letoh16(wreq->wi_val[0]); break; + case WI_RID_CNF_ENH_SECURITY: + sc->wi_enh_security = letoh16(wreq->wi_val[0]); + break; case WI_RID_ENCRYPTION: sc->wi_use_wep = letoh16(wreq->wi_val[0]); break; @@ -1751,6 +1756,7 @@ wi_ioctl(ifp, command, data) case WI_RID_CREATE_IBSS: case WI_RID_MICROWAVE_OVEN: case WI_RID_OWN_SSID: + case WI_RID_CNF_ENH_SECURITY: /* * Check for features that may not be supported * (must be just before default case). @@ -1763,6 +1769,8 @@ wi_ioctl(ifp, command, data) !(sc->wi_flags & WI_FLAGS_HAS_CREATE_IBSS)) || (wreq.wi_type == WI_RID_MICROWAVE_OVEN && !(sc->wi_flags & WI_FLAGS_HAS_MOR)) || + (wreq.wi_type == WI_RID_CNF_ENH_SECURITY && + !(sc->wi_flags & WI_FLAGS_HAS_ENH_SECURITY)) || (wreq.wi_type == WI_RID_OWN_SSID && wreq.wi_len != 0)) break; @@ -1905,6 +1913,10 @@ wi_init_io(sc) /* Power Management Max Sleep */ WI_SETVAL(WI_RID_MAX_SLEEP, sc->wi_max_sleep); + /* Set Enhanced Security if supported. */ + if (sc->wi_flags & WI_FLAGS_HAS_ENH_SECURITY) + WI_SETVAL(WI_RID_CNF_ENH_SECURITY, sc->wi_enh_security); + /* Set Roaming Mode unless this is a Symbol card. */ if (sc->wi_flags & WI_FLAGS_HAS_ROAMING) WI_SETVAL(WI_RID_ROAMING_MODE, sc->wi_roaming); diff --git a/sys/dev/ic/if_wi_ieee.h b/sys/dev/ic/if_wi_ieee.h index 7f4b37990dc..bceff9eea84 100644 --- a/sys/dev/ic/if_wi_ieee.h +++ b/sys/dev/ic/if_wi_ieee.h @@ -1,4 +1,4 @@ -/* $OpenBSD: if_wi_ieee.h,v 1.21 2004/03/05 20:39:48 millert Exp $ */ +/* $OpenBSD: if_wi_ieee.h,v 1.22 2004/03/18 16:16:10 millert Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -238,6 +238,7 @@ struct wi_counters { #define WI_RID_SYMBOL_KEYLENGTH 0xFC2B #define WI_RID_ROAMING_MODE 0xFC2D /* Roaming mode (1:firm,3:disable) */ #define WI_RID_CUR_BEACON_INT 0xFC33 /* beacon xmit time for BSS creation */ +#define WI_RID_CNF_ENH_SECURITY 0xFC43 /* hide SSID name (prism fw >= 1.6.3) */ #define WI_RID_CNF_DBM_ADJUST 0xFC46 /* Get DBM adjustment factor */ #define WI_RID_SYMBOL_PREAMBLE 0xFC8C /* Enable/disable short preamble */ #define WI_RID_P2_SHORT_PREAMBLE 0xFCB0 /* Short preamble support */ diff --git a/sys/dev/ic/if_wivar.h b/sys/dev/ic/if_wivar.h index 568a8134929..cdc35f6aa6f 100644 --- a/sys/dev/ic/if_wivar.h +++ b/sys/dev/ic/if_wivar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: if_wivar.h,v 1.23 2004/03/02 21:59:29 millert Exp $ */ +/* $OpenBSD: if_wivar.h,v 1.24 2004/03/18 16:16:10 millert Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -79,6 +79,7 @@ struct wi_softc { struct ieee80211_nwid wi_ibss_name; int wi_use_wep; + int wi_enh_security; int wi_crypto_algorithm; int wi_tx_key; struct wi_ltv_keys wi_keys; @@ -135,6 +136,7 @@ struct wi_softc { #define WI_FLAGS_HAS_HOSTAP 0x0100 #define WI_FLAGS_BUS_PCMCIA 0x0200 #define WI_FLAGS_BUS_USB 0x0400 +#define WI_FLAGS_HAS_ENH_SECURITY 0x0800 #define WI_PRT_FMT "%s" #define WI_PRT_ARG(sc) (sc)->sc_dev.dv_xname |