Marvell phy: add field to get errors from fiber link.
authorCharles-Antoine Couret <charles-antoine.couret@nexvision.fr>
Tue, 19 Jul 2016 09:13:11 +0000 (11:13 +0200)
committerDavid S. Miller <davem@davemloft.net>
Tue, 19 Jul 2016 23:05:56 +0000 (16:05 -0700)
Add support for the fiber receiver error counter in the
statistics. Rename the current counter which is for copper errors to
phy_receive_errors_copper, so it is easy to distinguish copper from
fiber.

Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Signed-off-by: Charles-Antoine Couret <charles-antoine.couret@nexvision.fr>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/phy/marvell.c

index 75b921169d3ee34d1e9c74e7f81af74e6595d69c..0dde7ca1ae41572edf9e4265fdcfbcfa781dadc5 100644 (file)
 #define ADVERTISE_PAUSE_ASYM_FIBER     0x100
 
 #define REGISTER_LINK_STATUS   0x400
+#define NB_FIBER_STATS 1
 
 MODULE_DESCRIPTION("Marvell PHY driver");
 MODULE_AUTHOR("Andy Fleming");
@@ -164,8 +165,9 @@ struct marvell_hw_stat {
 };
 
 static struct marvell_hw_stat marvell_hw_stats[] = {
-       { "phy_receive_errors", 0, 21, 16},
+       { "phy_receive_errors_copper", 0, 21, 16},
        { "phy_idle_errors", 0, 10, 8 },
+       { "phy_receive_errors_fiber", 1, 21, 16},
 };
 
 struct marvell_priv {
@@ -1236,7 +1238,10 @@ static int m88e1318_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *w
 
 static int marvell_get_sset_count(struct phy_device *phydev)
 {
-       return ARRAY_SIZE(marvell_hw_stats);
+       if (phydev->supported & SUPPORTED_FIBRE)
+               return ARRAY_SIZE(marvell_hw_stats);
+       else
+               return ARRAY_SIZE(marvell_hw_stats) - NB_FIBER_STATS;
 }
 
 static void marvell_get_strings(struct phy_device *phydev, u8 *data)