netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yan Seiner <yan@seiner.com>
To: netdev@vger.kernel.org
Cc: linux-kernel@vger.kernel.org, Ayaz Abdulla <aabdulla@nvidia.com>
Subject: Re: mcp55 forcedeth woes
Date: Wed, 15 Apr 2009 06:54:45 -0700	[thread overview]
Message-ID: <49E5E725.2040400@seiner.com> (raw)
In-Reply-To: <20090413164548.f241ec1e.akpm@linux-foundation.org>

Andrew Morton wrote:
> (suitable cc's added)
>
> On Mon, 13 Apr 2009 15:13:05 -0700 (PDT)
> "Yan Seiner" <yan@seiner.com> wrote:
>
>   
>> I have a few Asus M2N-SLI deluxe mobos.  These mobos have the MCP55
>> chipset and two 1gb ethernet ports.  Occasionally, and for no reason that
>> I can figure out, these ports will die.  There are various ways to try and
>> fix these; they seem to be about 50% effective, and approach something
>> akin to voodoo.
>>
>> Based on this discussion here:
>>
>> http://patchwork.kernel.org/patch/16212/
>>
>> I've gotten the ability to turn the ports on and off somewhat.
>>
>> For port 0,
>>
>> ethtool -s eth0 autoneg off speed 10 duplex full
>>
>> turns on the link, and gets me half-duplex, 10mb/sec. Not much, granted.
>>
>> ethtool -s eth0 autoneg off speed 100 duplex full
>>
>> causes the link to go up and down on about a 2 second cycle.
>>
>> ethtool -s eth0 autoneg on
>>
>> causes the link to drop.
>>
>> For port 1, the behavior is similar, except that I can get a stable 100
>> mbit connection.
>>
>> So the problem is in the autoneg code. It's a driver issue as this is
>> reported widely to work under windows of various flavors.
>>
>> I'm running 2.6.29.1; I'm ok with patching and building kernels, but I'm
>> not a kernel hacker.
>>
>> What, if anything, can I provide and do to fix this?
>>
>>     
>
>
>   
I've been reading the forcedeth.c code. 

So far I've established that it does recognize the Marvell PHY.  AFAIK, 
the PHY on the board is 88E1116, so that much is right.  OK, not much 
progress.

In nv_probe, there are some lines that should turn on the PHY.  I stuck 
some printk in there to see what's happening.  Turns out nothing is 
happening.....  powerstate remains 0?  Does this mean that the power is 
already on?  Or that we're reading/writing the wrong register?

    if (id->driver_data & DEV_HAS_POWER_CNTRL) {

        /* take phy and nic out of low power mode */
        powerstate = readl(base + NvRegPowerState2);
        printk(KERN_INFO "Turning on power: 0x%04x.\n",powerstate);
        powerstate &= ~NVREG_POWERSTATE2_POWERUP_MASK;
        if ((id->device == PCI_DEVICE_ID_NVIDIA_NVENET_12 ||
             id->device == PCI_DEVICE_ID_NVIDIA_NVENET_13) &&
            pci_dev->revision >= 0xA3)
            powerstate |= NVREG_POWERSTATE2_POWERUP_REV_A3;
        printk(KERN_INFO "Writing powerstate: 0x%04x.\n",powerstate);
        writel(powerstate, base + NvRegPowerState2);
        powerstate = readl(base + NvRegPowerState2);
        printk(KERN_INFO "Powerstate 0x%04x.\n",powerstate);
    }

[ 3936.277196] forcedeth: Reverse Engineered nForce ethernet driver. 
Version 0.64.
[ 3936.277223] forcedeth 0000:00:08.0: PCI INT A -> Link[APCH] -> GSI 22 
(level, low) -> IRQ 22
[ 3936.277230] forcedeth 0000:00:08.0: setting latency timer to 64
[ 3936.277331] nv_probe: set workaround bit for reversed mac addr
[ 3936.277337] Turning on power: 0x0000.
[ 3936.277339] Writing powerstate: 0x0000.
[ 3936.277343] Powerstate 0x0000.
[ 3936.278352] 0000:00:08.0: open: Found PHY 5040:0003 at address 19.
[ 3936.796061] 0000:00:08.0: phy reset
[ 3937.316809] forcedeth 0000:00:08.0: ifname eth0, PHY OUI 0x5043 @ 19, 
addr 00:1e:8c:6f:a5:27
[ 3937.316816] forcedeth 0000:00:08.0: highdma csum vlan pwrctl mgmt 
gbit lnktim msi desc-v3
[ 3937.317113] forcedeth 0000:00:09.0: PCI INT A -> Link[AMC1] -> GSI 20 
(level, low) -> IRQ 20
[ 3937.317120] forcedeth 0000:00:09.0: setting latency timer to 64
[ 3937.317200] nv_probe: set workaround bit for reversed mac addr
[ 3937.317206] Turning on power: 0x0000.
[ 3937.317209] Writing powerstate: 0x0000.
[ 3937.317213] Powerstate 0x0000.
[ 3937.318317] 0000:00:09.0: open: Found PHY 5040:0003 at address 19.
[ 3937.379044] forcedeth 0000:00:08.0: irq 29 for MSI/MSI-X
[ 3937.379236] eth0: no link during initialization.
[ 3937.836062] 0000:00:09.0: phy reset
[ 3938.356857] forcedeth 0000:00:09.0: ifname eth1, PHY OUI 0x5043 @ 19, 
addr 00:1e:8c:6f:be:40
[ 3938.356864] forcedeth 0000:00:09.0: highdma csum vlan pwrctl mgmt 
gbit lnktim msi desc-v3
[ 3938.417202] forcedeth 0000:00:09.0: irq 30 for MSI/MSI-X
[ 3938.417396] eth1: no link during initialization.

(this is getting more urgent; I rebooted the machine and lost both 
network ports.  Instead of dual-gigabit I'm running off an ancient PCI 
card.  I'm willing to test/build/debug, but I need some input from those 
who understand the forcedeth code....)

-- 
Yan Seiner 

Support my bid for the 4J School Board.
Visit http://www.seiner.com/schoolboard



  reply	other threads:[~2009-04-15 13:54 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <e3e0f4f0ca9fdce35c24b30559d10f31.squirrel@www.datavault.us>
2009-04-13 23:45 ` mcp55 forcedeth woes Andrew Morton
2009-04-15 13:54   ` Yan Seiner [this message]
     [not found] ` <200904132100.58056.gene.heskett@verizon.net>
     [not found]   ` <49E3EF9F.6090600@seiner.com>
     [not found]     ` <200904132224.13716.gene.heskett@verizon.net>
2009-04-14 14:35       ` Yan Seiner
2009-04-14 16:34         ` John Stoffel
2009-04-14 16:47           ` Yan Seiner
2009-04-14 18:27           ` Gene Heskett

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=49E5E725.2040400@seiner.com \
    --to=yan@seiner.com \
    --cc=aabdulla@nvidia.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).