Re: [PATCH v2 3/3] netlink: add LINKSTATE SQI support

2020-06-07 Thread Michal Kubecek
On Thu, May 28, 2020 at 01:54:14PM +0200, Oleksij Rempel wrote:
> 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 
> Reviewed-by: Florian Fainelli 

Reviewed-by: Michal Kubecek 

> ---
>  netlink/desc-ethtool.c |  2 ++
>  netlink/settings.c | 16 
>  2 files changed, 18 insertions(+)
> 
> diff --git a/netlink/desc-ethtool.c b/netlink/desc-ethtool.c
> index b0a793c..8f4c36b 100644
> --- a/netlink/desc-ethtool.c
> +++ b/netlink/desc-ethtool.c
> @@ -93,6 +93,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 851de15..cd4b9a7 100644
> --- a/netlink/settings.c
> +++ b/netlink/settings.c
> @@ -638,6 +638,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;
>  }
>  
> -- 
> 2.26.2
> 


signature.asc
Description: PGP signature


[PATCH v2 3/3] netlink: add LINKSTATE SQI support

2020-05-28 Thread Oleksij Rempel
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 
Reviewed-by: Florian Fainelli 
---
 netlink/desc-ethtool.c |  2 ++
 netlink/settings.c | 16 
 2 files changed, 18 insertions(+)

diff --git a/netlink/desc-ethtool.c b/netlink/desc-ethtool.c
index b0a793c..8f4c36b 100644
--- a/netlink/desc-ethtool.c
+++ b/netlink/desc-ethtool.c
@@ -93,6 +93,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 851de15..cd4b9a7 100644
--- a/netlink/settings.c
+++ b/netlink/settings.c
@@ -638,6 +638,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;
 }
 
-- 
2.26.2