> @@ -704,7 +710,7 @@ static void lan9303_get_ethtool_stats(struct dsa_switch > *ds, int port, > unsigned int u, poff; > int ret; > > - poff = port * 0x400; > + poff = LAN9303_SWITCH_PORT_REG(port, 0); > > for (u = 0; u < ARRAY_SIZE(lan9303_mib); u++) { > ret = lan9303_read_switch_reg(chip,
So the actual code is: for (u = 0; u < ARRAY_SIZE(lan9303_mib); u++) { ret = lan9303_read_switch_reg(chip, lan9303_mib[u].offset + poff, ®); Could this be written as for (u = 0; u < ARRAY_SIZE(lan9303_mib); u++) { ret = lan9303_read_switch_port(chip, port, lan9303_mib[u].offset, ®); It is then clear you are reading the statistics from a port register. Andrew