ethtool: Call ethtool's get/set_settings callbacks with cleaned data
[pandora-kernel.git] / drivers / scsi / fcoe / fcoe.c
index bde6ee5..04f346b 100644 (file)
@@ -2026,7 +2026,7 @@ out_nodev:
 int fcoe_link_speed_update(struct fc_lport *lport)
 {
        struct net_device *netdev = fcoe_netdev(lport);
-       struct ethtool_cmd ecmd = { ETHTOOL_GSET };
+       struct ethtool_cmd ecmd;
 
        if (!dev_ethtool_get_settings(netdev, &ecmd)) {
                lport->link_supported_speeds &=
@@ -2037,11 +2037,14 @@ int fcoe_link_speed_update(struct fc_lport *lport)
                if (ecmd.supported & SUPPORTED_10000baseT_Full)
                        lport->link_supported_speeds |=
                                FC_PORTSPEED_10GBIT;
-               if (ecmd.speed == SPEED_1000)
+               switch (ethtool_cmd_speed(&ecmd)) {
+               case SPEED_1000:
                        lport->link_speed = FC_PORTSPEED_1GBIT;
-               if (ecmd.speed == SPEED_10000)
+                       break;
+               case SPEED_10000:
                        lport->link_speed = FC_PORTSPEED_10GBIT;
-
+                       break;
+               }
                return 0;
        }
        return -1;