Re: Correction: 2.6.16-git12 killed networking -- 3c900 card

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Quoting Steffen Klassert
  > 
  > On Thu, Mar 30, 2006 at 08:46:54AM -0500, Pete Clements wrote:
  > > 
  > > Looks like that is the case until -git12, which Steffen has identified.
  > > Tested on git18 (with git12 fix) and looks good.
  > 
  > This Patch is a candidate for the final fix to make 10base2 work again. 
  > Could you please try this together with Andrews 
  > 3c59x-collision-statistics-fix-fix.patch?
  > 
  > Steffen
  > 
  > --- linux-2.6.16-git12/drivers/net/3c59x.c	2006-03-30 14:16:23.000000000 +0200
  > +++ linux-2.6.16-git12-sk/drivers/net/3c59x.c	2006-03-30 15:27:13.000000000 +0200
  > @@ -788,7 +788,7 @@
  >  	int options;						/* User-settable misc. driver options. */
  >  	unsigned int media_override:4, 		/* Passed-in media type. */
  >  		default_media:4,				/* Read from the EEPROM/Wn3_Config. */
  > -		full_duplex:1, force_fd:1, autoselect:1,
  > +		full_duplex:1, autoselect:1,
  >  		bus_master:1,					/* Vortex can only do a fragment bus-m. */
  >  		full_bus_master_tx:1, full_bus_master_rx:2, /* Boomerang  */
  >  		flow_ctrl:1,					/* Use 802.3x flow control (PAUSE only) */
  > @@ -1633,12 +1633,6 @@
  >  			((vp->full_duplex && vp->flow_ctrl && vp->partner_flow_ctrl) ?
  >  					0x100 : 0),
  >  			ioaddr + Wn3_MAC_Ctrl);
  > -
  > -	issue_and_wait(dev, TxReset);
  > -	/*
  > -	 * Don't reset the PHY - that upsets autonegotiation during DHCP operations.
  > -	 */
  > -	issue_and_wait(dev, RxReset|0x04);
  >  }
  >  
  >  static void vortex_check_media(struct net_device *dev, unsigned int init)
  > @@ -1663,7 +1657,7 @@
  >  	struct vortex_private *vp = netdev_priv(dev);
  >  	void __iomem *ioaddr = vp->ioaddr;
  >  	unsigned int config;
  > -	int i;
  > +	int i, mii_reg1, mii_reg5;
  >  
  >  	if (VORTEX_PCI(vp)) {
  >  		pci_set_power_state(VORTEX_PCI(vp), PCI_D0);	/* Go active */
  > @@ -1723,14 +1717,23 @@
  >  		printk(KERN_DEBUG "vortex_up(): writing 0x%x to InternalConfig\n", config);
  >  	iowrite32(config, ioaddr + Wn3_Config);
  >  
  > -	netif_carrier_off(dev);
  >  	if (dev->if_port == XCVR_MII || dev->if_port == XCVR_NWAY) {
  >  		EL3WINDOW(4);
  > +		mii_reg1 = mdio_read(dev, vp->phys[0], MII_BMSR);
  > +		mii_reg5 = mdio_read(dev, vp->phys[0], MII_LPA);
  > +		vp->partner_flow_ctrl = ((mii_reg5 & 0x0400) != 0);
  > +
  >  		vortex_check_media(dev, 1);
  >  	}
  >  	else
  >  		vortex_set_duplex(dev);
  >  
  > +	issue_and_wait(dev, TxReset);
  > +	/*
  > +	 * Don't reset the PHY - that upsets autonegotiation during DHCP operations.
  > +	 */
  > +	issue_and_wait(dev, RxReset|0x04);
  > +
  >  
  >  	iowrite16(SetStatusEnb | 0x00, ioaddr + EL3_CMD);
  >  
  > 

Applied to a fresh git18, all looks good.

-- 
Pete Clements 
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux