ixgbe: add check for supported modes
authorEmil Tantilov <emil.s.tantilov@intel.com>
Fri, 29 Jul 2011 06:46:10 +0000 (06:46 +0000)
committerJeff Kirsher <jeffrey.t.kirsher@intel.com>
Mon, 29 Aug 2011 08:33:52 +0000 (01:33 -0700)
When setting advertised speed/duplex with ethtool.

Also cleaned up the comment since we also support 100/F.

Signed-off-by: Emil Tantilov <emil.s.tantilov@intel.com>
Tested-by: Phil Schmitt <phillip.j.schmitt@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
drivers/net/ethernet/intel/ixgbe/ixgbe_ethtool.c

index 82d4244c6e1050a416dfe2a939ca7c15d095a125..9c12b35232af5dd801494d59095b39454d8e536f 100644 (file)
@@ -324,12 +324,16 @@ static int ixgbe_set_settings(struct net_device *netdev,
 
        if ((hw->phy.media_type == ixgbe_media_type_copper) ||
            (hw->phy.multispeed_fiber)) {
-               /* 10000/copper and 1000/copper must autoneg
-                * this function does not support any duplex forcing, but can
-                * limit the advertising of the adapter to only 10000 or 1000 */
+               /*
+                * this function does not support duplex forcing, but can
+                * limit the advertising of the adapter to the specified speed
+                */
                if (ecmd->autoneg == AUTONEG_DISABLE)
                        return -EINVAL;
 
+               if (ecmd->advertising & ~ecmd->supported)
+                       return -EINVAL;
+
                old = hw->phy.autoneg_advertised;
                advertised = 0;
                if (ecmd->advertising & ADVERTISED_10000baseT_Full)