2006-01-07 16:20:31

by Denis Vlasenko

[permalink] [raw]
Subject: [PATCH] 2.6.15: via-rhine + link loss + autoneg off == trouble

Hi,

2.6.15 still exhibits the via rhine "no tx" syndrome.

Again, the recipe:
* have via-rhine NIC
* unplug network cable
* reboot box
* force HDX (I do in with ethtool -s if autoneg off duplex half)
* plug cable back
* kernel still thinks that carrier is off despite "ethtool if"
? saying that link is detected.

Why:

...
? ? ? ? if (intr_status & IntrLinkChange)
? ? ? ? ? ? ? ? rhine_check_media(dev, 0);
...

static void rhine_check_media(struct net_device *dev, unsigned int init_media)
{
? ? ? ? struct rhine_private *rp = netdev_priv(dev);
? ? ? ? void __iomem *ioaddr = rp->base;

? ? ? ? mii_check_media(&rp->mii_if, debug, init_media);
...

unsigned int mii_check_media (struct mii_if_info *mii,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? unsigned int ok_to_print,
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? unsigned int init_media)
{
? ? ? ? unsigned int old_carrier, new_carrier;
? ? ? ? int advertise, lpa, media, duplex;
? ? ? ? int lpa2 = 0;

? ? ? ? /* if forced media, go no further */
? ? ? ? if (mii->force_media) ? <============================ HERE
? ? ? ? ? ? ? ? return 0; /* duplex did not change */

? ? ? ? /* check current and old link status */
? ? ? ? old_carrier = netif_carrier_ok(mii->dev) ? 1 : 0;
? ? ? ? new_carrier = (unsigned int) mii_link_ok(mii);

? ? ? ? /* if carrier state did not change, this is a "bounce",
? ? ? ? ?* just exit as everything is already set correctly
? ? ? ? ?*/
? ? ? ? if ((!init_media) && (old_carrier == new_carrier))
? ? ? ? ? ? ? ? return 0; /* duplex did not change */

? ? ? ? /* no carrier, nothing much to do */
? ? ? ? if (!new_carrier) {
? ? ? ? ? ? ? ? netif_carrier_off(mii->dev);
? ? ? ? ? ? ? ? if (ok_to_print)
? ? ? ? ? ? ? ? ? ? ? ? printk(KERN_INFO "%s: link down\n", mii->dev->name);
? ? ? ? ? ? ? ? return 0; /* duplex did not change */
? ? ? ? }

? ? ? ? /*
? ? ? ? ?* we have carrier, see who's on the other end
? ? ? ? ?*/
? ? ? ? netif_carrier_on(mii->dev);
...

We can never reach netif_carrier_on if mii->force_media is true!

> On Friday 11 November 2005 13:32, Jeff Garzik wrote:
> > As I've explained many times at this point, force_media means that link
> > is always on, and mii_link_ok() should not be called.
>
> Sorry, seems like I missed your mails...
>
> > The only bug, it seems, is that the "if (mii->force_media)" branch
> > should make sure to call netif_carrier_on()
>
> Should also work.

Please find patch attached.
--
vda


Attachments:
(No filename) (2.35 kB)
linux-2.6.15.fix_no_tx_syndrome.diff (465.00 B)
Download all attachments

2006-01-07 18:47:53

by Lee Revell

[permalink] [raw]
Subject: Re: [PATCH] 2.6.15: via-rhine + link loss + autoneg off == trouble

On Sat, 2006-01-07 at 18:20 +0200, Denis Vlasenko wrote:
> Hi,
>
> 2.6.15 still exhibits the via rhine "no tx" syndrome.

Well you didn't cc: the via-rhine maintainer (Roger Luethi), no wonder
the patch didn't get picked up...

Lee

2006-01-07 21:04:38

by Roger Luethi

[permalink] [raw]
Subject: Re: [PATCH] 2.6.15: via-rhine + link loss + autoneg off == trouble

On Sat, 07 Jan 2006 13:47:50 -0500, Lee Revell wrote:
> On Sat, 2006-01-07 at 18:20 +0200, Denis Vlasenko wrote:
> > Hi,
> >
> > 2.6.15 still exhibits the via rhine "no tx" syndrome.
>
> Well you didn't cc: the via-rhine maintainer (Roger Luethi), no wonder
> the patch didn't get picked up...

As long as you mention via-rhine, I am going to see it (thanks, procmail).
I don't remember seeing vda post a patch before. First he posted a problem
description, then an analysis (that I commented on), now a patch. Finally,
this is not a via-rhine problem. It's a problem in the mii code and
affects other drivers as well (those that use the generic mii code).

Roger

2006-01-08 17:57:32

by Denis Vlasenko

[permalink] [raw]
Subject: Re: [PATCH] 2.6.15: via-rhine + link loss + autoneg off == trouble

On Saturday 07 January 2006 23:04, Roger Luethi wrote:
> On Sat, 07 Jan 2006 13:47:50 -0500, Lee Revell wrote:
> > On Sat, 2006-01-07 at 18:20 +0200, Denis Vlasenko wrote:
> > > Hi,
> > >
> > > 2.6.15 still exhibits the via rhine "no tx" syndrome.
> >
> > Well you didn't cc: the via-rhine maintainer (Roger Luethi), no wonder
> > the patch didn't get picked up...

> As long as you mention via-rhine, I am going to see it (thanks, procmail).
> I don't remember seeing vda post a patch before. First he posted a problem
> description, then an analysis (that I commented on), now a patch. Finally,

It's my second patch for this (really trivial) problem.
--
vda

2006-01-08 18:04:21

by Roger Luethi

[permalink] [raw]
Subject: Re: [PATCH] 2.6.15: via-rhine + link loss + autoneg off == trouble

On Sun, 08 Jan 2006 19:57:14 +0200, Denis Vlasenko wrote:
> On Saturday 07 January 2006 23:04, Roger Luethi wrote:
> > As long as you mention via-rhine, I am going to see it (thanks, procmail).
> > I don't remember seeing vda post a patch before. First he posted a problem
> > description, then an analysis (that I commented on), now a patch. Finally,
>
> It's my second patch for this (really trivial) problem.

Duly noted :-). Sorry I missed it the first time around.

Roger