[tulip-bug] Linksys PCM200 only works in promiscuous half-duplex mode

Zoltan Hidvegi hzoli@austin.ibm.com
Sun, 30 Jul 2000 20:52:03 -0500 (CDT)


I've just bought a Linksys PCM200 integrated (dongless) cardbus
adapter.  The card only picks up broadcast packets, unless I set it to
promiscuous mode.  Also the card only works in half-duplex mode, even
though the kernel says that it is switching to full-duplex.

Here are the kernel messages.  Note that the driver detects a DS21140
chip, but according to linksys.com it should have a 21143.

Linux PCMCIA Card Services 3.1.12
  kernel build: 2.2.14 #1 Sat Mar 11 15:33:02 CST 2000
  options:  [pci] [cardbus] [apm] [pnp]
PCI routing table version 1.0 at 0xf9e10
  00:02.0 -> irq 11
  00:02.1 -> irq 11
PnP: PNP BIOS installation structure at 0xc00fe700
PnP: PNP BIOS version 1.0, entry at f0000:e724, dseg at f0000
Intel PCIC probe: 
  TI 1250A PCI-to-CardBus at slot 00:02, mem 0x20301000
    host opts [0]: [ring] [isa irq] [pci irq 11] [lat 168/176] [bus 1/3]
    host opts [1]: [ring] [isa irq] [pci irq 11] [lat 168/176] [bus 4/6]
    ISA irqs (scanned) = 3,9,10 PCI status changes
cs: IO port probe 0x1000-0x17ff: clean.
cs: IO port probe 0x0100-0x04ff: clean.
cs: IO port probe 0x0a00-0x0aff: clean.
cs: cb_alloc(bus 4): vendor 0x13d1, device 0xab03
tulip.c:v0.92 4/17/2000  Written by Donald Becker <becker@scyld.com>
  http://www.scyld.com/network/tulip.html
cs: cb_config(bus 4)
  fn 0 bar 1: io 0xa00-0xaff
  fn 0 bar 2: mem 0x60060000-0x600603ff
  fn 0 rom: mem 0x60040000-0x6005ffff
cs: cb_enable(bus 4)
  bridge io map 0 (flags 0x21): 0xa00-0xaff
  bridge mem map 0 (flags 0x1): 0x60040000-0x60060fff
tulip_attach(bus 4, function 0)
eth0: Digital DS21140 Tulip rev 17 at 0xa00, EEPROM not present, 00:4C:69:6E:75:79, IRQ 11.
eth0:  MII transceiver #1 config 3000 status 7849 advertising 01e1.
eth0: Setting full-duplex based on MII #1 link partner capability of 41e1.

I run tulip-diag.  It cannot automatically detect the chip type from
the PCI id, so I used -t 3 for 21140.

# tulip-diag -p 0xa00 -t 3 -f -mm -ee -aa
tulip-diag.c:v2.00 4/19/2000 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Assuming a Digital DS21140 Tulip adapter at 0xa00.
Digital DS21140 Tulip chip registers at 0xa00:
  fff98000 ffffffff ffffffff 08a9d000 08a9d200 fc664010 ff9fe1d7 ffffebff
  fffe0000 fff0dff8 00000000 fffe0000 00000000 00000200 00000000 c40ffec8
 Port selection is 100mbps-SYM/PCS 100baseTx scrambler, half-duplex.
 Transmit started, Receive started, half-duplex.
  The Rx process state is 'Waiting for packets'.
  The Tx process state is 'Idle'.
  The transmit threshold is 1024.
EEPROM size is 8.
 A simplifed EEPROM data table was found.
 The EEPROM does not contain transceiver control information.
