aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2002-07-26 22:54:30 +0000
committerWarner Losh <imp@FreeBSD.org>2002-07-26 22:54:30 +0000
commitbec60c0fd87667462d7ffe3bbc4501b38630b9c8 (patch)
treeca059410b57b1c5fddb833b65e3affe0049d7a56 /sys/dev
parenta366365a747b6553e24b19749afc0843c22801b4 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/wi/if_wi.c21
1 files changed, 13 insertions, 8 deletions
diff --git a/sys/dev/wi/if_wi.c b/sys/dev/wi/if_wi.c
index 297ec394ae22..3a5476025bce 100644
--- a/sys/dev/wi/if_wi.c
+++ b/sys/dev/wi/if_wi.c
@@ -332,6 +332,13 @@ wi_generic_attach(device_t dev)
sc->wi_flags |= WI_FLAGS_HAS_IBSS;
sc->wi_flags |= WI_FLAGS_HAS_CREATE_IBSS;
}
+ /*
+ * version 0.8.3 and newer are the only ones that are known
+ * to currently work. Earlier versions can be made to work,
+ * at least according to the Linux driver.
+ */
+ if (sc->sc_sta_firmware_ver >= 803)
+ sc->wi_flags |= WI_FLAGS_HAS_HOSTAP;
sc->wi_ibss_port = htole16(0);
break;
case WI_SYMBOL:
@@ -384,7 +391,7 @@ wi_generic_attach(device_t dev)
if (sc->wi_flags & WI_FLAGS_HAS_CREATE_IBSS)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS1,
IFM_IEEE80211_IBSSMASTER, 0), 0);
- if (sc->sc_firmware_type == WI_INTERSIL)
+ if (sc->wi_flags & WI_FLAGS_HAS_HOSTAP)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS1,
IFM_IEEE80211_HOSTAP, 0), 0);
}
@@ -398,7 +405,7 @@ wi_generic_attach(device_t dev)
if (sc->wi_flags & WI_FLAGS_HAS_CREATE_IBSS)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS2,
IFM_IEEE80211_IBSSMASTER, 0), 0);
- if (sc->sc_firmware_type == WI_INTERSIL)
+ if (sc->wi_flags & WI_FLAGS_HAS_HOSTAP)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS2,
IFM_IEEE80211_HOSTAP, 0), 0);
}
@@ -412,7 +419,7 @@ wi_generic_attach(device_t dev)
if (sc->wi_flags & WI_FLAGS_HAS_CREATE_IBSS)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS5,
IFM_IEEE80211_IBSSMASTER, 0), 0);
- if (sc->sc_firmware_type == WI_INTERSIL)
+ if (sc->wi_flags & WI_FLAGS_HAS_HOSTAP)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS5,
IFM_IEEE80211_HOSTAP, 0), 0);
}
@@ -426,7 +433,7 @@ wi_generic_attach(device_t dev)
if (sc->wi_flags & WI_FLAGS_HAS_CREATE_IBSS)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS11,
IFM_IEEE80211_IBSSMASTER, 0), 0);
- if (sc->sc_firmware_type == WI_INTERSIL)
+ if (sc->wi_flags & WI_FLAGS_HAS_HOSTAP)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_IEEE80211_DS11,
IFM_IEEE80211_HOSTAP, 0), 0);
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_MANUAL, 0, 0), 0);
@@ -438,14 +445,12 @@ wi_generic_attach(device_t dev)
if (sc->wi_flags & WI_FLAGS_HAS_CREATE_IBSS)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO,
IFM_IEEE80211_IBSSMASTER, 0), 0);
- if (sc->sc_firmware_type == WI_INTERSIL)
+ if (sc->wi_flags & WI_FLAGS_HAS_HOSTAP)
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO,
IFM_IEEE80211_HOSTAP, 0), 0);
ADD(IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO, 0, 0), 0);
#undef ADD
- ifmedia_set(&sc->ifmedia, IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO,
- 0, 0));
-
+ ifmedia_set(&sc->ifmedia, IFM_MAKEWORD(IFM_IEEE80211, IFM_AUTO, 0, 0));
/*
* Call MI attach routine.