On 17.04.25 09:57, Erni Sri Satya Vennela wrote:
Add support for speed in mana ethtool get_link_ksettings
operation. This feature is not supported by all hardware.

Signed-off-by: Erni Sri Satya Vennela <er...@linux.microsoft.com>
Reviewed-by: Shradha Gupta <shradhagu...@linux.microsoft.com>
Reviewed-by: Haiyang Zhang <haiya...@microsoft.com>
---
  drivers/net/ethernet/microsoft/mana/mana_en.c | 42 +++++++++++++++++++
  .../ethernet/microsoft/mana/mana_ethtool.c    |  6 +++
  include/net/mana/mana.h                       | 17 ++++++++
  3 files changed, 65 insertions(+)

diff --git a/drivers/net/ethernet/microsoft/mana/mana_en.c 
b/drivers/net/ethernet/microsoft/mana/mana_en.c
index 2bac6be8f6a0..ba550fc7ece0 100644
--- a/drivers/net/ethernet/microsoft/mana/mana_en.c
+++ b/drivers/net/ethernet/microsoft/mana/mana_en.c
@@ -1156,6 +1156,48 @@ static int mana_cfg_vport_steering(struct 
mana_port_context *apc,
        return err;
  }
+int mana_query_link_cfg(struct mana_port_context *apc)
+{
+       struct net_device *ndev = apc->ndev;
+       struct mana_query_link_config_resp resp = {};
+       struct mana_query_link_config_req req = {};
+       int err;
+
+       mana_gd_init_req_hdr(&req.hdr, MANA_QUERY_LINK_CONFIG,
+                            sizeof(req), sizeof(resp));
+
+       req.vport = apc->port_handle;
+
+       err = mana_send_request(apc->ac, &req, sizeof(req), &resp,
+                               sizeof(resp));
+
+       if (err) {
+               netdev_err(ndev, "Failed to query link config: %d\n", err);
+               goto out;
+       }
+
+       err = mana_verify_resp_hdr(&resp.hdr, MANA_QUERY_LINK_CONFIG,
+                                  sizeof(resp));
+
+       if (err || resp.hdr.status) {
+               netdev_err(ndev, "Failed to query link config: %d, 0x%x\n", err,
+                          resp.hdr.status);
+               if (!err)
+                       err = -EPROTO;

EPROTO means Protocol error. Thus, ENOTSUPP or EPROTONOSUPPORT is better?

Zhu Yanjun

+               goto out;
+       }
+
+       if (resp.qos_unconfigured) {
+               err = -EINVAL;
+               goto out;
+       }
+       apc->speed = resp.link_speed_mbps;
+       return 0;
+
+out:
+       return err;
+}
+


Reply via email to