[vortex] Re: -again- 3c575 bug w/ full duplex mode

christoph christoph.moar@alpin.it
Sat, 09 Sep 2000 16:50:51 +0200


At 15:39 28.08.00 +0300, Tuomo Soini wrote:
>IBM Thinkpad 390X
>redhat 6.2
>linux-2.2.17pre20
>pcmcia-cs-3.1.19

[description of problem with a 3cxfe575bt card]
My conclusion:

>There is nasty bug in driver, it changes to full-duplex mode while card
>announces only half-duplex mode.
>There is bug in the card, it announces wrong capabilities.

---

Regards to all...

I managed to redo some extensive testing of my configuration
as well, I just hope anybody has a hint as to what else we
can try.

I sum up the problem again:
a 3cxfe575bt card - which works fine in 100mbit fullduplex mode
under WinNT - on the same laptop, booted under linux
(currently red hat 6.2 /w kernel-2.2.15-2.5.0) does not go
into full duplex mode. performance is catastrophical, packet
losses and hangups of ftp transfers are just normal then...

I am using the pcmcia-cs-3.1.20 from David Hinds
ftp://sourceforge.org/pcmcia/*

and the newest netdrivers package donald becker
http://www.scyld.com/network/vortex.html

following the instructions from
http://www.scyld.com/network/updates.html
"Using the driver with cardbus" in versions with and
without the pci management.

So what happens:
(1) card always goes into half duplex mode
(2) trying to force full duplex mode with driver option will
     not set up a link anymore
(3) using mii-diag to enforce full duplex capabilities does not
     work either

--

I tried "hacking" the driver to force it to always tell the
card would do full duplex, but in this case no link would
be set up either. after few days of trying around, theres
not much left i can try. is this card really incompatible
and not working?
as tuomo soini concluded, I too to think that there might
be two problems here:

(1) card is buggy  and/or
(2) driver is buggy

maybe its all a question of different masks in the cards
registers?
How should I go on to try to find a solution to this
problem? As I said - under NT the card works, so there
must be a workaround to do in the driver to make it
all work...

--
the usual traces:
(1) insertion of card
Sep  9 16:15:42 mobile2 kernel: cs: cb_alloc(bus 20): vendor 0x10b7, device 
0x5157
Sep  9 16:15:42 mobile2 cardmgr[2858]: initializing socket 0
Sep  9 16:15:42 mobile2 cardmgr[2858]: socket 0: 3Com 3CCFE575B/3CXFE575B 
Fast EtherLink XL
Sep  9 16:15:42 mobile2 cardmgr[2858]: executing: 'modprobe cb_enabler'
Sep  9 16:15:42 mobile2 cardmgr[2858]: executing: 'modprobe 3c575_cb'
Sep  9 16:15:42 mobile2 kernel: 3c59x.c:v0.99Ra 8/7/2000 Donald Becker, 
becker@scyld.com
Sep  9 16:15:42 mobile2 kernel:   http://www.scyld.com/network/vortex.html
Sep  9 16:15:42 mobile2 kernel: cs: cb_config(bus 20)
Sep  9 16:15:42 mobile2 kernel:   fn 0 bar 1: io 0x200-0x27f
Sep  9 16:15:42 mobile2 kernel:   fn 0 bar 2: mem 0x60021000-0x6002107f
Sep  9 16:15:42 mobile2 kernel:   fn 0 bar 3: mem 0x60020000-0x6002007f
Sep  9 16:15:42 mobile2 kernel:   fn 0 rom: mem 0x60000000-0x6001ffff
Sep  9 16:15:42 mobile2 kernel:   irq 11
Sep  9 16:15:42 mobile2 kernel: vortex_attach(bus 20, function 0, device 
515710b7)
Sep  9 16:15:42 mobile2 kernel: eth0: 3Com 3CCFE575BT Cyclone CardBus at 
0x200,  00:00:86:3f:cf:07, IRQ 11
Sep  9 16:15:42 mobile2 kernel: eth0: CardBus functions mapped 
60020000->cc03e000.
Sep  9 16:15:42 mobile2 kernel:   8K byte-wide RAM 5:3 Rx:Tx split, MII 
interface.
Sep  9 16:15:42 mobile2 kernel:   MII transceiver found at address 0, 
status 2809.
Sep  9 16:15:42 mobile2 kernel:   Enabling bus-master transmits and 
whole-frame receives.
Sep  9 16:15:42 mobile2 cardmgr[2858]: executing: './network start eth0'

