bnxt_en: Extend autoneg to all speeds.
authorMichael Chan <michael.chan@broadcom.com>
Mon, 7 Mar 2016 20:38:44 +0000 (15:38 -0500)
committerDavid S. Miller <davem@davemloft.net>
Tue, 8 Mar 2016 19:51:43 +0000 (14:51 -0500)
Allow all autoneg speeds aupported by firmware to be advertised.  If
the advertising parameter is 0, then all supported speeds will be
advertised.

Remove BNXT_ALL_COPPER_ETHTOOL_SPEED which is no longer used as all
supported speeds can be advertised.

Signed-off-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/bnxt/bnxt.h
drivers/net/ethernet/broadcom/bnxt/bnxt_ethtool.c

index 2f24e4e..c4424b6 100644 (file)
@@ -757,10 +757,6 @@ struct bnxt_ntuple_filter {
 #define BNXT_FLTR_UPDATE       1
 };
 
-#define BNXT_ALL_COPPER_ETHTOOL_SPEED                          \
-       (ADVERTISED_100baseT_Full | ADVERTISED_1000baseT_Full | \
-        ADVERTISED_10000baseT_Full)
-
 struct bnxt_link_info {
        u8                      media_type;
        u8                      transceiver;
index ac9d6e5..c099802 100644 (file)
@@ -696,16 +696,10 @@ static int bnxt_set_settings(struct net_device *dev, struct ethtool_cmd *cmd)
                return rc;
 
        if (cmd->autoneg == AUTONEG_ENABLE) {
-               if (link_info->media_type != PORT_PHY_QCFG_RESP_MEDIA_TYPE_TP) {
-                       netdev_err(dev, "Media type doesn't support autoneg\n");
-                       rc = -EINVAL;
-                       goto set_setting_exit;
-               }
-               if (cmd->advertising & ~(BNXT_ALL_COPPER_ETHTOOL_SPEED |
-                                        ADVERTISED_Autoneg |
-                                        ADVERTISED_TP |
-                                        ADVERTISED_Pause |
-                                        ADVERTISED_Asym_Pause)) {
+               u32 supported_spds = bnxt_fw_to_ethtool_support_spds(link_info);
+
+               if (cmd->advertising & ~(supported_spds | ADVERTISED_Autoneg |
+                                        ADVERTISED_TP | ADVERTISED_FIBRE)) {
                        netdev_err(dev, "Unsupported advertising mask (adv: 0x%x)\n",
                                   cmd->advertising);
                        rc = -EINVAL;