This is the mail archive of the
ecos-discuss@sources.redhat.com
mailing list for the eCos project.
Re: Problems with ppp and Windows
- From: Kelvin Lawson <klawson at ad-holdings dot co dot uk>
- To: ecos-discuss at sources dot redhat dot com
- Date: Wed, 16 Jun 2004 10:54:09 +0100
- Subject: [ECOS] Re: Problems with ppp and Windows
- References: <1087322512.28254.ezmlm@ecos.sourceware.org> <1087335408.28465.10.camel@famine>
Hi Øyvind,
I've just had what appears to be the same problem as this. accept()
wasn't returning until the client killed the telnet process.
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.
By client I mean the machine from which the Telnet session is launched.
I get the same problem using a Windows or Linux Telnet client (or FTP or
anything that contacts an eCos server sitting in accept()). I also had
the same problem whether the PPP session itself was between eCos and
Win2k or between eCos and Linux. I can't imagine it makes any difference
whether eCos "dials up" the other end, or visa versa.
I'm surprised that this is only a problem connecting with Windows via
PPP. Was there anything different about your setup when you connected to
Linux ? Maybe on your Windows configuration the eCos target had an
Ethernet interface up as well ? (that will use up a few network
buffers). Or is your Linux PPPD perhaps running with the "novj" option ?
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.
If you need to save some RAM, perhaps an alternative would be to disable
VJ compression. On a brief look in ipcp.c it looks like it's possible to
refuse by setting neg_vj = 0. Presumably there will be a few other
tweaks around the PPP code to handle this properly.
It would be nice to handle the failed slcompress MALLOC by refusing to
negotiate VJ compression. Either that or a big printf/assert on the
failed MALLOC would have saved me a few hours debugging.
Cheers,
Kelvin.
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss