[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 u32 ethtool_op_get_link(struct net_device *dev); 257 u32 ethtool_op_get_tx_csum(struct net_device *dev); 258 int ethtool_op_set_tx_csum(struct net_device *dev, u32 data); 259 u32 ethtool_op_get_sg(struct net_device *dev); 260 int ethtool_op_set_sg(struct net_device *dev, u32 data); 261 u32 ethtool_op_get_tso(struct net_device *dev);
··· 256 u32 ethtool_op_get_link(struct net_device *dev); 257 u32 ethtool_op_get_tx_csum(struct net_device *dev); 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); 260 u32 ethtool_op_get_sg(struct net_device *dev); 261 int ethtool_op_set_sg(struct net_device *dev, u32 data); 262 u32 ethtool_op_get_tso(struct net_device *dev);
+11 -1
net/core/ethtool.c
··· 29 30 u32 ethtool_op_get_tx_csum(struct net_device *dev) 31 { 32 - return (dev->features & NETIF_F_IP_CSUM) != 0; 33 } 34 35 int ethtool_op_set_tx_csum(struct net_device *dev, u32 data) ··· 42 return 0; 43 } 44 45 u32 ethtool_op_get_sg(struct net_device *dev) 46 { 47 return (dev->features & NETIF_F_SG) != 0; ··· 832 EXPORT_SYMBOL(ethtool_op_set_sg); 833 EXPORT_SYMBOL(ethtool_op_set_tso); 834 EXPORT_SYMBOL(ethtool_op_set_tx_csum);
··· 29 30 u32 ethtool_op_get_tx_csum(struct net_device *dev) 31 { 32 + return (dev->features & (NETIF_F_IP_CSUM | NETIF_F_HW_CSUM)) != 0; 33 } 34 35 int ethtool_op_set_tx_csum(struct net_device *dev, u32 data) ··· 42 return 0; 43 } 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 + } 54 u32 ethtool_op_get_sg(struct net_device *dev) 55 { 56 return (dev->features & NETIF_F_SG) != 0; ··· 823 EXPORT_SYMBOL(ethtool_op_set_sg); 824 EXPORT_SYMBOL(ethtool_op_set_tso); 825 EXPORT_SYMBOL(ethtool_op_set_tx_csum); 826 + EXPORT_SYMBOL(ethtool_op_set_tx_hw_csum);