ethtool: Call ethtool's get/set_settings callbacks with cleaned data
[cascardo/linux.git] / include / rdma / ib_addr.h
index b5fc9f3..ae8c68f 100644 (file)
@@ -217,18 +217,19 @@ static inline enum ib_mtu iboe_get_mtu(int mtu)
 static inline int iboe_get_rate(struct net_device *dev)
 {
        struct ethtool_cmd cmd;
+       u32 speed;
 
-       if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings ||
-           dev->ethtool_ops->get_settings(dev, &cmd))
+       if (dev_ethtool_get_settings(dev, &cmd))
                return IB_RATE_PORT_CURRENT;
 
-       if (cmd.speed >= 40000)
+       speed = ethtool_cmd_speed(&cmd);
+       if (speed >= 40000)
                return IB_RATE_40_GBPS;
-       else if (cmd.speed >= 30000)
+       else if (speed >= 30000)
                return IB_RATE_30_GBPS;
-       else if (cmd.speed >= 20000)
+       else if (speed >= 20000)
                return IB_RATE_20_GBPS;
-       else if (cmd.speed >= 10000)
+       else if (speed >= 10000)
                return IB_RATE_10_GBPS;
        else
                return IB_RATE_PORT_CURRENT;