diff options
| author | onoe <onoe@NetBSD.org> | 2002-09-30 15:48:41 +0000 |
|---|---|---|
| committer | onoe <onoe@NetBSD.org> | 2002-09-30 15:48:41 +0000 |
| commit | 9fadcea3726baa167a47523cfa282a4e51cd4f3b (patch) | |
| tree | 95621a8eaba8c054f0f24b01a931bb4aceeff576 /sys/dev | |
| parent | 92ef00aebaa1b02d89fcbfcbf52dac2678e445e0 (diff) | |
old lucent adhoc-demo mode (adhoc,flag0 or wiconfig -p 3) wasn't handled
correctly. To avoid massive extra code in each driver, now if_iee80211subr.c
also handles non-standard old lucent adhoc-demo mode.
This also fixes PR 14227.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/ic/awi.c | 145 | ||||
| -rw-r--r-- | sys/dev/ic/awivar.h | 3 | ||||
| -rw-r--r-- | sys/dev/ic/wi.c | 93 | ||||
| -rw-r--r-- | sys/dev/ic/wivar.h | 3 |
4 files changed, 117 insertions, 127 deletions
diff --git a/sys/dev/ic/awi.c b/sys/dev/ic/awi.c index b137aeb1f3d..e81f9748a07 100644 --- a/sys/dev/ic/awi.c +++ b/sys/dev/ic/awi.c @@ -1,4 +1,4 @@ -/* $NetBSD: awi.c,v 1.48 2002/09/30 06:38:10 onoe Exp $ */ +/* $NetBSD: awi.c,v 1.49 2002/09/30 15:48:46 onoe Exp $ */ /*- * Copyright (c) 1999,2000,2001 The NetBSD Foundation, Inc. @@ -85,7 +85,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.48 2002/09/30 06:38:10 onoe Exp $"); +__KERNEL_RCSID(0, "$NetBSD: awi.c,v 1.49 2002/09/30 15:48:46 onoe Exp $"); #include "opt_inet.h" #include "bpfilter.h" @@ -234,12 +234,14 @@ awi_attach(struct awi_softc *sc) IFQ_SET_READY(&ifp->if_snd); memcpy(ifp->if_xname, sc->sc_dev.dv_xname, IFNAMSIZ); + ic->ic_flags = + IEEE80211_F_HASWEP | IEEE80211_F_HASIBSS | IEEE80211_F_HASHOSTAP; if (sc->sc_mib_phy.IEEE_PHY_Type == AWI_PHY_TYPE_FH) ic->ic_phytype = IEEE80211_T_FH; - else + else { ic->ic_phytype = IEEE80211_T_DS; - ic->ic_flags = - IEEE80211_F_HASWEP | IEEE80211_F_HASIBSS | IEEE80211_F_HASHAP; + ic->ic_flags |= IEEE80211_F_HASAHDEMO; + } ic->ic_opmode = IEEE80211_M_STA; ic->ic_state = IEEE80211_S_INIT; ic->ic_newstate = awi_newstate; @@ -486,10 +488,23 @@ awi_init(struct ifnet *ifp) } ic->ic_state = IEEE80211_S_INIT; - sc->sc_mib_local.Network_Mode = - (ic->ic_opmode == IEEE80211_M_ADHOC) ? 0 : 1; - sc->sc_mib_local.Acting_as_AP = - (ic->ic_opmode == IEEE80211_M_HOSTAP) ? 1 : 0; + ic->ic_flags &= ~IEEE80211_F_IBSSON; + switch (ic->ic_opmode) { + case IEEE80211_M_STA: + sc->sc_mib_local.Network_Mode = 1; + sc->sc_mib_local.Acting_as_AP = 0; + break; + case IEEE80211_M_IBSS: + ic->ic_flags |= IEEE80211_F_IBSSON; + case IEEE80211_M_AHDEMO: + sc->sc_mib_local.Network_Mode = 0; + sc->sc_mib_local.Acting_as_AP = 0; + break; + case IEEE80211_M_HOSTAP: + sc->sc_mib_local.Network_Mode = 1; + sc->sc_mib_local.Acting_as_AP = 1; + break; + } memset(&sc->sc_mib_mac.aDesired_ESS_ID, 0, AWI_ESS_ID_SIZE); sc->sc_mib_mac.aDesired_ESS_ID[0] = IEEE80211_ELEMID_SSID; sc->sc_mib_mac.aDesired_ESS_ID[1] = ic->ic_des_esslen; @@ -534,7 +549,7 @@ awi_init(struct ifnet *ifp) ifp->if_flags |= IFF_RUNNING; ifp->if_flags &= ~IFF_OACTIVE; - if ((ic->ic_opmode == IEEE80211_M_ADHOC && sc->sc_no_bssid) || + if (ic->ic_opmode == IEEE80211_M_AHDEMO || ic->ic_opmode == IEEE80211_M_HOSTAP) { ni->ni_chan = ic->ic_ibss_chan; ni->ni_intval = ic->ic_lintval; @@ -564,7 +579,8 @@ awi_init(struct ifnet *ifp) } if (ic->ic_flags & IEEE80211_F_WEPON) ni->ni_capinfo |= IEEE80211_CAPINFO_PRIVACY; - ic->ic_flags |= IEEE80211_F_SIBSS; + if (ic->ic_opmode != IEEE80211_M_AHDEMO) + ic->ic_flags |= IEEE80211_F_SIBSS; ic->ic_state = IEEE80211_S_SCAN; /*XXX*/ sc->sc_substate = AWI_ST_NONE; ieee80211_new_state(&ic->ic_if, IEEE80211_S_RUN, -1); @@ -679,8 +695,8 @@ awi_start(struct ifnet *ifp) } wh = mtod(m0, struct ieee80211_frame *); if (!IEEE80211_IS_MULTICAST(wh->i_addr1) && - ic->ic_opmode != IEEE80211_M_STA && - sc->sc_no_bssid == 0 && + (ic->ic_opmode == IEEE80211_M_HOSTAP || + ic->ic_opmode == IEEE80211_M_IBSS) && sc->sc_adhoc_ap == 0 && (ifp->if_flags & IFF_LINK0) == 0 && (wh->i_fc[0] & IEEE80211_FC0_TYPE_MASK) == @@ -849,11 +865,12 @@ awi_media_change(struct ifnet *ifp) struct awi_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; struct ifmedia_entry *ime; - int i, rate, error = 0; + enum ieee80211_opmode newmode; + int i, rate, newadhoc_ap, error = 0; ime = sc->sc_media.ifm_cur; if (IFM_SUBTYPE(ime->ifm_media) == IFM_AUTO) { - ic->ic_fixed_rate = -1; + i = -1; } else { rate = ieee80211_media2rate(ime->ifm_media, ic->ic_phytype); if (rate == 0) @@ -864,64 +881,43 @@ awi_media_change(struct ifnet *ifp) } if (i == IEEE80211_RATE_SIZE) return EINVAL; + } + if (ic->ic_fixed_rate != i) { ic->ic_fixed_rate = i; + error = ENETRESET; } /* * combination of mediaopt * - * hostap adhoc flag0 opmode no_bssid adhoc_ap comment - * + - - HOSTAP 0 0 HostAP - * - + - ADHOC 0 0 IBSS - * - + + ADHOC 1 0 WaveLAN adhoc - * - - + ADHOC 0 1 Melco old Sta + * hostap adhoc flag0 opmode adhoc_ap comment + * + - - HOSTAP 0 HostAP + * - + - IBSS 0 IBSS + * - + + AHDEMO 0 WaveLAN adhoc + * - - + IBSS 1 Melco old Sta * also LINK0 - * - - - STA 0 0 Infra Station + * - - - STA 0 Infra Station */ - ic->ic_flags &= ~IEEE80211_F_IBSSON; - if (ime->ifm_media & IFM_IEEE80211_HOSTAP) { - if (ic->ic_opmode != IEEE80211_M_HOSTAP) { - ic->ic_opmode = IEEE80211_M_HOSTAP; - sc->sc_no_bssid = 0; - sc->sc_adhoc_ap = 0; - error = ENETRESET; - } - } else if (ime->ifm_media & IFM_IEEE80211_ADHOC) { - if (ic->ic_opmode != IEEE80211_M_ADHOC || - sc->sc_adhoc_ap != 0) { - ic->ic_opmode = IEEE80211_M_ADHOC; - sc->sc_adhoc_ap = 0; - error = ENETRESET; - } + newadhoc_ap = 0; + if (ime->ifm_media & IFM_IEEE80211_HOSTAP) + newmode = IEEE80211_M_HOSTAP; + else if (ime->ifm_media & IFM_IEEE80211_ADHOC) { if (ic->ic_phytype == IEEE80211_T_DS && - (ime->ifm_media & IFM_FLAG0)) { - if (sc->sc_no_bssid == 0) { - sc->sc_no_bssid = 1; - error = ENETRESET; - } - } else { - if (sc->sc_no_bssid) { - sc->sc_no_bssid = 0; - error = ENETRESET; - } - ic->ic_flags |= IEEE80211_F_IBSSON; - } + (ime->ifm_media & IFM_FLAG0)) + newmode = IEEE80211_M_AHDEMO; + else + newmode = IEEE80211_M_IBSS; } else if (ime->ifm_media & IFM_FLAG0) { - if (ic->ic_opmode != IEEE80211_M_ADHOC || - sc->sc_adhoc_ap == 0) { - ic->ic_opmode = IEEE80211_M_ADHOC; - sc->sc_adhoc_ap = 1; - sc->sc_no_bssid = 0; - error = ENETRESET; - } - } else { - if (ic->ic_opmode != IEEE80211_M_STA) { - ic->ic_opmode = IEEE80211_M_STA; - sc->sc_no_bssid = 0; - sc->sc_adhoc_ap = 0; - error = ENETRESET; - } + newmode = IEEE80211_M_IBSS; + newadhoc_ap = 1; + } else + newmode = IEEE80211_M_STA; + if (ic->ic_opmode != newmode || sc->sc_adhoc_ap != newadhoc_ap) { + ic->ic_opmode = newmode; + sc->sc_adhoc_ap = newadhoc_ap; + error = ENETRESET; } + if (error == ENETRESET) { if (sc->sc_enabled) error = awi_init(ifp); @@ -956,14 +952,14 @@ awi_media_status(struct ifnet *ifp, struct ifmediareq *imr) switch (ic->ic_opmode) { case IEEE80211_M_STA: break; - case IEEE80211_M_ADHOC: + case IEEE80211_M_IBSS: if (sc->sc_adhoc_ap) imr->ifm_active |= IFM_FLAG0; - else { + else imr->ifm_active |= IFM_IEEE80211_ADHOC; - if (sc->sc_no_bssid) - imr->ifm_active |= IFM_FLAG0; - } + break; + case IEEE80211_M_AHDEMO: + imr->ifm_active |= IFM_IEEE80211_ADHOC | IFM_FLAG0; break; case IEEE80211_M_HOSTAP: imr->ifm_active |= IFM_IEEE80211_HOSTAP; @@ -1722,7 +1718,8 @@ awi_newstate(void *arg, enum ieee80211_state nstate) awi_drvstate(sc, AWI_DRV_RESET); break; case IEEE80211_S_SCAN: - if (ic->ic_opmode == IEEE80211_M_ADHOC) + if (ic->ic_opmode == IEEE80211_M_IBSS || + ic->ic_opmode == IEEE80211_M_AHDEMO) awi_drvstate(sc, AWI_DRV_ADHSC); else awi_drvstate(sc, AWI_DRV_INFSY); @@ -1734,7 +1731,8 @@ awi_newstate(void *arg, enum ieee80211_state nstate) awi_drvstate(sc, AWI_DRV_INFAUTH); break; case IEEE80211_S_RUN: - if (ic->ic_opmode == IEEE80211_M_ADHOC) + if (ic->ic_opmode == IEEE80211_M_IBSS || + ic->ic_opmode == IEEE80211_M_AHDEMO) awi_drvstate(sc, AWI_DRV_ADHSY); else awi_drvstate(sc, AWI_DRV_INFASSOC); @@ -1886,8 +1884,7 @@ awi_newstate(void *arg, enum ieee80211_state nstate) awi_write_1(sc, AWI_CA_SYNC_IDX, 0); awi_write_2(sc, AWI_CA_SYNC_DWELL, 0); } - if ((ic->ic_flags & IEEE80211_F_SIBSS) && - !sc->sc_no_bssid) + if (ic->ic_flags & IEEE80211_F_SIBSS) awi_write_1(sc, AWI_CA_SYNC_STARTBSS, 1); else awi_write_1(sc, AWI_CA_SYNC_STARTBSS, 0); @@ -1954,7 +1951,8 @@ awi_ether_encap(struct awi_softc *sc, struct mbuf *m) *(u_int16_t *)wh->i_seq = htole16(ni->ni_txseq << IEEE80211_SEQ_SEQ_SHIFT); ni->ni_txseq++; - if (ic->ic_opmode == IEEE80211_M_ADHOC) { + if (ic->ic_opmode == IEEE80211_M_IBSS || + ic->ic_opmode == IEEE80211_M_AHDEMO) { wh->i_fc[1] = IEEE80211_FC1_DIR_NODS; if (sc->sc_adhoc_ap) IEEE80211_ADDR_COPY(wh->i_addr1, ni->ni_macaddr); @@ -1989,7 +1987,8 @@ awi_ether_modcap(struct awi_softc *sc, struct mbuf *m) return m; memcpy(&eh, mtod(m, caddr_t) + sizeof(wh), sizeof(eh)); m_adj(m, sizeof(eh) - sizeof(*llc)); - if (ic->ic_opmode == IEEE80211_M_ADHOC) + if (ic->ic_opmode == IEEE80211_M_IBSS || + ic->ic_opmode == IEEE80211_M_AHDEMO) IEEE80211_ADDR_COPY(wh.i_addr2, eh.ether_shost); memcpy(mtod(m, caddr_t), &wh, sizeof(wh)); llc = (struct llc *)(mtod(m, caddr_t) + sizeof(wh)); diff --git a/sys/dev/ic/awivar.h b/sys/dev/ic/awivar.h index f459ebf3e24..0a9362cd48e 100644 --- a/sys/dev/ic/awivar.h +++ b/sys/dev/ic/awivar.h @@ -1,4 +1,4 @@ -/* $NetBSD: awivar.h,v 1.16 2001/09/19 04:09:55 onoe Exp $ */ +/* $NetBSD: awivar.h,v 1.17 2002/09/30 15:48:48 onoe Exp $ */ /*- * Copyright (c) 1999,2000,2001 The NetBSD Foundation, Inc. @@ -87,7 +87,6 @@ struct awi_softc { sc_busy:1, sc_cansleep:1, sc_enab_intr:1, - sc_no_bssid:1, sc_adhoc_ap:1, sc_invalid:1; struct ifmedia sc_media; diff --git a/sys/dev/ic/wi.c b/sys/dev/ic/wi.c index 2803a178fbb..3b0af7ac3ff 100644 --- a/sys/dev/ic/wi.c +++ b/sys/dev/ic/wi.c @@ -1,4 +1,4 @@ -/* $NetBSD: wi.c,v 1.90 2002/09/30 06:50:35 onoe Exp $ */ +/* $NetBSD: wi.c,v 1.91 2002/09/30 15:48:44 onoe Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -70,7 +70,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: wi.c,v 1.90 2002/09/30 06:50:35 onoe Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wi.c,v 1.91 2002/09/30 15:48:44 onoe Exp $"); #define WI_HERMES_AUTOINC_WAR /* Work around data write autoinc bug. */ #define WI_HERMES_STATS_WAR /* Work around stats counter bug. */ @@ -241,7 +241,7 @@ wi_attach(struct wi_softc *sc) ic->ic_phytype = IEEE80211_T_DS; ic->ic_opmode = IEEE80211_M_STA; - ic->ic_flags = IEEE80211_F_HASPMGT; + ic->ic_flags = IEEE80211_F_HASPMGT | IEEE80211_F_HASAHDEMO; ic->ic_state = IEEE80211_S_INIT; ic->ic_newstate = wi_newstate; @@ -290,7 +290,7 @@ wi_attach(struct wi_softc *sc) sc->sc_flags |= WI_FLAGS_HAS_ROAMING; sc->sc_flags |= WI_FLAGS_HAS_SYSSCALE; if (sc->sc_sta_firmware_ver >= 800) { - ic->ic_flags |= IEEE80211_F_HASHAP; + ic->ic_flags |= IEEE80211_F_HASHOSTAP; ic->ic_flags |= IEEE80211_F_HASIBSS; } sc->sc_ibss_port = 0; @@ -333,7 +333,7 @@ wi_attach(struct wi_softc *sc) #define ADD(s, o) ifmedia_add(&sc->sc_media, \ IFM_MAKEWORD(IFM_IEEE80211, (s), (o), 0), 0, NULL) ADD(IFM_AUTO, 0); - if (ic->ic_flags & IEEE80211_F_HASHAP) + if (ic->ic_flags & IEEE80211_F_HASHOSTAP) ADD(IFM_AUTO, IFM_IEEE80211_HOSTAP); if (ic->ic_flags & IEEE80211_F_HASIBSS) ADD(IFM_AUTO, IFM_IEEE80211_ADHOC); @@ -346,7 +346,7 @@ wi_attach(struct wi_softc *sc) printf("%s%d%sMbps", (i != 0 ? " " : ""), (r & IEEE80211_RATE_VAL) / 2, ((r & 0x1) != 0 ? ".5" : "")); ADD(mword, 0); - if (ic->ic_flags & IEEE80211_F_HASHAP) + if (ic->ic_flags & IEEE80211_F_HASHOSTAP) ADD(mword, IFM_IEEE80211_HOSTAP); if (ic->ic_flags & IEEE80211_F_HASIBSS) ADD(mword, IFM_IEEE80211_ADHOC); @@ -531,9 +531,12 @@ wi_init(struct ifnet *ifp) case IEEE80211_M_STA: wi_write_val(sc, WI_RID_PORTTYPE, WI_PORTTYPE_BSS); break; - case IEEE80211_M_ADHOC: + case IEEE80211_M_IBSS: wi_write_val(sc, WI_RID_PORTTYPE, sc->sc_ibss_port); break; + case IEEE80211_M_AHDEMO: + wi_write_val(sc, WI_RID_PORTTYPE, WI_PORTTYPE_ADHOC); + break; case IEEE80211_M_HOSTAP: wi_write_val(sc, WI_RID_PORTTYPE, WI_PORTTYPE_HOSTAP); break; @@ -613,14 +616,17 @@ wi_init(struct ifnet *ifp) sc->sc_txd[i].d_fid)); sc->sc_txd[i].d_len = 0; } + if (ic->ic_opmode == IEEE80211_M_IBSS) + ic->ic_flags |= IEEE80211_F_IBSSON; + else + ic->ic_flags &= ~IEEE80211_F_IBSSON; /* Enable port 0 */ wi_cmd(sc, WI_CMD_ENABLE | WI_PORT0, 0, 0, 0); ifp->if_flags |= IFF_RUNNING; ifp->if_flags &= ~IFF_OACTIVE; - if ((ic->ic_opmode == IEEE80211_M_ADHOC && - (sc->sc_flags & WI_FLAGS_NO_BSSID)) || - (ic->ic_opmode == IEEE80211_M_HOSTAP)) + if (ic->ic_opmode == IEEE80211_M_AHDEMO || + ic->ic_opmode == IEEE80211_M_HOSTAP) wi_newstate(sc, IEEE80211_S_RUN); /* Enable interrupts */ @@ -936,11 +942,12 @@ wi_media_change(struct ifnet *ifp) struct wi_softc *sc = ifp->if_softc; struct ieee80211com *ic = &sc->sc_ic; struct ifmedia_entry *ime; + enum ieee80211_opmode newmode; int i, rate, error = 0; ime = sc->sc_media.ifm_cur; if (IFM_SUBTYPE(ime->ifm_media) == IFM_AUTO) { - ic->ic_fixed_rate = -1; + i = -1; } else { rate = ieee80211_media2rate(ime->ifm_media, IEEE80211_T_DS); if (rate == 0) @@ -951,40 +958,24 @@ wi_media_change(struct ifnet *ifp) } if (i == IEEE80211_RATE_SIZE) return EINVAL; + } + if (ic->ic_fixed_rate != i) { ic->ic_fixed_rate = i; + error = ENETRESET; } if ((ime->ifm_media & IFM_IEEE80211_ADHOC) && - (ime->ifm_media & IFM_FLAG0)) { - if (ic->ic_opmode != IEEE80211_M_ADHOC || - (sc->sc_flags & WI_FLAGS_NO_BSSID) == 0) { - ic->ic_opmode = IEEE80211_M_ADHOC; - ic->ic_flags &= ~IEEE80211_F_IBSSON; - sc->sc_flags |= WI_FLAGS_NO_BSSID; - error = ENETRESET; - } - } else if (ime->ifm_media & IFM_IEEE80211_ADHOC) { - if (ic->ic_opmode != IEEE80211_M_ADHOC || - (sc->sc_flags & WI_FLAGS_NO_BSSID)) { - ic->ic_opmode = IEEE80211_M_ADHOC; - ic->ic_flags |= IEEE80211_F_IBSSON; - sc->sc_flags &= ~WI_FLAGS_NO_BSSID; - error = ENETRESET; - } - } else if (ime->ifm_media & IFM_IEEE80211_HOSTAP) { - if (ic->ic_opmode != IEEE80211_M_HOSTAP) { - ic->ic_opmode = IEEE80211_M_HOSTAP; - ic->ic_flags &= ~IEEE80211_F_IBSSON; - sc->sc_flags &= ~WI_FLAGS_NO_BSSID; - error = ENETRESET; - } - } else { - if (ic->ic_opmode != IEEE80211_M_STA) { - ic->ic_opmode = IEEE80211_M_STA; - ic->ic_flags &= ~IEEE80211_F_IBSSON; - sc->sc_flags &= ~WI_FLAGS_NO_BSSID; - error = ENETRESET; - } + (ime->ifm_media & IFM_FLAG0)) + newmode = IEEE80211_M_AHDEMO; + else if (ime->ifm_media & IFM_IEEE80211_ADHOC) + newmode = IEEE80211_M_IBSS; + else if (ime->ifm_media & IFM_IEEE80211_HOSTAP) + newmode = IEEE80211_M_HOSTAP; + else + newmode = IEEE80211_M_STA; + if (ic->ic_opmode != newmode) { + ic->ic_opmode = newmode; + error = ENETRESET; } if (error == ENETRESET) { if (sc->sc_enabled) @@ -994,7 +985,7 @@ wi_media_change(struct ifnet *ifp) } ifp->if_baudrate = ifmedia_baudrate(sc->sc_media.ifm_cur->ifm_media); - return 0; + return error; } static void @@ -1032,10 +1023,11 @@ wi_media_status(struct ifnet *ifp, struct ifmediareq *imr) switch (ic->ic_opmode) { case IEEE80211_M_STA: break; - case IEEE80211_M_ADHOC: + case IEEE80211_M_IBSS: imr->ifm_active |= IFM_IEEE80211_ADHOC; - if ((sc->sc_flags & WI_FLAGS_NO_BSSID)) - imr->ifm_active |= IFM_FLAG0; + break; + case IEEE80211_M_AHDEMO: + imr->ifm_active |= IFM_IEEE80211_ADHOC | IFM_FLAG0; break; case IEEE80211_M_HOSTAP: imr->ifm_active |= IFM_IEEE80211_HOSTAP; @@ -1199,11 +1191,7 @@ wi_info_intr(struct wi_softc *sc) /* FALLTHROUGH */ case DISCONNECTED: case ASSOC_FAILED: - if ((ic->ic_opmode == IEEE80211_M_ADHOC && - (sc->sc_flags & WI_FLAGS_NO_BSSID)) || - ic->ic_opmode == IEEE80211_M_HOSTAP) - ; - else + if (ic->ic_opmode == IEEE80211_M_STA) ieee80211_new_state(ifp, IEEE80211_S_INIT, -1); break; } @@ -1537,6 +1525,7 @@ wi_set_cfg(struct ifnet *ifp, u_long cmd, caddr_t data) sc->sc_nodelen = le16toh(wreq.wi_val[0]) * 2; memcpy(sc->sc_nodename, &wreq.wi_val[1], sc->sc_nodelen); break; + case WI_RID_MICROWAVE_OVEN: case WI_RID_ROAMING_MODE: case WI_RID_SYSTEM_SCALE: @@ -1580,6 +1569,7 @@ wi_set_cfg(struct ifnet *ifp, u_long cmd, caddr_t data) break; } break; + case WI_RID_TX_RATE: switch (le16toh(wreq.wi_val[0])) { case 3: @@ -1598,10 +1588,12 @@ wi_set_cfg(struct ifnet *ifp, u_long cmd, caddr_t data) if (sc->sc_enabled) error = wi_write_txrate(sc); break; + case WI_RID_SCAN_APS: if (sc->sc_enabled && ic->ic_opmode != IEEE80211_M_HOSTAP) error = wi_scan_ap(sc); break; + case WI_RID_MGMT_XMIT: if (!sc->sc_enabled) { error = ENETDOWN; @@ -1619,6 +1611,7 @@ wi_set_cfg(struct ifnet *ifp, u_long cmd, caddr_t data) } IF_ENQUEUE(&ic->ic_mgtq, m); break; + default: if (sc->sc_enabled) { error = wi_write_rid(sc, wreq.wi_type, wreq.wi_val, diff --git a/sys/dev/ic/wivar.h b/sys/dev/ic/wivar.h index 9349b8cfbfa..49ecdc443ce 100644 --- a/sys/dev/ic/wivar.h +++ b/sys/dev/ic/wivar.h @@ -1,4 +1,4 @@ -/* $NetBSD: wivar.h,v 1.21 2002/09/30 06:50:36 onoe Exp $ */ +/* $NetBSD: wivar.h,v 1.22 2002/09/30 15:48:45 onoe Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -100,7 +100,6 @@ struct wi_softc { /* Values for wi_flags. */ #define WI_FLAGS_ATTACHED 0x0001 #define WI_FLAGS_INITIALIZED 0x0002 -#define WI_FLAGS_NO_BSSID 0x0004 #define WI_FLAGS_HAS_MOR 0x0010 #define WI_FLAGS_HAS_ROAMING 0x0020 #define WI_FLAGS_HAS_DIVERSITY 0x0040 |
