lkml.org 
[lkml]   [2001]   [May]   [11]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Does this patch, against ac8, help with the PNIC problem?
--
Jeff Garzik | Game called on account of naked chick
Building 1024 |
MandrakeSoft |Index: drivers/net/tulip/media.c
===================================================================
RCS file: /cvsroot/gkernel/linux_2_4/drivers/net/tulip/media.c,v
retrieving revision 1.1.1.30
diff -u -r1.1.1.30 media.c
--- drivers/net/tulip/media.c 2001/05/11 23:58:47 1.1.1.30
+++ drivers/net/tulip/media.c 2001/05/12 00:47:16
@@ -255,7 +255,7 @@
case 1: case 3: {
int phy_num = p[0];
int init_length = p[1];
- u16 *misc_info;
+ u16 *misc_info, tmp_info;

dev->if_port = 11;
new_csr6 = 0x020E0000;
@@ -282,8 +282,10 @@
for (i = 0; i < init_length; i++)
outl(init_sequence[i], ioaddr + CSR12);
}
- tp->advertising[phy_num] = get_u16(&misc_info[1]) | 1;
- if (startup < 2) {
+ tmp_info = get_u16(&misc_info[1]);
+ if (tmp_info)
+ tp->advertising[phy_num] = tmp_info | 1;
+ if (tmp_info && startup < 2) {
if (tp->mii_advertise == 0)
tp->mii_advertise = tp->advertising[phy_num];
if (tulip_debug > 1)
Index: drivers/net/tulip/tulip_core.c
===================================================================
RCS file: /cvsroot/gkernel/linux_2_4/drivers/net/tulip/tulip_core.c,v
retrieving revision 1.1.1.43
diff -u -r1.1.1.43 tulip_core.c
--- drivers/net/tulip/tulip_core.c 2001/05/11 23:58:48 1.1.1.43
+++ drivers/net/tulip/tulip_core.c 2001/05/12 00:47:17
@@ -20,10 +20,11 @@
#include <linux/init.h>
#include <linux/etherdevice.h>
#include <linux/delay.h>
+#include <linux/mii.h>
#include <asm/unaligned.h>

static char version[] __devinitdata =
- "Linux Tulip driver version 0.9.14f (May 10, 2001)\n";
+ "Linux Tulip driver version 0.9.15cvs (April XX, 2001)\n";


/* A few user-configurable values. */
@@ -1434,7 +1435,7 @@
((mii_status & 0x8000) == 0 && (mii_status & 0x7800) != 0)) {
int mii_reg0 = tulip_mdio_read(dev, phy, 0);
int mii_advert = tulip_mdio_read(dev, phy, 4);
- int to_advert;
+ unsigned int to_advert, new_bmcr;

if (tp->mii_advertise)
to_advert = tp->mii_advertise;
@@ -1455,10 +1456,30 @@
board_idx, to_advert, phy, mii_advert);
tulip_mdio_write(dev, phy, 4, to_advert);
}
+
/* Enable autonegotiation: some boards default to off. */
- tulip_mdio_write(dev, phy, 0, mii_reg0 |
- (tp->full_duplex ? 0x1100 : 0x1000) |
- (tulip_media_cap[tp->default_port]&MediaIs100 ? 0x2000:0));
+ if (tp->default_port == 0) {
+ new_bmcr = mii_reg0 | BMCR_ANENABLE;
+ if (new_bmcr != mii_reg0)
+ new_bmcr |= BMCR_ANRESTART;
+ }
+ /* ...or disable nway, if forcing media */
+ else
+ new_bmcr = mii_reg0 & ~BMCR_ANENABLE;
+
+ if (new_bmcr != mii_reg0)
+ tulip_mdio_write(dev, phy, MII_BMCR, new_bmcr);
+
+ if (tp->full_duplex) new_bmcr |= BMCR_FULLDPLX;
+ else new_bmcr &= ~BMCR_FULLDPLX;
+ if (tulip_media_cap[tp->default_port] & MediaIs100)
+ new_bmcr |= BMCR_SPEED100;
+ else new_bmcr &= ~BMCR_SPEED100;
+
+ if (new_bmcr != mii_reg0) {
+ udelay(10);
+ tulip_mdio_write(dev, phy, MII_BMCR, new_bmcr);
+ }
}
}
tp->mii_cnt = phy_idx;
\
 
 \ /
  Last update: 2005-03-22 12:52    [W:0.041 / U:0.100 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site