[PATCH 23.11 v1] net/axgbe: fix 100M SGMII mode
Shani Peretz
shperetz at nvidia.com
Tue Apr 21 07:41:21 CEST 2026
> -----Original Message-----
> From: Ashok Kumar Natarajan <ashokkumar.natarajan at amd.com>
> Sent: Thursday, 16 April 2026 13:28
> To: stable at dpdk.org
> Cc: Selwin.Sebastian at amd.com; Ashok Kumar Natarajan
> <ashokkumar.natarajan at amd.com>
> Subject: [PATCH 23.11 v1] net/axgbe: fix 100M SGMII mode
>
> External email: Use caution opening links or attachments
>
>
> [ upstream commit 11b918959cd924fc6ad09d8cae1a86411490218a ]
>
> In SGMII 100M mode, set MAC speed to 100M instead of 1G, and add the PHY
> implementation for SGMII 100 mode.
>
> Fixes: a5c7273771e8 ("net/axgbe: add phy programming APIs")
>
> Signed-off-by: Ashok Kumar Natarajan <ashokkumar.natarajan at amd.com>
> ---
> drivers/net/axgbe/axgbe_mdio.c | 4 ++--
> drivers/net/axgbe/axgbe_phy_impl.c | 15 +++++++++++++++
> 2 files changed, 17 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/axgbe/axgbe_mdio.c b/drivers/net/axgbe/axgbe_mdio.c
> index d95a52659e..fdd0478c00 100644
> --- a/drivers/net/axgbe/axgbe_mdio.c
> +++ b/drivers/net/axgbe/axgbe_mdio.c
> @@ -146,8 +146,8 @@ static void axgbe_sgmii_1000_mode(struct axgbe_port
> *pdata) static void axgbe_sgmii_100_mode(struct axgbe_port *pdata) {
>
> - /* Set MAC to 1G speed */
> - pdata->hw_if.set_speed(pdata, SPEED_1000);
> + /* Set MAC to 100M speed */
> + pdata->hw_if.set_speed(pdata, SPEED_100);
>
> /* Call PHY implementation support to complete rate change */
> pdata->phy_if.phy_impl.set_mode(pdata, AXGBE_MODE_SGMII_100); diff -
> -git a/drivers/net/axgbe/axgbe_phy_impl.c
> b/drivers/net/axgbe/axgbe_phy_impl.c
> index 12908d4e6f..9ab8e319a4 100644
> --- a/drivers/net/axgbe/axgbe_phy_impl.c
> +++ b/drivers/net/axgbe/axgbe_phy_impl.c
> @@ -1362,6 +1362,18 @@ static void axgbe_phy_sgmii_1000_mode(struct
> axgbe_port *pdata)
> phy_data->cur_mode = AXGBE_MODE_SGMII_1000; }
>
> +static void axgbe_phy_sgmii_100_mode(struct axgbe_port *pdata) {
> + struct axgbe_phy_data *phy_data = pdata->phy_data;
> +
> + axgbe_phy_set_redrv_mode(pdata);
> +
> + /* 100M/SGMII */
> + axgbe_phy_perform_ratechange(pdata, 1, 1);
> +
> + phy_data->cur_mode = AXGBE_MODE_SGMII_100; }
> +
> static enum axgbe_mode axgbe_phy_cur_mode(struct axgbe_port *pdata) {
> struct axgbe_phy_data *phy_data = pdata->phy_data; @@ -1540,6
> +1552,9 @@ static void axgbe_phy_set_mode(struct axgbe_port *pdata, enum
> axgbe_mode mode)
> case AXGBE_MODE_SGMII_1000:
> axgbe_phy_sgmii_1000_mode(pdata);
> break;
> + case AXGBE_MODE_SGMII_100:
> + axgbe_phy_sgmii_100_mode(pdata);
> + break;
> default:
> break;
> }
> --
> 2.43.0
Thanks, applied to 23.11
More information about the stable
mailing list