TuxScreen on SourceForge TuxScreen CVS search the Wiki
Browsing -> Wiki -> Main -> [MII]
Google
Topic:
edit, info, topics, orphans, hubs and nodes, or recent changes in the Wiki create a new user or login

This problem is apparently fixed by this change in pcmcia-cs 3.1.27 to 3.1.28.

Sorry, I haven't built a patch specifically for the kernel version of pcnet_cs.c (also I can't rebuild kernels to check this myself yet -- I need a working ethernet :)



--- pcmcia-cs-3.1.27/clients/pcnet_cs.c	Mon Jul  2 18:29:12 2001
+++ pcmcia-cs-3.1.28/clients/pcnet_cs.c	Mon Aug  6 17:35:31 2001
@@ -11,7 +11,7 @@
 
     Copyright (C) 1999 David A. Hinds -- dahinds@users.sourceforge.net
 
-    pcnet_cs.c 1.137 2001/07/03 00:29:12
+    pcnet_cs.c 1.140 2001/08/06 23:35:31
     
     The network driver code is based on Donald Becker's NE2000 code:
 
@@ -36,7 +36,7 @@
 #include <linux/init.h>
 #include <linux/sched.h>
 #include <linux/ptrace.h>
-#include <linux/malloc.h>
+#include <linux/slab.h>
 #include <linux/string.h>
 #include <linux/timer.h>
 #include <linux/delay.h>
@@ -76,7 +76,7 @@
 MODULE_PARM(pc_debug, "i");
 #define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)
 static char *version =
-"pcnet_cs.c 1.137 2001/07/03 00:29:12 (David Hinds)";
+"pcnet_cs.c 1.140 2001/08/06 23:35:31 (David Hinds)";
 #else
 #define DEBUG(n, args...) 
 #endif
@@ -766,11 +766,13 @@
     link->state &= ~DEV_CONFIG_PENDING;

     if (info->flags & (IS_DL10019|IS_DL10022)) {
+       u_char id = inb(dev->base_addr + 0x1a);
        dev->do_ioctl = &ei_ioctl;
-       printk(KERN_INFO "%s: NE2000 (DL100%d rev %02x): ",
-              dev->name, ((info->flags & IS_DL10022) ? 22 : 19),
-              inb(dev->base_addr + 0x1a));
        mii_phy_probe(dev);
+       if ((id == 0x30) && !info->pna_phy)
+           info->eth_phy = 0;
+       printk(KERN_INFO "%s: NE2000 (DL100%d rev %02x): ",
+              dev->name, ((info->flags & IS_DL10022) ? 22 : 19), id);
        if (info->pna_phy) 
            printk("PNA, ");
     } else
@@ -989,8 +991,7 @@
     pcnet_dev_t *info = (pcnet_dev_t *)dev;
     ioaddr_t mii_addr = dev->base_addr + DLINK_GPIO;
     int i;
-    u_int tmp;
-    u_long phyid;
+    u_int tmp, phyid;

     for (i = 31; i >= 0; i--) {
        tmp = mdio_read(mii_addr, i, 1);
@@ -1000,6 +1001,7 @@
        phyid = tmp << 16;
        phyid |= mdio_read(mii_addr, i, MII_PHYID_REG2);
        phyid &= MII_PHYID_REV_MASK;
+       DEBUG(0, "%s: MII at %d is 0x%08xn", dev->name, i, phyid);
        if (phyid == AM79C9XX_HOME_PHY) {   
            info->pna_phy = i;
        } else if (phyid != AM79C9XX_ETH_PHY) {




SourceForge Content of these pages are owned and copyrighted by the poster. SourceForge