Skip to content

Commit 3ee217c

Browse files
RajuRangojuPaolo Abeni
authored andcommitted
amd-xgbe: add 2.5GbE support to 10G BaseT mode
Add support to the driver to fully recognize and enable 2.5GbE speed in 10GBaseT mode. Acked-by: Shyam Sundar S K <Shyam-sundar.S-k@amd.com> Signed-off-by: Raju Rangoju <Raju.Rangoju@amd.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
1 parent 8b6f322 commit 3ee217c

File tree

1 file changed

+13
-2
lines changed

1 file changed

+13
-2
lines changed

drivers/net/ethernet/amd/xgbe/xgbe-phy-v2.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1882,6 +1882,9 @@ static void xgbe_phy_an_advertising(struct xgbe_prv_data *pdata,
18821882
if (phy_data->phydev &&
18831883
(phy_data->phydev->speed == SPEED_10000))
18841884
XGBE_SET_ADV(dlks, 10000baseKR_Full);
1885+
else if (phy_data->phydev &&
1886+
(phy_data->phydev->speed == SPEED_2500))
1887+
XGBE_SET_ADV(dlks, 2500baseX_Full);
18851888
else
18861889
XGBE_SET_ADV(dlks, 1000baseKX_Full);
18871890
break;
@@ -2282,9 +2285,11 @@ static enum xgbe_mode xgbe_phy_switch_baset_mode(struct xgbe_prv_data *pdata)
22822285
case XGBE_MODE_SGMII_100:
22832286
case XGBE_MODE_SGMII_1000:
22842287
return XGBE_MODE_KR;
2288+
case XGBE_MODE_KX_2500:
2289+
return XGBE_MODE_SGMII_1000;
22852290
case XGBE_MODE_KR:
22862291
default:
2287-
return XGBE_MODE_SGMII_1000;
2292+
return XGBE_MODE_KX_2500;
22882293
}
22892294
}
22902295

@@ -2644,7 +2649,8 @@ static bool xgbe_phy_valid_speed_baset_mode(struct xgbe_prv_data *pdata,
26442649
case SPEED_1000:
26452650
return true;
26462651
case SPEED_2500:
2647-
return (phy_data->port_mode == XGBE_PORT_MODE_NBASE_T);
2652+
return ((phy_data->port_mode == XGBE_PORT_MODE_10GBASE_T) ||
2653+
(phy_data->port_mode == XGBE_PORT_MODE_NBASE_T));
26482654
case SPEED_10000:
26492655
return (phy_data->port_mode == XGBE_PORT_MODE_10GBASE_T);
26502656
default:
@@ -3024,6 +3030,7 @@ static bool xgbe_phy_port_mode_mismatch(struct xgbe_prv_data *pdata)
30243030
if ((phy_data->port_speeds & XGBE_PHY_PORT_SPEED_10) ||
30253031
(phy_data->port_speeds & XGBE_PHY_PORT_SPEED_100) ||
30263032
(phy_data->port_speeds & XGBE_PHY_PORT_SPEED_1000) ||
3033+
(phy_data->port_speeds & XGBE_PHY_PORT_SPEED_2500) ||
30273034
(phy_data->port_speeds & XGBE_PHY_PORT_SPEED_10000))
30283035
return false;
30293036
break;
@@ -3474,6 +3481,10 @@ static int xgbe_phy_init(struct xgbe_prv_data *pdata)
34743481
XGBE_SET_SUP(lks, 1000baseT_Full);
34753482
phy_data->start_mode = XGBE_MODE_SGMII_1000;
34763483
}
3484+
if (phy_data->port_speeds & XGBE_PHY_PORT_SPEED_2500) {
3485+
XGBE_SET_SUP(lks, 2500baseT_Full);
3486+
phy_data->start_mode = XGBE_MODE_KX_2500;
3487+
}
34773488
if (phy_data->port_speeds & XGBE_PHY_PORT_SPEED_10000) {
34783489
XGBE_SET_SUP(lks, 10000baseT_Full);
34793490
phy_data->start_mode = XGBE_MODE_KR;

0 commit comments

Comments
 (0)