From mboxrd@z Thu Jan 1 00:00:00 1970 From: Hugo Tyson To: ecos-discuss@sources.redhat.com Subject: Re: [ECOS] TCP/IP large packets -errors Date: Fri, 20 Apr 2001 07:15:00 -0000 Message-id: References: <00b201c0c996$16d81070$1400a8c0@rts.com.pl> X-SW-Source: 2001-04/msg00269.html "=?iso-8859-2?B?TWFyZWsgo7Fja2k=?=" 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 * 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