This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Network problem with eCos 2.0 and Viper
Hi Gary,
I compiled eCos with the "old" network stack (i.e. Open BSD) and I get the
same problem (ARPs are sent out but the responses from the host are not
recognized) that I did with the new network stack.
I set a breakpoint in the fec_eth_int() interrupt processing routine in
if_fec.c and the breakpoint was not hit once during ping_test.exe (for
transmit or receive interrupts). I figured that this is because the
interrupts were not enabled properly. While stepping through the
fec_eth_init() function, execution skipped over the section of code that sets
up the interrupts because CYGINT_IO_ETH_INT_SUPPORT_REQUIRED was not defined
for if_fec.c. CYGINT_IO_ETH_INT_SUPPORT_REQUIRED is defined in
io_eth_drivers.h (because CYGPKG_IO_ETH_DRIVERS_NET implements it), but this
header file is not included in if_fec.c so the creation of interrupts is not
done.
I noticed that a lot of the other if_*.c files have the
<pkgconf/io_eth_drivers.h> include file. Shouldn't if_fec.c have it too?
I looked back to the if_fec.c in eCos version 1.3.1 and the creation of
interrupts only depends on the CYGPKG_NET define which is probably why the
ping_test worked for me with that version.
Best regards,
Paul Randall
Delta Information Systems
Gary Thomas wrote:
> On Thu, 2002-06-06 at 11:39, Paul Randall wrote:
> > Hi all,
> >
> > Thanks to Gary Thomas for helping me update RedBoot on my viper. The
> > new version is running well. I can ping to/from the board and also
> > telnet into the board, both of which I could not do with the version of
> > RedBoot that shipped with my viper.
> >
> > After I got the new version of RedBoot running, I tried to run
> > pingtest.exe on the viper and the test failed. The output of the test
> > is:
> >
> > (gdb) [cyg_net_init] Init: mbinit(0x00000000)
> > [cyg_net_init] Init: cyg_net_init_devs(0x00000000)
> > Init device 'fec_eth'
> > [cyg_net_init] Init: loopattach(0x00000000)
> > [cyg_net_init] Init: ifinit(0x00000000)
> > IFP: 0x000858dc, next: 0x000da6c0
> > IFP: 0x000da6c0, next: 0x00000000
> > eth0 XXX: driver didn't set ifq_maxlen
> > [cyg_net_init] Init: domaininit(0x00000000)
> > [cyg_net_init] Init: cyg_net_add_domain(0x00086690)
> > New domain internet at 0x00000000
> > [cyg_net_init] Init: cyg_net_add_domain(0x000860d0)
> > New domain route at 0x00000000
> > [cyg_net_init] Init: cyg_route_init(0x00000000)
> > [cyg_net_init] Done
> > Start PING test
> > BOOTP[eth0] op: REPLY
> > htype: Ethernet
> > hlen: 6
> > hops: 0
> > xid: 0x0
> > secs: 0
> > flags: 0x0
> > hw_addr: 08:00:3e:28:7a:b8
> > client IP: 206.234.219.88
> > my IP: 206.234.219.88
> > server IP: 206.234.219.89
> > gateway IP: 0.0.0.0
> > options:
> > subnet mask: 255.255.255.224
> > IP broadcast: 206.234.219.95
> > gateway: 0.0.0.0
> > PING server 206.234.219.89
> > recvfrom: Operation timed out
> > recvfrom: Operation timed out
> > recvfrom: Operation timed out
> > recvfrom: Operation timed out
> > recvfrom: Operation timed out
> > recvfrom: Operation timed out
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > sendto: Host is down
> > Sent 16 packets, received 0 OK, 0 bad
> > PING server 206.234.219.121
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > sendto: No route to host
> > Sent 16 packets, received 0 OK, 0 bad
> > PASS:<Ping test OK>
> > EXIT:<done>
> >
> > The one line that looked strange to me was 'eth0 XXX: driver didn't set
> > ifq_maxlen' but when I looked at the source the value for ifq_maxlen is
> > set to 50 if the value is 0.
> >
> > I traced the ethernet traffic with the Ethereal analyzer which produced
> > the following output:
> >
> > No. Time Source Destination Protocol
> > Info
> > 1 0.000000 08:00:3e:28:7a:b8 ff:ff:ff:ff:ff:ff ARP
> > Who has 206.234.219.88? Tell 206.234.219.88
> > 2 0.000981 08:00:3e:28:7a:b8 ff:ff:ff:ff:ff:ff ARP
> > Who has 206.234.219.88? Tell 206.234.219.88
> > 3 0.028756 08:00:3e:28:7a:b8 ff:ff:ff:ff:ff:ff ARP
> > Who has 206.234.219.89? Tell 206.234.219.88
> > 4 116645.841622 00:03:47:02:64:8c 08:00:3e:28:7a:b8
> > ARP 206.234.219.89 is at 00:03:47:02:64:8c
> > 5 0.844230 08:00:3e:28:7a:b8 ff:ff:ff:ff:ff:ff ARP
> > Who has 206.234.219.89? Tell 206.234.219.88
> > 6 116646.657181 00:03:47:02:64:8c 08:00:3e:28:7a:b8
> > ARP 206.234.219.89 is at 00:03:47:02:64:8c
> > 7 1.659914 08:00:3e:28:7a:b8 ff:ff:ff:ff:ff:ff ARP
> > Who has 206.234.219.89? Tell 206.234.219.88
> > 8 116647.472966 00:03:47:02:64:8c 08:00:3e:28:7a:b8
> > ARP 206.234.219.89 is at 00:03:47:02:64:8c
> > 9 2.475597 08:00:3e:28:7a:b8 ff:ff:ff:ff:ff:ff ARP
> > Who has 206.234.219.89? Tell 206.234.219.88
> > 10 116648.288733 00:03:47:02:64:8c 08:00:3e:28:7a:b8
> > ARP 206.234.219.89 is at 00:03:47:02:64:8c
> > 11 9.519239 00000000.00034702648c 00000000.ffffffffffff NCP
> > [Malformed Packet]
> >
> > According to this capture, the viper is broadcasting ARP requests and
> > the 'server' is responding, but the viper is not seeing the response.
> > I'm guessing that I don't have eCos configured properly, since ping
> > works in RedBoot. Before I upgraded to eCos 2.0, ping_test.exe worked,
> > but the response time was occasionally very slow. I have also tried
> > running ftp_test.exe with the eCos 2.0 code which also fails during the
> > ARP procedure.
> >
> > Any suggestions?
>
> Try turning on some debugging in the eCos network stack to see what it's
> getting. I tested the network code (I'm sure I tried the new network
> stack on this board) and it worked fine.
>
> As for your other problems (slow FTP, etc), this will also be fixed if
> you want to revert to the "old" network stack.
--
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss