TCP issues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux