public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* PATCH: Fibre attached pcnet/32
@ 2005-03-07 12:30 Alan Cox
  2005-03-07 17:01 ` Jeff Garzik
  0 siblings, 1 reply; 2+ messages in thread
From: Alan Cox @ 2005-03-07 12:30 UTC (permalink / raw)
  To: torvalds, Linux Kernel Mailing List

The current driver does workarounds for errata that do not work with
fibre attached devices. This patch avoids doing the workaround on the
only known fibre attach pcnet/32 hardware. All handling is automated on
pci sub-ids

Patch by: Guido Guenther
Signed-off-by: Alan Cox <alan@redhat.com>

diff -u --new-file --recursive --exclude-from /usr/src/exclude linux.vanilla-2.6.11/drivers/net/pcnet32.c linux-2.6.11/drivers/net/pcnet32.c
--- linux.vanilla-2.6.11/drivers/net/pcnet32.c	2005-03-05 15:15:10.000000000 +0000
+++ linux-2.6.11/drivers/net/pcnet32.c	2005-03-05 16:12:01.000000000 +0000
@@ -1429,26 +1429,32 @@
 	val |= 0x10;
     lp->a.write_csr (ioaddr, 124, val);
 
-    /* 24 Jun 2004 according AMD, in order to change the PHY,
-     * DANAS (or DISPM for 79C976) must be set; then select the speed,
-     * duplex, and/or enable auto negotiation, and clear DANAS */
-    if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
-	lp->a.write_bcr(ioaddr, 32, lp->a.read_bcr(ioaddr, 32) | 0x0080);
-	/* disable Auto Negotiation, set 10Mpbs, HD */
-	val = lp->a.read_bcr(ioaddr, 32) & ~0xb8;
-	if (lp->options & PCNET32_PORT_FD)
-	    val |= 0x10;
-	if (lp->options & PCNET32_PORT_100)
-	    val |= 0x08;
-	lp->a.write_bcr (ioaddr, 32, val);
+    /* Skip PHY selection on AT2701FX, looses link otherwise */
+    if(lp->pci_dev->subsystem_vendor == PCI_VENDOR_ID_AT && 
+       lp->pci_dev->subsystem_device == PCI_SUBDEVICE_ID_AT_2701FX ) {
+    	printk(KERN_DEBUG "pcnet32: Skipping PHY selection.\n");
     } else {
-	if (lp->options & PCNET32_PORT_ASEL) {
-	    lp->a.write_bcr(ioaddr, 32, lp->a.read_bcr(ioaddr, 32) | 0x0080);
-	    /* enable auto negotiate, setup, disable fd */
-	    val = lp->a.read_bcr(ioaddr, 32) & ~0x98;
-	    val |= 0x20;
-	    lp->a.write_bcr(ioaddr, 32, val);
-	}
+        /* 24 Jun 2004 according AMD, in order to change the PHY,
+         * DANAS (or DISPM for 79C976) must be set; then select the speed,
+         * duplex, and/or enable auto negotiation, and clear DANAS */
+        if (lp->mii && !(lp->options & PCNET32_PORT_ASEL)) {
+    	lp->a.write_bcr(ioaddr, 32, lp->a.read_bcr(ioaddr, 32) | 0x0080);
+    	/* disable Auto Negotiation, set 10Mpbs, HD */
+    	val = lp->a.read_bcr(ioaddr, 32) & ~0xb8;
+    	if (lp->options & PCNET32_PORT_FD)
+    	    val |= 0x10;
+    	if (lp->options & PCNET32_PORT_100)
+    	    val |= 0x08;
+    	lp->a.write_bcr (ioaddr, 32, val);
+        } else {
+    	    if (lp->options & PCNET32_PORT_ASEL) {
+    	        lp->a.write_bcr(ioaddr, 32, lp->a.read_bcr(ioaddr, 32) | 0x0080);
+    	        /* enable auto negotiate, setup, disable fd */
+    	        val = lp->a.read_bcr(ioaddr, 32) & ~0x98;
+    	        val |= 0x20;
+    	        lp->a.write_bcr(ioaddr, 32, val);
+    	    }
+        }
     }
 
 #ifdef DO_DXSUFLO


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: PATCH: Fibre attached pcnet/32
  2005-03-07 12:30 PATCH: Fibre attached pcnet/32 Alan Cox
@ 2005-03-07 17:01 ` Jeff Garzik
  0 siblings, 0 replies; 2+ messages in thread
From: Jeff Garzik @ 2005-03-07 17:01 UTC (permalink / raw)
  To: Alan Cox, torvalds; +Cc: Linux Kernel Mailing List

Alan Cox wrote:
> The current driver does workarounds for errata that do not work with
> fibre attached devices. This patch avoids doing the workaround on the
> only known fibre attach pcnet/32 hardware. All handling is automated on
> pci sub-ids
> 
> Patch by: Guido Guenther
> Signed-off-by: Alan Cox <alan@redhat.com>


Linus already has this:

ChangeSet@1.1966.107.1, 2005-01-27 15:55:00-05:00, brazilnut@us.ibm.com
   [PATCH] pcnet32: 79c976 with fiber optic fix

   After testing this patch I agree that it should be applied.  The one
   change I made was to print the device name (ethN) instead of 'pcnet32'.
   Tested ia32.

   From: Guido Guenther <agx@sigxcpu.org>,
         Lars Munch <lars@segv.dk>

   Skip PHY selection on Allied Telesyn 2701FX, it looses the link 
otherwise.
   Fix up the AT 2700FX as well.

   Signed-Off-By: Guido Guenther <agx@sigxcpu.org>
   Signed-off-by: Andrew Morton <akpm@osdl.org>
   signed-off-by: Don Fry <brazilnut@us.ibm.com>
   Signed-off-by: Jeff Garzik <jgarzik@pobox.com>


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2005-03-07 17:01 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-03-07 12:30 PATCH: Fibre attached pcnet/32 Alan Cox
2005-03-07 17:01 ` Jeff Garzik

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox