Skip to contentSkip to conversation

Patch "net: stmmac: enable EEE in MII, GMII or RGMII only" has been added to the 4.9-stable tree

PATCH [email protected] 1 participant 1 message Jan 13, 2018

Subsystems (5)
lore
Share & tools
lore

[email protected]

author maintainer Applied
#0 lore raw

This is a note to let you know that I've just added the patch titled

net: stmmac: enable EEE in MII, GMII or RGMII only

to the 4.9-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
net-stmmac-enable-eee-in-mii-gmii-or-rgmii-only.patch
and it can be found in the queue-4.9 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.

Quoted 1 line

From foo@baz Sat Jan 13 10:51:19 CET 2018

From: Jerome Brunet <[email protected]>
Date: Wed, 3 Jan 2018 16:46:29 +0100
Subject: net: stmmac: enable EEE in MII, GMII or RGMII only

From: Jerome Brunet <[email protected]>

[ Upstream commit 879626e3a52630316d817cbda7cec9a5446d1d82 ]

Note in the databook - Section 4.4 - EEE :
" The EEE feature is not supported when the MAC is configured to use the TBI, RTBI, SMII, RMII or SGMII single PHY interface. Even if the MAC supports multiple PHY interfaces, you should activate the EEE mode only when the MAC is operating with GMII, MII, or RGMII interface."

Applying this restriction solves a stability issue observed on Amlogic gxl platforms operating with RMII interface and the internal PHY.

Fixes 83bf79b6bb64 ("stmmac: disable at run-time the EEE if not supported")
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |    6 ++++++
 include/linux/phy.h                               |   11 +++++++++++
 2 files changed, 17 insertions(+)
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +6 -0
@@ -280,8 +280,14 @@ static void stmmac_eee_ctrl_timer(unsign
 bool stmmac_eee_init(struct stmmac_priv *priv)
 {
 	unsigned long flags;
+	int interface = priv->plat->interface;
 	bool ret = false;
 
+	if ((interface != PHY_INTERFACE_MODE_MII) &&
+	    (interface != PHY_INTERFACE_MODE_GMII) &&
+	    !phy_interface_mode_is_rgmii(interface))
+		goto out;
+
 	/* Using PCS we cannot dial with the phy registers at this stage
 	 * so we do not support extra feature like EEE.
 	 */
include/linux/phy.h +11 -0
@@ -684,6 +684,17 @@ static inline bool phy_is_internal(struc
 }
 
 /**
+ * phy_interface_mode_is_rgmii - Convenience function for testing if a
+ * PHY interface mode is RGMII (all variants)
+ * @mode: the phy_interface_t enum
+ */
+static inline bool phy_interface_mode_is_rgmii(phy_interface_t mode)
+{
+	return mode >= PHY_INTERFACE_MODE_RGMII &&
+		mode <= PHY_INTERFACE_MODE_RGMII_TXID;
+};
+
+/**
  * phy_interface_is_rgmii - Convenience function for testing if a PHY interface
  * is RGMII (all variants)
  * @phydev: the phy_device struct

Patches currently in stable-queue which might be from [email protected] are

queue-4.9/net-stmmac-enable-eee-in-mii-gmii-or-rgmii-only.patch