Browse Source

net: dsa: lan9303: refactor lan9303_get_ethtool_stats

In lan9303_get_ethtool_stats: Get rid of 0x400 constant magic
by using new lan9303_read_switch_reg() inside loop.
Reduced scope of two variables.

Signed-off-by: Egil Hjelmeland <privat@egil-hjelmeland.no>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Egil Hjelmeland 8 năm trước cách đây
mục cha
commit
0a967b4a8e
1 tập tin đã thay đổi với 16 bổ sung10 xóa
  1. 16 10
      drivers/net/dsa/lan9303-core.c

+ 16 - 10
drivers/net/dsa/lan9303-core.c

@@ -435,6 +435,13 @@ static int lan9303_write_switch_port(struct lan9303 *chip, int port,
 		chip, LAN9303_SWITCH_PORT_REG(port, regnum), val);
 		chip, LAN9303_SWITCH_PORT_REG(port, regnum), val);
 }
 }
 
 
+static int lan9303_read_switch_port(struct lan9303 *chip, int port,
+				    u16 regnum, u32 *val)
+{
+	return lan9303_read_switch_reg(
+		chip, LAN9303_SWITCH_PORT_REG(port, regnum), val);
+}
+
 static int lan9303_detect_phy_setup(struct lan9303 *chip)
 static int lan9303_detect_phy_setup(struct lan9303 *chip)
 {
 {
 	int reg;
 	int reg;
@@ -705,19 +712,18 @@ static void lan9303_get_ethtool_stats(struct dsa_switch *ds, int port,
 				      uint64_t *data)
 				      uint64_t *data)
 {
 {
 	struct lan9303 *chip = ds->priv;
 	struct lan9303 *chip = ds->priv;
-	u32 reg;
-	unsigned int u, poff;
-	int ret;
-
-	poff = port * 0x400;
+	unsigned int u;
 
 
 	for (u = 0; u < ARRAY_SIZE(lan9303_mib); u++) {
 	for (u = 0; u < ARRAY_SIZE(lan9303_mib); u++) {
-		ret = lan9303_read_switch_reg(chip,
-					      lan9303_mib[u].offset + poff,
-					      &reg);
+		u32 reg;
+		int ret;
+
+		ret = lan9303_read_switch_port(
+			chip, port, lan9303_mib[u].offset, &reg);
+
 		if (ret)
 		if (ret)
-			dev_warn(chip->dev, "Reading status reg %u failed\n",
-				 lan9303_mib[u].offset + poff);
+			dev_warn(chip->dev, "Reading status port %d reg %u failed\n",
+				 port, lan9303_mib[u].offset);
 		data[u] = reg;
 		data[u] = reg;
 	}
 	}
 }
 }