EEPROM contents:
  0985 0002 0000 0000 e000 7598 6fc7 0000
  0000 0400 0000 0000 0000 0000 0000 0100
  ab03 13d1 ab03 13d1 ffff 0202 0000 00cc
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0040 0060 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 b6cd
 ID block CRC 0x8b (vs. 00).
  Full contents CRC 0xb6cd (read as 0xb6cd).
 MII PHY found at address 1, status 0x786d.
 MII PHY found at address 2, status 0x786d.
 MII PHY found at address 3, status 0x786d.
 MII PHY found at address 4, status 0x786d.
 MII PHY #1 transceiver registers:
   3000 786d 0022 5410 01e1 45e1 0007 2801
   ffff ffff ffff ffff ffff ffff ffff ffff
   01c0 0029 0f90 8020 4f22 0304 0026 0000
   0000 cfbf 0000 ffff ffff ffff ffff ffff.
 Basic mode control register 0x3000: Auto-negotiation enabled.
 Basic mode status register 0x786d ... 786d.
   Link status: established.
   Capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 Vendor ID is 00:08:95:--:--:--, model 1 rev. 0.
   No specific information is known about this transceiver type.
 I'm advertising 01e1: 100baseTx-FD 100baseTx 10baseT-FD 10baseT
   Advertising no additional info pages.
   IEEE 802.3 CSMA/CD protocol.
 Link partner capability is 45e1: Flow-control 100baseTx-FD 100baseTx 10baseT-FD
 10baseT.
   Negotiation  completed.

Here is the result if I run tulip-debug with -t 4 (21143):

hzolilaptop ~/tulip # ./tulip-diag -p 0xa00 -t 4 -f -mm -ee -aa
tulip-diag.c:v2.00 4/19/2000 Donald Becker (becker@scyld.com)
 http://www.scyld.com/diag/index.html
Assuming a Digital DS21143 Tulip adapter at 0xa00.
Digital DS21143 Tulip chip registers at 0xa00:
  fff98000 ffffffff ffffffff 08a9d000 08a9d200 fc664010 ff9fe1d7 ffffebff
  fffe0000 fff597f8 00000000 fffe0000 00000000 00000200 00000000 c40ffec8
 Port selection is 100mbps-SYM/PCS 100baseTx scrambler, half-duplex.
 Transmit started, Receive started, half-duplex.
  The Rx process state is 'Waiting for packets'.
  The Tx process state is 'Idle'.
  The transmit threshold is 1024.
  The NWay status register is 00000000.
EEPROM size is 8.
 A simplifed EEPROM data table was found.
 The EEPROM does not contain transceiver control information.
EEPROM contents:
  0985 0002 0000 0000 e000 7598 6fc7 0000
  0000 0400 0000 0000 0000 0000 0000 0100
  ab03 13d1 ab03 13d1 ffff 0202 0000 00cc
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0040 0060 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 0000
  0000 0000 0000 0000 0000 0000 0000 b6cd
 ID block CRC 0x8b (vs. 00).
  Full contents CRC 0xb6cd (read as 0xb6cd).
 MII PHY found at address 0, status 0x45e1.
 MII PHY found at address 1, status 0x786d.
 MII PHY found at address 2, status 0x786d.
 MII PHY found at address 3, status 0x786d.
 MII PHY #0 transceiver registers:
   786d 786d 786d 786d 786d 786d 786d 786d
   786d 786d 786d 786d 786d 786d 786d 786d
   786d 786d 786d 786d 786d 786d 786d 786d
   786d 786d 786d 786d 786d 786d 786d 786d.
 Basic mode control register 0x786d: Auto-negotiation enabled.
  Transceiver in loopback mode!
  Transceiver powered down!
 Basic mode status register 0x786d ... 786d.
   Link status: established.
   Capable of  100baseTx-FD 100baseTx 10baseT-FD 10baseT.
   Able to perform Auto-negotiation, negotiation complete.
 This transceiver has no vendor identification.
 I'm advertising 786d: 10baseT-FD 10baseT
   Advertising no additional info pages.
   Using an unknown (non 802.3) encapsulation.
 Link partner capability is 786d: 10baseT-FD 10baseT.
   Negotiation  completed.
  Internal autonegotiation state is 'Autonegotiation disabled'.