|
@@ -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;
|
|
|
}
|