igb: only support SRRCTL_DROP_EN when using multiple queues
authorNick Nunley <nicholasx.d.nunley@intel.com>
Wed, 17 Feb 2010 01:03:38 +0000 (01:03 +0000)
committerDavid S. Miller <davem@davemloft.net>
Wed, 17 Feb 2010 21:21:35 +0000 (13:21 -0800)
The SRRCTL.DROP_EN bit should only be set when we are supporting
multiple queues. This bit is meant to prevent head of line blocking
and is unnecessary in the single queue case.

Signed-off-by: Nicholas Nunley <nicholasx.d.nunley@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/igb/igb_main.c

index 4ccc7fc70f53ed2e1082bce8d8925786938941b1..b989b34a4adb2e039a65c81d3547aa0f90c189b0 100644 (file)
@@ -2595,6 +2595,9 @@ void igb_configure_rx_ring(struct igb_adapter *adapter,
                         E1000_SRRCTL_BSIZEPKT_SHIFT;
                srrctl |= E1000_SRRCTL_DESCTYPE_ADV_ONEBUF;
        }
+       /* Only set Drop Enable if we are supporting multiple queues */
+       if (adapter->vfs_allocated_count || adapter->num_rx_queues > 1)
+               srrctl |= E1000_SRRCTL_DROP_EN;
 
        wr32(E1000_SRRCTL(reg_idx), srrctl);