OSDN Git Service

ixgbe: move setting RSC into a separate function
authorEmil Tantilov <emil.s.tantilov@intel.com>
Fri, 13 May 2011 02:22:40 +0000 (02:22 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Fri, 24 Jun 2011 05:45:44 +0000 (22:45 -0700)
Move setting RSC into a separate function to allow for reuse in other
parts of the code.

Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ixgbe/ixgbe_ethtool.c

index 2965b6e..405c5ba 100644 (file)
@@ -459,6 +459,21 @@ static int ixgbe_set_rx_csum(struct net_device *netdev, u32 data)
        return 0;
 }
 
+static void ixgbe_set_rsc(struct ixgbe_adapter *adapter)
+{
+       int i;
+
+       for (i = 0; i < adapter->num_rx_queues; i++) {
+               struct ixgbe_ring *ring = adapter->rx_ring[i];
+               if (adapter->flags2 & IXGBE_FLAG2_RSC_ENABLED) {
+                       set_ring_rsc_enabled(ring);
+                       ixgbe_configure_rscctl(adapter, ring);
+               } else {
+                       ixgbe_clear_rscctl(adapter, ring);
+               }
+       }
+}
+
 static u32 ixgbe_get_tx_csum(struct net_device *netdev)
 {
        return (netdev->features & NETIF_F_IP_CSUM) != 0;
@@ -2281,25 +2296,12 @@ static int ixgbe_set_flags(struct net_device *netdev, u32 data)
                } else {
                        adapter->flags2 ^= IXGBE_FLAG2_RSC_ENABLED;
                        switch (adapter->hw.mac.type) {
+                       case ixgbe_mac_X540:
+                               ixgbe_set_rsc(adapter);
+                               break;
                        case ixgbe_mac_82599EB:
                                need_reset = true;
                                break;
-                       case ixgbe_mac_X540: {
-                               int i;
-                               for (i = 0; i < adapter->num_rx_queues; i++) {
-                                       struct ixgbe_ring *ring =
-                                                         adapter->rx_ring[i];
-                                       if (adapter->flags2 &
-                                           IXGBE_FLAG2_RSC_ENABLED) {
-                                               ixgbe_configure_rscctl(adapter,
-                                                                      ring);
-                                       } else {
-                                               ixgbe_clear_rscctl(adapter,
-                                                                  ring);
-                                       }
-                               }
-                       }
-                               break;
                        default:
                                break;
                        }