Re: Linux <-> Apple Laser 16/600 [TCP problems??]

Scott Laird (
Sat, 10 Aug 1996 15:01:47 -0700

In message <Pine.LNX.3.91.960809111215.24805B-100000@linux.cs.Helsinki.FI>, Lin
us Torvalds writes:
>On Thu, 8 Aug 1996, Mikael Abrahamsson wrote:
>> We have run a setup of a linux 1.2.13 machine and an Apple 16/600
>> Laserprinter (postscript) for almost a year now, but when I upgraded to
>> 2.0.x I suddenly got problems.
>Damn. It's a bug in the Apple Laserprinter TCP implementation, and we've had
>reports of the same TCP bug being in another printer too (HP with some
>third-party network card).
>The printer gets confused when Linux has sent it a partial packet when the
>printer window goes < MSS (which it shouldn't do anyway, but that's not the
>bug). When then Linux sends the full packet later on when the printer has
>opened up the window, the printer incorrectly ignores it because it thinks it
>has seen it (it has seen part of the data, but not all, and that's the bug).
>The printer buffer is filling up, so it's not opening it's TCP window any
>more, and then when the window goes < MSS, *blam*.

I think I saw this same bug (or a very similar one) last week when
talking to a PC/TCP system that one of our customers uses for mail.
When the remote system started falling behind, it shrank the window,
but it tended to ignore everything else my box (running 2.0.0) sent to
it, even after the window grew. I recompiled with the PC/TCP
compatibility switch turned on, but it didn't really make a
difference. Connections still died, usually somewhere between 15k and
100k into the transfer, over two 28.8k serial links (CSLIP to
Internet, and then down a PPP link on the other end).

Of course, after watching the conversation with tcpdump, I'm impressed
that Linux's stack could talk to PC/TCP at all :-). I ended up
solving the problem by relaying the message through a BSDI box, and
that seemed to solve the problem for now. I'd love to test any
better solutions that anyone has, though.