Bug 242743 - via-rhine driver: Invalid MAC Address
Summary: via-rhine driver: Invalid MAC Address
Alias: None
Product: Red Hat Enterprise Linux 5
Classification: Red Hat
Component: kernel   
(Show other bugs)
Version: 5.0
Hardware: x86_64
OS: Linux
Target Milestone: ---
: ---
Assignee: Ivan Vecera
QA Contact: Martin Jenner
Depends On:
TreeView+ depends on / blocked
Reported: 2007-06-05 15:58 UTC by Don Vanco
Modified: 2008-12-09 10:22 UTC (History)
1 user (show)

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Last Closed: 2008-12-09 10:22:48 UTC
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---

Attachments (Terms of Use)

Description Don Vanco 2007-06-05 15:58:59 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: Gecko/20070515 Firefox/

Description of problem:
It appears that there was a bug in the via-rhine driver circa 2.6.8/10 wherein at boot the via-rhine module fails to load because of an "Invalid MAC address".

That bug appears to be back.

Here's my motherboard:
    product: MS-7222
    version: 2.00
    vendor: Phoenix Technologies, LTD
    version: V3.20 (11/24/2006)

Here's the PCI info:
00:12.0 Ethernet controller: VIA Technologies, Inc. VT6102 [Rhine-II] (rev 78)
        Subsystem: Micro-Star International Co., Ltd. Unknown device 7222
        Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping+ SERR- FastB2B-
        Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=medium >TAbort- <TAbort- <MAbort- >SERR- <PERR-
        Latency: 64 (750ns min, 2000ns max), Cache Line Size: 32 bytes
        Interrupt: pin A routed to IRQ 11
        Region 0: I/O ports at e400 [size=256]
        Region 1: Memory at fdffe000 (32-bit, non-prefetchable) [size=256]
        Capabilities: [40] Power Management version 2
                Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
                Status: D0 PME-Enable- DSel=0 DScale=0 PME-

Here's what I see in dmesg:
Invalid MAC address
via-rhine: probe of 0000:00:12.0 failed with error -5

Let me know what else is required.  

Version-Release number of selected component (if applicable):
install kernel

How reproducible:

Steps to Reproduce:
1. Install RHEL 5
2. Boot - watch network fail

Actual Results:

Expected Results:
Network should have seen eth0

Additional info:
Worked on older kernels / Windoze.  Have tried fiddling with BIOS settings, booting with noapic or pci=routeirq, nothing helps

Comment 1 Andy Gospodarek 2008-02-26 19:24:46 UTC
(Sorry, it's taken me so long to look into this....)

The only thing since 2.6.12 that has changed around those lines is this patch:

commit b81e8e1f4a51556586f72711a165bc3a0de230f3
Author: John W. Linville <linville@tuxdriver.com>
Date:   Mon Sep 12 10:48:58 2005 -0400

    [PATCH] via-rhine: support ETHTOOL_GPERMADDR

    Add support for ETHTOOL_GPERMADDR to via-rhine.

    Signed-off-by: John W. Linville <linville@tuxdriver.com>
    Signed-off-by: Jeff Garzik <jgarzik@pobox.com>

diff --git a/drivers/net/via-rhine.c b/drivers/net/via-rhine.c
index fc7738f..e7b4bc3 100644
--- a/drivers/net/via-rhine.c
+++ b/drivers/net/via-rhine.c
@@ -814,8 +814,9 @@ static int __devinit rhine_init_one(struct pci_dev *pdev,

        for (i = 0; i < 6; i++)
                dev->dev_addr[i] = ioread8(ioaddr + StationAddr + i);
+       memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);

-       if (!is_valid_ether_addr(dev->dev_addr)) {
+       if (!is_valid_ether_addr(dev->perm_addr)) {
                rc = -EIO;
                printk(KERN_ERR "Invalid MAC address\n");
                goto err_out_unmap;
@@ -1829,6 +1830,7 @@ static struct ethtool_ops netdev_ethtool_ops = {
        .set_wol                = rhine_set_wol,
        .get_sg                 = ethtool_op_get_sg,
        .get_tx_csum            = ethtool_op_get_tx_csum,
+       .get_perm_addr          = ethtool_op_get_perm_addr,

 static int netdev_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)

Which it seems went in as part of 2.6.15.  I don't think it's a good patch to
remove since it does add the ETHTOOL_GPERMADDR support for via-rhine.  I don't
have this hardware available, but it would be interesting to find out what the
hardware thinks the dev_addr might be.

Do you have any way to check the MAC address of the device?  BIOS or another
kernel that seems to work fine? 

Comment 2 Andy Gospodarek 2008-04-08 13:15:55 UTC
I am going to ask Ivan to look at this since I have not had adequate time to
help you on this issue.  I am sorry about that.

Don, I presume this is still a problem for you?

Comment 3 Ivan Vecera 2008-04-16 14:58:33 UTC
Did you try to upgrade BIOS?

Comment 4 Ivan Vecera 2008-08-05 09:50:18 UTC
Did you try a BIOS upgrade and what's your kernel version?

Note You need to log in before you can comment on or make changes to this bug.