Subject: Re: tulip_rxtx_stop() on Cobalt Qube2

From: Florian Fainelli <[email-masked]>
Date: Sun, 7 Jun 2009 20:27:00 +0200

Le Monday 01 June 2009 01:43:42 Grant Grundler, vous avez écrit :
> On Sun, May 31, 2009 at 11:02:22PM +0200, Florian Fainelli wrote:
> > Hi Grant,
>
> ...
>
> > > The RX/TX engines are in a wedged state to begin with. :(
> >
> > I suppose this is due to the Bootloader, either CoLo or the original
> > Cobalt microservers bootloader.
>
> Yeah - either bootloader or BIOS - whatever talked to the NIC most
> recently.
>
> ...
>
> > > I have not tested or even compiled this patch...will do so on
> > > parisc/ia64 machines once I get some feedback on this patch.
> > >
> > > And I just noticed pci_clear_master() is not called *anywhere*. :(
> > > Need to add such a call after tulip_stop_rxtx() some place (many
> > > places?). This patch is just RFC and not suitable for merging upstream.
> >
> > The patch below does not help on my Qube2, I am still having the same
> > message appearing.
>
> Are you sure?

Yes I am see below.

>
> I thought I removed all calls to tulip_stop_rxtx() in the initialization
> code path and didn't think it would get called. Did I overlook one?
> Can you add "dump_stack()" to tulip_stop_rxtx() failure case?

Will do.

>
> Can you also modify the driver version to make sure you are using
> the correct/most recenly built module?

See below the patch that was applied:

--- a/drivers/net/tulip/tulip_core.c
+++ b/drivers/net/tulip/tulip_core.c
@@ -15,11 +15,11 @@

 #define DRV_NAME       "tulip"
 #ifdef CONFIG_TULIP_NAPI
-#define DRV_VERSION    "1.1.15-NAPI" /* Keep at least for test */
+#define DRV_VERSION    "1.1.16-NAPI" /* Keep at least for test */
 #else
-#define DRV_VERSION    "1.1.15"
+#define DRV_VERSION    "1.1.16"
 #endif
-#define DRV_RELDATE    "Feb 27, 2007"
+#define DRV_RELDATE    "Mar 03, 2009"

 #include <linux/module.h>
@@ -470,11 +470,12 @@ media_picked:
                tulip_select_media(dev, 1);

        /* Start the chip's Tx to process setup frame. */
-       tulip_stop_rxtx(tp);
        barrier();
        udelay(5);
        iowrite32(tp->csr6 | TxOn, ioaddr + CSR6);

+       pci_set_master(tp->pdev);/* enabled DMA */
+
        /* Enable interrupts by setting the interrupt mask. */
        iowrite32(tulip_tbl[tp->chip_id].valid_intrs, ioaddr + CSR5);
        iowrite32(tulip_tbl[tp->chip_id].valid_intrs, ioaddr + CSR7);
@@ -1421,12 +1422,6 @@ static int __devinit tulip_init_one (struct pci_dev *pdev,
        if (!force_csr0 && (tp->flags & HAS_PCI_MWI))
                tulip_mwi_config (pdev, dev);
 #endif
-
-       /* Stop the chip's Tx and Rx processes. */
-       tulip_stop_rxtx(tp);
-
-       pci_set_master(pdev);
-
 #ifdef CONFIG_GSC
        if (pdev->subsystem_vendor == PCI_VENDOR_ID_HP) {
                switch (pdev->subsystem_device) {

>
> And the please post the dmesg output from the driver again (plus 10
> lines of output  before and after).

Here comes the dmesg:

Linux Tulip driver version 1.1.16-NAPI (Mar 03, 2009)
PCI: Enabling device 0000:00:07.0 (0045 -> 0047)
tulip0: Old format EEPROM on 'Cobalt Microserver' board.  Using substitute media control info.
tulip0:  EEPROM default media type Autosense.
tulip0:  Index #0 - Media MII (#11) described by a 21142 MII PHY (3) block.
tulip0:  MII transceiver #1 config 1000 status 7809 advertising 01e1.
eth0: Digital DS21142/43 Tulip rev 65 at MMIO 0x12082000, 00:10:e0:00:7d:1f, IRQ 19.
PCI: Enabling device 0000:00:0c.0 (0005 -> 0007)
tulip1: Old format EEPROM on 'Cobalt Microserver' board.  Using substitute media control info.
tulip1:  EEPROM default media type Autosense.
tulip1:  Index #0 - Media MII (#11) described by a 21142 MII PHY (3) block.
tulip1:  MII transceiver #1 config 1000 status 7809 advertising 01e1.
eth1: Digital DS21142/43 Tulip rev 65 at MMIO 0x12082400, 00:10:e0:00:88:b9, IRQ 20.
[snip]
0000:00:07.0: tulip_stop_rxtx() failed (CSR5 0xf0660000 CSR6 0xb20e2202)
eth0: Setting full-duplex based on MII#1 link partner capability of 45e1.
NET: Registered protocol family 10
-- 
Best regards, Florian Fainelli
Email : [email-masked]
http://openwrt.org
-------------------------------