lkml.org 
[lkml]   [2020]   [May]   [26]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH ethtool v1] netlink: add LINKSTATE SQI support
    Date
    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
    \
     
     \ /
      Last update: 2020-05-26 10:30    [W:3.684 / U:0.000 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site