netdev
[Top] [All Lists]

Re: [patch 12/13] pcnet32 79C975 fiber fix

To: akpm@xxxxxxxx
Subject: Re: [patch 12/13] pcnet32 79C975 fiber fix
From: Don Fry <brazilnut@xxxxxxxxxx>
Date: Tue, 15 Mar 2005 16:56:30 -0800
Cc: davem@xxxxxxxxxxxxx, jgarzik@xxxxxxxxx, netdev@xxxxxxxxxxx, steven.hardy@xxxxxxxxxxxxxxxx
In-reply-to: <200503152222.j2FMMiLB016826@shell0.pdx.osdl.net>
References: <200503152222.j2FMMiLB016826@shell0.pdx.osdl.net>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mutt/1.5.6i
I had not seen this problem until now.  The patch looks ok and
probably should have been written that way initially.  I have been
able to do a quick touch test with a 970A, 971, 972, 973, 975, 976, and
978 (some on ia32 and others on ppc64) without any adverse effects.
The 975 I have is copper not fiber.

Since only bit 12 is needed to enable LED writes, the code could
really be "a->write_bcr(ioaddr, 2, a->read_bcr(ioaddr, 2) | 0x1000);"
During pcnet32_open the ASEL bit is changed anyway.

This change should also be applied to 2.4.30 as well.


On Tue, Mar 15, 2005 at 02:22:48PM -0800, akpm@xxxxxxxx wrote:
> 
> From: "HARDY, Steven" <steven.hardy@xxxxxxxxxxxxxxxx>
> 
> I have found a bug in the pcnet32 driver (drivers/net/pcnet32.c) affecting
> all ethernet cards based on the AMD79C975 chip, using the fiber interface.
> 
> It's a one line fix, where some config registers get corrupted during
> initialisation (which stops the Fiber interface working with this chip)
> 
> This bug was introduced somewhere betweeen 2.4.17 and 2.6.x (noticed whilst
> upgrading to 2.6), and it may affect other chips too.  I have checked all
> versions up to 2.6.11-bk6 and they are all broken.
> 
> Signed-off-by: Andrew Morton <akpm@xxxxxxxx>
> ---
> 
>  25-akpm/drivers/net/pcnet32.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletion(-)
> 
> diff -puN drivers/net/pcnet32.c~pcnet32-bug-79c975-fiber-fix 
> drivers/net/pcnet32.c
> --- 25/drivers/net/pcnet32.c~pcnet32-bug-79c975-fiber-fix     Tue Mar 15 
> 14:19:55 2005
> +++ 25-akpm/drivers/net/pcnet32.c     Tue Mar 15 14:19:55 2005
> @@ -1351,7 +1351,8 @@ pcnet32_probe1(unsigned long ioaddr, int
>       printk(KERN_INFO "%s: registered as %s\n", dev->name, lp->name);
>      cards_found++;
>  
> -    a->write_bcr(ioaddr, 2, 0x1002); /* enable LED writes */
> +    /* enable LED writes */
> +    a->write_bcr(ioaddr, 2, a->read_bcr(ioaddr, 2) | 0x1002);
>  
>      return 0;
>  
> _
> 
-- 
Don Fry
brazilnut@xxxxxxxxxx

<Prev in Thread] Current Thread [Next in Thread>