netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Problems with e1000 in 2.4.23
@ 2003-11-30  7:08 Ben Greear
  2003-11-30  8:35 ` Ben Greear
  0 siblings, 1 reply; 8+ messages in thread
From: Ben Greear @ 2003-11-30  7:08 UTC (permalink / raw)
  To: 'netdev@oss.sgi.com', Feldman, Scott

[-- Attachment #1: Type: text/plain, Size: 1333 bytes --]

I just started doing some testing on 2.4.23 with a dual-port
Intel NIC.  I have seen several crashes and reproducible 'TX watchdog timeout'
messages when connecting an e1000 port to both an e100 on the same machine
and to a tulip on another machine...  I did not see problems when passing
traffic between the two e1000 ports, so the tx-timeout issue seems confined
to e1000 -> 100bt.

I'm running on a dual-amd box which has had issues in the past, but
a bios update seems to have fixed it's pci-routing issues.  Also, I
am running some personal networking patches.

That said, I have not seen any of these issues on 2.4.23-pre9 (+ my patches),
and I saw the same problems on 2.4.23 both with my patched e1000 and with an
unpatched e1000.

Attached is an oops that did not hang the machine.  The hard hang looked
like memory corruption (a few of the registers were 0x15141312,
and the payload of the packets I was sending was incrementing bytes, ie 0x010203040506...).
I'll crank up the serial console and see if I can capture some of
the hard crashes...

The lspci and dmesg files are from a 2.4.23-pre9 boot.

As usual, it could all be my fault, so I'd like to hear if anyone can confirm
or deny the e1000 -> 100bt issue.

Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com


[-- Attachment #2: e1000_dump.txt --]
[-- Type: text/plain, Size: 3320 bytes --]

ksymoops 2.4.5 on i686 2.4.23.  Options used
     -V (default)
     -k /proc/ksyms (default)
     -l /proc/modules (default)
     -o /lib/modules/2.4.23/ (default)
     -m /boot/System.map-2.4.23 (default)

Warning: You did not tell me where to find symbol information.  I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc.  ksymoops -h explains the options.

Error (expand_objects): cannot stat(/lib/ext3.o) for ext3
Error (expand_objects): cannot stat(/lib/jbd.o) for jbd
Warning (map_ksym_to_module): cannot match loaded module ext3 to a unique module object.  Trace may not be reliable.
Nov 29 22:22:17 athlon2 kernel: Unable to handle kernel NULL pointer dereference at virtual address 00000007
Nov 29 22:22:17 athlon2 kernel: c01f0d5a
Nov 29 22:22:17 athlon2 kernel: *pde = 00000000
Nov 29 22:22:17 athlon2 kernel: Oops: 0002
Nov 29 22:22:17 athlon2 kernel: CPU:    1
Nov 29 22:22:17 athlon2 kernel: EIP:    0010:[<c01f0d5a>]    Not tainted
Using defaults from ksymoops -t elf32-i386 -a i386
Nov 29 22:22:17 athlon2 kernel: EFLAGS: 00010206
Nov 29 22:22:17 athlon2 kernel: eax: 00000003   ebx: d620d9c0   ecx: dfeb9690   edx: d620d9c0
Nov 29 22:22:17 athlon2 kernel: esi: dba46a50   edi: d83c0000   ebp: 00002e68   esp: d4e23e9c
Nov 29 22:22:17 athlon2 kernel: ds: 0018   es: 0018   ss: 0018
Nov 29 22:22:17 athlon2 kernel: Process ip (pid: 3963, stackpage=d4e23000)
Nov 29 22:22:17 athlon2 kernel: Stack: d620d900 00000000 00000030
Nov 29 22:22:17 athlon2 kernel: d83c2e68 e0912333 d620d9c0 00001042 00000000 
Nov 29 22:22:17 athlon2 kernel:        000001ef
Nov 29 22:22:17 athlon2 kernel: dba46980 00001003 00001042 00000000 e0911af6 dba46980 dba46800
Nov 29 22:22:17 athlon2 kernel:        c01f4d87 dba46800 00000009 dba46800 dba46800 00001003
Nov 29 22:22:17 athlon2 kernel: c01f62d9 dba46800 
Nov 29 22:22:17 athlon2 kernel: Call Trace:    [<e0912333>] [<e0911af6>]
Nov 29 22:22:17 athlon2 kernel:  [<c01f4d87>] [<c01f62d9>] [<c01f482e>]
Nov 29 22:22:17 athlon2 kernel:   [<c02367d0>] [<c01ed3e0>]
Nov 29 22:22:17 athlon2 kernel:  [<c01ed420>] [<c0155540>] [<c01091ff>]
Nov 29 22:22:17 athlon2 kernel: Code: f0 ff 48 04 


>>EIP; c01f0d5a <__kfree_skb+1a/170>   <=====

>>ebx; d620d9c0 <_end+15ebad88/204ba448>
>>ecx; dfeb9690 <_end+1fb66a58/204ba448>
>>edx; d620d9c0 <_end+15ebad88/204ba448>
>>esi; dba46a50 <_end+1b6f3e18/204ba448>
>>edi; d83c0000 <_end+1806d3c8/204ba448>
>>ebp; 00002e68 Before first symbol
>>esp; d4e23e9c <_end+14ad1264/204ba448>

Trace; e0912333 <[e1000]e1000_clean_rx_ring+53/110>
Trace; e0911af6 <[e1000]e1000_close+16/30>
Trace; c01f4d87 <dev_close+c7/d0>
Trace; c01f62d9 <dev_change_flags+129/140>
Trace; c01f482e <dev_get+1e/40>
Trace; c02367d0 <devinet_ioctl+290/610>
Trace; c01ed3e0 <sock_ioctl+0/80>
Trace; c01ed420 <sock_ioctl+40/80>
Trace; c0155540 <sys_ioctl+f0/2a0>
Trace; c01091ff <system_call+33/38>

Code;  c01f0d5a <__kfree_skb+1a/170>
00000000 <_EIP>:
Code;  c01f0d5a <__kfree_skb+1a/170>
   0:   f0 ff 48 04               lock decl 0x4(%eax)


2 warnings and 2 errors issued.  Results may not be reliable.

[-- Attachment #3: amd_lspci.txt --]
[-- Type: text/plain, Size: 11195 bytes --]

00:00.0 Host bridge: Advanced Micro Devices [AMD] AMD-760 MP [IGD4-2P] System Controller (rev 11)
	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: 32
	Region 0: Memory at f8000000 (32-bit, prefetchable) [size=64M]
	Region 1: Memory at f6200000 (32-bit, prefetchable) [size=4K]
	Region 2: I/O ports at 1090 [disabled] [size=4]
	Capabilities: [a0] AGP version 2.0
		Status: RQ=15 SBA+ 64bit- FW- Rate=x1,x2
		Command: RQ=0 SBA+ AGP+ 64bit- FW- Rate=<none>

00:01.0 PCI bridge: Advanced Micro Devices [AMD] AMD-760 MP [IGD4-2P] AGP Bridge (prog-if 00 [Normal decode])
	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
	Bus: primary=00, secondary=01, subordinate=01, sec-latency=64
	I/O behind bridge: 0000f000-00000fff
	Memory behind bridge: fff00000-000fffff
	Prefetchable memory behind bridge: fff00000-000fffff
	BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B-

00:07.0 ISA bridge: Advanced Micro Devices [AMD] AMD-768 [Opus] ISA (rev 05)
	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: 0

00:07.1 IDE interface: Advanced Micro Devices [AMD] AMD-768 [Opus] IDE (rev 04) (prog-if 8a [Master SecP PriP])
	Subsystem: Advanced Micro Devices [AMD] AMD-768 [Opus] IDE
	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: 0
	Region 4: I/O ports at f000 [size=16]

00:07.3 Bridge: Advanced Micro Devices [AMD] AMD-768 [Opus] ACPI (rev 03)
	Subsystem: Advanced Micro Devices [AMD] AMD-768 [Opus] ACPI
	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-

00:08.0 Ethernet controller: Intel Corp. 82546EB Gigabit Ethernet Controller (Copper) (rev 01)
	Subsystem: Intel Corp. PRO/1000 MT Dual Port Server Adapter
	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 (63750ns min), cache line size 10
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at f4000000 (64-bit, non-prefetchable) [size=128K]
	Region 4: I/O ports at 1000 [size=64]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=1 PME-
	Capabilities: [e4] PCI-X non-bridge device.
		Command: DPERE- ERO+ RBC=0 OST=0
		Status: Bus=0 Dev=0 Func=0 64bit- 133MHz- SCD- USC-, DC=simple, DMMRBC=0, DMOST=0, DMCRS=0, RSCEM-	Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
		Address: 0000000000000000  Data: 0000

00:08.1 Ethernet controller: Intel Corp. 82546EB Gigabit Ethernet Controller (Copper) (rev 01)
	Subsystem: Intel Corp. PRO/1000 MT Dual Port Server Adapter
	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 (63750ns min), cache line size 10
	Interrupt: pin B routed to IRQ 17
	Region 0: Memory at f4020000 (64-bit, non-prefetchable) [size=128K]
	Region 4: I/O ports at 1040 [size=64]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=1 PME-
	Capabilities: [e4] PCI-X non-bridge device.
		Command: DPERE- ERO+ RBC=0 OST=0
		Status: Bus=0 Dev=0 Func=0 64bit- 133MHz- SCD- USC-, DC=simple, DMMRBC=0, DMOST=0, DMCRS=0, RSCEM-	Capabilities: [f0] Message Signalled Interrupts: 64bit+ Queue=0/0 Enable-
		Address: 0000000000000000  Data: 0000

00:09.0 PCI bridge: Intel Corp. 21154 PCI-to-PCI Bridge (prog-if 00 [Normal decode])
	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, cache line size 10
	Bus: primary=00, secondary=02, subordinate=02, sec-latency=68
	I/O behind bridge: 00002000-00002fff
	Memory behind bridge: f4100000-f41fffff
	Prefetchable memory behind bridge: 00000000fff00000-0000000000000000
	BridgeCtl: Parity- SERR- NoISA+ VGA- MAbort- >Reset- FastB2B-
	Capabilities: [dc] Power Management version 1
		Flags: PMEClk- DSI- D1- D2- AuxCurrent=0mA PME(D0-,D1-,D2-,D3hot-,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=0 PME-
		Bridge: PM- B3+

00:10.0 PCI bridge: Advanced Micro Devices [AMD] AMD-768 [Opus] PCI (rev 05) (prog-if 00 [Normal decode])
	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: 99
	Bus: primary=00, secondary=03, subordinate=03, sec-latency=168
	I/O behind bridge: 00003000-00003fff
	Memory behind bridge: f4200000-f5ffffff
	Prefetchable memory behind bridge: fff00000-000fffff
	BridgeCtl: Parity- SERR- NoISA+ VGA+ MAbort- >Reset- FastB2B-

02:00.0 Ethernet controller: Intel Corp. 82559ER (rev 10)
	Subsystem: Ramix Inc: Unknown device 0610
	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: 66 (2000ns min, 14000ns max), cache line size 10
	Interrupt: pin A routed to IRQ 17
	Region 0: Memory at f4180000 (32-bit, non-prefetchable) [size=4K]
	Region 1: I/O ports at 2000 [size=64]
	Region 2: Memory at f4100000 (32-bit, non-prefetchable) [size=128K]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=2 PME-

02:01.0 Ethernet controller: Intel Corp. 82559ER (rev 10)
	Subsystem: Ramix Inc: Unknown device 0610
	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: 66 (2000ns min, 14000ns max), cache line size 10
	Interrupt: pin A routed to IRQ 18
	Region 0: Memory at f4181000 (32-bit, non-prefetchable) [size=4K]
	Region 1: I/O ports at 2040 [size=64]
	Region 2: Memory at f4120000 (32-bit, non-prefetchable) [size=128K]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=2 PME-

02:02.0 Ethernet controller: Intel Corp. 82559ER (rev 10)
	Subsystem: Ramix Inc: Unknown device 0610
	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: 66 (2000ns min, 14000ns max), cache line size 10
	Interrupt: pin A routed to IRQ 16
	Region 0: Memory at f4182000 (32-bit, non-prefetchable) [size=4K]
	Region 1: I/O ports at 2080 [size=64]
	Region 2: Memory at f4140000 (32-bit, non-prefetchable) [size=128K]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=2 PME-

02:03.0 Ethernet controller: Intel Corp. 82559ER (rev 10)
	Subsystem: Ramix Inc: Unknown device 0610
	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: 66 (2000ns min, 14000ns max), cache line size 10
	Interrupt: pin A routed to IRQ 17
	Region 0: Memory at f4183000 (32-bit, non-prefetchable) [size=4K]
	Region 1: I/O ports at 20c0 [size=64]
	Region 2: Memory at f4160000 (32-bit, non-prefetchable) [size=128K]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI+ D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold-)
		Status: D0 PME-Enable- DSel=0 DScale=2 PME-

03:00.0 USB Controller: Advanced Micro Devices [AMD] AMD-768 [Opus] USB (rev 07) (prog-if 10 [OHCI])
	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 (20000ns max)
	Interrupt: pin D routed to IRQ 19
	Region 0: Memory at f4200000 (32-bit, non-prefetchable) [size=4K]

03:07.0 VGA compatible controller: ATI Technologies Inc Rage XL (rev 27) (prog-if 00 [VGA])
	Subsystem: ATI Technologies Inc Rage XL
	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: 66 (2000ns min), cache line size 10
	Region 0: Memory at f5000000 (32-bit, non-prefetchable) [size=16M]
	Region 1: I/O ports at 3000 [size=256]
	Region 2: Memory at f4201000 (32-bit, non-prefetchable) [size=4K]
	Expansion ROM at <unassigned> [disabled] [size=128K]
	Capabilities: [5c] 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-

03:08.0 Ethernet controller: 3Com Corporation 3c980-TX 10/100baseTX NIC [Python-T] (rev 78)
	Subsystem: Tyan Computer Thunder K7 S2462
	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: 80 (2500ns min, 2500ns max), cache line size 10
	Interrupt: pin A routed to IRQ 18
	Region 0: I/O ports at 3400 [size=128]
	Region 1: Memory at f4202000 (32-bit, non-prefetchable) [size=128]
	Expansion ROM at <unassigned> [disabled] [size=128K]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=2 PME-

03:09.0 Ethernet controller: 3Com Corporation 3c980-TX 10/100baseTX NIC [Python-T] (rev 78)
	Subsystem: Tyan Computer Thunder K7 S2462
	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: 80 (2500ns min, 2500ns max), cache line size 10
	Interrupt: pin A routed to IRQ 19
	Region 0: I/O ports at 3480 [size=128]
	Region 1: Memory at f4202400 (32-bit, non-prefetchable) [size=128]
	Expansion ROM at <unassigned> [disabled] [size=128K]
	Capabilities: [dc] Power Management version 2
		Flags: PMEClk- DSI- D1+ D2+ AuxCurrent=0mA PME(D0+,D1+,D2+,D3hot+,D3cold+)
		Status: D0 PME-Enable- DSel=0 DScale=2 PME-


[-- Attachment #4: amd_dmesg.txt --]
[-- Type: text/plain, Size: 13769 bytes --]

Linux version 2.4.23-pre9 (greear@grok.yi.org) (gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5)) #28 SMP Thu Nov 20 00:31:38 PST 2003
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000000000 - 000000000009f800 (usable)
 BIOS-e820: 000000000009f800 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000ca000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000001fef0000 (usable)
 BIOS-e820: 000000001fef0000 - 000000001fef6000 (ACPI data)
 BIOS-e820: 000000001fef6000 - 000000001ff00000 (ACPI NVS)
 BIOS-e820: 000000001ff00000 - 000000001ff80000 (usable)
 BIOS-e820: 000000001ff80000 - 0000000020000000 (reserved)
 BIOS-e820: 00000000fec00000 - 00000000fec04000 (reserved)
 BIOS-e820: 00000000fee00000 - 00000000fee01000 (reserved)
 BIOS-e820: 00000000fff80000 - 0000000100000000 (reserved)
511MB LOWMEM available.
found SMP MP-table at 000f7110
hm, page 000f7000 reserved twice.
hm, page 000f8000 reserved twice.
hm, page 0009f000 reserved twice.
hm, page 000a0000 reserved twice.
On node 0 totalpages: 130944
zone(0): 4096 pages.
zone(1): 126848 pages.
zone(2): 0 pages.
ACPI: RSDP (v000 PTLTD                                     ) @ 0x000f70a0
ACPI: RSDT (v001 PTLTD    RSDT   0x06040000  LTP 0x00000000) @ 0x1fef3f4a
ACPI: FADT (v001 AMD    TECATE   0x06040000 PTL  0x000f4240) @ 0x1fef5f2e
ACPI: MADT (v001 PTLTD  	 APIC   0x06040000  LTP 0x00000000) @ 0x1fef5fa2
ACPI: DSDT (v001    AMD  AMDACPI 0x06040000 MSFT 0x0100000d) @ 0x00000000
ACPI: Local APIC address 0xfee00000
ACPI: LAPIC (acpi_id[0x00] lapic_id[0x01] enabled)
Processor #1 Pentium(tm) Pro APIC version 16
ACPI: LAPIC (acpi_id[0x01] lapic_id[0x00] enabled)
Processor #0 Pentium(tm) Pro APIC version 16
ACPI: LAPIC_NMI (acpi_id[0x00] polarity[0x1] trigger[0x1] lint[0x1])
ACPI: LAPIC_NMI (acpi_id[0x01] polarity[0x1] trigger[0x1] lint[0x1])
Using ACPI for processor (LAPIC) configuration information
Intel MultiProcessor Specification v1.4
    Virtual Wire compatibility mode.
OEM ID: TYAN     Product ID: PAULANER     APIC at: 0xFEE00000
I/O APIC #2 Version 17 at 0xFEC00000.
Enabling APIC mode: Flat.	Using 1 I/O APICs
Processors: 2
Kernel command line: ro root=/dev/hda2 console=ttyS0,38400 console=tty0
Initializing CPU#0
Detected 1666.731 MHz processor.
Console: colour VGA+ 80x25
Calibrating delay loop... 3329.22 BogoMIPS
Memory: 515108k/523776k available (1407k kernel code, 8216k reserved, 524k data, 152k init, 0k highmem)
Dentry cache hash table entries: 65536 (order: 7, 524288 bytes)
Inode cache hash table entries: 32768 (order: 6, 262144 bytes)
Mount cache hash table entries: 512 (order: 0, 4096 bytes)
Buffer cache hash table entries: 32768 (order: 5, 131072 bytes)
Page-cache hash table entries: 131072 (order: 7, 524288 bytes)
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
Intel machine check architecture supported.
Intel machine check reporting enabled on CPU#0.
CPU:     After generic, caps: 0383fbff c1cbfbff 00000000 00000000
CPU:             Common caps: 0383fbff c1cbfbff 00000000 00000000
Enabling fast FPU save and restore... done.
Enabling unmasked SIMD FPU exception support... done.
Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.40 (20010327) Richard Gooch (rgooch@atnf.csiro.au)
mtrr: detected mtrr type: Intel
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
Intel machine check reporting enabled on CPU#0.
CPU:     After generic, caps: 0383fbff c1cbfbff 00000000 00000000
CPU:             Common caps: 0383fbff c1cbfbff 00000000 00000000
CPU0: AMD Athlon(tm) MP 2000+ stepping 02
per-CPU timeslice cutoff: 731.44 usecs.
masked ExtINT on CPU#0
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Booting processor 1/0 eip 2000
Initializing CPU#1
masked ExtINT on CPU#1
ESR value before enabling vector: 00000000
ESR value after enabling vector: 00000000
Calibrating delay loop... 3329.22 BogoMIPS
CPU: L1 I Cache: 64K (64 bytes/line), D cache 64K (64 bytes/line)
CPU: L2 Cache: 256K (64 bytes/line)
Intel machine check reporting enabled on CPU#1.
CPU:     After generic, caps: 0383fbff c1cbfbff 00000000 00000000
CPU:             Common caps: 0383fbff c1cbfbff 00000000 00000000
CPU1: AMD Athlon(tm) Processor stepping 02
Total of 2 processors activated (6658.45 BogoMIPS).
ENABLING IO-APIC IRQs
Setting 2 in the phys_id_present_map
...changing IO-APIC physical APIC ID to 2 ... ok.
init IO_APIC IRQs
 IO-APIC (apicid-pin) 2-0, 2-5, 2-9, 2-10, 2-11, 2-20, 2-21, 2-22, 2-23 not connected.
..TIMER: vector=0x31 pin1=2 pin2=0
number of MP IRQ sources: 21.
number of IO-APIC #2 registers: 24.
testing the IO APIC.......................

IO APIC #2......
.... register #00: 02000000
.......    : physical APIC id: 02
.......    : Delivery Type: 0
.......    : LTS          : 0
.... register #01: 00170011
.......     : max redirection entries: 0017
.......     : PRQ implemented: 0
.......     : IO APIC version: 0011
.... register #02: 00000000
.......     : arbitration: 00
.... IRQ redirection table:
 NR Log Phy Mask Trig IRR Pol Stat Dest Deli Vect:   
 00 000 00  1    0    0   0   0    0    0    00
 01 003 03  0    0    0   0   0    1    1    39
 02 003 03  0    0    0   0   0    1    1    31
 03 003 03  0    0    0   0   0    1    1    41
 04 003 03  0    0    0   0   0    1    1    49
 05 000 00  1    0    0   0   0    0    0    00
 06 003 03  0    0    0   0   0    1    1    51
 07 003 03  0    0    0   0   0    1    1    59
 08 003 03  0    0    0   0   0    1    1    61
 09 000 00  1    0    0   0   0    0    0    00
 0a 000 00  1    0    0   0   0    0    0    00
 0b 000 00  1    0    0   0   0    0    0    00
 0c 003 03  0    0    0   0   0    1    1    69
 0d 003 03  0    0    0   0   0    1    1    71
 0e 003 03  0    0    0   0   0    1    1    79
 0f 003 03  0    0    0   0   0    1    1    81
 10 003 03  1    1    0   1   0    1    1    89
 11 003 03  1    1    0   1   0    1    1    91
 12 003 03  1    1    0   1   0    1    1    99
 13 003 03  1    1    0   1   0    1    1    A1
 14 000 00  1    0    0   0   0    0    0    00
 15 000 00  1    0    0   0   0    0    0    00
 16 000 00  1    0    0   0   0    0    0    00
 17 000 00  1    0    0   0   0    0    0    00
IRQ to pin mappings:
IRQ0 -> 0:2
IRQ1 -> 0:1
IRQ3 -> 0:3
IRQ4 -> 0:4
IRQ6 -> 0:6
IRQ7 -> 0:7
IRQ8 -> 0:8
IRQ12 -> 0:12
IRQ13 -> 0:13
IRQ14 -> 0:14
IRQ15 -> 0:15
IRQ16 -> 0:16
IRQ17 -> 0:17
IRQ18 -> 0:18
IRQ19 -> 0:19
.................................... done.
Using local APIC timer interrupts.
calibrating APIC timer ...
..... CPU clock speed is 1666.8222 MHz.
..... host bus clock speed is 266.6915 MHz.
cpu: 0, clocks: 2666915, slice: 888971
CPU0<T0:2666912,T1:1777936,D:5,S:888971,C:2666915>
cpu: 1, clocks: 2666915, slice: 888971
CPU1<T0:2666912,T1:888960,D:10,S:888971,C:2666915>
checking TSC synchronization across CPUs: passed.
Waiting on wait_init_idle (map = 0x2)
All processors have done init_idle
mtrr: your CPUs had inconsistent fixed MTRR settings
mtrr: probably your BIOS does not setup all CPUs
PCI: PCI BIOS revision 2.10 entry at 0xfd790, last bus=3
PCI: Using configuration type 1
PCI: Probing PCI hardware
PCI: Probing PCI hardware (bus 00)
PCI: Using IRQ router AMD768 [1022/7443] at 00:07.3
PCI->APIC IRQ transform: (B0,I8,P0) -> 16
PCI->APIC IRQ transform: (B0,I8,P1) -> 17
PCI->APIC IRQ transform: (B2,I0,P0) -> 17
PCI->APIC IRQ transform: (B2,I1,P0) -> 18
PCI->APIC IRQ transform: (B2,I2,P0) -> 16
PCI->APIC IRQ transform: (B2,I3,P0) -> 17
PCI->APIC IRQ transform: (B3,I0,P3) -> 19
PCI->APIC IRQ transform: (B3,I8,P0) -> 18
PCI->APIC IRQ transform: (B3,I9,P0) -> 19
BIOS failed to enable PCI standards compliance, fixing this error.
isapnp: Scanning for PnP cards...
isapnp: No Plug & Play device found
Linux NET4.0 for Linux 2.4
Based upon Swansea University Computer Society NET3.039
Initializing RT netlink socket
apm: BIOS version 1.2 Flags 0x03 (Driver version 1.16)
apm: disabled - APM is not SMP safe.
Starting kswapd
VFS: Disk quotas vdquot_6.5.1
pty: 512 Unix98 ptys configured
Serial driver version 5.05c (2001-07-08) with MANY_PORTS MULTIPORT SHARE_IRQ SERIAL_PCI ISAPNP enabled
ttyS00 at 0x03f8 (irq = 4) is a 16550A
ttyS01 at 0x02f8 (irq = 3) is a 16550A
Real Time Clock Driver v1.10e
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
NET4: Frame Diverter 0.46
RAMDISK driver initialized: 16 RAM disks of 4096K size 1024 blocksize
Uniform Multi-Platform E-IDE driver Revision: 7.00beta4-2.4
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
AMD7441: IDE controller at PCI slot 00:07.1
AMD7441: chipset revision 4
AMD7441: not 100% native mode: will probe irqs later
ide: Assuming 33MHz system bus speed for PIO modes; override with idebus=xx
AMD_IDE: Advanced Micro Devices [AMD] AMD-768 [Opus] IDE (rev 04) UDMA100 controller on pci00:07.1
    ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:pio
hda: WDC WD200BB-75CAA0, ATA DISK drive
blk: queue c03449a0, I/O limit 4095Mb (mask 0xffffffff)
hdc: SAMSUNG CD-ROM SC-152L, ATAPI CD/DVD-ROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
hda: attached ide-disk driver.
hda: host protected area => 1
hda: 39062500 sectors (20000 MB) w/2048KiB Cache, CHS=2431/255/63, UDMA(100)
Partition check:
 hda: hda1 hda2 hda3
ide: late registration of driver.
md: md driver 0.90.0 MAX_MD_DEVS=256, MD_SB_DISKS=27
md: Autodetecting RAID arrays.
md: autorun ...
md: ... autorun DONE.
NET4: Linux TCP/IP 1.0 for NET4.0
IP Protocols: ICMP, UDP, TCP, IGMP
IP: routing cache hash table of 4096 buckets, 32Kbytes
TCP: Hash tables configured (established 32768 bind 32768)
Linux IP multicast router 0.06 plus PIM-SM
NET4: Unix domain sockets 1.0/SMP for Linux NET4.0.
RAMDISK: Compressed image found at block 0
Freeing initrd memory: 146k freed
VFS: Mounted root (ext2 filesystem).
Journalled Block Device driver loaded
kjournald starting.  Commit interval 5 seconds
EXT3-fs: mounted filesystem with ordered data mode.
Freeing unused kernel memory: 152k freed
usb.c: registered new driver usbdevfs
usb.c: registered new driver hub
usb-ohci.c: USB OHCI at membase 0xe084d000, IRQ 19
usb-ohci.c: usb-03:00.0, Advanced Micro Devices [AMD] AMD-768 [Opus] USB
usb.c: new USB bus registered, assigned bus number 1
hub.c: USB hub found
hub.c: 4 ports detected
usb.c: registered new driver hiddev
usb.c: registered new driver hid
hid-core.c: v1.8.1 Andreas Gal, Vojtech Pavlik <vojtech@suse.cz>
hid-core.c: USB HID support drivers
mice: PS/2 mouse device common for all mice
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,2), internal journal
Adding Swap: 1048312k swap-space (priority -1)
kjournald starting.  Commit interval 5 seconds
EXT3 FS 2.4-0.9.19, 19 August 2002 on ide0(3,1), internal journal
EXT3-fs: mounted filesystem with ordered data mode.
parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP]
parport0: irq 7 detected
ip_tables: (C) 2000-2002 Netfilter core team
3c59x: Donald Becker and others. www.scyld.com/network/vortex.html
See Documentation/networking/vortex.txt
03:08.0: 3Com PCI 3c980C Python-T at 0x3400. Vers LK1.1.18-ac
 00:e0:81:21:7d:c8, IRQ 18
  product code 0000 rev 00.6 date 00-00-00
  Internal config register is 1800000, transceivers 0xa.
  8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
  MII transceiver found at address 24, status 782d.
  Enabling bus-master transmits and whole-frame receives.
03:08.0: scatter/gather enabled. h/w checksums enabled
divert: allocating divert_blk for eth0
See Documentation/networking/vortex.txt
03:09.0: 3Com PCI 3c980C Python-T at 0x3480. Vers LK1.1.18-ac
 00:e0:81:21:7d:c9, IRQ 19
  product code 0000 rev 00.6 date 00-00-00
  Internal config register is 1800000, transceivers 0xa.
  8K byte-wide RAM 5:3 Rx:Tx split, autoselect/Autonegotiate interface.
  MII transceiver found at address 24, status 7809.
  Enabling bus-master transmits and whole-frame receives.
03:09.0: scatter/gather enabled. h/w checksums enabled
divert: allocating divert_blk for eth1
ip_tables: (C) 2000-2002 Netfilter core team
parport0: PC-style at 0x378 (0x778) [PCSPP,TRISTATE,EPP]
parport0: irq 7 detected
lp0: using parport0 (polling).
lp0: console ready
pktgen.c: v1.7: Packet Generator for packet performance testing.
pktgen: cycles_calibrate, cycles_per_ns: 1  per_us: 1666  per_ms: 1666000
Intel(R) PRO/1000 Network Driver - version 5.2.16-k2
Copyright (c) 1999-2003 Intel Corporation.
divert: allocating divert_blk for eth2
eth2: Intel(R) PRO/1000 Network Connection
Transmit Descriptors set to 1024
Receive Descriptors set to 4096
divert: allocating divert_blk for eth3
eth3: Intel(R) PRO/1000 Network Connection
Transmit Descriptors set to 1024
Receive Descriptors set to 4096
Intel(R) PRO/100 Network Driver - version 2.3.18-k1
Copyright (c) 2003 Intel Corporation

divert: allocating divert_blk for eth4
e100: selftest OK.
e1000: eth2 NIC Link is Up 100 Mbps Full Duplex
e100: eth4: Intel(R) PRO/100 Network Connection
  Hardware receive checksums enabled

divert: allocating divert_blk for eth5
e100: selftest OK.
e100: eth5: Intel(R) PRO/100 Network Connection
  Hardware receive checksums enabled

divert: allocating divert_blk for eth6
e100: selftest OK.
e100: eth6: Intel(R) PRO/100 Network Connection
  Hardware receive checksums enabled

divert: allocating divert_blk for eth7
e100: selftest OK.
e100: eth7: Intel(R) PRO/100 Network Connection
  Hardware receive checksums enabled

MAC address based VLAN support Revision: 1.3
e1000: eth2 NIC Link is Up 100 Mbps Full Duplex
e1000: eth2 NIC Link is Up 100 Mbps Full Duplex
e1000: eth2 NIC Link is Up 100 Mbps Full Duplex

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Problems with e1000 in 2.4.23
  2003-11-30  7:08 Ben Greear
@ 2003-11-30  8:35 ` Ben Greear
  0 siblings, 0 replies; 8+ messages in thread
