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.
next prev parent 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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.