From: Andrew Lunn <andrew@lunn.ch>
To: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Cc: Vivien Didelot <vivien.didelot@gmail.com>,
Florian Fainelli <f.fainelli@gmail.com>,
"David S. Miller" <davem@davemloft.net>,
Rasmus Villemoes <Rasmus.Villemoes@prevas.se>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] net: dsa: mv88e6xxx: fix handling of upper half of STATS_TYPE_PORT
Date: Tue, 28 May 2019 15:44:58 +0200 [thread overview]
Message-ID: <20190528134458.GE18059@lunn.ch> (raw)
In-Reply-To: <20190528131701.23912-1-rasmus.villemoes@prevas.dk>
On Tue, May 28, 2019 at 01:17:10PM +0000, Rasmus Villemoes wrote:
> Currently, the upper half of a 4-byte STATS_TYPE_PORT statistic ends
> up in bits 47:32 of the return value, instead of bits 31:16 as they
> should.
>
> Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Hi Rasmus
Please include a Fixes tag, to indicate where the problem was
introduced. In this case, i think it was:
Fixes: 6e46e2d821bb ("net: dsa: mv88e6xxx: Fix u64 statistics")
And set the Subject to [PATCH net] to indicate this should be applied
to the net tree.
> ---
> I also noticed that it's a bit inconsistent that we return U64_MAX if
> there's a read error in STATS_TYPE_PORT, while
> mv88e6xxx_g1_stats_read() returns 0 in case of a read error. In
> practice, register reads probably never fail so it doesn't matter.
>
> drivers/net/dsa/mv88e6xxx/chip.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/drivers/net/dsa/mv88e6xxx/chip.c b/drivers/net/dsa/mv88e6xxx/chip.c
> index 370434bdbdab..317553d2cb21 100644
> --- a/drivers/net/dsa/mv88e6xxx/chip.c
> +++ b/drivers/net/dsa/mv88e6xxx/chip.c
> @@ -785,7 +785,7 @@ static uint64_t _mv88e6xxx_get_ethtool_stat(struct mv88e6xxx_chip *chip,
> err = mv88e6xxx_port_read(chip, port, s->reg + 1, ®);
> if (err)
> return U64_MAX;
> - high = reg;
> + low |= ((u32)reg) << 16;
> }
> break;
> case STATS_TYPE_BANK1:
What i don't like about this is how the function finishes:
}
value = (((u64)high) << 32) | low;
return value;
}
A better fix might be
- break
+ value = (((u64)high) << 16 | low;
+ return value;
Andrew
next prev parent reply other threads:[~2019-05-28 13:45 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-28 13:17 [PATCH] net: dsa: mv88e6xxx: fix handling of upper half of STATS_TYPE_PORT Rasmus Villemoes
2019-05-28 13:44 ` Andrew Lunn [this message]
2019-05-29 6:42 ` Rasmus Villemoes
2019-05-29 17:10 ` Vivien Didelot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20190528134458.GE18059@lunn.ch \
--to=andrew@lunn.ch \
--cc=Rasmus.Villemoes@prevas.se \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=rasmus.villemoes@prevas.dk \
--cc=vivien.didelot@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.