diff mbox

[(net.git),1/6] stmmac: disable at run-time the EEE if not supported

Message ID 1393322309-10390-1-git-send-email-peppe.cavallaro@st.com
State Superseded, archived
Delegated to: David Miller
Headers show

Commit Message

Giuseppe CAVALLARO Feb. 25, 2014, 9:58 a.m. UTC
This patch is to disable the EEE (so HW and timers)
for example when the phy communicates that the EEE
can be supported anymore.

Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |   24 ++++++++++++++++----
 1 files changed, 19 insertions(+), 5 deletions(-)

Comments

Sergei Shtylyov Feb. 25, 2014, 4:29 p.m. UTC | #1
Hello.

On 25-02-2014 13:58, Giuseppe Cavallaro wrote:

> This patch is to disable the EEE (so HW and timers)
> for example when the phy communicates that the EEE
> can be supported anymore.

> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
> ---
>   drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |   24 ++++++++++++++++----
>   1 files changed, 19 insertions(+), 5 deletions(-)

> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> index 078ad0e..dc89dc3 100644
> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
[...]
> @@ -2204,7 +2219,6 @@ static int stmmac_poll(struct napi_struct *napi, int budget)
>   static void stmmac_tx_timeout(struct net_device *dev)
>   {
>   	struct stmmac_priv *priv = netdev_priv(dev);
> -

    Why? Empty line is needed here, after declaration.

>   	/* Clear Tx resources and restart transmitting again */
>   	stmmac_tx_err(priv);
>   }

WBR, Sergei

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Giuseppe CAVALLARO Feb. 26, 2014, 6:39 a.m. UTC | #2
On 2/25/2014 5:29 PM, Sergei Shtylyov wrote:
> Hello.
>
> On 25-02-2014 13:58, Giuseppe Cavallaro wrote:
>
>> This patch is to disable the EEE (so HW and timers)
>> for example when the phy communicates that the EEE
>> can be supported anymore.
>
>> Signed-off-by: Giuseppe Cavallaro <peppe.cavallaro@st.com>
>> ---
>>   drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |   24
>> ++++++++++++++++----
>>   1 files changed, 19 insertions(+), 5 deletions(-)
>
>> diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
>> b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
>> index 078ad0e..dc89dc3 100644
>> --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
>> +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> [...]
>> @@ -2204,7 +2219,6 @@ static int stmmac_poll(struct napi_struct *napi,
>> int budget)
>>   static void stmmac_tx_timeout(struct net_device *dev)
>>   {
>>       struct stmmac_priv *priv = netdev_priv(dev);
>> -
>
>     Why? Empty line is needed here, after declaration.

yes out-of-scope in this patch. I'll fix it and resend all

BR
Peppe

>
>>       /* Clear Tx resources and restart transmitting again */
>>       stmmac_tx_err(priv);
>>   }
>
> WBR, Sergei
>
>
>

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 078ad0e..dc89dc3 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -286,10 +286,25 @@  bool stmmac_eee_init(struct stmmac_priv *priv)
 
 	/* MAC core supports the EEE feature. */
 	if (priv->dma_cap.eee) {
+		int tx_lpi_timer = priv->tx_lpi_timer;
+
 		/* Check if the PHY supports EEE */
-		if (phy_init_eee(priv->phydev, 1))
+		if (phy_init_eee(priv->phydev, 1)) {
+			/* To manage at run-time if the EEE cannot be supported
+			 * anymore (for example because the lp caps have been
+			 * changed).
+			 * In that case the driver disable own timers.
+			 */
+			if (priv->eee_active) {
+				pr_debug("stmmac: disable EEE\n");
+				del_timer_sync(&priv->eee_ctrl_timer);
+				priv->hw->mac->set_eee_timer(priv->ioaddr, 0,
+							     tx_lpi_timer);
+			}
+			priv->eee_active = 0;
 			goto out;
-
+		}
+		/* Activate the EEE and start timers */
 		if (!priv->eee_active) {
 			priv->eee_active = 1;
 			init_timer(&priv->eee_ctrl_timer);
@@ -300,13 +315,13 @@  bool stmmac_eee_init(struct stmmac_priv *priv)
 
 			priv->hw->mac->set_eee_timer(priv->ioaddr,
 						     STMMAC_DEFAULT_LIT_LS,
-						     priv->tx_lpi_timer);
+						     tx_lpi_timer);
 		} else
 			/* Set HW EEE according to the speed */
 			priv->hw->mac->set_eee_pls(priv->ioaddr,
 						   priv->phydev->link);
 
-		pr_info("stmmac: Energy-Efficient Ethernet initialized\n");
+		pr_debug("stmmac: Energy-Efficient Ethernet initialized\n");
 
 		ret = true;
 	}
@@ -2204,7 +2219,6 @@  static int stmmac_poll(struct napi_struct *napi, int budget)
 static void stmmac_tx_timeout(struct net_device *dev)
 {
 	struct stmmac_priv *priv = netdev_priv(dev);
-
 	/* Clear Tx resources and restart transmitting again */
 	stmmac_tx_err(priv);
 }