Petter Nordby

Interniche, MCF52235, lots of ACK's and window size zero

Discussion created by Petter Nordby on Aug 24, 2007
Latest reply on Sep 13, 2007 by Petter Nordby
I have been struggeling with the Interniche TCP/IP stack on the MCF52235 (GNU compiler, superloop mode). In frustration, I post a lot of details in hope for solutions. Has anyone fixed similar stuff in the stack code? Any help or suggestions would be greatly appreciated.

Observations from network traffic:
- There seems to be a lot of ACK's in here.
- Window size ends up equal to zero when we are in a big pile of sh...

A few of my constants, in case they matter:
NUMBIGBUFS = 4
NUMLILBUFS = 6
NUM_RXBDS = 2
NUM_TXBDS = 2
bigbufsiz = 1536
lilbufsiz = 120
TCP_MSS = 1456
MAX_ETH_PKT = 1520

Some information about "my network":
IP 10.10.12.245 is a PC.
IP 10.10.12.252 is a server with Interniche stack
IP 10.10.12.254 is a client with Interniche stack
IP 10.10.12.248 is a gdb box for debugging (connected to the server in these dumps)

Wireshark dumps:

servpwrup-pc-clipwrup.txt
-------------------------
[Powered up server]
Frame 1-4: The server is powered up
Frame 5: UDP broadcast message from server (identifying itself to the network)
[Started a connection from the PC to the server]
Frame 6-7: ARP request and response
Frame 8-11: Connect from PC to server
Frame 12-14: A hello world message from server to PC
[Typed a command on the PC]
Frame 16-20: The command from PC to server
Frame 21-23: The reply from server to PC
[Closed the connection on the PC]
Frame 24-27: Disconnect
[Powered up client]
Frame 28-29: ARP request and response
Frame 30-33: Connect from client to server
Frame 34-38: A hello world message from server to client
Frame 39: UDP broadcast message from client (identifying itself to the network)
Frame 40-42: ping from client to server
Frame 43-49: pong (reply to ping) from server to client
Frame 50-53: ping from client to server
Frame 54-59: pong (reply to ping) from server to client
[the client will continue to send ping periodically]

window-zero.txt
---------------
[Client and server doing ping-pong]
[PC connected to server]
[PC connected to client]
Frame 219-236: ping-pong
[Button pressed on client, resulting in data transfer]
Frame 237-261: Data from all over the place
Frame 262-263: Info from gdb box to PC telling me the server watchdog kicked

A few of the interesting frames:
237: Command from client to server
238: Status from client to PC
242: ?? (where did this come from? did the stack make it?)
243: First frame with window size = 0

window-zero-no-wd.txt
---------------------
Similar to window-zero.txt, but with watchdog disabled:
[Client-server doing ping-pong and PC connected to both]
[Button pressed before frame 36]
[Client window size 0 in frame 42, seems to be fixed with TCP window update]
[Server window size 0 from frame 50 to end of file]

Outcomes