WLAN device only works when another network device is present

Arnstein Oseland <[email protected]>
Newsgroups gmane.linux.drivers.prism54.user
Message-ID <[email protected]>
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!
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.