aboutsummaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authorWarner Losh <imp@FreeBSD.org>2005-01-21 02:11:48 +0000
committerWarner Losh <imp@FreeBSD.org>2005-01-21 02:11:48 +0000
commit9cdd39c25fed0a5c7784220b0b0d37faf3a57900 (patch)
tree3c945e8b70eee8a209e7d73194b9f3332eea6f9f /sys/dev
parent94aa7aecdf1b2945920a03e01443061e223bd099 (diff)
Notes
Diffstat (limited to 'sys/dev')
-rw-r--r--sys/dev/pccard/pccard_cis.c16
-rw-r--r--sys/dev/pccard/pccard_cis.h1
2 files changed, 15 insertions, 2 deletions
diff --git a/sys/dev/pccard/pccard_cis.c b/sys/dev/pccard/pccard_cis.c
index 2fa88efd17cb8..4286208460c91 100644
--- a/sys/dev/pccard/pccard_cis.c
+++ b/sys/dev/pccard/pccard_cis.c
@@ -1269,6 +1269,8 @@ pccard_parse_cis_tuple(struct pccard_tuple *tuple, void *arg)
static int
decode_funce(struct pccard_tuple *tuple, struct pccard_function *pf)
{
+ int i;
+ int len;
int type = pccard_tuple_read_1(tuple, 0);
switch (pf->function) {
@@ -1280,8 +1282,7 @@ decode_funce(struct pccard_tuple *tuple, struct pccard_function *pf)
break;
case PCCARD_FUNCTION_NETWORK:
if (type == PCCARD_TPLFE_TYPE_LAN_NID) {
- int i;
- int len = pccard_tuple_read_1(tuple, 1);
+ len = pccard_tuple_read_1(tuple, 1);
if (tuple->length < 2 + len || len > 8) {
/* tuple length not enough or nid too long */
break;
@@ -1291,6 +1292,17 @@ decode_funce(struct pccard_tuple *tuple, struct pccard_function *pf)
= pccard_tuple_read_1(tuple, i + 2);
}
pf->pf_funce_lan_nidlen = len;
+ } else if (type == PCCARD_TPLFE_TYPE_LAN_OLD_NID) {
+ /* Some older cards have this format, no idea if it is standard */
+ if (tuple->length != 13)
+ break;
+ len = pccard_tuple_read_1(tuple, 4);
+ if (len != 6)
+ break;
+ for (i = 0; i < len; i++) {
+ pf->pf_funce_lan_nid[i]
+ = pccard_tuple_read_1(tuple, i + 5);
+ }
}
break;
default:
diff --git a/sys/dev/pccard/pccard_cis.h b/sys/dev/pccard/pccard_cis.h
index d6b9c3899f863..2db306416920c 100644
--- a/sys/dev/pccard/pccard_cis.h
+++ b/sys/dev/pccard/pccard_cis.h
@@ -168,6 +168,7 @@
#define PCCARD_FUNCTION_SECURITY 9
#define PCCARD_FUNCTION_INSTRUMENT 10
#define CISTPL_FUNCE 0x22
+#define PCCARD_TPLFE_TYPE_LAN_OLD_NID 0x00 /* Old way? */
#define PCCARD_TPLFE_TYPE_LAN_TECH 0x01
#define PCCARD_TPLFE_TYPE_LAN_SPEED 0x02
#define PCCARD_TPLFE_TYPE_LAN_MEDIA 0x03