[Intel-wired-lan] [next PATCH 4/4] i40e/i40evf: Allow up to 12K bytes of data per Tx descriptor instead of 8K

Jeff Kirsher jeffrey.t.kirsher at intel.com
Wed Feb 17 21:38:28 UTC 2016


On Wed, 2016-02-17 at 11:03 -0800, Alexander Duyck wrote:
> >From what I can tell the practial limitation on the size of the Tx
> data
> buffer is the fact that the Tx descriptor is limited to 14 bits.  As
> such
> we cannot use 16K as is typically used on the other Intel drivers. 
> However
> artificially limiting ourselves to 8K can be expensive as this means
> that
> we will consume up to 10 descriptors (1 context, 1 for header, and 9
> for
> an payload, non-8K aligned) in a single send.
> 
> I propose that we can reduce this by increasing the maximum data for
> a 4K
> aligned block to 12K.  We can reduce the descriptors used for a 32K
> aligned
> block by 1 by increasing the size like this.  In addition we still
> have the
> 4K - 1 of space that is still unused.  We can use this as a bit of
> extra
> padding when dealing with data that is not aligned to 4K.
> 
> By aligning the descriptors after the first to 4K we can improve the
> effiency of PCIe accesses as we can avoid using byte enables and can
> fetch
> full TLP transactions after the first fetch of the buffer.  This
> helps to
> improve PCIe efficiency.  Below is the results of testing before and
> after
> with this patch:
> 
> Recv   Send   Send                         Utilization      Service
> Demand
> Socket Socket Message  Elapsed             Send     Recv    Send   
> Recv
> Size   Size   Size     Time    Throughput  local    remote  local  
> remote
> bytes  bytes  bytes    secs.   10^6bits/s  % S      % U     us/KB  
> us/KB
> Before:
> 87380  16384  16384    10.00     33682.24  20.27    -1.00   0.592  
> -1.00
> After:
> 87380  16384  16384    10.00     34204.08  20.54    -1.00   0.590  
> -1.00
> 
> So the net result of this patch is that we have a small gain in
> throughput
> due to a reduction in overhead for putting together the frame.
> 
> Signed-off-by: Alexander Duyck <aduyck at mirantis.com>
> ---
>  drivers/net/ethernet/intel/i40e/i40e_txrx.c   |   13 ++++++---
>  drivers/net/ethernet/intel/i40e/i40e_txrx.h   |   35
> +++++++++++++++++++++++--
>  drivers/net/ethernet/intel/i40evf/i40e_txrx.c |   13 ++++++---
>  drivers/net/ethernet/intel/i40evf/i40e_txrx.h |   35
> +++++++++++++++++++++++--
>  4 files changed, 82 insertions(+), 14 deletions(-)

Getting a compile error after applying this patch to my tree, here is
what I am getting:

drivers/net/ethernet/intel/i40e/i40e_fcoe.c: In function
‘i40e_fcoe_xmit_frame’:
drivers/net/ethernet/intel/i40e/i40e_fcoe.c:1374:11: error: implicit
declaration of function ‘TXD_USE_COUNT’ [-Werror=implicit-function-
declaration]
   count = TXD_USE_COUNT(skb->len);
           ^
cc1: some warnings being treated as errors
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: This is a digitally signed message part
URL: <http://lists.osuosl.org/pipermail/intel-wired-lan/attachments/20160217/63bd49de/attachment.asc>


More information about the Intel-wired-lan mailing list