> Subject: [PATCH net-next v3 3/4] net: mana: Add speed support in
> mana_get_link_ksettings
> 
> Allow mana ethtool get_link_ksettings operation to report the maximum speed
> supported by the SKU in mbps.
> 
> The driver retrieves this information by issuing a HWC command to the hardware
> via mana_query_link_cfg(), which retrieves the SKU's maximum supported speed.
> 
> These APIs when invoked on hardware that are older/do not support these APIs,
> the speed would be reported as UNKNOWN.
> 
> Before:
> $ethtool enP30832s1
> > Settings for enP30832s1:
>         Supported ports: [  ]
>         Supported link modes:   Not reported
>         Supported pause frame use: No
>         Supports auto-negotiation: No
>         Supported FEC modes: Not reported
>         Advertised link modes:  Not reported
>         Advertised pause frame use: No
>         Advertised auto-negotiation: No
>         Advertised FEC modes: Not reported
>         Speed: Unknown!
>         Duplex: Full
>         Auto-negotiation: off
>         Port: Other
>         PHYAD: 0
>         Transceiver: internal
>         Link detected: yes
> 
> After:
> $ethtool enP30832s1
> > Settings for enP30832s1:
>         Supported ports: [  ]
>         Supported link modes:   Not reported
>         Supported pause frame use: No
>         Supports auto-negotiation: No
>         Supported FEC modes: Not reported
>         Advertised link modes:  Not reported
>         Advertised pause frame use: No
>         Advertised auto-negotiation: No
>         Advertised FEC modes: Not reported
>         Speed: 16000Mb/s
>         Duplex: Full
>         Auto-negotiation: off
>         Port: Other
>         PHYAD: 0
>         Transceiver: internal
>         Link detected: yes
> 
> Signed-off-by: Erni Sri Satya Vennela <er...@linux.microsoft.com>
> Reviewed-by: Haiyang Zhang <haiya...@microsoft.com>
> Reviewed-by: Shradha Gupta <shradhagu...@linux.microsoft.com>
> Reviewed-by: Saurabh Singh Sengar <ssen...@linux.microsoft.com>

Reviewed-by: Long Li <lon...@microsoft.com>

> ---
> Changes in v3:
> * Rebase to latest net-next branch.
> Changes in v2:
> * No change.
> ---
>  drivers/net/ethernet/microsoft/mana/mana_en.c      | 1 +
>  drivers/net/ethernet/microsoft/mana/mana_ethtool.c | 6 ++++++
>  include/net/mana/mana.h                            | 2 ++
>  3 files changed, 9 insertions(+)
> 
> diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c
> b/drivers/net/ethernet/microsoft/mana/mana_en.c
> index 547dff450b6d..d7079e05dfb8 100644
> --- a/drivers/net/ethernet/microsoft/mana/mana_en.c
> +++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
> @@ -1272,6 +1272,7 @@ int mana_query_link_cfg(struct mana_port_context
> *apc)
>               return err;
>       }
>       apc->speed = resp.link_speed_mbps;
> +     apc->max_speed = resp.qos_speed_mbps;
>       return 0;
>  }
> 
> diff --git a/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
> b/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
> index 4fb3a04994a2..a1afa75a9463 100644
> --- a/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
> +++ b/drivers/net/ethernet/microsoft/mana/mana_ethtool.c
> @@ -495,6 +495,12 @@ static int mana_set_ringparam(struct net_device *ndev,
> static int mana_get_link_ksettings(struct net_device *ndev,
>                                  struct ethtool_link_ksettings *cmd)  {
> +     struct mana_port_context *apc = netdev_priv(ndev);
> +     int err;
> +
> +     err = mana_query_link_cfg(apc);
> +     cmd->base.speed = (err) ? SPEED_UNKNOWN : apc->max_speed;
> +
>       cmd->base.duplex = DUPLEX_FULL;
>       cmd->base.port = PORT_OTHER;
> 
> diff --git a/include/net/mana/mana.h b/include/net/mana/mana.h index
> 038b18340e51..e1030a7d2daa 100644
> --- a/include/net/mana/mana.h
> +++ b/include/net/mana/mana.h
> @@ -533,6 +533,8 @@ struct mana_port_context {
>       u16 port_idx;
>       /* Currently configured speed (mbps) */
>       u32 speed;
> +     /* Maximum speed supported by the SKU (mbps) */
> +     u32 max_speed;
> 
>       bool port_is_up;
>       bool port_st_save; /* Saved port state */
> --
> 2.34.1


Reply via email to