From: "Ravinandan Arakali" <ravinandan.arakali@neterion.com>
To: "'Stephen Hemminger'" <shemminger@osdl.org>
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:34:28 -0700 [thread overview]
Message-ID: <006b01c6b0ea$82ed3f60$4510100a@pc.s2io.com> (raw)
In-Reply-To: <20060726121627.724c6652@localhost.localdomain>
Steve,
Thanks for the response.
Pls see my comments below.
> -----Original Message-----
> From: Stephen Hemminger [mailto:shemminger@osdl.org]
> Sent: Wednesday, July 26, 2006 12:16 PM
> 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)
> Subject: Re: H/W requirements for NETIF_F_HW_CSUM
>
>
> 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.
Since our adapter does IPv4 and IPv6 checksum, do we then satisfy
the requirements to claim NETIF_F_HW_CSUM on Tx side ?
Also, for non-TSO, we can stuff the checksum at specified offset
in skb. What about TSO frames ?
>
> 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.
The reason for thinking that NETIF_F_HW_CSUM and CHECKSUM_UNNECESSARY
don't go together was a comment from Jeff way back in '04 when our
driver was initially submitted. Quoting from that mail:
"You CANNOT use NETIF_F_HW_CSUM, when your hardware does not provide the
checksum value. You must use NETIF_F_IP_CSUM. Your use of
NETIF_F_HW_CSUM + CHECKSUM_UNNECESSARY is flat out incorrect."
>
> 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:35 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
2006-07-26 19:34 ` Ravinandan Arakali [this message]
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='006b01c6b0ea$82ed3f60$4510100a@pc.s2io.com' \
--to=ravinandan.arakali@neterion.com \
--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=shemminger@osdl.org \
/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).