netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Alexander Duyck <alexander.duyck@gmail.com>
To: Eric Dumazet <eric.dumazet@gmail.com>
Cc: Jeff Kirsher <jeffrey.t.kirsher@intel.com>,
	davem@davemloft.net,
	Alexander Duyck <alexander.h.duyck@intel.com>,
	netdev@vger.kernel.org, gospo@redhat.com, sassmann@redhat.com
Subject: Re: [net-next 01/13] ixgbe: Add support for IPv6 and UDP to ixgbe_get_headlen
Date: Sat, 20 Oct 2012 13:39:22 -0700	[thread overview]
Message-ID: <50830BFA.5070409@gmail.com> (raw)
In-Reply-To: <1350720070.13333.359.camel@edumazet-glaptop>

On 10/20/2012 1:01 AM, Eric Dumazet wrote:
> On Fri, 2012-10-19 at 23:25 -0700, Jeff Kirsher wrote:
>> From: Alexander Duyck <alexander.h.duyck@intel.com>
>>
>> This change adds support for IPv6 and UDP to ixgbe_get_headlen. The
>> advantage to this is that we can now handle ipv4/UDP, ipv6/TCP, and
>> ipv6/UDP with a single memcpy instead of having to do them in multiple
>> pskb_may_pull calls.
>>
>> A quick bit of testing shows that we increase throughput for a single
>> session of netperf from 8800Mpbs to about 9300Mpbs in the case of ipv6/TCP.
>> As such overall ipv6 performance should improve with this change.
>>
>> Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
>> Tested-by: Stephen Ko  <stephen.s.ko@intel.com>
>> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
>> ---
>>   drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 15 ++++++++++++++-
>>   1 file changed, 14 insertions(+), 1 deletion(-)
> Thats pretty interesting.
>
> Why this work is not done generically, so that all drivers can have
> benefit of it ?
>
> Even a driver not using fragments could have benefit, because we could
> prefetch() so that GRO stack is faster (no stall to get the last 2 bytes
> of a TCP header when timestamps are used)
>
> Thanks

The ixgbe_get_headlen function originally was written to handle the case 
where we were doing the hardware LRO/RSC feature but we weren't setting 
gso_size.  We were using it to get the size of the header so we could 
determine the average payload size of the frame.  When we switched over 
to page based receive the function came along with it and had actually 
prevented a performance regression for IPv4/TCP which this patch is 
fixing for the other supported protocols.  The main idea of this code is 
now to emulate what our hardware was doing in determining the length of 
the header when we had header-data split enabled.  I hadn't really 
thought of any way it could be used in a generic sense.  The function is 
essentially is built around several assumptions that only apply to the 
igb/ixgbe case such as the fact that the entire block being linear and 
the limitation of the protocols so that they match up with what we used 
to do for header-data split.

That being said, if there is a way for you to use it in the generic case 
feel free to copy the ixgbe version, rename it, and export it for use.  
The key bit for me is that I just need to be able to get the header 
length before calling eth_type_trans as I only want to do one memcpy for 
the entire header.

Thanks,

Alex

  reply	other threads:[~2012-10-20 20:39 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-10-20  6:25 [net-next 00/13][pull request] Intel Wired LAN Driver Updates Jeff Kirsher
2012-10-20  6:25 ` [net-next 01/13] ixgbe: Add support for IPv6 and UDP to ixgbe_get_headlen Jeff Kirsher
2012-10-20  8:01   ` Eric Dumazet
2012-10-20 20:39     ` Alexander Duyck [this message]
2012-10-20  6:25 ` [net-next 02/13] ixgbe: Add support for tracking the default user priority to SR-IOV Jeff Kirsher
2012-10-20  6:25 ` [net-next 03/13] ixgbe: Add support for GET_QUEUES message to get DCB configuration Jeff Kirsher
2012-10-20  6:25 ` [net-next 04/13] ixgbe: Enable support for VF API version 1.1 in the PF Jeff Kirsher
2012-10-20  6:25 ` [net-next 05/13] ixgbevf: Add VF DCB + SR-IOV support Jeff Kirsher
2012-10-20  6:26 ` [net-next 06/13] ixgbe: add WOL support for new subdevice id Jeff Kirsher
2012-10-20  6:26 ` [net-next 07/13] ixgbe: (PTP) refactor init, cyclecounter and reset Jeff Kirsher
2012-10-20  6:26 ` [net-next 08/13] ixgbe: using is_zero_ether_addr() to simplify the code Jeff Kirsher
2012-10-20  6:26 ` [net-next 09/13] ixgbe: Correcting small packet padding Jeff Kirsher
2012-10-20  6:26 ` [net-next 10/13] ixgbe: Drop unnecessary addition from ixgbe_set_rx_buffer_len Jeff Kirsher
2012-10-20  6:26 ` [net-next 11/13] ixgbe: Add function ixgbe_reset_pipeline_82599 Jeff Kirsher
2012-10-20  6:26 ` [net-next 12/13] ixgbe: Add support for pipeline reset Jeff Kirsher
2012-10-21 12:06   ` Martin Josefsson
2012-10-22 20:45     ` Skidmore, Donald C
2012-10-20  6:26 ` [net-next 13/13] ixgbe: Fix possible memory leak in ixgbe_set_ringparam Jeff Kirsher

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=50830BFA.5070409@gmail.com \
    --to=alexander.duyck@gmail.com \
    --cc=alexander.h.duyck@intel.com \
    --cc=davem@davemloft.net \
    --cc=eric.dumazet@gmail.com \
    --cc=gospo@redhat.com \
    --cc=jeffrey.t.kirsher@intel.com \
    --cc=netdev@vger.kernel.org \
    --cc=sassmann@redhat.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).