From ea445224893000b533b43d6caa1a98005e93de42 Mon Sep 17 00:00:00 2001 From: dbj Date: Mon, 25 Mar 2002 09:10:54 +0000 Subject: [PATCH] changes from Warner Losh to read firmware version for non prism2 cards --- sys/dev/ic/wi.c | 34 ++++++++++++++++------------------ sys/dev/ic/wivar.h | 4 ++-- 2 files changed, 18 insertions(+), 20 deletions(-) diff --git a/sys/dev/ic/wi.c b/sys/dev/ic/wi.c index e40c05b77377..caabf02d6fa5 100644 --- a/sys/dev/ic/wi.c +++ b/sys/dev/ic/wi.c @@ -1,4 +1,4 @@ -/* $NetBSD: wi.c,v 1.54 2002/03/21 07:31:37 itohy Exp $ */ +/* $NetBSD: wi.c,v 1.55 2002/03/25 09:10:54 dbj Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -70,7 +70,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: wi.c,v 1.54 2002/03/21 07:31:37 itohy Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wi.c,v 1.55 2002/03/25 09:10:54 dbj Exp $"); #define WI_HERMES_AUTOINC_WAR /* Work around data write autoinc bug. */ #define WI_HERMES_STATS_WAR /* Work around stats counter bug. */ @@ -1680,7 +1680,7 @@ wi_init(ifp) * It is under investigation for details. * (ichiro@netbsd.org) */ - if (sc->sc_prism2_ver < 82 ) { + if (sc->sc_firmware_ver < 82 ) { /* firm ver < 0.8 variant 2 */ WI_SETVAL(WI_RID_PROMISC, 1); } @@ -1988,25 +1988,23 @@ wi_get_id(sc) sc->sc_prism2 = 0; break; default: - printf("Lucent chip or unknown chip\n"); + printf("Lucent chip or unknown chip"); sc->sc_prism2 = 0; break; } - if (sc->sc_prism2) { - /* try to get prism2 firm version */ - memset(&ver, 0, sizeof(ver)); - ver.wi_type = WI_RID_STA_IDENTITY; - ver.wi_len = 5; - wi_read_record(sc, (struct wi_ltv_gen *)&ver); - LE16TOH(ver.wi_ver[1]); - LE16TOH(ver.wi_ver[2]); - LE16TOH(ver.wi_ver[3]); - printf(", Firmware: %i.%i variant %i\n", ver.wi_ver[2], - ver.wi_ver[3], ver.wi_ver[1]); - sc->sc_prism2_ver = ver.wi_ver[2] * 100 + - ver.wi_ver[3] * 10 + ver.wi_ver[1]; - } + /* get firmware version */ + memset(&ver, 0, sizeof(ver)); + ver.wi_type = WI_RID_STA_IDENTITY; + ver.wi_len = 5; + wi_read_record(sc, (struct wi_ltv_gen *)&ver); + LE16TOH(ver.wi_ver[1]); + LE16TOH(ver.wi_ver[2]); + LE16TOH(ver.wi_ver[3]); + printf(", Firmware: %i.%i variant %i\n", ver.wi_ver[2], + ver.wi_ver[3], ver.wi_ver[1]); + sc->sc_firmware_ver = ver.wi_ver[2] * 100 + + ver.wi_ver[3] * 10 + ver.wi_ver[1]; return; } diff --git a/sys/dev/ic/wivar.h b/sys/dev/ic/wivar.h index 1cbf04819dee..1fd750f09076 100644 --- a/sys/dev/ic/wivar.h +++ b/sys/dev/ic/wivar.h @@ -1,4 +1,4 @@ -/* $NetBSD: wivar.h,v 1.8 2002/01/21 11:28:18 ichiro Exp $ */ +/* $NetBSD: wivar.h,v 1.9 2002/03/25 09:10:55 dbj Exp $ */ /* * Copyright (c) 1997, 1998, 1999 @@ -49,7 +49,7 @@ struct wi_softc { int sc_attached; int sc_enabled; int sc_prism2; - int sc_prism2_ver; + int sc_firmware_ver; int sc_pci; /* attach to PCI-Bus */ bus_space_tag_t sc_iot; /* bus cookie */