i40e: Bug fix for FDIR replay logic
authorAnjali Singhai Jain <anjali.singhai@intel.com>
Tue, 11 Feb 2014 08:26:30 +0000 (08:26 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 14 Mar 2014 23:30:03 +0000 (16:30 -0700)
The FDIR replay logic was being run a little too soon (before the
queues were enabled) and hence the tail bump was not effective till
a later transaction happened on the queue.

Change-ID: Icfd7cd2e79fc3cae3cbd3f703a2b3a148b4e7bf6
Signed-off-by: Anjali Singhai Jain <anjali.singhai@intel.com>
Signed-off-by: Catherine Sullivan <catherine.sullivan@intel.com>
Tested-by: Kavindya Deegala <kavindya.s.deegala@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/i40e/i40e_main.c

index 6185856689bc615896db6b9a6eb4f149e9a03ed9..669715bb340079987abffe12929851d1f0128c47 100644 (file)
@@ -2456,8 +2456,6 @@ static int i40e_vsi_configure(struct i40e_vsi *vsi)
        i40e_set_vsi_rx_mode(vsi);
        i40e_restore_vlan(vsi);
        i40e_vsi_config_dcb_rings(vsi);
-       if (vsi->type == I40E_VSI_FDIR)
-               i40e_fdir_filter_restore(vsi);
        err = i40e_vsi_configure_tx(vsi);
        if (!err)
                err = i40e_vsi_configure_rx(vsi);
@@ -4088,6 +4086,10 @@ static int i40e_up_complete(struct i40e_vsi *vsi)
        } else if (vsi->netdev) {
                netdev_info(vsi->netdev, "NIC Link is Down\n");
        }
+
+       /* replay FDIR SB filters */
+       if (vsi->type == I40E_VSI_FDIR)
+               i40e_fdir_filter_restore(vsi);
        i40e_service_event_schedule(pf);
 
        return 0;