Hello John,

I  wanted to ask you if the information I provided you is helpful? Something 
goes wrong during the initialization of the driver in Kernel 2.6.37.  The 
function e1000_read_mac_addr_generic does not read the MAC address correctly 
from the EEPROM. The strange thing is that ethtool displays the content of the 
EEPROM correct (even under Kernel 2.6.37).  

If I use Kernel 2.6.30 everything works fine.

-----Ursprüngliche Nachricht-----
Von: Mangard Martin 
Gesendet: Mittwoch, 6. April 2011 10:02
An: 'Ronciak, John'; Allan, Bruce W; Lindsay, Morgan N; 
[email protected]
Cc: Rajagopal, Ramadurai
Betreff: AW: Alternate MAC address support disabled for 82573 ?

Dear John,

I agree with you that this sounds like a blank EEPROM but this is not the case.
If I boot the machine with Kernel 2.6.30 everything is fine and if I boot the 
same machine with Kernel 2.6.37 the MAC addresses are some how not read from 
the EEPROM during the initialization. How can this happen?

Test Run with Kernel  2.6.37:
=============================

I added two printk in the driver, where the MAC-Address should be read from the 
EEPROM

/**
 *  e1000_read_mac_addr_generic - Read device MAC address
 *  @hw: pointer to the HW structure
 *
 *  Reads the device MAC address from the EEPROM and stores the value.
 *  Since devices with two ports use the same EEPROM, we increment the
 *  last bit in the MAC address for the second port.
 **/
s32 e1000_read_mac_addr_generic(struct e1000_hw *hw) {
        u32 rar_high;
        u32 rar_low;
        u16 i;

        rar_high = er32(RAH(0));
        rar_low = er32(RAL(0));

        printk("MMARK %08X \n",rar_high);  // <<<<----
        printk("MMARK %08X \n",rar_low );  // <<<<-----

        for (i = 0; i < E1000_RAL_MAC_ADDR_LEN; i++)
                hw->mac.perm_addr[i] = (u8)(rar_low >> (i*8));

        for (i = 0; i < E1000_RAH_MAC_ADDR_LEN; i++)
                hw->mac.perm_addr[i+4] = (u8)(rar_high >> (i*8));

        for (i = 0; i < ETH_ALEN; i++)
                hw->mac.addr[i] = hw->mac.perm_addr[i];

        return 0;
}

In the Kernel messages I get:

