Hacking in support for DWL-650H

Daniel Eischen <[email protected]>
Newsgroups gmane.os.freebsd.devel.mobile
Message-ID <[email protected]>
[ Should this go to -current instead of -mobile? ]

I just got a D-Link DWL-650H 802.11b WLAN card.  Before
hacking the kernel, it gets probed as:

  pccard0: CIS version PC Card Standard 5.0
  pccard0: CIS info: D-Link Corporation, D-Link DWL-650H 11Mbps WLAN Adapter, 1.00
  pccard0: Manufacturer code 0x149, product 0x1
  pccard0: function 0: network adapter, ccr addr 3e0 mask 7
  pccard0: function 0, config table entry 1: I/O card; irq mask ffff; iomask 7, iospace 0-47; memspace 0-3ff; mwait_required rdybsy_active io16 irqshare irqlevel
  pccard0: <unknown card> (manufacturer=0x0149, product=0x0001) at function 0
  pccard0:    CIS info: D-Link Corporation, D-Link DWL-650H 11Mbps WLAN Adapter, 1.00

I added the card to pccarddevs and hooked in support to wi (see patch
at end).  It now gets probed as:

  wi0: <D-Link DWL-650H> at port 0x100-0x147 irq 11 function 0 config 1 on pccard0
  wi0: 802.11 address: 00:05:5d:d7:58:6a
  wi0: using RF:PRISM2 MAC:HFA3841
  wi0: Symbol Firmware: Primary (2.1.2), Station (2.50.13)
  wi0: supported rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
  wi0: bpf attached
  wi0: bpf attached

I can set its ssid and channel, but as soon as I try to assign it
a static address/netmask or use dhclient, it hangs the kernel.
I was able to recover the messages:

  vespa kernel: wi0: timeout in wi_cmd 0x0000; event status 0x0000
  vespa kernel: wi0: timeout in wi_cmd 0x0000; event status 0x0000
  vespa kernel: wi0: wi_cmd: busy bit won't clear.
  vespa last message repeated 2 times
  vespa kernel: wi0: init failed
  vespa kernel: wi0: wi_cmd: busy bit won't clear.
  vespa last message repeated 16 times
  vespa kernel: wi0: failed to allocate 1585 bytes on NIC
  vespa kernel: wi0: tx buffer allocation failed (error 12)
  vespa kernel: wi0: interface not running
  vespa kernel: wi0: wi_cmd: busy bit won't clear.
  vespa kernel: wi0: timeout in wi_seek to fc80/0
  vespa last message repeated 2 times
  vespa kernel: wi0: wi_cmd: busy bit won't clear.
  vespa kernel: wi0: timeout in wi_seek to fc00/0
  vespa kernel: wi0: timeout in wi_seek to fc81/0
  vespa kernel: wi0: timeout in wi_seek to fc0c/0
  vespa kernel: wi0: timeout in wi_seek to fc02/0
  vespa kernel: wi0: timeout in wi_seek to fc03/0
  vespa kernel: wi0: timeout in wi_seek to fc04/0
  vespa kernel: wi0: timeout in wi_seek to fc01/0
  vespa kernel: wi0: timeout in wi_seek to fc09/0
  vespa kernel: wi0: timeout in wi_seek to fc07/0
  vespa kernel: wi0: timeout in wi_seek to fc83/0
  vespa kernel: wi0: timeout in wi_seek to fc84/0
  vespa kernel: wi0: timeout in wi_seek to fc0e/0
  vespa kernel: wi0: timeout in wi_seek to fc85/0
  vespa kernel: wi0: timeout in wi_seek to fc2a/0
  vespa kernel: wi0: timeout in wi_seek to fc28/0
  vespa kernel: wi0: timeout in wi_seek to fc80/0
  vespa kernel: wi0: wi_cmd: busy bit won't clear.
  vespa kernel: wi0: timeout in wi_seek to fce2/0
  vespa kernel: acpi_button0: power button pressed
  vespa kernel: wi0: detached

Any ideas?  I checked NetBSD and saw that they added recognition for
the DWL-650H; the commit message also says it's been tested.

