qede: Fix possible misconfiguration of advertised autoneg value.
authorsudarsana.kalluru@cavium.com <sudarsana.kalluru@cavium.com>
Thu, 4 May 2017 15:15:05 +0000 (08:15 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 4 May 2017 16:31:03 +0000 (12:31 -0400)
Fail the configuration of advertised speed-autoneg value if the config
update is not supported.

Signed-off-by: Sudarsana Reddy Kalluru <Sudarsana.Kalluru@cavium.com>
Signed-off-by: Yuval Mintz <Yuval.Mintz@cavium.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/qlogic/qede/qede_ethtool.c

index b22753c5fd44ac43aad64acac1d3486476eacbb7..172b292241a5c761c2d06607b1cdbe346f60459b 100644 (file)
@@ -493,6 +493,11 @@ static int qede_set_link_ksettings(struct net_device *dev,
        params.override_flags |= QED_LINK_OVERRIDE_SPEED_ADV_SPEEDS;
        params.override_flags |= QED_LINK_OVERRIDE_SPEED_AUTONEG;
        if (base->autoneg == AUTONEG_ENABLE) {
+               if (!(current_link.supported_caps & QED_LM_Autoneg_BIT)) {
+                       DP_INFO(edev, "Auto negotiation is not supported\n");
+                       return -EOPNOTSUPP;
+               }
+
                params.autoneg = true;
                params.forced_speed = 0;
                QEDE_ETHTOOL_TO_DRV_CAPS(params.adv_speeds, cmd, advertising)