[netdrivers] Adaptec Starfire and Kernel 2.6.x
Stefan Neuwirth
neuwirt-netdrivers at trillian.hd.shuttle.de
Sat Jun 25 03:57:06 PDT 2005
Hi there,
I've a an adaptec starfire base 4-port card. The card is running fine
over time using a 2.4 linux kernel. Switching the system to 2.6 kernel
makes the card unusable. The 2.6 system runs fine using a dec (tulip)
based ethernet card.
The card identifies via lspci in an 2.6. environment:
0000:03:04.0 Ethernet controller: Adaptec ANA620xx/ANA69011A (rev 03)
Subsystem: Adaptec ANA62044 4-port 10/100
Flags: bus master, medium devsel, latency 72, IRQ 201
Memory at e1100000 (32-bit, non-prefetchable)
I/O ports at 5000 [size=256]
Capabilities: [50] Power Management version 1
0000:03:05.0 Ethernet controller: Adaptec ANA620xx/ANA69011A (rev 03)
Subsystem: Adaptec ANA62044 4-port 10/100
Flags: bus master, medium devsel, latency 72, IRQ 185
Memory at e1180000 (32-bit, non-prefetchable)
I/O ports at 5400 [size=256]
Capabilities: [50] Power Management version 1
0000:03:06.0 Ethernet controller: Adaptec ANA620xx/ANA69011A (rev 03)
Subsystem: Adaptec ANA62044 4-port 10/100
Flags: bus master, medium devsel, latency 72, IRQ 209
Memory at e1200000 (32-bit, non-prefetchable)
I/O ports at 5800 [size=256]
Capabilities: [50] Power Management version 1
0000:03:07.0 Ethernet controller: Adaptec ANA620xx/ANA69011A (rev 03)
Subsystem: Adaptec ANA62044 4-port 10/100
Flags: bus master, medium devsel, latency 72, IRQ 169
Memory at e1280000 (32-bit, non-prefetchable)
I/O ports at 5c00 [size=256]
Capabilities: [50] Power Management version 1
The starfire driver get loaded an all 4 port show up in ifconfig. It's
possible to configure the Interfaces:
eth1 Link encap:Ethernet HWaddr 00:00:D1:ED:14:01
inet addr:10.0.0.10 Bcast:10.255.255.255 Mask:255.255.255.0
inet6 addr: fe80::200:d1ff:feed:1401/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:74 errors:0 dropped:0 overruns:0 frame:0
TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:5131 (5.0 Kb) TX bytes:868 (868.0 b)
Interrupt:201
As you can see, the packet counter grow up. The card also apears in
/proc/interrupts:
ford:~ # grep eth1 /proc/interrupts
201: 197 IO-APIC-level eth1
Please note, that I reloaded the driver so RX packet count and
interrupt count do not match.
Now, perfect but unfortunatlly it dosen't work :-(
Doing a ping show on the target machine something like this:
zaphod:~ # tcpdump -i eth0 host 10.0.0.10
User level filter, protocol ALL, datagram packet socket
tcpdump: listening on eth0
12:34:45.124031 arp who-has 10.0.0.11 tell 10.0.0.10
12:34:45.124068 arp reply 10.0.0.11 (0:2:b3:24:ce:75) is-at 0:2:b3:24:ce:75 (0:0:d1:ed:14:1)
12:34:46.123959 arp who-has 10.0.0.11 tell 10.0.0.10
12:34:46.123980 arp reply 10.0.0.11 (0:2:b3:24:ce:75) is-at 0:2:b3:24:ce:75 (0:0:d1:ed:14:1)
12:34:47.123902 arp who-has 10.0.0.11 tell 10.0.0.10
12:34:47.123938 arp reply 10.0.0.11 (0:2:b3:24:ce:75) is-at 0:2:b3:24:ce:75 (0:0:d1:ed:14:1)
So it seems the system can send packets into the world but can't
receive anything. Doing a tcpdump on the machine with the starfire
card give strange things:
tcpdump: verbose output suppressed, use -v or -vv for full protocol
decode listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
12:18:09.275428 00:00:00:00:00:00 > 00:00:00:00:00:00 null I (s=0,r=0,C) len=42
12:18:10.274873 63:72:69:63:6b:65 > 65:74:20:2f:75:2f, ethertype Unknown (0x7420
), length 60:
0x0000: 6e6f 6e65 2072 772c 6269 6e64 2030 2030 none.rw,bind.0.0
0x0010: 0a74 206e 6673 2072 772c 7265 7472 793d .t.nfs.rw,retry=
0x0020: 322c 7273 697a 653d 3430 3936 2c77 2,rsize=4096,w
12:18:11.274443 00:00:00:00:00:00 > 00:00:00:00:00:00 null I (s=0,r=0,C) len=42
12:18:12.273955 00:00:00:00:00:c0 > 00:00:00:00:00:00, ethertype Unknown (0x203d
), length 60:
0x0000: 12c0 ba75 1400 a4fa ffbf 0000 0000 0000 ...u............
0x0010: 0000 0000 0000 0000 0000 0000 0000 0000 ................
0x0020: 0000 0000 0000 0000 0000 0000 0000 ..............
Well the first block look like an enrty of my automounter table! For
sure this is nothing valid in term of an ethernet packet. So wrong
pointer, DMA problem?
Last but not least the output of the driver in debug level 8:
Jun 25 12:32:58 ford kernel: starfire.c:v1.03 7/26/2000 Written by Donald Becker <becker at scyld.com>
Jun 25 12:32:58 ford kernel: (unofficial 2.2/2.4 kernel port, version 1.03+LK1.4.2, January 19, 2005)
Jun 25 12:32:58 ford kernel: starfire: polling (NAPI) enabled
Jun 25 12:32:58 ford kernel: ACPI: PCI interrupt 0000:03:04.0[A] -> GSI 18 (level, low) -> IRQ 201
Jun 25 12:32:58 ford kernel: 04 90 15 69 00 02 04 90 19 00 01 00 00 00 00 01
Jun 25 12:32:58 ford kernel: 14 ed d1 00 00 09 05 ff ff ff ff ff ff ff ff ff
Jun 25 12:32:59 ford kernel: eth1: Adaptec Starfire 6915 at f0f00000, 00:00:d1:ed:14:01, IRQ 201.
Jun 25 12:32:59 ford kernel: eth1: MII PHY found at address 1, status 0x7809 advertising 0x01e1.
Jun 25 12:32:59 ford kernel: eth1: scatter-gather and hardware TCP cksumming enabled.
Jun 25 12:32:59 ford kernel: ACPI: PCI interrupt 0000:03:05.0[A] -> GSI 19 (level, low) -> IRQ 185
Jun 25 12:32:59 ford kernel: 04 90 15 69 00 02 04 90 19 00 01 00 00 00 00 02
Jun 25 12:32:59 ford kernel: 14 ed d1 00 00 09 05 ff ff ff ff ff ff ff ff ff
Jun 25 12:32:59 ford kernel: eth2: Adaptec Starfire 6915 at f1000000, 00:00:d1:ed:14:02, IRQ 185.
Jun 25 12:32:59 ford kernel: eth2: MII PHY found at address 1, status 0x7809 advertising 0x01e1.
Jun 25 12:32:59 ford kernel: eth2: scatter-gather and hardware TCP cksumming enabled.
Jun 25 12:32:59 ford kernel: ACPI: PCI interrupt 0000:03:06.0[A] -> GSI 16 (level, low) -> IRQ 209
Jun 25 12:32:59 ford kernel: 04 90 15 69 00 02 04 90 19 00 01 00 00 00 00 03
Jun 25 12:32:59 ford kernel: 14 ed d1 00 00 09 05 ff ff ff ff ff ff ff ff ff
Jun 25 12:32:59 ford kernel: eth3: Adaptec Starfire 6915 at f1100000, 00:00:d1:ed:14:03, IRQ 209.
Jun 25 12:32:59 ford kernel: eth3: MII PHY found at address 1, status 0x7809 advertising 0x01e1.
Jun 25 12:32:59 ford kernel: eth3: scatter-gather and hardware TCP cksumming enabled.
Jun 25 12:32:59 ford kernel: ACPI: PCI interrupt 0000:03:07.0[A] -> GSI 17 (level, low) -> IRQ 169
Jun 25 12:32:59 ford kernel: 04 90 15 69 00 02 04 90 19 00 01 00 00 00 00 04
Jun 25 12:32:59 ford kernel: 14 ed d1 00 00 09 05 ff ff ff ff ff ff ff ff ff
Jun 25 12:32:59 ford kernel: eth4: Adaptec Starfire 6915 at f1280000, 00:00:d1:ed:14:04, IRQ 169.
Jun 25 12:32:59 ford kernel: eth4: MII PHY found at address 1, status 0x7809 advertising 0x01e1.
Jun 25 12:32:59 ford kernel: eth4: scatter-gather and hardware TCP cksumming enabled.
Jun 25 12:33:15 ford kernel: eth1: netdev_open() irq 201.
Jun 25 12:33:15 ford kernel: eth1: Filling in the station address.
Jun 25 12:33:15 ford kernel: eth1: Setting the Rx and Tx modes.
Jun 25 12:33:15 ford kernel: eth1: Interrupt status 0x20000001.
Jun 25 12:33:15 ford kernel: eth1: Tx Consumer index is 0.
Jun 25 12:33:15 ford kernel: eth1: Link is down
Jun 25 12:33:15 ford kernel: eth1: Interrupt status 0x00000000.
Jun 25 12:33:15 ford kernel: eth1: exiting interrupt, status=0x00000000.
Jun 25 12:33:15 ford kernel: eth1: Done netdev_open().
Jun 25 12:33:15 ford kernel: eth1: Tx #0/#0 slot 0 status 0xb1010056.
Jun 25 12:33:15 ford kernel: eth1: Tx #1/#0 slot 1 status 0xb101004e.
Jun 25 12:33:16 ford kernel: eth1: Tx #2/#0 slot 2 status 0xb1010046.
Jun 25 12:33:16 ford kernel: eth1: Interrupt status 0x20009001.
Jun 25 12:33:16 ford kernel: eth1: Tx Consumer index is 6.
Jun 25 12:33:16 ford kernel: eth1: Tx completion #0 entry 0 is 0x87630000.
Jun 25 12:33:16 ford kernel: eth1: Tx completion #1 entry 1 is 0x8dd90010.
Jun 25 12:33:16 ford kernel: eth1: Tx completion #2 entry 2 is 0x804f0020.
Jun 25 12:33:16 ford kernel: eth1: Link is up, running at 100Mbit full-duplex
Jun 25 12:33:16 ford kernel: eth1: Interrupt status 0x00000000.
Jun 25 12:33:16 ford kernel: eth1: exiting interrupt, status=0x00000000.
Jun 25 12:33:19 ford kernel: eth1: Tx #3/#3 slot 3 status 0xb1010056.
Jun 25 12:33:20 ford kernel: eth1: Tx #4/#3 slot 4 status 0xb1010046.
Jun 25 12:33:24 ford kernel: eth1: Tx #5/#3 slot 5 status 0xb1010046.
Jun 25 12:33:25 ford kernel: eth1: no IPv6 routers present
Jun 25 12:33:33 ford kernel: eth1: Interrupt status 0x00009101.
Jun 25 12:33:33 ford kernel: eth1: Tx Consumer index is 12.
Jun 25 12:33:33 ford kernel: eth1: Tx completion #3 entry 3 is 0x85200030.
Jun 25 12:33:33 ford kernel: eth1: Tx completion #4 entry 4 is 0x89cd0040.
Jun 25 12:33:33 ford kernel: eth1: Tx completion #5 entry 5 is 0x93640050.
Jun 25 12:33:33 ford kernel: eth1: Interrupt status 0x00000000.
Jun 25 12:33:33 ford kernel: eth1: exiting interrupt, status=0x00000000.
Jun 25 12:33:33 ford kernel: netdev_rx() status of 0 was 0x6000003c.
Jun 25 12:33:33 ford kernel: netdev_rx() normal Rx pkt length 60, quota 19.
Jun 25 12:33:33 ford kernel: Rx data 00:c0:ca:20:35:6f 00:e0:81:51:15:82 0800.
Jun 25 12:33:33 ford kernel: netdev_rx() status2 of 0 was 0x0000.
Jun 25 12:33:33 ford kernel: exiting netdev_rx(): 0, status of 1 was 0x00000000.
Jun 25 12:33:33 ford kernel: exiting netdev_poll(): 0.
...
Searching via google shows up a few poeple having the same or similar
problems, but noone ever mentioned a solution.
Stefan
PS: The test were performed on an SuSE 2.6.11.4-20a kernel, but I also
tried other SuSE kernels and several knoppix cds - everytime the same.
More information about the netdrivers
mailing list