]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
i40e: Rewrite Flow Director busy wait loop
authorAlexander Duyck <alexander.h.duyck@intel.com>
Wed, 14 Sep 2016 23:24:32 +0000 (16:24 -0700)
committerDhaval Giani <dhaval.giani@oracle.com>
Wed, 8 Mar 2017 00:40:08 +0000 (19:40 -0500)
Orabug: 24568124

We can reorder the busy wait loop at the start of the Flow Director
transmit function to reduce the overall code size while still retaining the
same functionality.  As such I am taking advantage of the opportunity to do
so.

Change-ID: I34c403ca001953c6ac9816e65d5305e73d869026
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>
(cherry picked from commit ed245406da1409437f9d2c4e7c69112fb255964c)
Signed-off-by: Brian Maly <brian.maly@oracle.com>
Signed-off-by: Dhaval Giani <dhaval.giani@oracle.com>
drivers/net/ethernet/intel/i40e/i40e_txrx.c

index 593d4a1683dc06adba8cae8aea70d3be09416429..d8ee477b68ad2b29ad9d152a9837148c7775d076 100644 (file)
@@ -123,7 +123,6 @@ static int i40e_program_fdir_filter(struct i40e_fdir_filter *fdir_data,
        struct device *dev;
        dma_addr_t dma;
        u32 td_cmd = 0;
-       u16 delay = 0;
        u16 i;
 
        /* find existing FDIR VSI */
@@ -138,15 +137,11 @@ static int i40e_program_fdir_filter(struct i40e_fdir_filter *fdir_data,
        dev = tx_ring->dev;
 
        /* we need two descriptors to add/del a filter and we can wait */
-       do {
-               if (I40E_DESC_UNUSED(tx_ring) > 1)
-                       break;
+       for (i = I40E_FD_CLEAN_DELAY; I40E_DESC_UNUSED(tx_ring) < 2; i--) {
+               if (!i)
+                       return -EAGAIN;
                msleep_interruptible(1);
-               delay++;
-       } while (delay < I40E_FD_CLEAN_DELAY);
-
-       if (!(I40E_DESC_UNUSED(tx_ring) > 1))
-               return -EAGAIN;
+       }
 
        dma = dma_map_single(dev, raw_packet,
                             I40E_FDIR_MAX_RAW_PACKET_SIZE, DMA_TO_DEVICE);