From: Zoltan Kiss <zoltan.kiss@citrix.com>
To: <ian.campbell@citrix.com>, <wei.liu2@citrix.com>,
<xen-devel@lists.xenproject.org>, <netdev@vger.kernel.org>,
<linux-kernel@vger.kernel.org>, <jonathan.davies@citrix.com>,
<paul.durrant@citrix.com>
Cc: Zoltan Kiss <zoltan.kiss@citrix.com>
Subject: Re: [PATCH net-next] xen-netback: Fix pull size in checksum_setup_ip*
Date: Fri, 29 Nov 2013 20:26:15 +0000 [thread overview]
Message-ID: <5298F867.3030200@citrix.com> (raw)
In-Reply-To: <1385751407-9365-1-git-send-email-zoltan.kiss@citrix.com>
Or would it make sense to drop header_size and use off + something as
function parameters?
Zoli
On 29/11/13 18:56, Zoltan Kiss wrote:
> Before checksum setup we need to make sure we have enough data in linear
> buffer, so we do a pull if not. The calculation of the required data counts
> with skb->network_header, which is the headroom size actually. This is not
> necessary, and can cause unreasonable pulling. I've also removed
> MAX_IPOPTLEN, as we only need the base header at that point.
>
> Signed-off-by: Zoltan Kiss <zoltan.kiss@citrix.com>
>
> ---
> drivers/net/xen-netback/netback.c | 24 ++++++++----------------
> 1 file changed, 8 insertions(+), 16 deletions(-)
>
> diff --git a/drivers/net/xen-netback/netback.c b/drivers/net/xen-netback/netback.c
> index 919b650..adadf76 100644
> --- a/drivers/net/xen-netback/netback.c
> +++ b/drivers/net/xen-netback/netback.c
> @@ -1169,8 +1169,7 @@ static int checksum_setup_ip(struct xenvif *vif, struct sk_buff *skb,
>
> off = sizeof(struct iphdr);
>
> - header_size = skb->network_header + off + MAX_IPOPTLEN;
> - maybe_pull_tail(skb, header_size);
> + maybe_pull_tail(skb, off);
>
> off = iph->ihl * 4;
>
> @@ -1183,8 +1182,7 @@ static int checksum_setup_ip(struct xenvif *vif, struct sk_buff *skb,
> if (recalculate_partial_csum) {
> struct tcphdr *tcph = tcp_hdr(skb);
>
> - header_size = skb->network_header +
> - off +
> + header_size = off +
> sizeof(struct tcphdr);
> maybe_pull_tail(skb, header_size);
>
> @@ -1201,8 +1199,7 @@ static int checksum_setup_ip(struct xenvif *vif, struct sk_buff *skb,
> if (recalculate_partial_csum) {
> struct udphdr *udph = udp_hdr(skb);
>
> - header_size = skb->network_header +
> - off +
> + header_size = off +
> sizeof(struct udphdr);
> maybe_pull_tail(skb, header_size);
>
> @@ -1241,8 +1238,7 @@ static int checksum_setup_ipv6(struct xenvif *vif, struct sk_buff *skb,
>
> off = sizeof(struct ipv6hdr);
>
> - header_size = skb->network_header + off;
> - maybe_pull_tail(skb, header_size);
> + maybe_pull_tail(skb, off);
>
> nexthdr = ipv6h->nexthdr;
>
> @@ -1254,8 +1250,7 @@ static int checksum_setup_ipv6(struct xenvif *vif, struct sk_buff *skb,
> case IPPROTO_ROUTING: {
> struct ipv6_opt_hdr *hp = (void *)(skb->data + off);
>
> - header_size = skb->network_header +
> - off +
> + header_size = off +
> sizeof(struct ipv6_opt_hdr);
> maybe_pull_tail(skb, header_size);
>
> @@ -1266,8 +1261,7 @@ static int checksum_setup_ipv6(struct xenvif *vif, struct sk_buff *skb,
> case IPPROTO_AH: {
> struct ip_auth_hdr *hp = (void *)(skb->data + off);
>
> - header_size = skb->network_header +
> - off +
> + header_size = off +
> sizeof(struct ip_auth_hdr);
> maybe_pull_tail(skb, header_size);
>
> @@ -1305,8 +1299,7 @@ static int checksum_setup_ipv6(struct xenvif *vif, struct sk_buff *skb,
> if (recalculate_partial_csum) {
> struct tcphdr *tcph = tcp_hdr(skb);
>
> - header_size = skb->network_header +
> - off +
> + header_size = off +
> sizeof(struct tcphdr);
> maybe_pull_tail(skb, header_size);
>
> @@ -1324,8 +1317,7 @@ static int checksum_setup_ipv6(struct xenvif *vif, struct sk_buff *skb,
> if (recalculate_partial_csum) {
> struct udphdr *udph = udp_hdr(skb);
>
> - header_size = skb->network_header +
> - off +
> + header_size = off +
> sizeof(struct udphdr);
> maybe_pull_tail(skb, header_size);
>
>
next prev parent reply other threads:[~2013-11-29 20:26 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-29 18:56 [PATCH net-next] xen-netback: Fix pull size in checksum_setup_ip* Zoltan Kiss
2013-11-29 20:26 ` Zoltan Kiss
2013-11-29 20:26 ` Zoltan Kiss [this message]
2013-12-02 9:42 ` Paul Durrant
2013-12-02 9:42 ` Paul Durrant
2013-11-30 21:10 ` David Miller
2013-11-30 21:10 ` David Miller
2013-12-02 13:04 ` Paul Durrant
2013-12-02 13:04 ` Paul Durrant
-- strict thread matches above, loose matches on Subject: below --
2013-11-29 18:56 Zoltan Kiss
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=5298F867.3030200@citrix.com \
--to=zoltan.kiss@citrix.com \
--cc=ian.campbell@citrix.com \
--cc=jonathan.davies@citrix.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=paul.durrant@citrix.com \
--cc=wei.liu2@citrix.com \
--cc=xen-devel@lists.xenproject.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 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.