2020-12-03 08:12:46

by Alexandru Ardelean

[permalink] [raw]
Subject: [PATCH] net: phy: adin: add signal mean square error registers to phy-stats

When the link is up on the ADIN1300/ADIN1200, the signal quality on each
pair is indicated in the mean square error register for each pair (MSE_A,
MSE_B, MSE_C, and MSE_D registers, Address 0x8402 to Address 0x8405,
Bits[7:0]).

These values can be useful for some industrial applications.

This change implements support for these registers using the PHY
statistics mechanism.

Signed-off-by: Alexandru Ardelean <[email protected]>
---
drivers/net/phy/adin.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/adin.c b/drivers/net/phy/adin.c
index 55a0b91816e2..e4441bba98c3 100644
--- a/drivers/net/phy/adin.c
+++ b/drivers/net/phy/adin.c
@@ -184,6 +184,7 @@ struct adin_hw_stat {
const char *string;
u16 reg1;
u16 reg2;
+ bool do_not_accumulate;
};

static const struct adin_hw_stat adin_hw_stats[] = {
@@ -197,6 +198,10 @@ static const struct adin_hw_stat adin_hw_stats[] = {
{ "odd_preamble_packet_count", 0x9412 },
{ "dribble_bits_frames_count", 0x9413 },
{ "false_carrier_events_count", 0x9414 },
+ { "signal_mean_square_error_a", 0x8402, 0, true },
+ { "signal_mean_square_error_b", 0x8403, 0, true },
+ { "signal_mean_square_error_c", 0x8404, 0, true },
+ { "signal_mean_square_error_d", 0x8405, 0, true },
};

/**
@@ -757,7 +762,10 @@ static u64 adin_get_stat(struct phy_device *phydev, int i)
val = (ret & 0xffff);
}

- priv->stats[i] += val;
+ if (stat->do_not_accumulate)
+ priv->stats[i] = val;
+ else
+ priv->stats[i] += val;

return priv->stats[i];
}
--
2.27.0


2020-12-03 14:20:19

by Andrew Lunn

[permalink] [raw]
Subject: Re: [PATCH] net: phy: adin: add signal mean square error registers to phy-stats

On Thu, Dec 03, 2020 at 10:07:19AM +0200, Alexandru Ardelean wrote:
> When the link is up on the ADIN1300/ADIN1200, the signal quality on each
> pair is indicated in the mean square error register for each pair (MSE_A,
> MSE_B, MSE_C, and MSE_D registers, Address 0x8402 to Address 0x8405,
> Bits[7:0]).
>
> These values can be useful for some industrial applications.
>
> This change implements support for these registers using the PHY
> statistics mechanism.

There was a discussion about values like these before. If i remember
correctly, it was for a BroadReach PHY. I thought we decided to add
them to the link state information?

Ah, found it.

commit 68ff5e14759e7ac1aac7bc75ac5b935e390fa2b3
Author: Oleksij Rempel <[email protected]>
Date: Wed May 20 08:29:15 2020 +0200

net: phy: tja11xx: add SQI support

and

ommit 8066021915924f58ed338bf38208215f5a7355f6
Author: Oleksij Rempel <[email protected]>
Date: Wed May 20 08:29:14 2020 +0200

ethtool: provide UAPI for PHY Signal Quality Index (SQI)

Can you convert your MSE into SQI?

Andrew

2020-12-03 14:37:49

by Alexandru Ardelean

[permalink] [raw]
Subject: RE: [PATCH] net: phy: adin: add signal mean square error registers to phy-stats



> -----Original Message-----
> From: Andrew Lunn <[email protected]>
> Sent: Thursday, December 3, 2020 4:16 PM
> To: Ardelean, Alexandru <[email protected]>
> Cc: [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; Redmond, Catherine <[email protected]>;
> Murray, Brian <[email protected]>; Baylov, Danail
> <[email protected]>; OBrien, Maurice
> <[email protected]>
> Subject: Re: [PATCH] net: phy: adin: add signal mean square error registers to
> phy-stats
>
> On Thu, Dec 03, 2020 at 10:07:19AM +0200, Alexandru Ardelean wrote:
> > When the link is up on the ADIN1300/ADIN1200, the signal quality on
> > each pair is indicated in the mean square error register for each pair
> > (MSE_A, MSE_B, MSE_C, and MSE_D registers, Address 0x8402 to Address
> > 0x8405, Bits[7:0]).
> >
> > These values can be useful for some industrial applications.
> >
> > This change implements support for these registers using the PHY
> > statistics mechanism.
>
> There was a discussion about values like these before. If i remember correctly, it
> was for a BroadReach PHY. I thought we decided to add them to the link state
> information?
>

Oh, this is new.
I've had this MSE patch lying around in a branch since last year sometime.
Wasn't sure whether to put it in the phy-stats.

> Ah, found it.
>
> commit 68ff5e14759e7ac1aac7bc75ac5b935e390fa2b3
> Author: Oleksij Rempel <[email protected]>
> Date: Wed May 20 08:29:15 2020 +0200
>
> net: phy: tja11xx: add SQI support
>
> and
>
> ommit 8066021915924f58ed338bf38208215f5a7355f6
> Author: Oleksij Rempel <[email protected]>
> Date: Wed May 20 08:29:14 2020 +0200
>
> ethtool: provide UAPI for PHY Signal Quality Index (SQI)
>
> Can you convert your MSE into SQI?

I'll take a look and try to understand the SQI spec.
It's neat that there's a common place where to put this.

Thanks
Alex

>
> Andrew