Re: Project Evil: The Evil Continues

From: Rudolf Cejka <cejkar_at_fit.vutbr.cz>
Date: Tue, 27 Jan 2004 10:57:40 +0100
Bill Paul wrote (2004/01/25):
> Now, is anyone going to actually test Project Evil with their
> cards like I asked, or is everyone just going to use this as an excuse
> to ask me questions?

Hello, I have tested six pccard/cardbus cards with following results.
However, first I had to find, why kernel crashes, when some cards are
inserted - the problem is that cbb0 process does not set p->p_fd->fd_rdir
and p->p_fd->fd_cdir, but namei() called from vn_open() called from
ndis_open_file() unconditionally references them. Following patch helped
me - the idea is stolen from /sys/dev/raidframe/rf_freebsdkintf.c.
Furthermore, some debug output with reporting missing files helped me
too.

/sys/compat/ndis/subr_ndis.c,v 1.38 2004/01/18 22:57:11

--- subr_ndis.c.orig	Tue Jan 27 00:05:15 2004
+++ subr_ndis.c	Tue Jan 27 09:07:43 2004
_at__at_ -65,6 +65,7 _at__at_
 #include <sys/smp.h>
 #include <sys/queue.h>
 #include <sys/proc.h>
+#include <sys/filedesc.h>
 #include <sys/namei.h>
 #include <sys/fcntl.h>
 #include <sys/vnode.h>
_at__at_ -2303,6 +2304,7 _at__at_
 {
 	char			*afilename = NULL;
 	struct thread		*td = curthread;
+	struct proc		*p;
 	struct nameidata	nd;
 	int			flags, error;
 	struct vattr		vat;
_at__at_ -2323,6 +2325,16 _at__at_
 	}
 
 	mtx_lock(&Giant);
+
+	/* Sanity check the p_fd fields.  This is really just a hack */
+	p = td->td_proc;
+	if (!p->p_fd->fd_rdir || !p->p_fd->fd_cdir)
+		printf("p_fd fields are not set\n");
+	if (!td->td_proc->p_fd->fd_rdir)
+		p->p_fd->fd_rdir = rootvnode;
+	if (!p->p_fd->fd_cdir)
+		p->p_fd->fd_cdir = rootvnode;
+
 	NDINIT(&nd, LOOKUP, FOLLOW, UIO_SYSSPACE, path, td);
 
 	flags = FREAD;
_at__at_ -2331,6 +2343,7 _at__at_
 		mtx_unlock(&Giant);
 		*status = NDIS_STATUS_FILE_NOT_FOUND;
 		free(fh, M_TEMP);
+		printf("error opening file %s\n", path);
 		return;
 	}
 
And here are the results:

*) Buffalo AirStation WLI-CB-G54A (802.11b/g)

cbg0: <BUFFALO WLI-CB-G54 Wireless LAN Adapter> mem 0x88002000-0x88003fff irq 11 at device 0.0 on cardbus0
cbg0: NDIS API version: 5.0
cbg0: 802.11 address: 00:07:40:c1:b1:88
cbg0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
cbg0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps

... Unstable, but works. If I download some files, use ssh or browse the
web, everything seems to be good. However, when I try
    cd /usr/src ; make update # supfile is for src & ports
my notebook after some time always crashes. Sometimes already in src
tree, sometimes in the ports tree. Panic is reproducible and kernel
stops on
0xc086b709 <drv_data+19253>:    andl   $0x0,0x20(%edi)
I have a crash dump, but do not know, what to do and debug here.
Do you have any ideas? It would be really great to have this card
stable, because this is my primary card.

*) Belkin F5D7010 (802.11b/g)

bel0: <Belkin Wireless 54Mbps Notebook Adapter> mem 0x88002000-0x88003fff irq 11 at device 0.0 on cardbus0
bel0: NDIS API version: 5.0
bel0: 802.11 address: 00:30:bd:9c:d5:fb
bel0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
bel0: 11g rates: 6Mbps 9Mbps 12Mbps 18Mbps 36Mbps 48Mbps 54Mbps

... The same name of Windows driver as for Buffalo, the same problems
as with Buffalo card.

*) Cisco AIR-CB20A / AIR-CB20A-A-K9 (802.11a)

