This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: TCP/IP large packets -errors
- To: ecos-discuss at sources dot redhat dot com
- Subject: Re: [ECOS] TCP/IP large packets -errors
- From: Hugo Tyson <hmt at redhat dot com>
- Date: 20 Apr 2001 15:01:23 +0100
- Newsgroups: cygnus.sourceware.ecos.d
- Organization: Red Hat UK
- References: <00b201c0c996$16d81070$1400a8c0@rts.com.pl>
"=?iso-8859-2?B?TWFyZWsgo7Fja2k=?=" <lacki@rts.com.pl> writes:
> I have a problem with stack TCP or network card driver (NE200) on platform
> i386.
> Stack works correctly if i send packets less than 1500 bytes. When I send
> more than 1500 bytes for example 1600 bytes ( tested on ping ), eCos
> responses for first part (1500 bytes) and dosen't response for next
> parts(100bytes). Then if i send later less than 1500 bytes ,eCos response
> for request and send extra this 100 bytes from first large frame.
> What's happend ?????
Bigger pings work fine with ARMs and i82559 or LAN91C96 &c. They split
into several smaller packets, and are sent back OK.
You don't say what release you're using.
There was a problem ages ago with the reassembly of those ICMP fragments,
to do with the alignment of MBUFs causing a macro not to work.
Astonishingly it only affected ICMP fragments! Here's the ChangLog entry.
2000-06-23 Hugo Tyson <hmt@cygnus.co.uk>
* src/ecos/support.c (cyg_net_mbuf_alloc, cyg_kmem_init): Align
the mbuf pool to MSIZE [128] bytes. That way dtom() works, nasty
though it is. That's needed for ip reassembly in ip_input.c, when
dealing with large icmp-layer packets eg. ping -s 2000 ...
Ensure you have that change.
It could be that your driver (I guess you're writing the ether driver) is
not correctly handling multiple queued-up send requests, if the packets are
eventually getting out when another rx occurs.
- Huge