]> git.baikalelectronics.ru Git - kernel.git/commit
i40e: Limit TX descriptor count in cases where frag size is greater than 16K
authorAlexander Duyck <alexander.h.duyck@intel.com>
Wed, 7 Sep 2016 01:05:04 +0000 (18:05 -0700)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 23 Sep 2016 05:33:41 +0000 (22:33 -0700)
commit9ed16a277551180080fcec20a5aa06585778b0fe
tree99c5382994464f7ea815e17392f38723fd6025fe
parent5f7592cf6cceda5e71d692c4834fc04add163cbb
i40e: Limit TX descriptor count in cases where frag size is greater than 16K

The i40e driver was incorrectly assuming that we would always be pulling
no more than 1 descriptor from each fragment.  It is in fact possible for
us to end up with the case where 2 descriptors worth of data may be pulled
when a frame is larger than one of the pieces generated when aligning the
payload to either 4K or pieces smaller than 16K.

To adjust for this we just need to make certain to test all the way to the
end of the fragments as it is possible for us to span 2 descriptors in the
block before us so we need to guarantee that even the last 6 descriptors
have enough data to fill a full frame.

Change-ID: Ic2ecb4d6b745f447d334e66c14002152f50e2f99
Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Andrew Bowers <andrewx.bowers@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_txrx.c
drivers/net/ethernet/intel/i40evf/i40e_txrx.c