BTW, I've got a Dell True-Moble 1150 (Lucent WaveLAN/IEEE) that 
works just fine with wi.  The kernel is current from the last
2 or 3 days.

-- 
Dan Eischen

%%%%%%%%%%%%%%%

Index: pccard/pccarddevs
===================================================================
RCS file: /opt/FreeBSD/cvs/src/sys/dev/pccard/pccarddevs,v
retrieving revision 1.44
diff -u -r1.44 pccarddevs
--- pccard/pccarddevs	15 Feb 2003 13:57:52 -0000	1.44
+++ pccard/pccarddevs	14 Mar 2003 11:33:42 -0000
@@ -477,6 +477,7 @@
 product DLINK DE660		{ "D-Link", "DE-660", NULL, NULL } D-Link DE-660
 product DLINK DE660PLUS		{ "D-Link", "DE-660+", NULL, NULL } D-Link DE-660+
 product DLINK DFE670TXD		{ "D-Link", "DFE-670TXD", NULL, NULL } D-Link DFE-670TXD
+product DLINK DWL650H		{ "D-Link&spCorporation", "D-Link&spDWL-650H&sp11Mbps&spWLAN&spAdapter", NULL, NULL } D-Link DWL-650H
 product	DYNALINK L10C		{ "DYNALINK", "L10C", NULL, NULL } Dynalink L10C
 /*
  * vendor ID of EPX_AA2000 is Fujitsu (0x0004) and product ID is 0x2000, but
Index: pccard/pccarddevs.h
===================================================================
RCS file: /opt/FreeBSD/cvs/src/sys/dev/pccard/pccarddevs.h,v
retrieving revision 1.44
diff -u -r1.44 pccarddevs.h
--- pccard/pccarddevs.h	15 Feb 2003 13:58:28 -0000	1.44
+++ pccard/pccarddevs.h	14 Mar 2003 11:33:49 -0000
@@ -854,6 +854,9 @@
 #define	PCMCIA_CIS_DLINK_DFE670TXD	{ "D-Link", "DFE-670TXD", NULL, NULL }
 #define	PCMCIA_PRODUCT_DLINK_DFE670TXD	-1
 #define	PCMCIA_STR_DLINK_DFE670TXD	"D-Link DFE-670TXD"
+#define	PCMCIA_CIS_DLINK_DWL650H	{ "D-Link Corporation", "D-Link DWL-650H 11Mbps WLAN Adapter", NULL, NULL }
+#define	PCMCIA_PRODUCT_DLINK_DWL650H	-1
+#define	PCMCIA_STR_DLINK_DWL650H	"D-Link DWL-650H"
 #define	PCMCIA_CIS_DYNALINK_L10C	{ "DYNALINK", "L10C", NULL, NULL }
 #define	PCMCIA_PRODUCT_DYNALINK_L10C	-1
 #define	PCMCIA_STR_DYNALINK_L10C	"Dynalink L10C"
Index: wi/if_wi_pccard.c
===================================================================
RCS file: /opt/FreeBSD/cvs/src/sys/dev/wi/if_wi_pccard.c,v
retrieving revision 1.17
diff -u -r1.17 if_wi_pccard.c
--- wi/if_wi_pccard.c	15 Feb 2003 13:59:54 -0000	1.17
+++ wi/if_wi_pccard.c	14 Mar 2003 11:26:34 -0000
@@ -136,6 +136,7 @@
 	PCMCIA_CARD(COREGA, WIRELESS_LAN_PCC_11, 0),
 	PCMCIA_CARD(COREGA, WIRELESS_LAN_PCCA_11, 0),
 	PCMCIA_CARD(COREGA, WIRELESS_LAN_PCCB_11, 0),
+	PCMCIA_CARD(DLINK, DWL650H, 0),
 	PCMCIA_CARD2(ELSA, XI300_IEEE, YIS_YWL11B, 0),
 	PCMCIA_CARD(ELSA, XI300_IEEE, 0),
 	PCMCIA_CARD(ELSA, XI325_IEEE, 0),
%%%%%%%%%%%%%%%

To Unsubscribe: send mail to [email protected]
with "unsubscribe freebsd-mobile" in the body of the message
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.