e1000e: Intel(R) PRO/1000 Network Driver - 1.2.7-k2
e1000e: Copyright (c) 1999 - 2010 Intel Corporation.
e1000e 0000:02:00.0: Disabling ASPM  L1
e1000e 0000:02:00.0: PCI->APIC IRQ transform: INT A -> IRQ 17 e1000e 
0000:02:00.0: setting latency timer to 64 e1000e 0000:02:00.0: irq 40 for 
MSI/MSI-X e1000e 0000:02:00.0: Disabling ASPM L0s e1000e 0000:02:00.0: Warning: 
detected DSPD enabled in EEPROM MMARK 00000102 MMARK 08000103 e1000e 
0000:02:00.0: (unregistered net_device): Invalid MAC Address: 03:01:00:08:02:01
e1000e: probe of 0000:02:00.0 failed with error -5 e1000e 0000:03:00.0: 
Disabling ASPM  L1 e1000e 0000:03:00.0: PCI->APIC IRQ transform: INT A -> IRQ 
18 e1000e 0000:03:00.0: setting latency timer to 64 e1000e 0000:03:00.0: irq 40 
for MSI/MSI-X e1000e 0000:03:00.0: Disabling ASPM L0s e1000e 0000:03:00.0: 
Warning: detected DSPD enabled in EEPROM MMARK 00000804 MMARK 00290440 e1000e 
0000:03:00.0: eth0: (PCI Express:2.5GB/s:Width x1) 40:04:29:00:04:08  <<---- I 
do not know form where this address comes but Eth0 gets initialized e1000e 
0000:03:00.0: eth0: Intel(R) PRO/1000 Network Connection e1000e 0000:03:00.0: 
eth0: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 0000:04:00.0: Disabling ASPM  
L1 e1000e 0000:04:00.0: PCI->APIC IRQ transform: INT A -> IRQ 19 e1000e 
0000:04:00.0: setting latency timer to 64 e1000e 0000:04:00.0: irq 41 for 
MSI/MSI-X e1000e 0000:04:00.0: Disabling ASPM L0s e1000e 0000:04:00.0: Warning: 
detected DSPD enabled in EEPROM MMARK 00000000 MMARK 040100A0 e1000e 
0000:03:00.0: irq 40 for MSI/MSI-X e1000e 0000:03:00.0: irq 40 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth0: link is not ready device eth0 entered promiscuous 
mode e1000e 0000:04:00.0: eth1: (PCI Express:2.5GB/s:Width x1) 
a0:00:01:04:00:00 e1000e 0000:04:00.0: eth1: Intel(R) PRO/1000 Network 
Connection e1000e 0000:04:00.0: eth1: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 
0000:05:00.0: Disabling ASPM  L1 e1000e 0000:05:00.0: PCI->APIC IRQ transform: 
INT A -> IRQ 16 e1000e 0000:05:00.0: setting latency timer to 64 e1000e 
0000:05:00.0: irq 42 for MSI/MSI-X e1000e 0000:05:00.0: Disabling ASPM L0s 
e1000e 0000:05:00.0: Warning: detected DSPD enabled in EEPROM MMARK 00000000 
MMARK 00100000 e1000e 0000:04:00.0: irq 41 for MSI/MSI-X e1000e 0000:04:00.0: 
irq 41 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth1: link is not ready device eth1 entered promiscuous 
mode e1000e 0000:05:00.0: eth2: (PCI Express:2.5GB/s:Width x1) 
00:00:10:00:00:00 e1000e 0000:05:00.0: eth2: Intel(R) PRO/1000 Network 
Connection e1000e 0000:05:00.0: eth2: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 
0000:06:00.0: Disabling ASPM  L1 e1000e 0000:06:00.0: PCI->APIC IRQ transform: 
INT A -> IRQ 17 e1000e 0000:06:00.0: setting latency timer to 64 e1000e 
0000:06:00.0: irq 43 for MSI/MSI-X e1000e 0000:06:00.0: Disabling ASPM L0s 
e1000e 0000:06:00.0: Warning: detected DSPD enabled in EEPROM MMARK 00000000 
MMARK 00000000 e1000e 0000:06:00.0: (unregistered net_device): Invalid MAC 
Address: 00:00:00:00:00:00
e1000e: probe of 0000:06:00.0 failed with error -5


As you can see the MAC addresses are  zero or something which seems to be like 
a random number. The random MAC addresse of eth0 is not invalid and the driver 
gets initialized. 
/ # ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 40:04:29:00:04:08  
          UP BROADCAST PROMISC MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)
          Interrupt:18 Memory:fdee0000-fdf00000 

/ # ethtool -e eth0
Offset          Values
------          ------
0x0000          00 50 c2 7f a0 25 0b 30 f7 46 30 01 ff ff ff ff 
0x0010          ff ff ff ff 02 6b 00 00 80 86 10 8b 80 86 80 df 
0x0020          00 00 20 00 7e 14 00 00 00 00 00 d8 00 00 27 00 
0x0030          6c c9 31 50 07 2e 04 0b 09 84 00 00 c0 00 07 06 
0x0040          10 08 00 00 0f 04 7f ff 4d 01 ff ff ff ff ff ff 
0x0050          55 aa ff ff ff ff ff ff ff ff ff ff ff ff ff ff 
0x0060          01 00 40 00 12 1c 40 07 ff ff ff ff ff ff ff ff 
0x0070          ff ff ff ff ff ff ff ff ff ff ff ff ff ff 9d c5 
/ # 



As you can see the MAC address should be "00 50 c2 7f a0 25" but the function 
calls   er32(RAH(0)); and er32(RAL(0)); in the initialization do not read the 
correct values from the EEPROM?!.  

Test Run with Kernel  2.6.30 (SAME DEVICE):
==========================================

