[Intel-wired-lan] [next PATCH] ixgbe: Limit use of 2K buffers on architectures with 256B or larger cache lines

Bowers, AndrewX andrewx.bowers at intel.com
Tue Feb 14 19:40:58 UTC 2017


> -----Original Message-----
> From: Intel-wired-lan [mailto:intel-wired-lan-bounces at lists.osuosl.org] On
> Behalf Of Alexander Duyck
> Sent: Friday, February 03, 2017 9:20 AM
> To: intel-wired-lan at lists.osuosl.org; Kirsher, Jeffrey T
> <jeffrey.t.kirsher at intel.com>
> Subject: [Intel-wired-lan] [next PATCH] ixgbe: Limit use of 2K buffers on
> architectures with 256B or larger cache lines
> 
> From: Alexander Duyck <alexander.h.duyck at intel.com>
> 
> On architectures that have a cache line size larger than 64 Bytes we start
> running into issues where the amount of headroom for the frame starts
> shrinking.
> 
> The size of skb_shared_info on a system with a 64B L1 cache line size is 320.
> This increases to 384 with a 128B cache line, and 512 with a 256B cache line.
> 
> In addition the NET_SKB_PAD value increases as well consistent with the
> cache line size.  As a result when we get to a 256B cache line as seen on the
> s390 we end up 768 bytes used by padding and shared info leaving us with
> only 1280 bytes to use for data storage.  On architectures such as this we
> should default to using 3K Rx buffers out of a 8K page instead of trying to do
> 1.5K buffers out of a 4K page.
> 
> To take all of this into account I have added one small check so that we
> compare the max_frame to the amount of actual data we can store.  This was
> already occurring for igb, but I had overlooked it for ixgbe as it doesn't have
> strict limits for 82599 once we enable jumbo frames.  By adding this check we
> will automatically enable 3K Rx buffers as soon as the maximum frame size
> we can handle drops below the standard Ethernet MTU.
> 
> I also went through and fixed one small typo that I found where I had left an
> IGB in a variable name due to a copy/paste error.
> 
> Signed-off-by: Alexander Duyck <alexander.h.duyck at intel.com>
> ---
> 
> Testing Hints:
> 	If at all possible it would be best to try testing this patch on
> 	some other architectures such as PPC64.  In lieu of that just build
> 	testing via the kernel build robot will probably have to do.  The
> 	only architecture I can identify that might actually have an issue
> 	that this fixes is s390 which last I knew there was none of in the
> 	labs at Intel for testing.
> 
> 	Basic Rx testing will suffice otherwise.
> 
> 	Also I am okay with this patch just being merged into the earlier
> 	patch "ixgbe: Add support for padding packet" if you want to go
> 	that route.  I just figured it wasn't worth the trouble to resend
> 	the entire set for a minor issue.
> 
>  drivers/net/ethernet/intel/ixgbe/ixgbe.h      |    2 +-
>  drivers/net/ethernet/intel/ixgbe/ixgbe_main.c |    3 ++-
>  2 files changed, 3 insertions(+), 2 deletions(-)

Tested-by: Andrew Bowers <andrewx.bowers at intel.com>




More information about the Intel-wired-lan mailing list