All of lore.kernel.org
 help / color / mirror / Atom feed
From: Edward Cree <ecree@solarflare.com>
To: Alexander Duyck <aduyck@mirantis.com>, <netdev@vger.kernel.org>,
	<tom@herbertland.com>
Subject: Re: [RFC PATCH 1/4] net: Move GSO csum into SKB_GSO_CB
Date: Thu, 14 Jan 2016 11:10:41 +0000	[thread overview]
Message-ID: <56978231.30002@solarflare.com> (raw)
In-Reply-To: <20160114051202.5119.50169.stgit@localhost.localdomain>

On 14/01/16 05:12, Alexander Duyck wrote:
> This patch moves the checksum maintained by GSO out of skb->csum and into
> the GSO context block in order to allow for us to work on outer checksums
> while maintaining the inner checksum offsets in the case of the inner
> checksum being offloaded, while the outer checksums will be computed.
>
> While updating the code I also did a minor cleanu-up on gso_make_checksum.
> The change is mostly to make it so that we store the values and compute the
> checksum instead of computing the checksum and then storing the values we
> needed to update.
>
> Signed-off-by: Alexander Duyck <aduyck@mirantis.com>
> ---
>  include/linux/skbuff.h |   14 +++++++-------
>  net/core/skbuff.c      |   16 +++++++++-------
>  2 files changed, 16 insertions(+), 14 deletions(-)
>
> diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
> index 6b6bd42d6134..0150abb81929 100644
> --- a/include/linux/skbuff.h
> +++ b/include/linux/skbuff.h
> @@ -3532,6 +3532,7 @@ static inline struct sec_path *skb_sec_path(struct sk_buff *skb)
>  struct skb_gso_cb {
>  	int	mac_offset;
>  	int	encap_level;
> +	__wsum	csum;
>  	__u16	csum_start;
>  };
>  #define SKB_GSO_CB(skb) ((struct skb_gso_cb *)(skb)->cb)
> @@ -3567,15 +3568,14 @@ static inline int gso_pskb_expand_head(struct sk_buff *skb, int extra)
>   */
>  static inline __sum16 gso_make_checksum(struct sk_buff *skb, __wsum res)
>  {
> -	int plen = SKB_GSO_CB(skb)->csum_start - skb_headroom(skb) -
> -		   skb_transport_offset(skb);
> -	__wsum partial;
> +	unsigned char *csum_start = skb_transport_header(skb);
> +	int plen = (skb->head + SKB_GSO_CB(skb)->csum_start) - csum_start;
> +	__wsum partial = SKB_GSO_CB(skb)->csum;
>  
> -	partial = csum_partial(skb_transport_header(skb), plen, skb->csum);
> -	skb->csum = res;
> -	SKB_GSO_CB(skb)->csum_start -= plen;
> +	SKB_GSO_CB(skb)->csum = res;
> +	SKB_GSO_CB(skb)->csum_start = csum_start - skb->head;
>  
> -	return csum_fold(partial);
> +	return csum_fold(csum_partial(csum_start, plen, partial));
>  }
Update the comment above this function?

Apart from that this looks good.

  reply	other threads:[~2016-01-14 11:10 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-01-14  5:11 [RFC PATCH 0/4] Implement local checksum offload support for tunnel segmentation Alexander Duyck
2016-01-14  5:12 ` [RFC PATCH 1/4] net: Move GSO csum into SKB_GSO_CB Alexander Duyck
2016-01-14 11:10   ` Edward Cree [this message]
2016-01-14  5:12 ` [RFC PATCH 2/4] net: Update remote checksum segmentation to support use of GSO checksum Alexander Duyck
2016-01-14  5:12 ` [RFC PATCH 3/4] net: Store checksum result for offloaded GSO checksums Alexander Duyck
2016-01-14 12:02   ` Edward Cree
2016-01-14  5:12 ` [RFC PATCH 4/4] net: Allow UDP and GRE to use inner checksum offloads with outer checksums needed Alexander Duyck

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=56978231.30002@solarflare.com \
    --to=ecree@solarflare.com \
    --cc=aduyck@mirantis.com \
    --cc=netdev@vger.kernel.org \
    --cc=tom@herbertland.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.