mv643xx_eth: export rx csum get/set methods via ethtool
authorLennert Buytenhek <buytenh@wantstofly.org>
Thu, 12 Feb 2009 14:07:56 +0000 (14:07 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 16 Feb 2009 07:43:56 +0000 (23:43 -0800)
Signed-off-by: Lennert Buytenhek <buytenh@marvell.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/mv643xx_eth.c

index 89eaf3b3c760795c1d010df6a9a3f89e7ca86e11..3bbbd9410c9c468f024f1fe6537f372386b005f5 100644 (file)
@@ -1528,6 +1528,24 @@ mv643xx_eth_set_ringparam(struct net_device *dev, struct ethtool_ringparam *er)
        return 0;
 }
 
+static u32
+mv643xx_eth_get_rx_csum(struct net_device *dev)
+{
+       struct mv643xx_eth_private *mp = netdev_priv(dev);
+
+       return !!(rdlp(mp, PORT_CONFIG) & 0x02000000);
+}
+
+static int
+mv643xx_eth_set_rx_csum(struct net_device *dev, u32 rx_csum)
+{
+       struct mv643xx_eth_private *mp = netdev_priv(dev);
+
+       wrlp(mp, PORT_CONFIG, rx_csum ? 0x02000000 : 0x00000000);
+
+       return 0;
+}
+
 static void mv643xx_eth_get_strings(struct net_device *dev,
                                    uint32_t stringset, uint8_t *data)
 {
@@ -1586,6 +1604,8 @@ static const struct ethtool_ops mv643xx_eth_ethtool_ops = {
        .set_coalesce           = mv643xx_eth_set_coalesce,
        .get_ringparam          = mv643xx_eth_get_ringparam,
        .set_ringparam          = mv643xx_eth_set_ringparam,
+       .get_rx_csum            = mv643xx_eth_get_rx_csum,
+       .set_rx_csum            = mv643xx_eth_set_rx_csum,
        .set_sg                 = ethtool_op_set_sg,
        .get_strings            = mv643xx_eth_get_strings,
        .get_ethtool_stats      = mv643xx_eth_get_ethtool_stats,