All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ondrej Zary <linux@rainbow-software.org>
To: Jeff Garzik <jgarzik@pobox.com>
Cc: netdev@vger.kernel.org,
	Kernel development list <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] de2104x: disable autonegotiation on broken hardware
Date: Thu, 23 Sep 2010 23:18:08 +0200	[thread overview]
Message-ID: <201009232318.11541.linux@rainbow-software.org> (raw)
In-Reply-To: <AANLkTikwXyr4pH5rqkoXpiYvkvpLc7s8tq-EwmM1+r7m@mail.gmail.com>

On Thursday 23 September 2010 23:03:13 Jeff Garzik wrote:
> On Thu, Sep 23, 2010 at 4:59 PM, Ondrej Zary <linux@rainbow-software.org> 
wrote:
> > At least on older 21041-AA chips (mine is rev. 11), TP duplex
> > autonegotiation causes the card not to work at all (link is up but no
> > packets are transmitted).
> >
> > de4x5 disables autonegotiation completely. But it seems to work on newer
> > (21041-PA rev. 21) so disable it only on rev<20 chips.
> >
> > Signed-off-by: Ondrej Zary <linux@rainbow-software.org>
> >
> > --- linux-2.6.36-rc3-orig/drivers/net/tulip/de2104x.c   2010-08-29
> > 17:36:04.000000000 +0200 +++ linux-2.6.36-rc3/drivers/net/tulip/de2104x.c
> >        2010-09-24 00:27:41.000000000 +0200 @@ -364,6 +364,8 @@ static u16
> > t21040_csr15[] = { 0, 0, 0x00
> >  /* 21041 transceiver register settings: TP AUTO, BNC, AUI, TP, TP FD*/
> >  static u16 t21041_csr13[] = { 0xEF01, 0xEF09, 0xEF09, 0xEF01, 0xEF09, };
> >  static u16 t21041_csr14[] = { 0xFFFF, 0xF7FD, 0xF7FD, 0x6F3F, 0x6F3D, };
> > +/* If on-chip autonegotiation is broken, use half-duplex (FF3F) instead
> > */ +static u16 t21041_csr14_brk[] = { 0xFF3F, 0xF7FD, 0xF7FD, 0x6F3F,
> > 0x6F3D, }; static u16 t21041_csr15[] = { 0x0008, 0x0006, 0x000E, 0x0008,
> > 0x0008, };
> >
> >
> > @@ -1911,8 +1913,14 @@ fill_defaults:
> >        for (i = 0; i < DE_MAX_MEDIA; i++) {
> >                if (de->media[i].csr13 == 0xffff)
> >                        de->media[i].csr13 = t21041_csr13[i];
> > -               if (de->media[i].csr14 == 0xffff)
> > -                       de->media[i].csr14 = t21041_csr14[i];
> > +               if (de->media[i].csr14 == 0xffff) {
> > +                       /* autonegotiation is broken at least on some
> > chip +                          revisions - rev. 0x21 works, 0x11 does
> > not */ +                       if (de->pdev->revision < 0x20)
> > +                               de->media[i].csr14 = t21041_csr14_brk[i];
> > +                       else
> > +                               de->media[i].csr14 = t21041_csr14[i];
> > +               }
>
> Interesting...  I never knew about that quirk.

This errata document says that autonegotiation is somehow broken but it does 
not specify it further:
http://ftp.nluug.nl/ftp/ftp/pub/os/NetBSD/misc/dec-docs/ec-qd2ma-te.ps.gz

-- 
Ondrej Zary

  reply	other threads:[~2010-09-23 21:18 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-09-23 20:59 [PATCH] de2104x: disable autonegotiation on broken hardware Ondrej Zary
2010-09-23 21:03 ` Jeff Garzik
2010-09-23 21:18   ` Ondrej Zary [this message]
2010-09-25  5:41     ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=201009232318.11541.linux@rainbow-software.org \
    --to=linux@rainbow-software.org \
    --cc=jgarzik@pobox.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.