amd-xgbe: Fixes for working with PHYs that support 2.5GbE
authorLendacky, Thomas <Thomas.Lendacky@amd.com>
Wed, 28 Jun 2017 18:42:25 +0000 (13:42 -0500)
committerDavid S. Miller <davem@davemloft.net>
Thu, 29 Jun 2017 19:14:17 +0000 (15:14 -0400)
The driver has some missing functionality when operating in the mode that
supports 2.5GbE.  Fix the driver to fully recognize and support this speed.

Signed-off-by: Tom Lendacky <thomas.lendacky@amd.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c

index 756e116..b8be62e 100644 (file)
@@ -1966,6 +1966,8 @@ static enum xgbe_mode xgbe_phy_get_baset_mode(struct xgbe_phy_data *phy_data,
                return XGBE_MODE_SGMII_100;
        case SPEED_1000:
                return XGBE_MODE_SGMII_1000;
+       case SPEED_2500:
+               return XGBE_MODE_KX_2500;
        case SPEED_10000:
                return XGBE_MODE_KR;
        default:
@@ -2109,6 +2111,9 @@ static bool xgbe_phy_use_baset_mode(struct xgbe_prv_data *pdata,
        case XGBE_MODE_SGMII_1000:
                return xgbe_phy_check_mode(pdata, mode,
                                           ADVERTISED_1000baseT_Full);
+       case XGBE_MODE_KX_2500:
+               return xgbe_phy_check_mode(pdata, mode,
+                                          ADVERTISED_2500baseX_Full);
        case XGBE_MODE_KR:
                return xgbe_phy_check_mode(pdata, mode,
                                           ADVERTISED_10000baseT_Full);
@@ -2218,6 +2223,8 @@ static bool xgbe_phy_valid_speed_baset_mode(struct xgbe_phy_data *phy_data,
        case SPEED_100:
        case SPEED_1000:
                return true;
+       case SPEED_2500:
+               return (phy_data->port_mode == XGBE_PORT_MODE_NBASE_T);
        case SPEED_10000:
                return (phy_data->port_mode == XGBE_PORT_MODE_10GBASE_T);
        default: