[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