Messages in this thread Patch in this message | | | From | Oleksij Rempel <> | Subject | [PATCH ethtool v1] netlink: add LINKSTATE SQI support | Date | Tue, 26 May 2020 10:29:42 +0200 |
| |
Some PHYs provide Signal Quality Index (SQI) if the link is in active state. This information can help to diagnose cable and system design related issues.
Signed-off-by: Oleksij Rempel <o.rempel@pengutronix.de> --- netlink/desc-ethtool.c | 2 ++ netlink/settings.c | 16 ++++++++++++++++ uapi/linux/ethtool_netlink.h | 2 ++ 3 files changed, 20 insertions(+)
diff --git a/netlink/desc-ethtool.c b/netlink/desc-ethtool.c index 76c6f13..f4559ea 100644 --- a/netlink/desc-ethtool.c +++ b/netlink/desc-ethtool.c @@ -91,6 +91,8 @@ static const struct pretty_nla_desc __linkstate_desc[] = { NLATTR_DESC_INVALID(ETHTOOL_A_LINKSTATE_UNSPEC), NLATTR_DESC_NESTED(ETHTOOL_A_LINKSTATE_HEADER, header), NLATTR_DESC_BOOL(ETHTOOL_A_LINKSTATE_LINK), + NLATTR_DESC_U32(ETHTOOL_A_LINKSTATE_SQI), + NLATTR_DESC_U32(ETHTOOL_A_LINKSTATE_SQI_MAX), }; static const struct pretty_nla_desc __debug_desc[] = { diff --git a/netlink/settings.c b/netlink/settings.c index 8be5a22..a6b2fba 100644 --- a/netlink/settings.c +++ b/netlink/settings.c @@ -604,6 +604,22 @@ int linkstate_reply_cb(const struct nlmsghdr *nlhdr, void *data) printf("\tLink detected: %s\n", val ? "yes" : "no"); } + if (tb[ETHTOOL_A_LINKSTATE_SQI]) { + uint32_t val = mnl_attr_get_u32(tb[ETHTOOL_A_LINKSTATE_SQI]); + + print_banner(nlctx); + printf("\tSQI: %u", val); + + if (tb[ETHTOOL_A_LINKSTATE_SQI_MAX]) { + uint32_t max; + + max = mnl_attr_get_u32(tb[ETHTOOL_A_LINKSTATE_SQI_MAX]); + printf("/%u\n", max); + } else { + printf("\n"); + } + } + return MNL_CB_OK; } diff --git a/uapi/linux/ethtool_netlink.h b/uapi/linux/ethtool_netlink.h index ad6d3a0..98e236c 100644 --- a/uapi/linux/ethtool_netlink.h +++ b/uapi/linux/ethtool_netlink.h @@ -197,6 +197,8 @@ enum { ETHTOOL_A_LINKSTATE_UNSPEC, ETHTOOL_A_LINKSTATE_HEADER, /* nest - _A_HEADER_* */ ETHTOOL_A_LINKSTATE_LINK, /* u8 */ + ETHTOOL_A_LINKSTATE_SQI, /* u32 */ + ETHTOOL_A_LINKSTATE_SQI_MAX, /* u32 */ /* add new constants above here */ __ETHTOOL_A_LINKSTATE_CNT, -- 2.26.2
| |