[vortex] 3c905C: Packet losses (a more precise description)

Giuseppe Ciaccio ciaccio@disi.unige.it
Wed, 5 Jul 2000 16:00:01 +0200 (MET DST)


On Wed, 5 Jul 2000, Andrew Morton wrote:

> Giuseppe Ciaccio wrote:
> > 
> > On Wed, 5 Jul 2000, Bogdan Costescu wrote:
> > 
> > > > Basic registers of MII PHY #0:  0000 0000 0000 0000 0000 0000 0000 0000.
> > > >  Basic mode control register 0x0000: Auto-negotiation disabled, with
> > > >  Speed fixed at 10 mbps, half-duplex.
> > > >  Basic mode status register 0x0000 ... 0000.
> > > >    Link status: not established.
> > > >  Link partner information information is not exchanged
> > > > when in fixed speed mode.
> 
> Guiseppe, I don't think you answered Bogdan's question.
> 
> Exactly what are you doing to get the NIC into a state
> where all the MII registers are showing as zero?  

I use the 3c90xcfg.exe DOS utility shipped together the NIC.
With such utility, I can disable the autoneg.
Then, I reboot with Linux and get the above.

> > ...
> > This means that the 3c905C adapters will however use flow ctl when connected
> > by a crossover cable.  Since there is no packet loss in this case,
> > the faulty device must be the switch.
> 
> The 3c905 never generates flow control frames - this is a driver
> responsibility and the Linux drivers don't do it.
> 
> With the driver you have, an incoming flow control frame will be
> either discarded due to a filtered-out MAC address, or dropped
> on the floor by the networking code due to unrecognised ethertype.

Driver responsibility ?!?  I was pretty sure 802.3x STOP-GO packets
were hardware-managed.  I'm sure it is so with the Alteon AceNIC
Gigabit Eth card, and thought it was the same with all other 802.3x-capable
devices.

> 
> I guess it's possible that your switch is running out of steam
> and trying to slow your machine down.  If so, it's pretty easy
> to enable flow control in the 3c905C.
> 
> Untested patch:
> 
> 
> Index: 3c59x.c
> ===================================================================
> RCS file: /opt/cvs/lk2.2/drivers/net/3c59x.c,v
> retrieving revision 1.2.2.9
> diff -u -r1.2.2.9 3c59x.c
> --- 3c59x.c     2000/06/25 11:09:01     1.2.2.9
> +++ 3c59x.c     2000/07/05 13:52:25
> @@ -1111,7 +1111,7 @@
> 
>         /* Set the full-duplex bit. */
>         outb(((vp->info1 & 0x8000) || vp->full_duplex ? 0x20 : 0) |
> -                (dev->mtu > 1500 ? 0x40 : 0), ioaddr + Wn3_MAC_Ctrl);
> +                (dev->mtu > 1500 ? 0x40 : 0) | 0x100, ioaddr + Wn3_MAC_Ctrl);
> 
>         if (vortex_debug > 1) {
>                 printk(KERN_DEBUG "%s: vortex_open() InternalConfig %8.8x.\n",
> @@ -1313,7 +1313,7 @@
>                                           /* Set the full-duplex bit. */
>                                           EL3WINDOW(3);   /* AKPM */
>                                           outb((vp->full_duplex ? 0x20 : 0) |
> -                                                  (dev->mtu > 1500 ? 0x40 : 0),
> +                                                  (dev->mtu > 1500 ? 0x40 : 0) | 0x100,
>                                                    ioaddr + Wn3_MAC_Ctrl);
>                                   }
>                                   next_tick = 60*HZ;
> 

Thank you very much, I will test the patch ASAP!

Giuseppe

Giuseppe Ciaccio               http://www.disi.unige.it/person/CiaccioG/
DISI - Universita' di Genova   via Dodecaneso 35   16146 Genova,   Italy
phone +39 10 353 6638          fax +39 010 3536699 ciaccio@disi.unige.it
------------------------------------------------------------------------