Skip to content

Commit fc82a08

Browse files
wkzdavem330
authored andcommitted
net: dsa: mv88e6xxx: Fix mv88e6352_serdes_get_stats error path
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 <[email protected]> Reviewed-by: Florian Fainelli <[email protected]> Signed-off-by: Tobias Waldekranz <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 3def80e commit fc82a08

File tree

3 files changed

+11
-11
lines changed

3 files changed

+11
-11
lines changed

drivers/net/dsa/mv88e6xxx/chip.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -613,8 +613,8 @@ struct mv88e6xxx_ops {
613613
int (*serdes_get_sset_count)(struct mv88e6xxx_chip *chip, int port);
614614
int (*serdes_get_strings)(struct mv88e6xxx_chip *chip, int port,
615615
uint8_t *data);
616-
int (*serdes_get_stats)(struct mv88e6xxx_chip *chip, int port,
617-
uint64_t *data);
616+
size_t (*serdes_get_stats)(struct mv88e6xxx_chip *chip, int port,
617+
uint64_t *data);
618618

619619
/* SERDES registers for ethtool */
620620
int (*serdes_get_regs_len)(struct mv88e6xxx_chip *chip, int port);

drivers/net/dsa/mv88e6xxx/serdes.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,8 +177,8 @@ static uint64_t mv88e6352_serdes_get_stat(struct mv88e6xxx_chip *chip,
177177
return val;
178178
}
179179

180-
int mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
181-
uint64_t *data)
180+
size_t mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
181+
uint64_t *data)
182182
{
183183
struct mv88e6xxx_port *mv88e6xxx_port = &chip->ports[port];
184184
struct mv88e6352_serdes_hw_stat *stat;
@@ -187,7 +187,7 @@ int mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
187187

188188
err = mv88e6352_g2_scratch_port_has_serdes(chip, port);
189189
if (err <= 0)
190-
return err;
190+
return 0;
191191

192192
BUILD_BUG_ON(ARRAY_SIZE(mv88e6352_serdes_hw_stats) >
193193
ARRAY_SIZE(mv88e6xxx_port->serdes_stats));
@@ -429,8 +429,8 @@ static uint64_t mv88e6390_serdes_get_stat(struct mv88e6xxx_chip *chip, int lane,
429429
return reg[0] | ((u64)reg[1] << 16) | ((u64)reg[2] << 32);
430430
}
431431

432-
int mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
433-
uint64_t *data)
432+
size_t mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
433+
uint64_t *data)
434434
{
435435
struct mv88e6390_serdes_hw_stat *stat;
436436
int lane;

drivers/net/dsa/mv88e6xxx/serdes.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -127,13 +127,13 @@ unsigned int mv88e6390_serdes_irq_mapping(struct mv88e6xxx_chip *chip,
127127
int mv88e6352_serdes_get_sset_count(struct mv88e6xxx_chip *chip, int port);
128128
int mv88e6352_serdes_get_strings(struct mv88e6xxx_chip *chip,
129129
int port, uint8_t *data);
130-
int mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
131-
uint64_t *data);
130+
size_t mv88e6352_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
131+
uint64_t *data);
132132
int mv88e6390_serdes_get_sset_count(struct mv88e6xxx_chip *chip, int port);
133133
int mv88e6390_serdes_get_strings(struct mv88e6xxx_chip *chip,
134134
int port, uint8_t *data);
135-
int mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
136-
uint64_t *data);
135+
size_t mv88e6390_serdes_get_stats(struct mv88e6xxx_chip *chip, int port,
136+
uint64_t *data);
137137

138138
int mv88e6352_serdes_get_regs_len(struct mv88e6xxx_chip *chip, int port);
139139
void mv88e6352_serdes_get_regs(struct mv88e6xxx_chip *chip, int port, void *_p);

0 commit comments

Comments
 (0)