net: dsa: mv88e6xxx: Fix mv88e6352_serdes_get_stats error path
[ Upstream commit fc82a08ae795ee6b73fb6b50785f7be248bec7b5 ] mv88e6xxx_get_stats, which collects stats from various sources, expects all callees to return the number of stats read. If an error occurs, 0 should be returned. Prevent future mishaps of this kind by updating the return type to reflect this contract. Reviewed-by: Vladimir Oltean <vladimir.oltean@nxp.com> Reviewed-by: Florian Fainelli <florian.fainelli@broadcom.com> Signed-off-by: Tobias Waldekranz <tobias@waldekranz.com> Signed-off-by: David S. Miller <davem@davemloft.net> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
parent
0edb3ae8bf
commit
44f6b75c09
@ -601,8 +601,8 @@ struct mv88e6xxx_ops {
|
||||
int (*serdes_get_sset_count)(struct mv88e6xxx_chip *chip, int port);
|
||||
int (*serdes_get_strings)(struct mv88e6xxx_chip *chip, int port,
|
||||
uint8_t *data);
|
||||
int (*serdes_get_stats)(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data);
|
||||
size_t (*serdes_get_stats)(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data);
|
||||
|
||||
/* SERDES registers for ethtool */
|
||||
int (*serdes_get_regs_len)(struct mv88e6xxx_chip *chip, int port);
|
||||
|
@ -342,8 +342,8 @@ static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip,
|
||||
return val;
|
||||
}
|
||||
|
||||
int mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data)
|
||||
size_t mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data)
|
||||
{
|
||||
struct mv88e6xxx_port *mv88e6xxx_port = &chip->ports[port];
|
||||
struct mv88e6352_serdes_hw_stat *stat;
|
||||
@ -352,7 +352,7 @@ int mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
|
||||
err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
|
||||
if (err <= 0)
|
||||
return err;
|
||||
return 0;
|
||||
|
||||
BUILD_BUG_ON(ARRAY_SIZE(mv88e6352_serdes_hw_stats) >
|
||||
ARRAY_SIZE(mv88e6xxx_port->serdes_stats));
|
||||
@ -798,8 +798,8 @@ static uint64_t mv88e6390_serdes_get_stat(struct mv88e6xxx_chip *chip, int lane,
|
||||
return reg[0] | ((u64)reg[1] << 16) | ((u64)reg[2] << 32);
|
||||
}
|
||||
|
||||
int mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data)
|
||||
size_t mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data)
|
||||
{
|
||||
struct mv88e6390_serdes_hw_stat *stat;
|
||||
int lane;
|
||||
|
@ -165,13 +165,13 @@ irqreturn_t mv88e6393x_serdes_irq_status(struct mv88e6xxx_chip *chip, int port,
|
||||
int mv88e6352_serdes_get_sset_count(struct mv88e6xxx_chip *chip, int port);
|
||||
int mv88e6352_serdes_get_strings(struct mv88e6xxx_chip *chip,
|
||||
int port, uint8_t *data);
|
||||
int mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data);
|
||||
size_t mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data);
|
||||
int mv88e6390_serdes_get_sset_count(struct mv88e6xxx_chip *chip, int port);
|
||||
int mv88e6390_serdes_get_strings(struct mv88e6xxx_chip *chip,
|
||||
int port, uint8_t *data);
|
||||
int mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data);
|
||||
size_t mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
|
||||
uint64_t *data);
|
||||
|
||||
int mv88e6352_serdes_get_regs_len(struct mv88e6xxx_chip *chip, int port);
|
||||
void mv88e6352_serdes_get_regs(struct mv88e6xxx_chip *chip, int port, void *_p);
|
||||
|
Loading…
Reference in New Issue
Block a user