diff options
author | onoe <onoe@FreeBSD.org> | 2002-04-19 08:16:59 +0000 |
---|---|---|
committer | onoe <onoe@FreeBSD.org> | 2002-04-19 08:16:59 +0000 |
commit | 2074250b53996ca9d0f01af3173adb5dfc73c7b3 (patch) | |
tree | 23d21a94e03b9c2000bda07863a9c02a649bbcab /sys/dev/wi/if_wi.c | |
parent | ef9121555f5bde41e3d4a0782c57c267be62142c (diff) | |
download | FreeBSD-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.c | 22 |
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 */ |