[ECOS] i82559 driver: i82557 support?

Kevin Hilman khilman@equator.com
Wed Nov 13 12:45:00 GMT 2002


Gary Thomas <gthomas@ecoscentric.com> writes:

> On Wed, 2002-11-13 at 13:03, Kevin Hilman wrote:
> > In the Intel i82559 driver, there's the following note
> > 
> >         FIXME: For 82557/8 compatibility i82559_configure() function
> >                probably needs some tweaking - config bits differ
> >                slightly but crucially.
> > 
> > I'm using an 82557 card which mostly works, but ping_test runs
> > correctly about 10% of the time, and the rest of the time, I'm getting
> > timeouts during the DHCP request phase.
> > 
> 
> Have you watched the network activity to see more of what's happening
> "on the wire"?
> 

Yes.  It fails slightly different each time, but there are two main
types of failure.

1) During DHCP

In some cases, I'm seeing the BOOTP broadcast packets hit the wire,
and a couple of ARP packets, and then silence.

2) After DHCP, and a couple successful pings

In other cases, I see the broadcast packets go out, some ARPs and the
target gets an IP.  Then I see a 2-8 pings (ICMP echos and replies)
then silence.

If it helps, I've included what I see from eCos at the end of this
message .  Note that I've added various diag_printf() calls along the
way.  In particular the loop X: *pstate=Y is inside the DHCP loop in
do_dhcp()

Also note that the platform is not one if the "official" eCos ports.
It is a port of eCos that we've done here at Equator to our processor
famliy. 

--
Kevin

case 1: 
[cyg_net_init] Init: mbinit(0x00000000)
[cyg_net_init] Init: cyg_net_init_devs(0x00000000)
Init device 'i82559_eth0'
eth0 XXX: driver didn't set ifq_maxlen
[cyg_net_init] Init: loopattach(0x00000000)
[cyg_net_init] Init: ifinit(0x00000000)
IFP: 0x80255e90, next: 0x80427504
IFP: 0x80427504, next: 0x00000000
[cyg_net_init] Init: domaininit(0x00000000)
[cyg_net_init] Init: cyg_net_add_domain(0x80259a00)
New domain internet at 0x00000000
[cyg_net_init] Init: cyg_net_add_domain(0x80258960)
New domain route at 0x00000000
[cyg_net_init] Init: cyg_route_init(0x00000000)
[cyg_net_init] Done
Start PING test
do_dhcp(intf=eth0)
loop 0: *pstate=0x1
loop 1: *pstate=0x2
cyg_tsleep(timo=19): cyg_current_time()=22 >= sleep_time(22)
loop 2: *pstate=0x1
loop 3: *pstate=0x2
cyg_tsleep(timo=19): cyg_current_time()=43 >= sleep_time(43)
loop 4: *pstate=0x1
loop 5: *pstate=0x2
cyg_tsleep(timo=19): cyg_current_time()=64 >= sleep_time(64)
loop 6: *pstate=0x1
loop 7: *pstate=0x2
cyg_tsleep(timo=19): cyg_current_time()=84 >= sleep_time(84)
loop 8: *pstate=0x1
loop 9: *pstate=0x2
cyg_tsleep(timo=19): cyg_current_time()=104 >= sleep_time(104)
loop 10: *pstate=0x1
loop 11: *pstate=0x2
loop 12: *pstate=0x3
loop 13: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=172 >= sleep_time(172)
REQ_RECV: no packet, next timeout
loop 14: *pstate=0x3
loop 15: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=201 >= sleep_time(201)
REQ_RECV: no packet, next timeout
loop 16: *pstate=0x3
loop 17: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=230 >= sleep_time(230)
REQ_RECV: no packet, next timeout
loop 18: *pstate=0x3
loop 19: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=259 >= sleep_time(259)
REQ_RECV: no packet, next timeout
loop 20: *pstate=0x3
loop 21: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=288 >= sleep_time(288)
REQ_RECV: no packet, next timeout
loop 22: *pstate=0x3
loop 23: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=5, usec=262144
cyg_tsleep(timo=526): cyg_current_time()=817 >= sleep_time(817)
REQ_RECV: no packet, next timeout
loop 24: *pstate=0x3
loop 25: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=846 >= sleep_time(846)
REQ_RECV: no packet, next timeout
loop 26: *pstate=0x3
loop 27: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=875 >= sleep_time(875)
REQ_RECV: no packet, next timeout
loop 28: *pstate=0x3
loop 29: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
cyg_tsleep(timo=26): cyg_current_time()=904 >= sleep_time(904)
REQ_RECV: no packet, next timeout
loop 30: *pstate=0x3
loop 31: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=11, usec=262144