cardbus0: Resource not specified in CIS: id=10, size=100
cardbus0: Resource not specified in CIS: id=14, size=4000
cardbus0: Resource not specified in CIS: id=18, size=40000
cba0: <Cisco Systems AIR-CB20A 802.11a Wireless LAN Adapter> port 0x1000-0x10ff mem 0x88040000-0x8807ffff,0x88080000-0x88083fff irq 11 at device 0.0 on cardbus0
can't re-use a leaf (NodeName)!
can't re-use a leaf (InfrastructureMode)!
can't re-use a leaf (PowerSaveMode)!
can't re-use a leaf (SupportedRates)!
can't re-use a leaf (SSID1)!
cba0: NDIS API version: 5.0
cba0: 802.11 address: 00:00:48:9a:1b:cd
cba0: couldn't retrieve channel info: 19
cba0: 11b rates: 

... Card is detected, but I could not establish any connection

*) Cisco AIR-PCM350 / AIR-PCM352 (802.11b)

pccard0: <unknown card> (manufacturer=0x015f, product=0x000a) at function 0
pccard0:    CIS info: Cisco Systems, 350 Series Wireless LAN Adapter, (null)

... This card seems to be big killer for ndiscvt - I had to edit the inf
file by hand, so it could be converted. Furhtermore, the card is not
detected at all and I do not know, what to do more, because ndis_probe
has sufficient items, but it is not called at all. And executing pccardd
ends with
pccardd[1323]: fatal error: no PC-CARD slots

If you are interested, here is the patch, I had to do to the *.inf file.
ISAPNP could be easy to filter, but IOConfig and LoadOrderGroup seem
to be harded to recognize.

--- netX500.inf.orig	Tue Jan 13 22:07:02 2004
+++ netX500.inf	Tue Jan 27 10:46:47 2004
_at__at_ -52,32 +52,32 _at__at_
 ; ---------------               --------------          ---------------------------
 %PC2500.DevDesc%                = PC2500.ndi,           PCMCIA\AIRONET-PC2500-5313
 %PCI2500.DevDesc%               = PCI2500.ndi,          PCI\VEN_14B9&DEV_2500    
-%ISA2500.DevDesc%               = ISA2500.ndi,          ISAPNP\AWL2500 
+;%ISA2500.DevDesc%               = ISA2500.ndi,          ISAPNP\AWL2500 
 
 %PC3100.DevDesc%                = PC3100.ndi,           PCMCIA\AIRONET-PC3100-25CA
 %PCI3100.DevDesc%               = PCI3100.ndi,          PCI\VEN_14B9&DEV_3100    
 %PCI3100.DevDesc%               = PCI3100.ndi,          PCI\VEN_14B9&DEV_3101    
-%ISA3100.DevDesc%               = ISA3100.ndi,          ISAPNP\AWL3100 
-%ISA3100.DevDesc%               = ISA3100.ndi,          ISAPNP\AWL3101 
+;%ISA3100.DevDesc%               = ISA3100.ndi,          ISAPNP\AWL3100 
+;%ISA3100.DevDesc%               = ISA3100.ndi,          ISAPNP\AWL3101 
 
 %PC3500.DevDesc%                = PC3500.ndi,           PCMCIA\AIRONET-PC3500-D29B
 %PC3500.DevDesc%                = PC3500.ndi,           PCMCIA\AIRONET-PC3500-1492
 %PCI3500.DevDesc%               = PCI3500.ndi,          PCI\VEN_14B9&DEV_3500    
-%ISA3500.DevDesc%               = ISA3500.ndi,          ISAPNP\AWL3500        
+;%ISA3500.DevDesc%               = ISA3500.ndi,          ISAPNP\AWL3500        
 
 %PC4500.DevDesc%                = PC4500.ndi,           PCMCIA\AIRONET-PC4500-13ED
-%PC4500.DevDesc%                = PC4500.ndi,           PCMCIA\AIRONET-PC4500-D4C4
+;%PC4500.DevDesc%                = PC4500.ndi,           PCMCIA\AIRONET-PC4500-D4C4
 %PCI4500.DevDesc%               = PCI4500.ndi,          PCI\VEN_14B9&DEV_4500 
