Message ID | 1398451514-25593-1-git-send-email-kys@microsoft.com |
---|---|
State | Superseded, archived |
Delegated to: | David Miller |
Headers | show |
On Fri, 25 Apr 2014 11:45:14 -0700 "K. Y. Srinivasan" <kys@microsoft.com> wrote: > @@ -474,6 +477,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net) > csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi + > ppi->ppi_offset); > > + ip_hdr(skb)->check = 0; > + csum_info->transmit.ip_header_checksum = 1; > + > if (net_trans_info & (INFO_IPV4 << 16)) > csum_info->transmit.is_ipv4 = 1; > else Linux doesn't need or want IP checksum offload. It will not have any performance gain. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On Fri, 2014-04-25 at 17:43 -0700, Stephen Hemminger wrote: > On Fri, 25 Apr 2014 11:45:14 -0700 > "K. Y. Srinivasan" <kys@microsoft.com> wrote: > > > @@ -474,6 +477,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net) > > csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi + > > ppi->ppi_offset); > > > > + ip_hdr(skb)->check = 0; > > + csum_info->transmit.ip_header_checksum = 1; > > + > > if (net_trans_info & (INFO_IPV4 << 16)) > > csum_info->transmit.is_ipv4 = 1; > > else > > Linux doesn't need or want IP checksum offload. > It will not have any performance gain. BTW, was this patch even tested with IPv6 packets ??? -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: Stephen Hemminger [mailto:stephen@networkplumber.org] > Sent: Friday, April 25, 2014 5:43 PM > To: KY Srinivasan > Cc: davem@davemloft.net; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; devel@linuxdriverproject.org; olaf@aepfle.de; > apw@canonical.com; jasowang@redhat.com; stable@kernel.org > Subject: Re: [PATCH net-next 1/1] hyperv: Properly handle checksum offload > > On Fri, 25 Apr 2014 11:45:14 -0700 > "K. Y. Srinivasan" <kys@microsoft.com> wrote: > > > @@ -474,6 +477,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, > struct net_device *net) > > csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi + > > ppi->ppi_offset); > > > > + ip_hdr(skb)->check = 0; > > + csum_info->transmit.ip_header_checksum = 1; > > + > > if (net_trans_info & (INFO_IPV4 << 16)) > > csum_info->transmit.is_ipv4 = 1; > > else > > Linux doesn't need or want IP checksum offload. > It will not have any performance gain. Thanks Stephen; I will re-spin the patch and re-submit. K. Y -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
> -----Original Message----- > From: Eric Dumazet [mailto:eric.dumazet@gmail.com] > Sent: Friday, April 25, 2014 6:15 PM > To: Stephen Hemminger > Cc: KY Srinivasan; davem@davemloft.net; netdev@vger.kernel.org; linux- > kernel@vger.kernel.org; devel@linuxdriverproject.org; olaf@aepfle.de; > apw@canonical.com; jasowang@redhat.com; stable@kernel.org > Subject: Re: [PATCH net-next 1/1] hyperv: Properly handle checksum offload > > On Fri, 2014-04-25 at 17:43 -0700, Stephen Hemminger wrote: > > On Fri, 25 Apr 2014 11:45:14 -0700 > > "K. Y. Srinivasan" <kys@microsoft.com> wrote: > > > > > @@ -474,6 +477,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, > struct net_device *net) > > > csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi + > > > ppi->ppi_offset); > > > > > > + ip_hdr(skb)->check = 0; > > > + csum_info->transmit.ip_header_checksum = 1; > > > + > > > if (net_trans_info & (INFO_IPV4 << 16)) > > > csum_info->transmit.is_ipv4 = 1; > > > else > > > > Linux doesn't need or want IP checksum offload. > > It will not have any performance gain. > > > BTW, was this patch even tested with IPv6 packets ??? No; I only tested this on ipv4. K. Y >
> -----Original Message----- > From: driverdev-devel-bounces@linuxdriverproject.org [mailto:driverdev- > devel-bounces@linuxdriverproject.org] On Behalf Of KY Srinivasan > Sent: Friday, April 25, 2014 7:24 PM > To: Eric Dumazet; Stephen Hemminger > Cc: olaf@aepfle.de; netdev@vger.kernel.org; jasowang@redhat.com; linux- > kernel@vger.kernel.org; stable@kernel.org; apw@canonical.com; > devel@linuxdriverproject.org; davem@davemloft.net > Subject: RE: [PATCH net-next 1/1] hyperv: Properly handle checksum offload > > > > > -----Original Message----- > > From: Eric Dumazet [mailto:eric.dumazet@gmail.com] > > Sent: Friday, April 25, 2014 6:15 PM > > To: Stephen Hemminger > > Cc: KY Srinivasan; davem@davemloft.net; netdev@vger.kernel.org; linux- > > kernel@vger.kernel.org; devel@linuxdriverproject.org; olaf@aepfle.de; > > apw@canonical.com; jasowang@redhat.com; stable@kernel.org > > Subject: Re: [PATCH net-next 1/1] hyperv: Properly handle checksum > > offload > > > > On Fri, 2014-04-25 at 17:43 -0700, Stephen Hemminger wrote: > > > On Fri, 25 Apr 2014 11:45:14 -0700 > > > "K. Y. Srinivasan" <kys@microsoft.com> wrote: > > > > > > > @@ -474,6 +477,9 @@ static int netvsc_start_xmit(struct sk_buff > > > > *skb, > > struct net_device *net) > > > > csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi + > > > > ppi->ppi_offset); > > > > > > > > + ip_hdr(skb)->check = 0; > > > > + csum_info->transmit.ip_header_checksum = 1; > > > > + > > > > if (net_trans_info & (INFO_IPV4 << 16)) > > > > csum_info->transmit.is_ipv4 = 1; > > > > else > > > > > > Linux doesn't need or want IP checksum offload. > > > It will not have any performance gain. > > > > > > BTW, was this patch even tested with IPv6 packets ??? > > No; I only tested this on ipv4. Oops; this would not work on ipv6. I am going to resend this patch. K. Y > > K. Y > > > > _______________________________________________ > devel mailing list > devel@linuxdriverproject.org > http://driverdev.linuxdriverproject.org/mailman/listinfo/driverdev-devel -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c index 939e3af..706b341 100644 --- a/drivers/net/hyperv/netvsc_drv.c +++ b/drivers/net/hyperv/netvsc_drv.c @@ -467,6 +467,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net) if (skb_is_gso(skb)) goto do_lso; + if (skb->ip_summed != CHECKSUM_PARTIAL) + goto do_send; + rndis_msg_size += NDIS_CSUM_PPI_SIZE; ppi = init_ppi_data(rndis_msg, NDIS_CSUM_PPI_SIZE, TCPIP_CHKSUM_PKTINFO); @@ -474,6 +477,9 @@ static int netvsc_start_xmit(struct sk_buff *skb, struct net_device *net) csum_info = (struct ndis_tcp_ip_checksum_info *)((void *)ppi + ppi->ppi_offset); + ip_hdr(skb)->check = 0; + csum_info->transmit.ip_header_checksum = 1; + if (net_trans_info & (INFO_IPV4 << 16)) csum_info->transmit.is_ipv4 = 1; else