(2) output of mii-diag -v
mii-diag.c:v2.00 4/19/2000  Donald Becker (becker@scyld.com)
  http://www.scyld.com/diag/index.html
Using the default interface 'eth0'.
  MII PHY #0 transceiver registers:
    3000 282d 0300 e54b 00a1 45e1 0001 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0140 0000 0700 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000.
  Basic mode control register 0x3000: Auto-negotiation enabled.
  You have link beat, and everything is working OK.
    This transceiver is capable of  100baseTx 10baseT.
    Able to perform Auto-negotiation, negotiation complete.
  Your link partner advertised 45e1: Flow-control 100baseTx-FD 100baseTx 
10baseT-FD 10baseT, w/ 802.3X flow control.
  MII PHY #0 transceiver registers:
    3000 282d 0300 e54b 00a1 45e1 0001 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0140 0000 0700 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000.
  Basic mode control register 0x3000: Auto-negotiation enabled.
  Basic mode status register 0x282d ... 282d.
    Link status: established.
    Capable of  100baseTx 10baseT.
    Able to perform Auto-negotiation, negotiation complete.
  Vendor ID is 00:c0:39:--:--:--, model 20 rev. 11.
    Vendor/Part: TDK transceiver (unknown type).
  I'm advertising 00a1: 100baseTx 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.
   TDK 78q2120 vendor-specific registers 16..18 are 0x0140 0x0000 0x0700
       Link polarity is detected as normal.
       Auto-negotiation complete, 100Mbps half duplex.
       Rx link in pass state, PLL locked.
       No new link status events.

(3) output of vortex-diag -aaeemmv
[64]mobile2/home/moar/diag/miiold#vortex-diag -aaeemmv
vortex-diag.c:v2.00 4/19/2000 Donald Becker (becker@scyld.com)
  http://www.scyld.com/diag/index.html
Index #1: Found a 3CCFE575 CardBus adapter at 0x200.
The Vortex chip may be active, so FIFO registers will not be read.
To see all register values use the '-f' flag.
Initial window 4, registers values by window:
   Window 0: 0000 0000 0000 0000 0000 06ff ffff 0000.
   Window 1: FIFO FIFO 0000 0000 0000 0000 0000 2000.
   Window 2: 0000 3f86 07cf 0000 0000 0000 0112 4000.
   Window 3: 0000 0060 05ea 0020 0040 1000 0800 6000.
   Window 4: 0000 0000 0000 0cc2 0003 a800 0000 8000.
   Window 5: 1ffc 0000 0000 0600 0807 06de 06c6 a000.
   Window 6: 0000 0000 0000 e901 0100 8c3f 67f9 c000.
   Window 7: 0000 0000 0000 0000 0000 0000 0002 e000.
Vortex chip registers at 0x200
   0x210: **FIFO** 00000000 000000cc *STATUS*
  Indication enable is 06c6, interrupt enable is 06de.
  No interrupt sources are pending.
  Transceiver/media interfaces available:  MII.
Transceiver type in use:  MII.
  MAC settings: full-duplex.
  Station address set to 00:00:86:3f:cf:07.
  Configuration options 4000.
EEPROM contents (256 words):
  0x000: 10b7 5157 0007 0000 0001 0200 4000 0000
  0x008: 0000 0000 0000 0000 0000 0000 0000 0000
  0x010: 0000 0000 0000 0000 0090 0000 10b7 5b57
  0x018: 0000 0000 0000 0000 0000 0000 0109 0a0a
  0x020: 0000 0060 0000 0000 0000 0000 0000 0000
  0x028: 0000 0000 0000 0000 0000 0000 0000 0000
  0x030: 0000 863f cf07 5157 c46a 0036 564e 6d50
  0x038: 3000 0009 0000 863f cf07 2010 0000 0006
  0x040: 32a6 1570 0000 0060 0007 0000 0000 0022
  0x048: 0313 4943 2053 0104 5701 0451 0306 0001
  0x050: 0000 0500 410c 019a 1eb5 5501 3002 ffff
  0x058: 0701 1106 4000 0000 1500 0534 3300 6f43
  0x060: 206d 6f43 7072 726f 7461 6f69 006e 4333
  0x068: 4643 3545 3537 5442 4c00 4e41 4320 7261
  0x070: 6264 7375 4320 7261 0064 3030 0031 21ff
  0x078: 0602 0501 0006 8080 8080 ff19 ffff ffff
  0x080: ffff ffff ffff ffff ffff ffff ffff ffff
  0x088: ffff ffff ffff ffff ffff ffff ffff ffff
  0x090: ffff ffff ffff ffff ffff ffff ffff ffff
  0x098: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0a0: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0a8: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0b0: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0b8: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0c0: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0c8: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0d0: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0d8: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0e0: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0e8: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0f0: ffff ffff ffff ffff ffff ffff ffff ffff
  0x0f8: ffff ffff ffff ffff ffff ffff ffff ffff
  The word-wide EEPROM checksum is 0xdc64.