e1000e: Intel(R) PRO/1000 Network Driver - 0.3.3.4-k4
e1000e: Copyright (c) 1999-2008 Intel Corporation.
e1000e 0000:02:00.0: setting latency timer to 64 e1000e 0000:02:00.0: irq 30 
for MSI/MSI-X e1000e 0000:02:00.0: Warning: detected DSPD enabled in EEPROM 
e1000e 0000:02:00.0: Warning: detected ASPM enabled in EEPROM
0000:02:00.0: eth0: (PCI Express:2.5GB/s:Width x1) 00:50:c2:7f:a0:24
0000:02:00.0: eth0: Intel(R) PRO/1000 Network Connection
0000:02:00.0: eth0: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 0000:03:00.0: 
setting latency timer to 64 e1000e 0000:03:00.0: irq 31 for MSI/MSI-X e1000e 
0000:02:00.0: irq 30 for MSI/MSI-X e1000e 0000:03:00.0: Warning: detected DSPD 
enabled in EEPROM e1000e 0000:03:00.0: Warning: detected ASPM enabled in EEPROM 
e1000e 0000:02:00.0: irq 30 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth0: link is not ready device eth0 entered promiscuous 
mode
0000:03:00.0: eth1: (PCI Express:2.5GB/s:Width x1) 00:50:c2:7f:a0:25
0000:03:00.0: eth1: Intel(R) PRO/1000 Network Connection
0000:03:00.0: eth1: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 0000:04:00.0: 
setting latency timer to 64 e1000e 0000:04:00.0: irq 32 for MSI/MSI-X e1000e 
0000:03:00.0: irq 31 for MSI/MSI-X e1000e 0000:04:00.0: Warning: detected DSPD 
enabled in EEPROM e1000e 0000:04:00.0: Warning: detected ASPM enabled in EEPROM 
e1000e 0000:03:00.0: irq 31 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth1: link is not ready device eth1 entered promiscuous 
mode
0000:04:00.0: eth2: (PCI Express:2.5GB/s:Width x1) 00:50:c2:7f:a0:26
0000:04:00.0: eth2: Intel(R) PRO/1000 Network Connection
0000:04:00.0: eth2: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 0000:05:00.0: 
setting latency timer to 64 e1000e 0000:05:00.0: irq 33 for MSI/MSI-X e1000e 
0000:05:00.0: Warning: detected DSPD enabled in EEPROM e1000e 0000:05:00.0: 
Warning: detected ASPM enabled in EEPROM
0000:05:00.0: eth3: (PCI Express:2.5GB/s:Width x1) 00:50:c2:7f:a0:03
0000:05:00.0: eth3: Intel(R) PRO/1000 Network Connection
0000:05:00.0: eth3: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 0000:06:00.0: 
setting latency timer to 64 e1000e 0000:06:00.0: irq 34 for MSI/MSI-X e1000e 
0000:05:00.0: irq 33 for MSI/MSI-X e1000e 0000:06:00.0: Warning: detected DSPD 
enabled in EEPROM e1000e 0000:06:00.0: Warning: detected ASPM enabled in EEPROM 
e1000e 0000:05:00.0: irq 33 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth3: link is not ready
0000:06:00.0: eth4: (PCI Express:2.5GB/s:Width x1) 12:34:56:78:00:00
0000:06:00.0: eth4: Intel(R) PRO/1000 Network Connection
0000:06:00.0: eth4: MAC: 2, PHY: 2, PBA No: ffffff-0ff e1000e 0000:06:00.0: irq 
34 for MSI/MSI-X e1000e 0000:06:00.0: irq 34 for MSI/MSI-X
ADDRCONF(NETDEV_UP): eth4: link is not ready
e1000e: eth0 NIC Link is Up 100 Mbps Half Duplex, Flow Control: None
0000:02:00.0: eth0: 10/100 speed: disabling TSO
ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
e1000e: eth4 NIC Link is Up 100 Mbps Full Duplex, Flow Control: RX/TX
0000:06:00.0: eth4: 10/100 speed: disabling TSO
ADDRCONF(NETDEV_CHANGE): eth4: link becomes ready
e1000e: eth3 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: RX/TX
ADDRCONF(NETDEV_CHANGE): eth3: link becomes ready
eth0: no IPv6 routers present
eth4: no IPv6 routers present
eth3: no IPv6 routers present



