ixgbe: fix poll loop for FDIRCTRL.INIT_DONE bit
authorEmil Tantilov <emil.s.tantilov@intel.com>
Thu, 20 Sep 2012 03:33:51 +0000 (03:33 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Wed, 3 Oct 2012 15:36:11 +0000 (08:36 -0700)
The loop in ixgbe_reinit_fdir_tables_82599() only polls for up to 100us
resulting in failures to update the FDIR filter table at 1Gbps and 10Gbps
when under load.

The poll times for FDIRCTRL.INIT_DONE are 55us, 550us and 5.5ms for 10Gbps,
1Gbps and 100Mbps respectively.

This patch sets the wait time to be the same as in ixgbe_fdir_enable_82599()

Reported-by: Bhushan <shashi-sm@users.sf.net>
Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_82599.c

index 18bf08c9d7a4428e3a82f9f29a5837fddc3f6860..1077cb2b38db15f4123eca7d9d71492df86b0a05 100644 (file)
@@ -1099,7 +1099,7 @@ s32 ixgbe_reinit_fdir_tables_82599(struct ixgbe_hw *hw)
                if (IXGBE_READ_REG(hw, IXGBE_FDIRCTRL) &
                                   IXGBE_FDIRCTRL_INIT_DONE)
                        break;
-               udelay(10);
+               usleep_range(1000, 2000);
        }
        if (i >= IXGBE_FDIR_INIT_DONE_POLL) {
                hw_dbg(hw, "Flow Director Signature poll time exceeded!\n");