[NET]: Add ethtool support for NETIF_F_HW_CSUM.

Signed-off-by: Jon Mason <jdmason@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Jon Mason and committed by
David S. Miller
69f6a0fa 37e20a66

+12 -1
+1
include/linux/ethtool.h
··· 256 256 u32 ethtool_op_get_link(struct net_device *dev); 257 257 u32 ethtool_op_get_tx_csum(struct net_device *dev); 258 258 int ethtool_op_set_tx_csum(struct net_device *dev, u32 data); 259 + int ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data); 259 260 u32 ethtool_op_get_sg(struct net_device *dev); 260 261 int ethtool_op_set_sg(struct net_device *dev, u32 data); 261 262 u32 ethtool_op_get_tso(struct net_device *dev);
+11 -1
net/core/ethtool.c
··· 29 29 30 30 u32 ethtool_op_get_tx_csum(struct net_device *dev) 31 31 { 32 - return (dev->features & NETIF_F_IP_CSUM) != 0; 32 + return (dev->features & (NETIF_F_IP_CSUM | NETIF_F_HW_CSUM)) != 0; 33 33 } 34 34 35 35 int ethtool_op_set_tx_csum(struct net_device *dev, u32 data) ··· 42 42 return 0; 43 43 } 44 44 45 + int ethtool_op_set_tx_hw_csum(struct net_device *dev, u32 data) 46 + { 47 + if (data) 48 + dev->features |= NETIF_F_HW_CSUM; 49 + else 50 + dev->features &= ~NETIF_F_HW_CSUM; 51 + 52 + return 0; 53 + } 45 54 u32 ethtool_op_get_sg(struct net_device *dev) 46 55 { 47 56 return (dev->features & NETIF_F_SG) != 0; ··· 832 823 EXPORT_SYMBOL(ethtool_op_set_sg); 833 824 EXPORT_SYMBOL(ethtool_op_set_tso); 834 825 EXPORT_SYMBOL(ethtool_op_set_tx_csum); 826 + EXPORT_SYMBOL(ethtool_op_set_tx_hw_csum);