-%ISA4500.DevDesc%               = ISA4500.ndi,          ISAPNP\AWL4500
+;%ISA4500.DevDesc%               = ISA4500.ndi,          ISAPNP\AWL4500
  
 %PC4800.DevDesc%                = PC4800.ndi,           PCMCIA\AIRONET-PC4800-D913
 %PCI4800.DevDesc%               = PCI4800.ndi,          PCI\VEN_14B9&DEV_4800    
-%ISA4800.DevDesc%               = ISA4800.ndi,          ISAPNP\AWL4800 
+;%ISA4800.DevDesc%               = ISA4800.ndi,          ISAPNP\AWL4800 
 
 %PC340.DevDesc%                 = PC340.ndi,            PCMCIA\CISCO_SYSTEMS-340_SERIES_WIRELESS_LAN_ADAPTER-5FE9
 %PCI340.DevDesc%                = PCI340.ndi,           PCI\VEN_14B9&DEV_0340
 
-%PC350.DevDesc%                 = PC350.ndi,            PCMCIA\CISCO_SYSTEMS-350_SERIES_WIRELESS_LAN_ADAPTER-512A
+%PC350.DevDesc%                 = PC350.ndi,            PCI\VEN_14B9&DEV_0350
 %PCI350.DevDesc%                = PCI350.ndi,           PCI\VEN_14B9&DEV_0350
 
 
_at__at_ -86,32 +86,32 _at__at_
 ; ---------------               --------------          ---------------------------
 %PC2500.DevDesc%                = PC2500.ndi.XP,        PCMCIA\AIRONET-PC2500-5313
 %PCI2500.DevDesc%               = PCI2500.ndi.XP,       PCI\VEN_14B9&DEV_2500
-%ISA2500.DevDesc%               = ISA2500.ndi.XP,       ISAPNP\AWL2500
+;%ISA2500.DevDesc%               = ISA2500.ndi.XP,       ISAPNP\AWL2500
 
 %PC3100.DevDesc%                = PC3100.ndi.XP,        PCMCIA\AIRONET-PC3100-25CA
 %PCI3100.DevDesc%               = PCI3100.ndi.XP,       PCI\VEN_14B9&DEV_3100
 %PCI3100.DevDesc%               = PCI3100.ndi.XP,       PCI\VEN_14B9&DEV_3101
-%ISA3100.DevDesc%               = ISA3100.ndi.XP,       ISAPNP\AWL3100 
-%ISA3100.DevDesc%               = ISA3100.ndi.XP,       ISAPNP\AWL3101 
+;%ISA3100.DevDesc%               = ISA3100.ndi.XP,       ISAPNP\AWL3100 
+;%ISA3100.DevDesc%               = ISA3100.ndi.XP,       ISAPNP\AWL3101 
 
 %PC3500.DevDesc%                = PC3500.ndi.XP,        PCMCIA\AIRONET-PC3500-D29B
 %PC3500.DevDesc%                = PC3500.ndi.XP,        PCMCIA\AIRONET-PC3500-1492
 %PCI3500.DevDesc%               = PCI3500.ndi.XP,       PCI\VEN_14B9&DEV_3500
-%ISA3500.DevDesc%               = ISA3500.ndi.XP,       ISAPNP\AWL3500
+;%ISA3500.DevDesc%               = ISA3500.ndi.XP,       ISAPNP\AWL3500
 
 %PC4500.DevDesc%                = PC4500.ndi.XP,        PCMCIA\AIRONET-PC4500-13ED
 %PC4500.DevDesc%                = PC4500.ndi.XP,        PCMCIA\AIRONET-PC4500-D4C4
 %PCI4500.DevDesc%               = PCI4500.ndi.XP,       PCI\VEN_14B9&DEV_4500
-%ISA4500.DevDesc%               = ISA4500.ndi.XP,       ISAPNP\AWL4500
+;%ISA4500.DevDesc%               = ISA4500.ndi.XP,       ISAPNP\AWL4500
  
 %PC4800.DevDesc%                = PC4800.ndi.XP,        PCMCIA\AIRONET-PC4800-D913
 %PCI4800.DevDesc%               = PCI4800.ndi.XP,       PCI\VEN_14B9&DEV_4800