case 2:

[cyg_net_init] Init: mbinit(0x00000000)
[cyg_net_init] Init: cyg_net_init_devs(0x00000000)
Init device 'i82559_eth0'
eth0 XXX: driver didn't set ifq_maxlen
[cyg_net_init] Init: loopattach(0x00000000)
[cyg_net_init] Init: ifinit(0x00000000)
IFP: 0x80255e90, next: 0x80427504
IFP: 0x80427504, next: 0x00000000
[cyg_net_init] Init: domaininit(0x00000000)
[cyg_net_init] Init: cyg_net_add_domain(0x80259a00)
New domain internet at 0x00000000
[cyg_net_init] Init: cyg_net_add_domain(0x80258960)
New domain route at 0x00000000
[cyg_net_init] Init: cyg_route_init(0x00000000)
[cyg_net_init] Done
Start PING test
do_dhcp(intf=eth0)
loop 0: *pstate=0x1
loop 1: *pstate=0x2
loop 2: *pstate=0x3
loop 3: *pstate=0x4
DHCP REQ_RECV: call setsockopt(): tv sec=0, usec=262144
loop 4: *pstate=0x5
BOOTP[eth0] op: REQUEST
       htype: Ethernet
        hlen: 6
        hops: 0
         xid: 0xc647ffbd
        secs: 0
       flags: 0x80
       hw_addr: 00:02:b3:1b:f1:bd
     client IP: 0.0.0.0
         my IP: 10.0.16.231
     server IP: 10.0.16.20
    gateway IP: 0.0.0.0
  options:
        DHCP message: 3 REQUEST
        DHCP server id: 10.0.16.20
        DHCP time 51: 604800
        DHCP time 58: 302400
        DHCP time 59: 529200
        subnet mask: 255.255.255.0
            gateway: 10.0.16.1
      domain server: 10.0.16.20, 10.0.0.20
        domain name: sea.equator.com
        DHCP option: 37/55.9: 54 51 58 59 1 3 6 15 28
        DHCP option: 39/57.2: 576
        DHCP requested ip: 10.0.16.231
ping_test()
PING server 10.0.16.20
64 bytes from 10.0.16.20: icmp_seq=0, time=0ms
310 bytes from 10.0.16.20: icmp_seq=1, time=0ms
556 bytes from 10.0.16.20: icmp_seq=2, time=0ms
802 bytes from 10.0.16.20: icmp_seq=3, time=0ms
1048 bytes from 10.0.16.20: icmp_seq=4, time=0ms
1294 bytes from 10.0.16.20: icmp_seq=5, time=0ms
1540 bytes from 10.0.16.20: icmp_seq=6, time=10ms
1786 bytes from 10.0.16.20: icmp_seq=7, time=10ms
cyg_tsleep(timo=100): cyg_current_time()=132 >= sleep_time(132)
recvfrom: Operation timed out
cyg_tsleep(timo=100): cyg_current_time()=233 >= sleep_time(233)
recvfrom: Operation timed out
cyg_tsleep(timo=100): cyg_current_time()=334 >= sleep_time(334)
recvfrom: Operation timed out
cyg_tsleep(timo=100): cyg_current_time()=435 >= sleep_time(435)
recvfrom: Operation timed out
cyg_tsleep(timo=100): cyg_current_time()=536 >= sleep_time(536)
recvfrom: Operation timed out
cyg_tsleep(timo=100): cyg_current_time()=637 >= sleep_time(637)
recvfrom: Operation timed out


-- 
Before posting, please read the FAQ: http://sources.redhat.com/fom/ecos
and search the list archive: http://sources.redhat.com/ml/ecos-discuss



More information about the Ecos-discuss mailing list