aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/igb/igb_ethtool.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/igb/igb_ethtool.c')
-rw-r--r--drivers/net/igb/igb_ethtool.c13
1 files changed, 8 insertions, 5 deletions
diff --git a/drivers/net/igb/igb_ethtool.c b/drivers/net/igb/igb_ethtool.c
index f62430b1f759..c44dedec1265 100644
--- a/drivers/net/igb/igb_ethtool.c
+++ b/drivers/net/igb/igb_ethtool.c
@@ -279,17 +279,20 @@ static int igb_set_pauseparam(struct net_device *netdev,
279static u32 igb_get_rx_csum(struct net_device *netdev) 279static u32 igb_get_rx_csum(struct net_device *netdev)
280{ 280{
281 struct igb_adapter *adapter = netdev_priv(netdev); 281 struct igb_adapter *adapter = netdev_priv(netdev);
282 return !(adapter->flags & IGB_FLAG_RX_CSUM_DISABLED); 282 return !!(adapter->rx_ring[0].flags & IGB_RING_FLAG_RX_CSUM);
283} 283}
284 284
285static int igb_set_rx_csum(struct net_device *netdev, u32 data) 285static int igb_set_rx_csum(struct net_device *netdev, u32 data)
286{ 286{
287 struct igb_adapter *adapter = netdev_priv(netdev); 287 struct igb_adapter *adapter = netdev_priv(netdev);
288 int i;
288 289
289 if (data) 290 for (i = 0; i < adapter->num_rx_queues; i++) {
290 adapter->flags &= ~IGB_FLAG_RX_CSUM_DISABLED; 291 if (data)
291 else 292 adapter->rx_ring[i].flags |= IGB_RING_FLAG_RX_CSUM;
292 adapter->flags |= IGB_FLAG_RX_CSUM_DISABLED; 293 else
294 adapter->rx_ring[i].flags &= ~IGB_RING_FLAG_RX_CSUM;
295 }
293 296
294 return 0; 297 return 0;
295} 298}