summaryrefslogtreecommitdiffstats
path: root/sys/dev/wi
diff options
context:
space:
mode:
authorimp <imp@FreeBSD.org>2002-07-26 22:54:30 +0000
committerimp <imp@FreeBSD.org>2002-07-26 22:54:30 +0000
commit846b7c671c99624148842293fd532e2b993d8f26 (patch)
treeca059410b57b1c5fddb833b65e3affe0049d7a56 /sys/dev/wi
parent7701b3e2af91c74c36811e80d688308234bf30fc (diff)
downloadFreeBSD-src-846b7c671c99624148842293fd532e2b993d8f26.zip
FreeBSD-src-846b7c671c99624148842293fd532e2b993d8f26.tar.gz
Only INTERSIL 0.8.3 and newer firmware is supported with hostap mode.
While earlier versions can be made to work, they require various work arounds not in the driver right now.
Diffstat (limited to 'sys/dev/wi')
-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 297ec39..3a54760 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.
OpenPOWER on IntegriCloud