Non-linear SKBs

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

 



Hello,

I have developed a small patch for the TCP code in 2.6.19 and it works flawlessly. A couple of days ago I decided to make it compatible with 2.6.22.5 and have stumbled upon a problem I cannot solve.

In 2.6.19 it seems that all packets (at least the ones my patch work with) are linear, while they are non-linear in 2.6.22.5. I have searched through the code (focusing on tcp_sendmsg) to try to figure out what happens, but can't find any differences that would explain this. Does anyone know what might be the cause and if there is an easy way to return to linear skbs (unless that is totally stupid)? Currently I used the skb_linearize(skb) on all fragmentet packets, which is not nice.

Both kernels are vanilla kernels with the patch applied, and I used OpenSuse with 2.6.19 and Ubuntu with 2.6.22.5 (but I guess that shouldn't matter in this case).

The reason this is a problem is that I copy data between SKBs, and in 2.6.19 I have used memcpy for this purpose (which of course does not work when the skb is non-linear). I have look at the way they do it in the else-part of the large if-test in tcp_sendmsg and the skb_copy_bits-function, but the first one looks very complex and I don't quite understand how to use the last one. Does anyone have any easier to understand examples or explanations on how to copy data from one non-linear skb to another?

Thanks.

-Kristian


--
To unsubscribe from this list: send an email with
"unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx
Please read the FAQ at 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