summaryrefslogtreecommitdiffstats
path: root/sys/dev/wi/if_wi.c
diff options
context:
space:
mode:
authoronoe <onoe@FreeBSD.org>2002-04-19 08:16:59 +0000
committeronoe <onoe@FreeBSD.org>2002-04-19 08:16:59 +0000
commit2074250b53996ca9d0f01af3173adb5dfc73c7b3 (patch)
tree23d21a94e03b9c2000bda07863a9c02a649bbcab /sys/dev/wi/if_wi.c
parentef9121555f5bde41e3d4a0782c57c267be62142c (diff)
downloadFreeBSD-src-2074250b53996ca9d0f01af3173adb5dfc73c7b3.zip
FreeBSD-src-2074250b53996ca9d0f01af3173adb5dfc73c7b3.tar.gz
Some fixes for Symbol card.
- The version string doesn't need to start with 'V'. - Symbol firmware doesn't support ROAMING_MODE nor MICROWAVE_OPEN. Obtained from: NetBSD
Diffstat (limited to 'sys/dev/wi/if_wi.c')
-rw-r--r--sys/dev/wi/if_wi.c22
1 files changed, 20 insertions, 2 deletions
diff --git a/sys/dev/wi/if_wi.c b/sys/dev/wi/if_wi.c
index 15862ca..f650bdd 100644
--- a/sys/dev/wi/if_wi.c
+++ b/sys/dev/wi/if_wi.c
@@ -437,9 +437,9 @@ wi_get_id(sc)
memset(&sver, 0, sizeof(sver));
sver.wi_type = WI_RID_SYMBOL_IDENTITY;
sver.wi_len = 7;
- /* value should be "V2.00-11" */
+ /* value should be the format like "V2.00-11" */
if (wi_read_record(sc, (struct wi_ltv_gen *)&sver) == 0 &&
- *(p = (char *)sver.wi_str) == 'V' &&
+ *(p = (char *)sver.wi_str) >= 'A' &&
p[2] == '.' && p[5] == '-' && p[8] == '\0') {
sc->sc_firmware_type = WI_SYMBOL;
sc->sc_sta_firmware_ver = (p[1] - '0') * 10000 +
@@ -1008,6 +1008,16 @@ wi_read_record(sc, ltv)
p2ltv.wi_len = 2;
ltv = &p2ltv;
break;
+ case WI_RID_ROAMING_MODE:
+ if (sc->sc_firmware_type == WI_INTERSIL)
+ break;
+ /* not supported */
+ ltv->wi_len = 1;
+ return 0;
+ case WI_RID_MICROWAVE_OVEN:
+ /* not supported */
+ ltv->wi_len = 1;
+ return 0;
}
}
@@ -1162,6 +1172,14 @@ wi_write_record(sc, ltv)
p2ltv.wi_val = htole16(0x02);
ltv = &p2ltv;
break;
+ case WI_RID_ROAMING_MODE:
+ if (sc->sc_firmware_type == WI_INTERSIL)
+ break;
+ /* not supported */
+ return 0;
+ case WI_RID_MICROWAVE_OVEN:
+ /* not supported */
+ return 0;
}
} else {
/* LUCENT */
OpenPOWER on IntegriCloud