[Prism54-users] WLAN device only works when another network device is present

Arnstein Oseland arnstein at faveo.no
Mon Jun 14 11:28:48 UTC 2004


I am trying to make 802.11g work on an embedded device with a relatively
slow processor and a PCI 2.1-compliant motherboard. The device is
recognized by the driver as XG-600.

I am now able to make the device work as long as another network device
(pegasus USB-device) is activated. eth0 is the XG-600 and eth1 is the
pegasus-device. If I do ifconfig eth1 up, eth0 works, and if I do
ifconfig eth1 down, it doesn't :(

Does anybody have any ideas how I can make it work without eth1 active?

Here are the details:
1. Linux kernel 2.4.26 with the yenta-patch from
http://bugzilla.kernel.org/show_bug.cgi?id=1840
2. Prism54 patched into kernel source tree. Patch v. 1.0.2.2.
3. Cardbus-support from standard kernel. The cardbus-controller is TI1410A.
4. Firmware 1.0.4.3.

----------------------
Output from lspci -vv:
00:0b.0 Class 0607: 104c:ac50 (rev 02)
         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66Mhz- UDF- FastB2B- ParErr- DEVSEL=medium 
 >TAbort- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 168, cache line size 04
         Interrupt: pin A routed to IRQ 11
         Region 0: Memory at fbeff000 (32-bit, non-prefetchable) [size=4K]
         Bus: primary=00, secondary=01, subordinate=01, sec-latency=176
         Memory window 0: 10000000-103ff000 (prefetchable)
         Memory window 1: 10400000-107ff000
         I/O window 0: 0000df00-0000dfff
         I/O window 1: 0000de00-0000deff
         BridgeCtl: Parity- SERR- ISA- VGA- MAbort- >Reset- 16bInt-
PostWrite+
         16-bit legacy interface ports at 0001

01:00.0 Class 0280: 1260:3890 (rev 01)
         Subsystem: 17cf:0014
         Control: I/O- Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
ParErr- Stepping- SERR- FastB2B-
         Status: Cap+ 66Mhz- UDF- FastB2B+ ParErr- DEVSEL=medium
>TAbort- <TAbort- <MAbort- >SERR- <PERR-
         Latency: 80 (2500ns min, 7000ns max)
         Interrupt: pin A routed to IRQ 11
         Region 0: Memory at 10400000 (32-bit, non-prefetchable) [size=8K]
         Capabilities: [dc] Power Management version 1
                 Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA
PME(D0+,D1+,D2+,D3hot+,D3cold+)
                 Status: D0 PME-Enable- DSel=0 DScale=0 PME-


/proc/interrupts:
            CPU0
   0:      45187          XT-PIC  timer
   1:          3          XT-PIC  keyboard
   2:          0          XT-PIC  cascade
   8:          0          XT-PIC  rtc
  11:        398          XT-PIC  usb-ohci, Texas Instruments PCI1410 PC
card Cardbus Controller, eth0
  12:         12          XT-PIC  PS/2 Mouse
  14:      24637          XT-PIC  ide0
NMI:          0
LOC:          0
ERR:          0


Relevant sections from dmesg _before_ I do ifconfig eth0 up:

Linux Kernel Card Services 3.1.22
   options:  [pci] [cardbus] [pm]
yenta 00:0b.0: Preassigned resource start fbefe000 end fbefefff too
small or not aligned.
yenta 00:0b.0: Preassigned resource start fbefd000 end fbefdfff too
small or not aligned.
Yenta ISA IRQ mask 0x0000, PCI irq 11
Socket status: 30000020
hub.c: new USB device 00:13.0-1.2.1, assigned address 5
input: USB HID v1.00 Keyboard [Alps Electric Apple USB Keyboard] on usb1:5.0
cs: cb_alloc(bus 1): vendor 0x1260, device 0x3890
PCI: Enabling device 01:00.0 (0000 -> 0002)
cs: IO port probe 0x0c00-0x0cff: clean.
cs: IO port probe 0x0800-0x08ff: clean.
cs: IO port probe 0x0100-0x04ff: excluding 0x220-0x22f 0x2f8-0x2ff
0x378-0x37f 0x388-0x38f 0x3f8-0x3ff 0x480-0x48f 0x4d0-0x4d7
cs: IO port probe 0x0a00-0x0aff: clean.
Loaded prism54 driver, version 1.0.2.2
eth0: prism54 driver detected card model: XG-600


If I then do ifconfig eth0 I get:

eth0: islpci_open()
eth0: resetting device...
eth0: uploading firmware...
remove_proc_entry: 01:00.0/loading busy, count=1
remove_proc_entry: firmware/01:00.0 busy, count=1
eth0: firmware uploaded done, now triggering reset...
de_put: deferred delete of loading
de_put: deferred delete of 01:00.0
eth0: device soft reset timed out
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgt_commit has failed. Restart the device
eth0: mgmt tx queue is still full
eth0: mgmt response not collected
eth0: mgmt response not collected
eth0: mgmt response not collected

If I then do "ifconfig eth0 down ; modprobe pegasus ; ifconfig eth1 up ;
ifconfig eth0 up" I get:

pegasus.c: v0.4.32 (2003/06/06):Pegasus/Pegasus II USB Ethernet driver
usb.c: registered new driver pegasus
pegasus.c: eth1: USB 10/100 Fast Ethernet
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt tx queue is still full
eth0: mgmt response not collected
eth0: mgmt response not collected
eth0: mgmt response not collected
eth0: mgmt response not collected
eth0: islpci_close ()
eth0: islpci_open()
eth0: resetting device...
eth0: uploading firmware...
remove_proc_entry: 01:00.0/loading busy, count=1
remove_proc_entry: firmware/01:00.0 busy, count=1
eth0: firmware uploaded done, now triggering reset...
de_put: deferred delete of loading
de_put: deferred delete of 01:00.0
eth0: timeout waiting for mgmt response 100, trigging device
eth0: timeout waiting for mgmt response
eth0: mgmt response not collected
eth0: mgt_commit has failed. Restart the device

But now the device actually works!


More information about the Prism54-users mailing list