Any news on the ANA-6911A problem?

Preston Crow crow@cs.dartmouth.edu
Sat Nov 28 21:25:05 1998


I'm running Linux 2.0.36, and I also have trouble with the MII
transceiver not being found.  It seems to work about half the time.
Also, unloading and reloading the module seems to help.  My boot log
shows:

tulip.c:v0.89H 5/23/98 becker@cesdis.gsfc.nasa.gov
eth2: Adaptec ANA-6911A/TX DS21142 Tulip at 0x6000, 00 00 d1 1a 23 d1, IRQ 15.
eth2:  EEPROM default media type Autosense.
eth2:  Index #0 - Media MII (#11) described by a 21142 MII PHY (3) block.
eth2: ***WARNING***: No MII transceiver found!
eth2: Using user-specified media MII.
eth2: No link beat on the MII interface, status then 7849 now 7849.

After reloading the module, it shows:

tulip.c:v0.89H 5/23/98 becker@cesdis.gsfc.nasa.gov
eth2: Adaptec ANA-6911A/TX DS21142 Tulip at 0x6000, 00 00 d1 1a 23 d1, IRQ 15.
eth2:  EEPROM default media type Autosense.
eth2:  Index #0 - Media MII (#11) described by a 21142 MII PHY (3) block.
eth2:  MII transceiver found at MDIO address 1, config 3100 status 7849.
eth2: Using user-specified media MII.

I'm loading the module with:

modprobe tulip options=11
ifconfig eth2 inet 172.25.5.217 netmask 255.255.255.248 broadcast 172.25.5.223

When it doesn't find the MII transceiver, the light on the hub stays
off.  As you can see from the diagnostics, I've patched the driver
slightly, but it seems that my patch doesn't make much real
difference.  If you're curious, the patch is at the end of this
message.  The big change is the change from the t21142_timer to the
tulip_timer, as suggested here earlier.  It also loops on trying to
find the MII transceiver so as hopefully to improve the odds of
finding it.  If I understood the driver better, I would do something
to reset the card before retrying the check for the MII.

If it matters, I'm using a 10Mbps network.       

It would be nice if someone could help me patch this so that it would
always work.  I suppose I could have my startup script grep through
the logs and unload/reload the module if it fails, but that's just too
ugly.

--PC

--- linux/drivers/net/tulip.c.orig      Fri Oct  9 18:16:37 1998
+++ linux/drivers/net/tulip.c   Wed Oct 14 22:08:38 1998
@@ -306,8 +306,8 @@
        HAS_MII | HAS_MEDIA_TABLE | CSR12_IN_SROM,
        tulip_timer },
   { PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_21142,
-       "Digital DS21142/3 Tulip", 256, 0x0801fbff,
-       HAS_MII | HAS_MEDIA_TABLE, t21142_timer },
+       "Adaptec ANA-6911A/TX DS21142 Tulip", 256, 0x0801fbff,
+       HAS_MII | HAS_MEDIA_TABLE, tulip_timer },
   { PCI_VENDOR_ID_LITEON, 0x0002,
        "Lite-On 82c168 PNIC", 256, 0x0001ebef, HAS_MII, pnic_timer },
   { PCI_VENDOR_ID_MXIC, PCI_DEVICE_ID_MX98713,
@@ -768,6 +768,9 @@
                /* Find the connected MII xcvrs.
                   Doing this in open() would allow detecting external xcvrs later,
                   but takes much time. */
+               int i;
+
+               for (phy_idx=i=0;i<64&&!phy_idx;++i) {
                for (phy = 0, phy_idx = 0; phy < 32 && phy_idx < sizeof(tp->phys);
                         phy++) {
                        int mii_status = mdio_read(dev, phy, 1);
@@ -792,6 +795,7 @@
                        }
                }
                tp->mii_cnt = phy_idx;
+               }
                if (tp->mtable  &&  tp->mtable->has_mii  &&  phy_idx == 0) {
                        printk(KERN_INFO "%s: ***WARNING***: No MII transceiver found!\n",
                                   dev->name);