This is the mail archive of the ecos-discuss@sources.redhat.com mailing list for the eCos project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Problems with ppp and Windows


> I've just had what appears to be the same problem as this. accept() 
> wasn't returning until the client killed the telnet process. 

This is precisely what I observed.

> However in my case it was the same with Windows or Linux clients.

When you say "client", are you referring to the machine on which the
telnet session is launched?

I find that the problem is with a Windows PPP *server*.

It doesn't matter whether or not I start the telnet session from Windows
or Linux.

> What it boiled down to was a lack of network buffers. pppalloc() 
> allocates some memory for VJ compression, but in my case the 
> cyg_net_malloc() failed. This breaks the VJ compression for the PPP 
> connection (sc->sc_comp == NULL).

I will most certainly take this for a spin to see if I'm running into
the same problem.

> When a client (e.g. Telnet on Windows) connected to my server process in 
> eCos, the first packet of the TCP handshake (SYN) came in uncompressed. 
> eCos responded with SYN ACK, and then the client sent the final part 
> (ACK), but this time with protocol VJC_UNCOMP. ppp_inproc() tries to 
> handle the VJC, but fails because VJC was not initialised correctly 
> (sc->sc_comp == NULL).
> 
> So because VJC is not initialised properly, the final packet of the 3 
> way handshake always fails at ppp_inproc(). It never makes it up into 
> the IP/TCP stack, and therefore the server thread is never woken up from 
> sleeping in accept(). eCos keeps resending SYN ACK to the client, and 
> the client keeps resending the final ACK.
> 
> I'm not sure if this will be your problem, but it's worth a go. Try 
> adding some more memory to CYGPKG_NET_MEM_USAGE. The VJC structure needs 
> a little over 4KB on my target. You can confirm whether this is your 
> problem by checking the result of the MALLOC in pppalloc().

I've been toying with PPP on an EB40a card board, which only has
256kbytes of memory.

I've set CYGPKG_NET_MEM_USAGE = ~90k.

> Cheers,
> Kelvin.

Its great to have some feedback on this one! Thanks! :-)

> 
> ______________________________________________________________________

-- 
Øyvind Harboe
http://www.zylin.com



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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]