Parsing the EEPROM of a 3Com Vortex/Boomerang:
  The CardBus product ID is 10b7 5157.
  3Com Node Address 00:00:86:3F:CF:07 (used as a unique ID only).
  OEM Station address 00:00:86:3F:CF:07 (used as the ethernet address).
  Manufacture date (MM/DD/YYYY) 3/10/1998, division 6, product NV.
Options: none.
   Vortex format checksum is correct (0022 vs. 0022).
   Cyclone format checksum is incorrect (0x1a vs. 00).
   Hurricane format checksum is incorrect (0x6b vs. 00).
  MII PHY found at address 0, status 282d.
  MII PHY 0 at #0 transceiver registers:
    3000 282d 0300 e54b 00a1 45e1 0001 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0140 0000 0700 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000.
  MII PHY #0 transceiver registers:
    3000 282d 0300 e54b 00a1 45e1 0001 0000
    0000 0000 0000 0000 0000 0000 0000 0000
    0140 0000 0700 0000 0000 0000 0000 0000
    0000 0000 0000 0000 0000 0000 0000 0000.
  Basic mode control register 0x3000: Auto-negotiation enabled.
  Basic mode status register 0x282d ... 282d.
    Link status: established.
    Capable of  100baseTx 10baseT.
    Able to perform Auto-negotiation, negotiation complete.
  Vendor ID is 00:c0:39:--:--:--, model 20 rev. 11.
    Vendor/Part: TDK transceiver (unknown type).
  I'm advertising 00a1: 100baseTx 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.
   TDK 78q2120 vendor-specific registers 16..18 are 0x0140 0x0000 0x0700
       Link polarity is detected as normal.
       Auto-negotiation complete, 100Mbps half duplex.
       Rx link in pass state, PLL locked.
       No new link status events.

-- are the following values in the output of vortex-diag
expected ? --
Options: none.
   Vortex format checksum is correct (0022 vs. 0022).
   Cyclone format checksum is incorrect (0x1a vs. 00).
   Hurricane format checksum is incorrect (0x6b vs. 00).
--

removed the network cable and did the following:

[178]mobile2/home/moar/diag/miiold#mii-diag -R
Using the default interface 'eth0'.
Resetting the transceiver...
Basic registers of MII PHY #0:  3000 2809 0300 e54b 00a1 0000 0000 0000.
  Basic mode control register 0x3000: Auto-negotiation enabled.
  Basic mode status register 0x2809 ... 2809.
    Link status: not established.

[179]mobile2/home/moar/diag/miiold#mii-diag -A 100baseTx-FD -F 100baseTx-FD
Using the default interface 'eth0'.
  Setting the media capability advertisement register of PHY #0 to 0x0101.
Setting the speed to "fixed", Control register 2100.
Basic registers of MII PHY #0:  2000 280d 0300 e54b 0001 0000 0002 0000.
  Basic mode control register 0x2000: Auto-negotiation disabled, with
  Speed fixed at 100 mbps, half-duplex.
  You have link beat, and everything is working OK.
  Link partner information information is not exchanged when in fixed speed 
mode.

so it looks like it is not possible to set the media type to FD with
this card/driver/utilities...

--

IŽd be willing to do driver-level debugging if I get any hints as to
where it might be worthwhile to look for.

Thanks and regards

Christoph.

--
Dipl. Inform. Univ. Christoph Moar             tel +39 0471 711037
alpin gmbh srl                                 fax +39 0471 711319
christoph.moar@alpin.it                        gsm +39 348 3057012