Can somebody tell me what skb_checksum does? How is it different from computing a TCP checksum and why is it necessary? What does it return? In tcp_input.c I see the following lines if (tcp_checksum_complete_user(sk,, skb)) goto csum_error; tcp_checksum_complete goes through a series of function calls that finally result in a call to skb_checksum? Why does it have to return a 0? The reason for these questions .......... I am facing a peculiar problem with a kernel version 2.4.25. My TCP sessions occasionally hang due to this error. If I have two machines talking via a TCP session and attempt to send a largish amount of data quickly results in this error. Any subsequent packets sent on this connection (where a checksum error has been detected) are discarded by the receiving machine. The connection is still maintained. I tried using an ftp with large files to simulate the problem and I noticed that it happens invariably when a packet has been dropped and the sending machine tries to resend it. It always seems to have an skb_checksum error? I can open new connections and do telnet etc.... and as long as the data rate is moderate things are fine. I have tried bypassing the checksum error and I've noticed that the received packet with the skb checksum error has some discrepancy in the data. The size remains the same but a character or two is corrupted in the data buffer. I would have suspected some hardware issues but if I use UDP (tftp etc) I have no problems transmitting or receiving data (with a larger volume and a faster rate). I posted an abbreiviated query related to this on the linux-net list but I got no answers. Maybe somebody here could help. Thanks S -- Kernelnewbies: Help each other learn about the Linux kernel. Archive: http://mail.nl.linux.org/kernelnewbies/ FAQ: http://kernelnewbies.org/faq/