Parsing of vendor strings may be broken in 2.6.16

Pavel Roskin proski at gnu.org
Wed Mar 29 04:33:41 EST 2006


Hello!

I have received a report from somebody whose D-Link card is no longer
supported by hostap_cs after upgrading to the 2.6.16 kernel.

That's what "pccardctl ident" shows:

Socket 0:
  product info: "", "Link DWL-650 11Mbps WLAN Card", "Version 01.02", ""
  manfid: 0x0156, 0x0002
  function: 6 (network)

And that's the output of dump_cs (I'm removing the parts after the
version data so that I don't expose the MAC address publicly):

Socket 0
offset 0x02, tuple 0x01, link 0x03
  00 00 ff 
dev_info
  NULL 0ns, 512b

offset 0x07, tuple 0x17, link 0x04
  67 5a 08 ff 
attr_dev_info
  SRAM 500ns, 1kb

offset 0x0d, tuple 0x1d, link 0x05
  03 67 5a 08 ff 
invalid tuple
offset 0x14, tuple 0x15, link 0x32
  05 00 44 00 4c 69 6e 6b 20 44 57 4c 2d 36 35 30 
  20 31 31 4d 62 70 73 20 57 4c 41 4e 20 43 61 72 
  64 00 56 65 72 73 69 6f 6e 20 30 31 2e 30 32 00 
  00 ff 
vers_1 5.0, "D", "Link DWL-650 11Mbps WLAN Card", "Version 01.02", ""

offset 0x48, tuple 0x20, link 0x04
  56 01 02 00 
manfid 0x0156, 0x0002
.............


Notice the first vendor string being empty in pccardctl output and "D"
in the dump_cis output.

The preceding tuple is reported as invalid, but the reason is probably
because its type is 0x1d (CISTPL_DEVICE_OA), which is not expected by
pccard_parse_tuple() in debug/parse_cis.c.

pccardctl takes vendor strings from the kernel.  It's also consistent
with the fact that if the kernel parsed the first vendor string as "D",
the card would have been supported by hostap_cs.

I wish I could debug it myself, but I'm quite busy now, and the bug
seems to be pretty bad.  If it's a kernel bug indeed, the fix may be a
good candidate for 2.6.16.y.  I'll appreciate if somebody could check
the kernel CIS parsing code.

-- 
Regards,
Pavel Roskin




More information about the linux-pcmcia mailing list