From: Ben Greear @ 2003-11-30  8:35 UTC (permalink / raw)
  To: 'netdev@oss.sgi.com'; +Cc: Feldman, Scott


3 more data points:

I copied the e1000 from 2.4.23-pre9 to 2.4.23, tx-watchdog problem still happened.

I tried vanilla 2.4.23 (ie, none of my hacks), tx-watchdog problem still happened,
   but took slightly longer (around 2 minutes instead of 30 seconds).

Booted 2.4.23-pre9 again just to make sure, ran for quite a while w/out a problem,
then crashed hard (hand-copied from console and ran through ksymoops, its possible
I typo'd something).

So, not sure what to blame, but if anyone wants a used Dual-AMD box, I now have
one for sale!

Ben


ksymoops 2.4.5 on i686 2.4.23-pre9.  Options used
      -V (default)
      -k /proc/ksyms (default)
      -l /proc/modules (default)
      -o /lib/modules/2.4.23-pre9/ (default)
      -m /boot/System.map-2.4.23-pre9 (default)

Warning: You did not tell me where to find symbol information.  I will
assume that the log matches the kernel and modules that are running
right now and I'll use the default options above for symbol resolution.
If the current kernel and/or modules do not match the log, you can get
more accurate output by telling me the kernel version and where to find
map, modules, ksyms etc.  ksymoops -h explains the options.

Error (expand_objects): cannot stat(/lib/ext3.o) for ext3
Error (expand_objects): cannot stat(/lib/jbd.o) for jbd
Warning (map_ksym_to_module): cannot match loaded module ext3 to a unique module object.  Trace may not be reliable.
invalid operand: 0000
CPU:    1
EFLAGS: 00010286
eax: 00000026   ebx: b1b0afae     ecx: 00000092       edx: ded2df7c
esi: dd35f080   edi: dae28890     ebp: 00000889       esp: c158fea0
ds: 0018        es: 0018       ss:0018
Process swapper (pid: 0, stackpage=c158f000)
Stack: c026f5e0 00000320 e0903f3e 00000320 c01f0bd7 dc84b380 00000000 00000030
        dcf80000 e090ebbe 00000001 00000049 dd6accd8 dd614800 dd614a50 c158ff24
        00000040 dd614800 dd614980 e090e963 dd614980 c158fefc 00000040 00000001
Call Trace:    [<e090ef3e>] [<c01f0bd7>] [<e090ebbe>] [<e090e963>] [<c01f584e>]
   [<c012538e>] [<c010adec>] [<c0106f20>] [<c010d818>] [<c0106f20>] [<c0106f4c>]
   [<c0106fc2>] [<c01200db>] [<c0120347>]
Code: 0f 0b 95 00 1a 03 27 c0 90 eb fe 90 90 90 90 90 90 90 90 90
Using defaults from ksymoops -t elf32-i386 -a i386


 >>ebx; b1b0afae Before first symbol
 >>edx; ded2df7c <_end+1e9db344/204ba448>
 >>esi; dd35f080 <_end+1d00c448/204ba448>
 >>edi; dae28890 <_end+1aad5c58/204ba448>
 >>ebp; 00000889 Before first symbol
 >>esp; c158fea0 <_end+123d268/204ba448>

Trace; e090ef3e <[e1000]e1000_clean_rx_irq+36e/370>
Trace; c01f0bd7 <__kfree_skb+117/170>
Trace; e090ebbe <[e1000]e1000_clean_tx_irq+1ee/200>
Trace; e090e963 <[e1000]e1000_clean+43/b0>
Trace; c01f584e <net_rx_action+9e/140>
Trace; c012538e <do_softirq+ce/d0>
Trace; c010adec <do_IRQ+dc/e0>
Trace; c0106f20 <default_idle+0/40>
Trace; c010d818 <call_do_IRQ+5/d>
Trace; c0106f20 <default_idle+0/40>
Trace; c0106f4c <default_idle+2c/40>
Trace; c0106fc2 <cpu_idle+42/60>
Trace; c01200db <call_console_drivers+5b/120>
Trace; c0120347 <printk+137/170>

Code;  00000000 Before first symbol
00000000 <_EIP>:
Code;  00000000 Before first symbol
    0:   0f 0b                     ud2a
Code;  00000002 Before first symbol
    2:   95                        xchg   %eax,%ebp
Code;  00000003 Before first symbol
    3:   00 1a                     add    %bl,(%edx)
Code;  00000005 Before first symbol
    5:   03 27                     add    (%edi),%esp
Code;  00000007 Before first symbol
    7:   c0 90 eb fe 90 90 90      rclb   $0x90,0x9090feeb(%eax)
Code;  0000000e Before first symbol
    e:   90                        nop
Code;  0000000f Before first symbol
    f:   90                        nop
Code;  00000010 Before first symbol
   10:   90                        nop
Code;  00000011 Before first symbol
   11:   90                        nop
Code;  00000012 Before first symbol
   12:   90                        nop
Code;  00000013 Before first symbol
   13:   90                        nop

  <0>Kernel panic: Aiee, killing interrupt handler!

2 warnings and 2 errors issued.  Results may not be reliable.



-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: Problems with e1000 in 2.4.23
@ 2003-12-01  2:19 Feldman, Scott
  2003-12-01  2:51 ` Ben Greear
  0 siblings, 1 reply; 8+ messages in thread
From: Feldman, Scott @ 2003-12-01  2:19 UTC (permalink / raw)
  To: Ben Greear, netdev

> Attached is an oops that did not hang the machine.

Re: e1000_dump.txt: I'm 99% sure this shows dev_close being called
without a matching dev_open, or a dev_close after failed dev_open.
e1000 doesn't guard against that (and shouldn't), so we need to figure
out how you're getting here and fix that.  What's above e1000?  Are you
using bonding or pktgen or ?

-scott

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Problems with e1000 in 2.4.23
  2003-12-01  2:19 Feldman, Scott
@ 2003-12-01  2:51 ` Ben Greear
  2003-12-01  8:06   ` David S. Miller
  0 siblings, 1 reply; 8+ messages in thread
From: Ben Greear @ 2003-12-01  2:51 UTC (permalink / raw)
  To: Feldman, Scott; +Cc: netdev

Feldman, Scott wrote:
>>Attached is an oops that did not hang the machine.
> 
> 
> Re: e1000_dump.txt: I'm 99% sure this shows dev_close being called
> without a matching dev_open, or a dev_close after failed dev_open.
> e1000 doesn't guard against that (and shouldn't), so we need to figure
> out how you're getting here and fix that.  What's above e1000?  Are you
> using bonding or pktgen or ?

It's possible I had a mac-vlan interface on it, but I don't think
I did.  I definately was not running bonding or pktgen.

I was running with the patch below, and this crash was shortly
after or during I configured the NIC to receive all (or, maybe
configured it from rx-all to not-rx-all.)

Could the problem happen because I do the set-multi even if the NIC
is down?  Is there enough locking in the e1000_ethtool additions?

Also, I am seeing bogus things on this machine regardless of which
kernel and which e1000 driver I use, so it's quite possible that either
the NIC hardware or the MB/RAM/CPU/Whatever is just plain not quite
right.

I'm ordering pieces for a nice new dual Xeon now....so hopefully I'll
have a more stable test environment soon....

Thanks,
Ben


--- linux-2.4.23/drivers/net/e1000/e1000_main.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23.p4s/drivers/net/e1000/e1000_main.c	2003-11-28 14:25:12.000000000 -0800
@@ -1,4 +1,4 @@
-/*******************************************************************************
+/** -*-linux-c -*- ***************************************************************


    Copyright(c) 1999 - 2003 Intel Corporation. All rights reserved.
@@ -462,6 +462,9 @@
  		netdev->features |= NETIF_F_TSO;
  #endif

+	/* Has ability to receive all frames (even bad CRCs and such) */
+	netdev->features |= NETIF_F_RX_ALL | NETIF_F_SAVE_CRC;
+	
  	if(pci_using_dac)
  		netdev->features |= NETIF_F_HIGHDMA;

@@ -1218,7 +1221,7 @@
   * promiscuous mode, and all-multi behavior.
   **/

-static void
+void
  e1000_set_multi(struct net_device *netdev)
  {
  	struct e1000_adapter *adapter = netdev->priv;
@@ -1243,6 +1246,34 @@

  	E1000_WRITE_REG(hw, RCTL, rctl);

+
+	/* This is useful for using ethereal or tcpdump to sniff
+        * packets in promiscuous mode without stripping VLAN/priority
+        * information, and also letting bad packets through.
+        *
+        * THIS IS NOT PRODUCTION CODE - FOR INTERNAL USE ONLY!!!
+        *
+        */
+        if (netdev->priv_flags & IFF_ACCEPT_ALL_FRAMES) {
+		uint32_t ctrl;
+		printk("Enabling acceptance of ALL frames (bad CRC too).\n");
+		/* store bad packets, promisc/multicast all, no VLAN
+		 * filter */
+		rctl = E1000_READ_REG(hw, RCTL);
+		rctl |= (E1000_RCTL_SBP | E1000_RCTL_UPE | E1000_RCTL_MPE);
+		rctl &= ~(E1000_RCTL_VFE | E1000_RCTL_CFIEN);
+		E1000_WRITE_REG(hw, RCTL, rctl);
+		/* disable VLAN tagging/striping */
+		ctrl = E1000_READ_REG(hw, CTRL);
+		ctrl &= ~E1000_CTRL_VME;
+		E1000_WRITE_REG(hw, CTRL, ctrl);
+	}
+	else {
+		/* TODO:  Do we need a way to explicitly turn this off if it was
+		 * previously enabled, or will it magically go back to normal??? --Ben
+		 */
+	}
+	
  	/* 82542 2.0 needs to be in reset to write receive address registers */

  	if(hw->mac_type == e1000_82542_rev2_0)
@@ -1455,6 +1486,7 @@
  #define E1000_TX_FLAGS_CSUM		0x00000001
  #define E1000_TX_FLAGS_VLAN		0x00000002
  #define E1000_TX_FLAGS_TSO		0x00000004
+#define E1000_TX_FLAGS_NO_FCS		0x00000008
  #define E1000_TX_FLAGS_VLAN_MASK	0xffff0000
  #define E1000_TX_FLAGS_VLAN_SHIFT	16

@@ -1714,6 +1746,13 @@
  		txd_upper |= (tx_flags & E1000_TX_FLAGS_VLAN_MASK);
  	}

+#ifdef CONFIG_SUPPORT_SEND_BAD_CRC
+	if (unlikely(tx_flags & E1000_TX_FLAGS_NO_FCS)) {
+		txd_lower &= ~(E1000_TXD_CMD_IFCS);
+		/* printk("Disabling CRC in tx_queue, txd_lower: 0x%x\n", txd_lower); */
+	}
+#endif
+	
  	i = tx_ring->next_to_use;

  	while(count--) {
@@ -1728,6 +1767,14 @@

  	tx_desc->lower.data |= cpu_to_le32(adapter->txd_cmd);

+#ifdef CONFIG_SUPPORT_SEND_BAD_CRC
+	/* txd_cmd re-enables FCS, so we'll re-disable it here as desired. */
+	if (unlikely(tx_flags & E1000_TX_FLAGS_NO_FCS)) {
+		tx_desc->lower.data &= ~(cpu_to_le32(E1000_TXD_CMD_IFCS));
+		/* printk("Disabling2 CRC in tx_queue, txd_lower: 0x%x\n", tx_desc->lower.data); */
+	}
+#endif
+	
  	/* Force memory writes to complete before letting h/w
  	 * know there are new descriptors to fetch.  (Only
  	 * applicable for weak-ordered memory model archs,
@@ -1809,6 +1856,12 @@
  	else if(e1000_tx_csum(adapter, skb))
  		tx_flags |= E1000_TX_FLAGS_CSUM;

+#ifdef CONFIG_SUPPORT_SEND_BAD_CRC
+	if (unlikely(skb->general_flags & DONT_DO_TX_CRC)) {
+		tx_flags |= E1000_TX_FLAGS_NO_FCS;
+	}
+#endif
+	
  	if((count = e1000_tx_map(adapter, skb, first)))
  		e1000_tx_queue(adapter, count, tx_flags);
  	else {
@@ -2281,7 +2334,11 @@
  			continue;
  		}

-		if(rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK) {
+		/* If we are accepting all frames, then do not pay attention to the
+		 * framing errors.
+		 */
+		if (!(netdev->priv_flags & IFF_ACCEPT_ALL_FRAMES) &&
+		    (rx_desc->errors & E1000_RXD_ERR_FRAME_ERR_MASK)) {

  			last_byte = *(skb->data + length - 1);

@@ -2311,7 +2368,12 @@
  		}

  		/* Good Receive */
-		skb_put(skb, length - ETHERNET_FCS_SIZE);
+		if (netdev->priv_flags & IFF_SAVE_FCS) {
+			skb_put(skb, length);
+		}
+		else {
+			skb_put(skb, length - ETHERNET_FCS_SIZE);
+		}

  		/* Receive Checksum Offload */
  		e1000_rx_checksum(adapter, rx_desc, skb);
--- linux-2.4.23/drivers/net/e1000/e1000_ethtool.c	2003-11-28 10:26:20.000000000 -0800
+++ linux-2.4.23.p4s/drivers/net/e1000/e1000_ethtool.c	2003-11-28 14:25:12.000000000 -0800
@@ -1,4 +1,4 @@
-/*******************************************************************************
+/*** -*-linux-c-*- **************************************************************


    Copyright(c) 1999 - 2003 Intel Corporation. All rights reserved.
@@ -39,6 +39,7 @@
  extern void e1000_down(struct e1000_adapter *adapter);
  extern void e1000_reset(struct e1000_adapter *adapter);
  extern int e1000_set_spd_dplx(struct e1000_adapter *adapter, uint16_t spddplx);
+extern void e1000_set_multi(struct net_device *netdev);

  struct e1000_stats {
  	char stat_string[ETH_GSTRING_LEN];
@@ -1335,6 +1336,28 @@
  	return 0;
  }

+/* Hold xmit lock before calling this */
+static int e1000_ethtool_setrxall(struct net_device *netdev, uint32_t val) {
+	unsigned short old_flags = netdev->priv_flags;
+	if (val) {
+		netdev->priv_flags |= IFF_ACCEPT_ALL_FRAMES;
+	}
+	else {
+		netdev->priv_flags &= ~(IFF_ACCEPT_ALL_FRAMES);
+	}
+
+	/* printk("e1000_ethtool_setrxall (%s) val: %d\n",
+	   netdev->name, val); */
+	if (old_flags != netdev->priv_flags) {
+		/*  Kick the driver to flush the values...
+		 * TODO:  Needs review of driver folks to make sure locking is sane, etc
+		 */
+		/*printk("Kicking e1000_set_multi..\n");*/
+		e1000_set_multi(netdev);
+	}
+	return 0;
+}
+
  int
  e1000_ethtool_ioctl(struct net_device *netdev, struct ifreq *ifr)
  {
@@ -1624,6 +1647,47 @@

  		return 0;
  	}
+	case ETHTOOL_SETRXALL: {
+		struct ethtool_value id;
+		if (copy_from_user(&id, addr, sizeof(id)))
+			return -EFAULT;
+		spin_lock_bh(&netdev->xmit_lock);
+		e1000_ethtool_setrxall(netdev, id.data);
+		spin_unlock_bh(&netdev->xmit_lock);
+		return 0;
+	}
+	case ETHTOOL_GETRXALL: {
+		struct ethtool_value edata = { ETHTOOL_GSG };
+		edata.data = !!(netdev->priv_flags & IFF_ACCEPT_ALL_FRAMES);
+		/*printk("GETRXALL, data: %d  priv_flags: %hx\n",
+		  edata.data, netdev->priv_flags);*/
+		if (copy_to_user(addr, &edata, sizeof(edata)))
+			return -EFAULT;
+		return 0;
+	}
+	case ETHTOOL_SETRXFCS: {
+		struct ethtool_value id;
+		if (copy_from_user(&id, addr, sizeof(id)))
+			return -EFAULT;
+		spin_lock_bh(&netdev->xmit_lock);
+		if (id.data) {
+			netdev->priv_flags |= IFF_SAVE_FCS;
+		}
+		else {
+			netdev->priv_flags &= ~IFF_SAVE_FCS;
+		}
+		spin_unlock_bh(&netdev->xmit_lock);
+		return 0;
+	}
+	case ETHTOOL_GETRXFCS: {
+		struct ethtool_value edata = { ETHTOOL_GSG };
+		edata.data = !!(netdev->priv_flags & IFF_SAVE_FCS);
+		/*printk("GETRXALL, data: %d  priv_flags: %hx\n",
+		  edata.data, netdev->priv_flags);*/
+		if (copy_to_user(addr, &edata, sizeof(edata)))
+			return -EFAULT;
+		return 0;
+	}
  #ifdef NETIF_F_TSO
  	case ETHTOOL_GTSO: {
  		struct ethtool_value edata = { ETHTOOL_GTSO };


> 
> -scott
> 
> 


-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* RE: Problems with e1000 in 2.4.23
@ 2003-12-01  4:06 Feldman, Scott
  2003-12-01  5:39 ` Ben Greear
  0 siblings, 1 reply; 8+ messages in thread
From: Feldman, Scott @ 2003-12-01  4:06 UTC (permalink / raw)
  To: Ben Greear; +Cc: netdev


> Could the problem happen because I do the set-multi even if
> the NIC is down?  Is there enough locking in the 
> e1000_ethtool additions?

Change ETHTOOL_SETRXALL to work more like ETHTOOL_SRXCSUM, with the
check for netif_running and down/up or reset.

-scott

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Problems with e1000 in 2.4.23
  2003-12-01  4:06 Problems with e1000 in 2.4.23 Feldman, Scott
@ 2003-12-01  5:39 ` Ben Greear
  0 siblings, 0 replies; 8+ messages in thread
From: Ben Greear @ 2003-12-01  5:39 UTC (permalink / raw)
  To: Feldman, Scott, 'netdev@oss.sgi.com'

Feldman, Scott wrote:
>>Could the problem happen because I do the set-multi even if
>>the NIC is down?  Is there enough locking in the 
>>e1000_ethtool additions?
> 
> 
> Change ETHTOOL_SETRXALL to work more like ETHTOOL_SRXCSUM, with the
> check for netif_running and down/up or reset.

The set_multi is called from net/core/dev.c (or near-abouts) when
the promisc changes, and I'm quite sure that does not require the
NIC to be bounced.

So, if I really have to bounce the NIC to change the 'rx-all' flags,
then I'll have to move that code path out of the 'set-multi' method
and have it be a stand-alone method.

Or, is the problem just that I should NOT be twiddling any bits when
the NIC is down?  Unless I'm confused, the only lock acquired when
changing PROMISC (which on e100 at least used to flush a bunch of the
rx-all flags, even though the receive logic threw them away later)
is the tx-lock.

For instance, would this perhaps be a better method:

static int e1000_ethtool_setrxall(struct net_device *netdev, uint32_t val) {
	unsigned short old_flags = netdev->priv_flags;
	if (val) {
		netdev->priv_flags |= IFF_ACCEPT_ALL_FRAMES;
	}
	else {
		netdev->priv_flags &= ~(IFF_ACCEPT_ALL_FRAMES);
	}

	/* printk("e1000_ethtool_setrxall (%s) val: %d\n",
	   netdev->name, val); */
	if (old_flags != netdev->priv_flags) {
		spin_lock_bh(&netdev->xmit_lock);
		if (netif_running(netdev)) {
			/*printk("Kicking e1000 for setrxall..\n");*/
			e1000_set_multi(netdev);
		} else {
			/* Value will be flushed into the hardware when the device is
			 * brought up.
			 */
		}
		spin_unlock_bh(&netdev->xmit_lock);
	}
	return 0;
}


...

	case ETHTOOL_SETRXALL: {
		struct ethtool_value id;
		if (copy_from_user(&id, addr, sizeof(id)))
			return -EFAULT;
		e1000_ethtool_setrxall(netdev, id.data);
		return 0;
	}


Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Problems with e1000 in 2.4.23
  2003-12-01  2:51 ` Ben Greear
@ 2003-12-01  8:06   ` David S. Miller
  2003-12-01 17:26     ` Ben Greear
  0 siblings, 1 reply; 8+ messages in thread
From: David S. Miller @ 2003-12-01  8:06 UTC (permalink / raw)
  To: Ben Greear; +Cc: scott.feldman, netdev

On Sun, 30 Nov 2003 18:51:25 -0800
Ben Greear <greearb@candelatech.com> wrote:

> Also, I am seeing bogus things on this machine regardless of which
> kernel and which e1000 driver I use, so it's quite possible that either
> the NIC hardware or the MB/RAM/CPU/Whatever is just plain not quite
> right.

Ben, I don't want to beat an old dead horse, but is this
the same system where you were having all of those
overheating problems a long time ago?

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Problems with e1000 in 2.4.23
  2003-12-01  8:06   ` David S. Miller
@ 2003-12-01 17:26     ` Ben Greear
  0 siblings, 0 replies; 8+ messages in thread
From: Ben Greear @ 2003-12-01 17:26 UTC (permalink / raw)
  To: David S. Miller; +Cc: scott.feldman, netdev

David S. Miller wrote:
> On Sun, 30 Nov 2003 18:51:25 -0800
> Ben Greear <greearb@candelatech.com> wrote:
> 
> 
>>Also, I am seeing bogus things on this machine regardless of which
>>kernel and which e1000 driver I use, so it's quite possible that either
>>the NIC hardware or the MB/RAM/CPU/Whatever is just plain not quite
>>right.
> 
> 
> Ben, I don't want to beat an old dead horse, but is this
> the same system where you were having all of those
> overheating problems a long time ago?

Yep, I put a big ole fan right on the NICs but to no avail.  However,
it may not be enough, or the chipset/NIC may be so cooked/flaky that it doesn't
really matter any more.

Thanks,
Ben

-- 
Ben Greear <greearb@candelatech.com>
Candela Technologies Inc  http://www.candelatech.com

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2003-12-01 17:26 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-12-01  4:06 Problems with e1000 in 2.4.23 Feldman, Scott
2003-12-01  5:39 ` Ben Greear
  -- strict thread matches above, loose matches on Subject: below --
2003-12-01  2:19 Feldman, Scott
2003-12-01  2:51 ` Ben Greear
2003-12-01  8:06   ` David S. Miller
2003-12-01 17:26     ` Ben Greear
2003-11-30  7:08 Ben Greear
2003-11-30  8:35 ` Ben Greear

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).