Steve, Here's a patch I did against -STABLE circa mid-June. It probably won't apply cleanly today -- I think the 2x MAC address read has been MFC'd. Pretty minor changes, though; it works great for me. Enjoy, Eric Steve Logue wrote: > > Sorry if this is a duplicate.... > > Hello, > > Does anyone have any patches for preliminary support of the Linksys > WDT11/WPC11 wireless ethernet combo? The WDT card uses the PLX PCI9052 > chipset and shows up under -STABLE's dmesg as: > > pci0: <unknown card> (vendor=0x16ab, dev=0x1102) at 19.0 irq 12 > > With what I have been reading so far on the PLX thread, I appear to have > a different dev number. Most people have talked about dev=1101, but I > have dev=1102. Is this a new rev of the board? How can I get this > working? > > Patches for -CURRENT or -STABLE would be appreciated. > > -STEVEl > > To Unsubscribe: send mail to [EMAIL PROTECTED] > with "unsubscribe freebsd-hackers" in the body of the message
--- share/man/man4/wi.save Sun Jun 10 06:13:04 2001 +++ share/man/man4/wi.4 Sun Jun 10 06:09:01 2001 @@ -53,6 +53,12 @@ Both the original 2Mbps WaveLAN/IEEE cards and the newer 6Mbps WaveLAN/IEEE Turbo adapters are supported. .Pp +Additionally, the +.Nm +driver supports PCI adapters for the cards based PLX Techology's PCI 9052, +such as the Linksys WDT11 Wireless PCI Adapter which works in conjunction +with the WPC11 Wireless Network PC Card. +.Pp The core of the WaveLAN/IEEE is the Lucent Hermes controller. All host/device interaction is via programmed I/O with the Hermes. --- sys/i386/isa/if_wi.save Sat Jun 9 23:51:31 2001 +++ sys/i386/isa/if_wi.c Sun Jun 10 06:31:10 2001 @@ -230,6 +230,7 @@ wi_pci_probe(dev) struct wi_softc *sc; sc = device_get_softc(dev); + /* XXX Getting a little unwieldy... */ if ((pci_get_vendor(dev) == WI_PCI_VENDOR_EUMITCOM) && (pci_get_device(dev) == WI_PCI_DEVICE_PRISM2STA)) { sc->wi_prism2 = 1; @@ -237,6 +238,20 @@ wi_pci_probe(dev) "PRISM2STA PCI WaveLAN/IEEE 802.11"); return (0); } + if ((pci_get_vendor(dev) == WI_PCI_VENDOR_LINKSYS) && + (pci_get_device(dev) == WI_PCI_DEVICE_WDT11)) { + sc->wi_prism2 = 1; + device_set_desc(dev, + "Linksys WDT11 Wireless PCI Adapter"); + return (0); + } + if ((pci_get_vendor(dev) == WI_PCI_VENDOR_GLOBALSUN) && + (pci_get_device(dev) == WI_PCI_DEVICE_GL24110P)) { + sc->wi_prism2 = 1; + device_set_desc(dev, + "Global Sun GL24110P Wireless PCI Adapter"); + return (0); + } return(ENXIO); } @@ -399,9 +414,15 @@ wi_generic_attach(device_t dev) /* Reset the NIC. */ wi_reset(sc); - /* Read the station address. */ + /* + * Read the station address. + * And do it twice. I've seen PRISM-based cards that return + * an error when trying to read it the first time, which causes + * the probe to fail. + */ mac.wi_type = WI_RID_MAC_NODE; mac.wi_len = 4; + wi_read_record(sc, (struct wi_ltv_gen *)&mac); if ((error = wi_read_record(sc, (struct wi_ltv_gen *)&mac)) != 0) { device_printf(dev, "mac read failed %d\n", error); wi_free(dev); --- sys/i386/isa/if_wireg.save Sat Jun 9 23:51:41 2001 +++ sys/i386/isa/if_wireg.h Sun Jun 10 06:27:17 2001 @@ -147,7 +147,12 @@ struct wi_softc { #define WI_PCI_IORES 0x1C #define WI_PCI_VENDOR_EUMITCOM 0x1638 -#define WI_PCI_DEVICE_PRISM2STA 0x1100 +#define WI_PCI_DEVICE_PRISM2STA 0x1100 /* Eumitcom PCI WL11000 */ +#define WI_PCI_VENDOR_LINKSYS 0x16AB +#define WI_PCI_DEVICE_WDT11 0x1102 /* Linksys PCI WPC11 */ +#define WI_PCI_VENDOR_GLOBALSUN 0x16AB +#define WI_PCI_DEVICE_GL24110P 0x1101 /* Global Sun GL24110P */ + #define WI_HFA384X_SWSUPPORT0_OFF 0x28 #define WI_PRISM2STA_MAGIC 0x4A2D