netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Stephen Hemminger <shemminger@osdl.org>
To: <ravinandan.arakali@neterion.com>
Cc: <netdev@vger.kernel.org>, <Steve.Whitaker@neterion.com>,
	<Mike.Doyle@neterion.com>, <Andrew.LaCroix@neterion.com>,
	<Ananda.Raju@neterion.com>, <dave.fenton@neterion.com>,
	"Leonid. Grossman \(E-mail\)" <leonid.grossman@neterion.com>
Subject: Re: H/W requirements for NETIF_F_HW_CSUM
Date: Wed, 26 Jul 2006 12:16:27 -0700	[thread overview]
Message-ID: <20060726121627.724c6652@localhost.localdomain> (raw)
In-Reply-To: <006201c6b0d8$d831ba80$4510100a@pc.s2io.com>

On Wed, 26 Jul 2006 10:28:00 -0700
"Ravinandan Arakali" <ravinandan.arakali@neterion.com> wrote:

> Hello,
> Our current NIC does not provide the actual checksum value on receive path.
> Hence we only claim NETIF_F_IP_CSUM instead of the more general
> NETIF_F_HW_CSUM.
> 
> To support this in a future adapter, we would like to know what exactly are
> the requirements (on both Rx and Tx )to claim NETIF_F_HW_CSUM ?

If you set NETIF_F_HW_CSUM, on transmit the adapter if ip_summed is set
will be handed an unchecksummed frame with the offset to stuff the checksum at.
Only difference between NETIF_F_HW_CSUM and NETIF_F_IP_CSUM is that IP_CSUM
means the device can handle IPV4 only.

NETIF_F_HW_CSUM has no impact on receive. The form of receive checksumming format
is up to the device. It can either put one's complement in skb->csum and
set ip_summed to CHECKSUM_HW or if device only reports checksum good then
set CHECKSUM_UNNECESSARY.

Several are a couple of subtleties to the receive processing:
* Meaning of ip_summed changes from tx to rx path and that has to be handled
  in code that does forwarding like bridges.
* If device only reports checksum okay vs bad. The packets marked bad might
  be another protocol, so should be passed up with CHECKSUM_NONE and let any
  checksum errors get detected in software.
* Checksum HW on receive should work better since then IPV6 and nested protocols like
  VLAN's can be handled.

> Following are some specific questions:
> 1. On Tx, our adapter supports checksumming of TCP/UDP over IPv4 and IPv6.
> This computation is TCP/UDP specific. Does the checksum calculation need to
> be more generic ? Also, skbuff.h says that the checksum needs to be placed
> at a specific location(skb->h.raw+skb->csum). I guess this means the adapter
> needs to pass back the checksum to host driver after transmission. What
> happens in case of TSO ?
> 2. On Rx, is it suffficient if we place the L4 checksum in skb->csum ? What
> about L3 checksum ?
> 

The L3 checksum (IP) is always computed. Since the header is in CPU cache anyway
it is faster that way.

  reply	other threads:[~2006-07-26 19:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2006-07-26 17:28 H/W requirements for NETIF_F_HW_CSUM Ravinandan Arakali
2006-07-26 19:16 ` Stephen Hemminger [this message]
2006-07-26 19:34   ` Ravinandan Arakali
2006-07-26 21:07     ` David Miller

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20060726121627.724c6652@localhost.localdomain \
    --to=shemminger@osdl.org \
    --cc=Ananda.Raju@neterion.com \
    --cc=Andrew.LaCroix@neterion.com \
    --cc=Mike.Doyle@neterion.com \
    --cc=Steve.Whitaker@neterion.com \
    --cc=dave.fenton@neterion.com \
    --cc=leonid.grossman@neterion.com \
    --cc=netdev@vger.kernel.org \
    --cc=ravinandan.arakali@neterion.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).