...everything okay
 



-----Ursprüngliche Nachricht-----
Von: Ronciak, John [mailto:[email protected]]
Gesendet: Dienstag, 5. April 2011 17:37
An: Mangard Martin; Allan, Bruce W; Lindsay, Morgan N; 
[email protected]
Cc: Rajagopal, Ramadurai
Betreff: RE: Alternate MAC address support disabled for 82573 ?

This sounds like you have a blank EEPROM.  Has it ever been programmed to begin 
with?  Did the TME's or field engineers give you what is called the dev starter 
image which has the initial EEPROM image which you then burned into the EEPROM? 
 If you have not yet programmed the EEPROM, all the issues you are seeing would 
be happening.  If you have not yet programmed the EEPROM at all you will need 
to do this first before it is going to work at all.

Are you saying that this exact same device with this EEPROM is working on one 
kernel but not another?  If so, please explain in detail.

BTW, the MAC address in bytes 0-2 is _the_ MAC address and not the alternate 
MAC address.  I think this was confusing us from you first email.




Thanks.

Cheers,
John


> -----Original Message-----
> From: Mangard Martin [mailto:[email protected]]
> Sent: Tuesday, April 05, 2011 5:08 AM
> To: Allan, Bruce W; Lindsay, Morgan N; e1000- 
> [email protected]
> Cc: Rajagopal, Ramadurai
> Subject: Re: [E1000-devel] Alternate MAC address support disabled for
> 82573 ?
> 
> Dear Bruce
> 
> I booted the system with Kernel 2.6.30 and made a 'lspci'. If I 
> interpret the output correct the ASPM is already disabled. With this 
> kernel Version I had the checksum error.
> 
> 
> 00:1c.3 Class 0604: Device 8086:27d6 (rev 02)
>         Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop-
> ParErr- Stepping- SERR- FastB2B- DisINTx+
>         Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- >SERR- <PERR- INTx-
>         Latency: 0, Cache Line Size: 64 bytes
>         Bus: primary=00, secondary=04, subordinate=04, sec-latency=0
>         I/O behind bridge: 0000c000-0000cfff
>         Memory behind bridge: fdc00000-fdcfffff
>         Prefetchable memory behind bridge: 00000000fdb00000- 
> 00000000fdbfffff
>         Secondary status: 66MHz- FastB2B- ParErr- DEVSEL=fast >TAbort-
> <TAbort- <MAbort- <SERR- <PERR-
>         BridgeCtl: Parity- SERR- NoISA- VGA- MAbort- >Reset- FastB2B-
>                 PriDiscTmr- SecDiscTmr- DiscTmrStat- DiscTmrSERREn-
>         Capabilities: [40] Express (v1) Root Port (Slot+), MSI 00
>                 DevCap: MaxPayload 128 bytes, PhantFunc 0, Latency L0s 
> unlimited, L1 unlimited
>                         ExtTag- RBE- FLReset-
>                 DevCtl: Report errors: Correctable- Non-Fatal- Fatal+
> Unsupported-
>                         RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop-
>                         MaxPayload 128 bytes, MaxReadReq 128 bytes
>                 DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq-
> AuxPwr+ TransPend-
>                 LnkCap: Port #4, Speed 2.5GT/s, Width x1, ASPM L0s L1, 
> Latency L0 <256ns, L1 <4us
>                         ClockPM- Surprise- LLActRep+ BwNot-
>                 LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- Retrain-
> CommClk+
>                         ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-
>                 LnkSta: Speed 2.5GT/s, Width x1, TrErr- Train-
> SlotClk+
> DLActive+ BWMgmt- ABWMgmt-
>                 SltCap: AttnBtn- PwrCtrl- MRL- AttnInd- PwrInd-
> HotPlug+ Surpise+
>                         Slot # 13, PowerLimit 10.000000; Interlock-
> NoCompl-
>                 SltCtl: Enable: AttnBtn- PwrFlt- MRL- PresDet-
> CmdCplt-
> HPIrq- LinkChg-
>                         Control: AttnInd Unknown, PwrInd Unknown,
> Power- Interlock-
>                 SltSta: Status: AttnBtn- PowerFlt- MRL- CmdCplt-
> PresDet+ Interlock-
>                         Changed: MRL- PresDet+ LinkState+
>                 RootCtl: ErrCorrectable- ErrNon-Fatal- ErrFatal+
> PMEIntEna- CRSVisible-
>                 RootCap: CRSVisible-
>                 RootSta: PME ReqID 0000, PMEStatus- PMEPending-
>         Capabilities: [80] MSI: Mask- 64bit- Count=1/1 Enable+
>                 Address: fee0100c  Data: 4189
>         Capabilities: [90] Subsystem: Device 8086:27d6
>         Capabilities: [a0] 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-
>         Kernel driver in use: pcieport-driver
> 
> But there is another issue which I do not understand. This document ( 
> ftp://download.intel.com/design/network/applnots/ap475.pdf ) describes 
> how to connect a PC82573 chip to an EEPROM and how to specify the MAC 
> address in this memory (word 0 to 2). Now I am confused if you say 
> that this feature was never available for the PC82573 chip.
> 
> I also booted the test device with Kernel 2.6.37 and because the MAC 
> address is not read from the EEPROM (word 0 to 2) it leads to the 
> invalid MAC addres 00:00:00:00:00:00 or in some cases to a random 
> number and the driver does not get initialized
> 
> e1000e: Intel(R) PRO/1000 Network Driver - 1.2.7-k2
> e1000e: Copyright (c) 1999 - 2010 Intel Corporation.
> e1000e 0000:02:00.0: Disabling ASPM  L1 e1000e 0000:02:00.0: PCI->APIC 
> IRQ transform: INT A -> IRQ 17 e1000e
> 0000:02:00.0: setting latency timer to 64 e1000e 0000:02:00.0: irq 40 
> for MSI/MSI-X e1000e 0000:02:00.0: Disabling ASPM L0s e1000e
> 0000:02:00.0: Warning: detected DSPD enabled in EEPROM e1000e
> 0000:02:00.0: (unregistered net_device): Invalid MAC Address:
> 00:00:00:00:00:00
> e1000e: probe of 0000:02:00.0 failed with error -5
> 
> 
> Where do I have to specify the MAC address that the PC82573E chip 
> works with the driver of Kernel 2.6.37?
> 
> Martin
> 
> 
> 
> -----Ursprüngliche Nachricht-----
> Von: Allan, Bruce W [mailto:[email protected]]
> Gesendet: Dienstag, 5. April 2011 01:08
> An: Mangard Martin; Lindsay, Morgan N; e1000- 
> [email protected]
> Cc: Rajagopal, Ramadurai
> Betreff: RE: Alternate MAC address support disabled for 82573 ?
> 
> The issue with the bad checksum should be resolved in 2.6.37 by 
> disabling ASPM L1 on the 82573 (confirm with 'lspci -s 
> <bus:slot.function> -vvv' run as root where <bus:slot.function> is the 
> device address of the NIC or remove the -s option to see all PCI 
> devices).  From what I understand, alternate MAC addresses where never 
> supposed to be supported on 82573 and it was a bug in the driver that 
> allowed it before ca. 2.6.35.
> 
> 
> ----------------------------------------------------------------------
> -
> -------
> Xperia(TM) PLAY
> It's a major breakthrough. An authentic gaming smartphone on the 
> nation's most reliable network.
> And it wants your games.
> http://p.sf.net/sfu/verizon-sfdev
> _______________________________________________
> E1000-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/e1000-devel
> To learn more about Intel&#174; Ethernet, visit 
> http://communities.intel.com/community/wired

------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
E1000-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/e1000-devel
To learn more about Intel&#174; Ethernet, visit 
http://communities.intel.com/community/wired

Reply via email to