• Alexander Duyck's avatar
    i40e/i40evf: Allow up to 12K bytes of data per Tx descriptor instead of 8K · 5c4654da
    Alexander Duyck authored
    From what I can tell the practical 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
    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
    efficiency 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: default avatarAlexander Duyck <aduyck@mirantis.com>
    Tested-by: default avatarAndrew Bowers <andrewx.bowers@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    5c4654da
i40e_txrx.h 14.3 KB