igb: retire the RX_CSUM flag and use the netdev flag instead
authorAlexander Duyck <alexander.h.duyck@intel.com>
Fri, 26 Aug 2011 07:45:57 +0000 (07:45 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Sat, 8 Oct 2011 05:47:25 +0000 (22:47 -0700)
Since the netdev now has its' own checksum flag to indicate if Rx checksum
is enabled we might as well use that instead of using the ring flag.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Tested-by: Aaron Brown <aaron.f.brown@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/igb/igb.h
drivers/net/ethernet/intel/igb/igb_main.c

index 91f90fe..fde381a 100644 (file)
@@ -245,7 +245,6 @@ struct igb_ring {
 };
 
 enum e1000_ring_flags_t {
-       IGB_RING_FLAG_RX_CSUM,
        IGB_RING_FLAG_RX_SCTP_CSUM,
        IGB_RING_FLAG_TX_CTX_IDX,
        IGB_RING_FLAG_TX_DETECT_HANG
index ec715f4..cae4abb 100644 (file)
@@ -732,8 +732,6 @@ static int igb_alloc_queues(struct igb_adapter *adapter)
                ring->dev = &adapter->pdev->dev;
                ring->netdev = adapter->netdev;
                ring->numa_node = adapter->node;
-               /* enable rx checksum */
-               set_bit(IGB_RING_FLAG_RX_CSUM, &ring->flags);
                /* set flag indicating ring supports SCTP checksum offload */
                if (adapter->hw.mac.type >= e1000_82576)
                        set_bit(IGB_RING_FLAG_RX_SCTP_CSUM, &ring->flags);
@@ -1811,19 +1809,8 @@ static u32 igb_fix_features(struct net_device *netdev, u32 features)
 
 static int igb_set_features(struct net_device *netdev, u32 features)
 {
-       struct igb_adapter *adapter = netdev_priv(netdev);
-       int i;
        u32 changed = netdev->features ^ features;
 
-       for (i = 0; i < adapter->num_rx_queues; i++) {
-               if (features & NETIF_F_RXCSUM)
-                       set_bit(IGB_RING_FLAG_RX_CSUM,
-                               &adapter->rx_ring[i]->flags);
-               else
-                       clear_bit(IGB_RING_FLAG_RX_CSUM,
-                                 &adapter->rx_ring[i]->flags);
-       }
-
        if (changed & NETIF_F_HW_VLAN_RX)
                igb_vlan_mode(netdev, features);
 
@@ -5807,9 +5794,12 @@ static inline void igb_rx_checksum(struct igb_ring *ring,
 {
        skb_checksum_none_assert(skb);
 
-       /* Ignore Checksum bit is set or checksum is disabled through ethtool */
-       if (!test_bit(IGB_RING_FLAG_RX_CSUM, &ring->flags) ||
-            (status_err & E1000_RXD_STAT_IXSM))
+       /* Ignore Checksum bit is set */
+       if (status_err & E1000_RXD_STAT_IXSM)
+               return;
+
+       /* Rx checksum disabled via ethtool */
+       if (!(ring->netdev->features & NETIF_F_RXCSUM))
                return;
 
        /* TCP/UDP checksum error bit is set */