2017-12-18 05:58:01

by Hemanth Puranik

[permalink] [raw]
Subject: [PATCH] net: qcom/emac: Change the order of mac up and sgmii open

This patch fixes the order of mac_up and sgmii_open for the
reasons noted below:

- If open takes more time(if the SGMII block is not responding or
if we want to do some delay based task) in this situation we
will hit NETDEV watchdog
- The main reason : We should signal to upper layers that we are
ready to receive packets "only" when the entire path is initialized
not the other way around, this is followed in the reset path where
we do mac_down, sgmii_reset and mac_up. This also makes the driver
uniform across the reset and open paths.
- In the future there may be need for delay based tasks to be done in
sgmii open which will result in NETDEV watchdog
- As per the documentation the order of init should be sgmii, mac, rings
and DMA

Signed-off-by: Hemanth Puranik <[email protected]>
---
drivers/net/ethernet/qualcomm/emac/emac.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/qualcomm/emac/emac.c b/drivers/net/ethernet/qualcomm/emac/emac.c
index 70c92b6..38c924bd 100644
--- a/drivers/net/ethernet/qualcomm/emac/emac.c
+++ b/drivers/net/ethernet/qualcomm/emac/emac.c
@@ -253,18 +253,18 @@ static int emac_open(struct net_device *netdev)
return ret;
}

- ret = emac_mac_up(adpt);
+ ret = adpt->phy.open(adpt);
if (ret) {
emac_mac_rx_tx_rings_free_all(adpt);
free_irq(irq->irq, irq);
return ret;
}

- ret = adpt->phy.open(adpt);
+ ret = emac_mac_up(adpt);
if (ret) {
- emac_mac_down(adpt);
emac_mac_rx_tx_rings_free_all(adpt);
free_irq(irq->irq, irq);
+ adpt->phy.close(adpt);
return ret;
}

--
Qualcomm Datacenter Technologies as an affiliate of Qualcomm Technologies, Inc.
Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.


2017-12-18 16:06:03

by Timur Tabi

[permalink] [raw]
Subject: Re: [PATCH] net: qcom/emac: Change the order of mac up and sgmii open

On 12/17/2017 11:57 PM, Hemanth Puranik wrote:
> This patch fixes the order of mac_up and sgmii_open for the
> reasons noted below:
>
> - If open takes more time(if the SGMII block is not responding or
> if we want to do some delay based task) in this situation we
> will hit NETDEV watchdog
> - The main reason : We should signal to upper layers that we are
> ready to receive packets "only" when the entire path is initialized
> not the other way around, this is followed in the reset path where
> we do mac_down, sgmii_reset and mac_up. This also makes the driver
> uniform across the reset and open paths.
> - In the future there may be need for delay based tasks to be done in
> sgmii open which will result in NETDEV watchdog
> - As per the documentation the order of init should be sgmii, mac, rings
> and DMA
>
> Signed-off-by: Hemanth Puranik<[email protected]>

Acked-by: Timur Tabi <[email protected]>

--
Qualcomm Datacenter Technologies, Inc. as an affiliate of Qualcomm
Technologies, Inc. Qualcomm Technologies, Inc. is a member of the
Code Aurora Forum, a Linux Foundation Collaborative Project.

2017-12-18 18:22:13

by David Miller

[permalink] [raw]
Subject: Re: [PATCH] net: qcom/emac: Change the order of mac up and sgmii open

From: Hemanth Puranik <[email protected]>
Date: Mon, 18 Dec 2017 11:27:47 +0530

> This patch fixes the order of mac_up and sgmii_open for the
> reasons noted below:
>
> - If open takes more time(if the SGMII block is not responding or
> if we want to do some delay based task) in this situation we
> will hit NETDEV watchdog
> - The main reason : We should signal to upper layers that we are
> ready to receive packets "only" when the entire path is initialized
> not the other way around, this is followed in the reset path where
> we do mac_down, sgmii_reset and mac_up. This also makes the driver
> uniform across the reset and open paths.
> - In the future there may be need for delay based tasks to be done in
> sgmii open which will result in NETDEV watchdog
> - As per the documentation the order of init should be sgmii, mac, rings
> and DMA
>
> Signed-off-by: Hemanth Puranik <[email protected]>

Applied.