-%ISA4800.DevDesc%               = ISA4800.ndi.XP,       ISAPNP\AWL4800 
+;%ISA4800.DevDesc%               = ISA4800.ndi.XP,       ISAPNP\AWL4800 
 
 %PC340.DevDesc%                 = PC340.ndi.XP,         PCMCIA\CISCO_SYSTEMS-340_SERIES_WIRELESS_LAN_ADAPTER-5FE9
 %PCI340.DevDesc%                = PCI340.ndi.XP,        PCI\VEN_14B9&DEV_0340
 
-%PC350.DevDesc%                 = PC350.ndi.XP,         PCMCIA\CISCO_SYSTEMS-350_SERIES_WIRELESS_LAN_ADAPTER-512A
+%PC350.DevDesc%                 = PC350.ndi.XP,         PCI\VEN_14B9&DEV_0350
 %PCI350.DevDesc%                = PCI350.ndi.XP,        PCI\VEN_14B9&DEV_0350
 
 ;*****************************************************************
_at__at_ -942,7 +942,7 _at__at_
 ;*****************************************************************
 [ISA.LogConfig]
 IRQConfig=3,4,5,6,7,8,9,10,11,12,13,14,15
-IOConfig=40_at_100-3FF(3FF::)
+IOConfig="40_at_100-3FF(3FF::)"
 ConfigPriority=HARDRECONFIG
 
 [CoInstaller.NT.AddReg]
_at__at_ -1209,7 +1209,7 _at__at_
 StartType      = 3 ;%SERVICE_DEMAND_START%
 ErrorControl   = 0 ;%SERVICE_ERROR_IGNORE%
 ServiceBinary  = %12%\pcx500mp.sys
-LoadOrderGroup = extended base
+LoadOrderGroup = "extended base"
 
 [PCX500.EventLog]
 AddReg = PCX500.EventLog.Add

*) Proxim Orinoco 8471-WD (802.11a/b/g)

ath0: <Atheros 5212> mem 0x88010000-0x8801ffff irq 11 at device 0.0 on cardbus0
ath0: mac 5.6 phy 4.1 5ghz radio 1.7 2ghz radio 2.3
ath0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
ath0: 802.11 address: 00:20:a6:4e:d6:64

... Standard kernel driver, just for reference - I have problem with
setting for one access point without wep. The second with wep seems
to be accessible and network does work over it.

ori0: <ORiNOCO 802.11bg ComboCard Silver> mem 0x88010000-0x8801ffff irq 11 at device 0.0 on cardbus0
can't re-use a leaf (sleepMode)!
can't re-use a leaf (shortPreamble)!
can't re-use a leaf (radioEnable)!
can't re-use a leaf (BusType)!
ori0: NDIS API version: 5.1
error opening file /compat/ndis/regAdd.txt
ori0: 802.11 address: 00:20:a6:4e:d6:64
ori0: 11a rates: 6Mbps 12Mbps 24Mbps 36Mbps 36Mbps 48Mbps 54Mbps
ori0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
ori0: 11g rates: 6Mbps 12Mbps 24Mbps 36Mbps 36Mbps 48Mbps 54Mbps

... I'm able to do ssh and other basic network connections, but
    cd /usr/src ; make update
halts system very fastly without any message and without any panic

*) SMC EZ Connect g SMC2835W (802.11b/g)

smc0: <SMC2835W 2.4GHz 54 Mbps Wireless Cardbus Adapter> mem 0x88002000-0x88003fff irq 11 at device 0.0 on cardbus0
can't re-use a leaf (SSID)!
can't re-use a leaf (NetworkType)!
can't re-use a leaf (DSChannel)!
can't re-use a leaf (TxRate)!
can't re-use a leaf (WepReq)!
can't re-use a leaf (LongPreamble)!
can't re-use a leaf (11dMode)!
can't re-use a leaf (BusType)!
smc0: NDIS API version: 5.0
smc0: Ethernet address: 80:8a:bf:c2:64:9c

... Card is detected, but I could not establish any connection

-- 
Rudolf Cejka <cejkar at fit.vutbr.cz> http://www.fit.vutbr.cz/~cejkar
Brno University of Technology, Faculty of Information Technology
Bozetechova 2, 612 66  Brno, Czech Republic
Received on Tue Jan 27 2004 - 00:59:05 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:40 UTC