On 27/02/19 11:17 AM, Keerthy wrote:


On 22/02/19 12:08 AM, Joe Hershberger wrote:
On Wed, Feb 20, 2019 at 6:33 AM Keerthy <j-keer...@ti.com> wrote:

Currently stop is being called unconditionally without even
checking if start is called. In case of multiple instances eth
being present many devices might just be initialized without
a start call in such cases stop might lead unpredictable behaviors
including aborts and crashes. Hence add a check before calling stop.

Signed-off-by: Keerthy <j-keer...@ti.com>
---
  net/eth-uclass.c | 3 ++-
  1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/net/eth-uclass.c b/net/eth-uclass.c
index 2ef20df192..26f7e0b8cd 100644
--- a/net/eth-uclass.c
+++ b/net/eth-uclass.c
@@ -531,7 +531,8 @@ static int eth_pre_remove(struct udevice *dev)
  {
         struct eth_pdata *pdata = dev->platdata;

-       eth_get_ops(dev)->stop(dev);
+       if (eth_is_active(dev))
+               eth_get_ops(dev)->stop(dev);

This seems reasonable... What was the case that provoked an issue?
Which driver was having trouble?

I am trying to implement pru based ethernet driver(multiple instances) with cpsw driver on top on am654-evm. I observed that even though i had not started a particular instance of my pru based device stop was getting called and it was crashing right at the end.

Joe,

I am yet to implement a test case for this. Can this patch be applied independently?

Regards,
Keerthy




         /* clear the MAC address */
         memset(pdata->enetaddr, 0, ARP_HLEN);
--
2.17.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot
_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to