Hello out there!
Here in short my question, I hope you can help me ... I've got a IQ80310 XScale board running with linux-2.4.17-rmk5.iop310.1 and the mvista-jffs-rootfs image (downloads see below). Now I tried both, Intel NIC 82543 and 82544, with the e1000-4.1.7 driver from intel. Not one ping between the IQ and my host got an answer. What's wrong? Below I summarized the complete history, everything which might be helpfull - in hope someone of you is able to help me working out my problem ... here we go The sources: --<cut>-- Kernel: ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.17.tar.bz2 ARM-Patch: ftp://ftp.arm.linux.org.uk/pub/armlinux/kernel/v2.4/patch-2.4.17-rmk5.gz IQ80310-Patch: ftp://source.mvista.com/pub/xscale/iop310/patch-2.4.17-rmk5-iop310.1.gz JFFS-Image: ftp://source.mvista.com/pub/xscale/iq80310/jffs.img Intel e1000 driver for NIC82543: http://downloadfinder.intel.com/scripts-df/proc/T8Clearance.asp? url=/2897/eng/e1000-4.1.7.tar.gz --</cut>-- The Host: Dual PII 350MHz, SuSe 7.3, Kernel 2.4.17 The Cross Compiler: I didn't use the GNUpro-Toolkit, it didn't bother to do what I wanted it to do, so I used: --<cut>-- netarm:/usr/local/arm/2.95.3/bin # ./arm-linux-gcc -dumpversion 2.95.3 netarm:/usr/local/arm/2.95.3/bin # ./arm-linux-gcc -dumpmachine arm-linux netarm:/usr/local/arm/2.95.3/bin # ./arm-linux-gcc -dumpspecs *asm: %{mbig-endian:-EB} %{mcpu=*:-m%*} %{march=*:-m%*} %{mapcs-*:-mapcs-%*} %{mthumb .... [lots of output I'm not sure if really necessary to know ] --</cut>-- I used this one already to compile tools for a strongarm. Now, I used it to compile both, kernel and e1000.o for xscale. Compilation: After patching the kernel I did make iq80310_config make oldconfig make config (add jffs-fs and Kernel command line: console=ttyS0,115200 root=/dev/mtdblock3) edit Makefile (path to cross-compiler as mentioned above) make dep make bzImage The kernel builds neatly. The e1000.o Makefile needed again a few adjustments, such as path to kernel tree and to cross-compiler, but then compiled fine, too. --<cut>-- ************************************************** ** e1000.o built for 2.4.17-rmk5-iop310.1 ** SMP Disabled ** iANS hooks Disabled ** Pro Diagnostics Enabled ************************************************** --</cut>-- Then loading both, the kernel and the image, first into RAM, then writing to flash. The current flash contents: --<cut>-- RedBoot> fi li Name FLASH addr Mem addr Length Entry point RedBoot 0x00000000 0x00000000 0x00040000 0x00000000 RedBoot[backup] 0x00040000 0x00040000 0x00040000 0x00000000 RedBoot config 0x007DF000 0x007DF000 0x00001000 0x00000000 FIS directory 0x007E0000 0x007E0000 0x00020000 0x00000000 vmlinuz 0x00080000 0xA1008000 0x000C0000 0x00000000 jffs 0x00160000 0x00160000 0x00600000 0x00000000 --</cut>-- --<cut>-- RedBoot> fi load vmlinuz RedBoot> go 0xa1008000 --</cut>-- This after a few moments brings up: --<cut>-- ... INIT: Entering runlevel: 3 Starting system logger: syslogd Starting INET services: inetd Welcome to MontaVista's XScale Linux port! xscale login: --</cut>-- Great! Now, login as root, ftp to the host, get the precompiled e1000.o and ... --<cut>-- [root@xscale /root]$insmod e1000.o Intel(R) PRO/1000 Network Driver - version 4.1.7 Copyright (c) 1999-2002 Intel Corporation. Intel(R) PRO/1000 Network Connection eth1: Mem:0x8bfe0000 IRQ:17 Speed:N/A Duplex:N/A [root@xscale /root]$ifconfig eth1 192.168.1.2 e1000: eth1 NIC Link is Up 1000 Mbps Full Duplex [root@xscale /root]$ifconfig eth1 eth1 Link encap:Ethernet HWaddr 00:03:47:40:D2:91 inet addr:192.168.1.2 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING 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:100 Interrupt:17 Memory:8bfe0000-8c000000 --</cut>-- BTW, ifconfig the host ... --<cut>-- eth2 Link encap:Ethernet HWaddr 00:03:47:40:D6:2F inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:26 errors:0 dropped:0 overruns:0 frame:0 TX packets:15 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2006 (1.9 Kb) TX bytes:1378 (1.3 Kb) Interrupt:19 Memory:e1820000-e1840000 --</cut>-- Still everythings seems fine to me. Now, the test (xscale -> host): --<cut>-- [root@xscale /root]$ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1): 56 data bytes --- 192.168.1.1 ping statistics --- 8 packets transmitted, 0 packets received, 100% packet loss --</cut>-- I'm unable to cope with this output from tcpdump, but maybe someone of yours? --cut-- netarm:~ # tcpdump -i eth2 -l | tee dump tcpdump: listening on eth2 11:33:54.221516 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:33:55.201294 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:33:56.189066 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:33:57.176965 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:33:58.164552 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:33:59.152316 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:34:00.140200 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:34:01.127822 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:34:02.115621 arp who-has netarm.local tell x1000 11:34:02.115682 arp reply netarm.local is-at 0:3:47:40:d6:2f 11:34:02.115923 34:0:0:2:34:0 null > 0:0:34:0:0:0 sap 45 I (s=0,r=42,C) len=80 11:34:02.115927 0:0:0:0:20:20 3c:4e:4e:3e:5d:a 5b5b 98: 4500 0054 0000 4000 4001 b755 c0a8 0102 c0a8 0101 0800 b7c1 4700 0700 d403 0000 06a6 0e00 1600 0000 0000 0000 1446 0240 4000 0000 0000 0000 0100 0000 085e 0202 f8b8 0202 0200 0000 58d4 0140 e8fd ffbf 50e0 --</cut>-- The other way round (host -> xscale): --<cut>-- netarm:~/e1000-4.1.7/src # ping x1000 PING x1000 (192.168.1.2) from 192.168.1.1 : 56(84) bytes of data. --- x1000 ping statistics --- 4 packets transmitted, 0 received, 100% loss, time 3011ms --</cut>-- And again tcpdump: --<cut>-- 11:48:50.376546 arp who-has x1000 tell netarm.local 11:48:50.376801 arp who-has netarm.local tell x1000 11:48:50.376858 netarm.local > x1000: icmp: echo request (DF) 11:48:50.376871 arp reply netarm.local is-at 0:3:47:40:d6:2f 11:48:50.377744 x1000 > netarm.local: icmp: echo request [ttl 1] 11:48:51.387995 netarm.local > x1000: icmp: echo request (DF) 11:48:51.388210 x1000 > netarm.local: icmp: echo request [ttl 1] 11:48:52.387992 netarm.local > x1000: icmp: echo request (DF) 11:48:52.388208 x1000 > netarm.local: icmp: echo request [ttl 1] 11:48:53.387999 netarm.local > x1000: icmp: echo request (DF) 11:48:53.388202 x1000 > netarm.local: icmp: echo request [ttl 1] 11:48:55.367956 arp who-has x1000 tell netarm.local 11:48:55.368157 arp who-has netarm.local tell x1000 11:48:55.368193 arp reply netarm.local is-at 0:3:47:40:d6:2f --</cut>-- if I try now again to ping from xscale to host, tcpdump tells ... --<cut>-- 11:50:06.094583 34:0:0:2:34:0 null > 0:0:34:0:0:0 sap c0 I (s=0,r=0,C) len=80 11:50:07.082353 34:0:0:2:34:0 null > 0:0:34:0:0:0 sap c0 I (s=0,r=0,C) len=80 11:50:08.070086 34:0:0:2:34:0 null > 0:0:34:0:0:0 sap c0 I (s=0,r=0,C) len=80 11:50:09.057809 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:50:09.057895 34:0:0:2:34:0 null > 0:0:34:0:0:0 sap c0 I (s=0,r=0,C) len=80 11:50:10.045553 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 11:50:10.045620 34:0:0:2:34:0 null > 0:0:34:0:0:0 sap c0 I (s=0,r=0,C) len=80 11:50:11.033305 0:0:0:0:0:0 sap 54 > 0:0:0:0:0:0 sap 3a rr (r=0,C) len=42 ... --</cut>-- I wrote already the story in short to Dave Jiang who reported to the list last November he did, what I try to do. --<Dave>-- > I'd expect to see ARP replies for the ping and not the SAP stuff. [...] > There shouldn't be any additional parameters. [...] > The only thing I would recommend is to look over the E1000 source and > make sure there aren't any IA32 dependencies. --</Dave>-- (BTW, what's this SAP ? I've never seen it before ?!) OK, grep the sources... --<cut>-- xscale@netarm:~/e1000-4.1.7/src> grep i386 * Makefile:#ARCH := $(shell uname -m | sed 's/i.86/i386/') Makefile:#ifeq (,$(findstring $(ARCH),i386 ia64)) base_comm.h:#if defined(__i386__) --</cut>-- The lines in the Makefile I already commented, but the .h, let's see ... --<cut base_comm.h>-- /* Turn into a legal pointer */ #if defined(__i386__) #define CelingAlignPtr(p) ( p ) #else #define CelingAlignPtr(p) ( p ) #endif --</cut>-- Nope, that doesn't seem to be the clue. However, thanks Dave :) That's the end of my wisdom. I'm at a loss. Is there anyone out there who has a suggestion, or maybe even _knows_ what's wrong? Thanks in advance! Daniel Franke _______________________________________________ http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm http://www.arm.linux.org.uk/armlinux/mailinglists.php Please visit the above addresses for information on this list.
