Re: UDP packets are getting dropped because of invalied checksum though checksum offload is enabled in kernel-2.6.32
Yes, u are right to set the checksum value to zero to let the hardware do the stuff. But is the hardware correctly configured? "ethtool" is just a userspace tool, but it will still need the hardware drivers to actually implement the stuff. use "lshw" to see which hardware u have, and whether it is claimed by any drivers or not, and "lsmod" to guess which driver could be used. And then look into the kernel source: drivers/net/ethernet branch to sieve out the file that implement the driver, possibly look into the file and see whether hardware checksum has actually been properly done. possibly u may add some debug message, recompile and reload the drivers to debug it. For my case: lshw: *-network description: Ethernet interface product: RTL8111/8168B PCI Express Gigabit Ethernet controller vendor: Realtek Semiconductor Co., Ltd. and lsmod gives r8169 and the kernel file (realtek/r8169.c): TD0_TCP_CS = (1 << 16),/* Calculate TCP/IP checksum */ TD0_UDP_CS = (1 << 17),/* Calculate UDP/IP checksum */ TD0_IP_CS = (1 << 18),/* Calculate IP checksum */ So there are altogether three different modes provided by hardware I guessed. On Thu, Jul 19, 2012 at 9:42 PM, Murali Annamneni wrote: > Hi Kristof, > > Thanks for your quick reply. > > I have made changes to my code suchthat before leaving from post hook(i.e. > before entering into the ethernet device), I set udp & ip checksum's as > "0". > Still packets are getting dropped. I found that oflload engine is not > computing the checksum. > Do you know anything about checksum offload feature is corrected in > kernel-2.6.32 ? > > > Thanks & Regards > Murali Annamneni > > > -Original Message- > From: Kristof Provost [mailto:kris...@sigsegv.be] > Sent: Thursday, July 19, 2012 6:53 PM > To: Murali Annamneni > Cc: kernelnewbies@kernelnewbies.org > Subject: Re: UDP packets are getting dropped because of invalied checksum > though checksum offload is enabled in kernel-2.6.32 > > On 2012-07-19 18:28:57 (+0530), Murali Annamneni wrote: > > Hi All, > > > > I have written a kernel module using netfilter framework. In my code > I'll do some modifications to the header & payload parts of UDP packet in > pre & post hooks. > > After modifying the udp packet, I'm computing ip & udp checksum. This > computation is consuming some cpu cycles. > > Now, I want to offload this computation to the Ethernet device. For this > I have commented the checksum computation in my code and enabled the > checksum offload parameters of my Ethernet device. > > While testing, I found that kernel is dropping the packets because of > invalid checksums for ip & udp packets. > > I have few doubts regarding checksum offload > > > Wild guess: try setting the checksum to zero before sending the packet. > It's possible that the offload engine won't recompute checksums unless > they're zero (i.e. it might assume non-zero checksums are already correct). > > Regards, > Kristof > > > > ::DISCLAIMER:: > > > > The contents of this e-mail and any attachment(s) are confidential and > intended for the named recipient(s) only. > E-mail transmission is not guaranteed to be secure or error-free as > information could be intercepted, corrupted, > lost, destroyed, arrive late or incomplete, or may contain viruses in > transmission. The e mail and its contents > (with or without referred errors) shall therefore not attach any liability > on the originator or HCL or its affiliates. > Views or opinions, if any, presented in this email are solely those of the > author and may not necessarily reflect the > views or opinions of HCL or its affiliates. Any form of reproduction, > dissemination, copying, disclosure, modification, > distribution and / or publication of this message without the prior > written consent of authorized representative of > HCL is strictly prohibited. If you have received this email in error > please delete it and notify the sender immediately. > Before opening any email and/or attachments, please check them for viruses > and other defects. > > > > ___ > Kernelnewbies mailing list > Kernelnewbies@kernelnewbies.org > http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies > -- Regards, Peter Teoh ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
RE: UDP packets are getting dropped because of invalied checksum though checksum offload is enabled in kernel-2.6.32
Hi Kristof, Thanks for your quick reply. I have made changes to my code suchthat before leaving from post hook(i.e. before entering into the ethernet device), I set udp & ip checksum's as "0". Still packets are getting dropped. I found that oflload engine is not computing the checksum. Do you know anything about checksum offload feature is corrected in kernel-2.6.32 ? Thanks & Regards Murali Annamneni -Original Message- From: Kristof Provost [mailto:kris...@sigsegv.be] Sent: Thursday, July 19, 2012 6:53 PM To: Murali Annamneni Cc: kernelnewbies@kernelnewbies.org Subject: Re: UDP packets are getting dropped because of invalied checksum though checksum offload is enabled in kernel-2.6.32 On 2012-07-19 18:28:57 (+0530), Murali Annamneni wrote: > Hi All, > > I have written a kernel module using netfilter framework. In my code I'll do > some modifications to the header & payload parts of UDP packet in pre & post > hooks. > After modifying the udp packet, I'm computing ip & udp checksum. This > computation is consuming some cpu cycles. > Now, I want to offload this computation to the Ethernet device. For this I > have commented the checksum computation in my code and enabled the checksum > offload parameters of my Ethernet device. > While testing, I found that kernel is dropping the packets because of invalid > checksums for ip & udp packets. > I have few doubts regarding checksum offload > Wild guess: try setting the checksum to zero before sending the packet. It's possible that the offload engine won't recompute checksums unless they're zero (i.e. it might assume non-zero checksums are already correct). Regards, Kristof ::DISCLAIMER:: The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only. E-mail transmission is not guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or may contain viruses in transmission. The e mail and its contents (with or without referred errors) shall therefore not attach any liability on the originator or HCL or its affiliates. Views or opinions, if any, presented in this email are solely those of the author and may not necessarily reflect the views or opinions of HCL or its affiliates. Any form of reproduction, dissemination, copying, disclosure, modification, distribution and / or publication of this message without the prior written consent of authorized representative of HCL is strictly prohibited. If you have received this email in error please delete it and notify the sender immediately. Before opening any email and/or attachments, please check them for viruses and other defects. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
Re: UDP packets are getting dropped because of invalied checksum though checksum offload is enabled in kernel-2.6.32
On 2012-07-19 18:28:57 (+0530), Murali Annamneni wrote: > Hi All, > > I have written a kernel module using netfilter framework. In my code I'll do > some modifications to the header & payload parts of UDP packet in pre & post > hooks. > After modifying the udp packet, I'm computing ip & udp checksum. This > computation is consuming some cpu cycles. > Now, I want to offload this computation to the Ethernet device. For this I > have commented the checksum computation in my code and enabled the checksum > offload parameters of my Ethernet device. > While testing, I found that kernel is dropping the packets because of invalid > checksums for ip & udp packets. > I have few doubts regarding checksum offload > Wild guess: try setting the checksum to zero before sending the packet. It's possible that the offload engine won't recompute checksums unless they're zero (i.e. it might assume non-zero checksums are already correct). Regards, Kristof ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
UDP packets are getting dropped because of invalied checksum though checksum offload is enabled in kernel-2.6.32
Hi All, I have written a kernel module using netfilter framework. In my code I'll do some modifications to the header & payload parts of UDP packet in pre & post hooks. After modifying the udp packet, I'm computing ip & udp checksum. This computation is consuming some cpu cycles. Now, I want to offload this computation to the Ethernet device. For this I have commented the checksum computation in my code and enabled the checksum offload parameters of my Ethernet device. While testing, I found that kernel is dropping the packets because of invalid checksums for ip & udp packets. I have few doubts regarding checksum offload 1)Shall I need to do anything in my kernel code. 2)I'm using the below command to enable checksum offload ethtool -K eth0 rx on tx on Is there anything I need to do apart from this ? I'm testing my kernel code in kernel-2.6.32. Thanks & Regards Murali Annamneni ::DISCLAIMER:: The contents of this e-mail and any attachment(s) are confidential and intended for the named recipient(s) only. E-mail transmission is not guaranteed to be secure or error-free as information could be intercepted, corrupted, lost, destroyed, arrive late or incomplete, or may contain viruses in transmission. The e mail and its contents (with or without referred errors) shall therefore not attach any liability on the originator or HCL or its affiliates. Views or opinions, if any, presented in this email are solely those of the author and may not necessarily reflect the views or opinions of HCL or its affiliates. Any form of reproduction, dissemination, copying, disclosure, modification, distribution and / or publication of this message without the prior written consent of authorized representative of HCL is strictly prohibited. If you have received this email in error please delete it and notify the sender immediately. Before opening any email and/or attachments, please check them for viruses and other defects. ___ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies