Merge branch 'ipoib' into for-next
[linux-2.6.git] / drivers / infiniband / ulp / ipoib / ipoib_ethtool.c
index 66af5c1..d10b4ec 100644 (file)
@@ -42,15 +42,20 @@ static void ipoib_get_drvinfo(struct net_device *netdev,
        strncpy(drvinfo->driver, "ipoib", sizeof(drvinfo->driver) - 1);
 }
 
+static u32 ipoib_get_rx_csum(struct net_device *dev)
+{
+       struct ipoib_dev_priv *priv = netdev_priv(dev);
+       return test_bit(IPOIB_FLAG_CSUM, &priv->flags) &&
+               !test_bit(IPOIB_FLAG_ADMIN_CM, &priv->flags);
+}
+
 static int ipoib_get_coalesce(struct net_device *dev,
                              struct ethtool_coalesce *coal)
 {
        struct ipoib_dev_priv *priv = netdev_priv(dev);
 
        coal->rx_coalesce_usecs = priv->ethtool.coalesce_usecs;
-       coal->tx_coalesce_usecs = priv->ethtool.coalesce_usecs;
        coal->rx_max_coalesced_frames = priv->ethtool.max_coalesced_frames;
-       coal->tx_max_coalesced_frames = priv->ethtool.max_coalesced_frames;
 
        return 0;
 }
@@ -62,10 +67,8 @@ static int ipoib_set_coalesce(struct net_device *dev,
        int ret;
 
        /*
-        * Since IPoIB uses a single CQ for both rx and tx, we assume
-        * that rx params dictate the configuration.  These values are
-        * saved in the private data and returned when ipoib_get_coalesce()
-        * is called.
+        * These values are saved in the private data and returned
+        * when ipoib_get_coalesce() is called
         */
        if (coal->rx_coalesce_usecs       > 0xffff ||
            coal->rx_max_coalesced_frames > 0xffff)
@@ -78,8 +81,6 @@ static int ipoib_set_coalesce(struct net_device *dev,
                return ret;
        }
 
-       coal->tx_coalesce_usecs       = coal->rx_coalesce_usecs;
-       coal->tx_max_coalesced_frames = coal->rx_max_coalesced_frames;
        priv->ethtool.coalesce_usecs       = coal->rx_coalesce_usecs;
        priv->ethtool.max_coalesced_frames = coal->rx_max_coalesced_frames;
 
@@ -129,7 +130,7 @@ static void ipoib_get_ethtool_stats(struct net_device *dev,
 
 static const struct ethtool_ops ipoib_ethtool_ops = {
        .get_drvinfo            = ipoib_get_drvinfo,
-       .get_tso                = ethtool_op_get_tso,
+       .get_rx_csum            = ipoib_get_rx_csum,
        .get_coalesce           = ipoib_get_coalesce,
        .set_coalesce           = ipoib_set_coalesce,
        .get_flags              = ethtool_op_get_flags,