[U-Boot] [PATCH] net: eth-uclass: call stop only for active devices
Keerthy
j-keerthy at ti.com
Fri Mar 29 09:52:19 UTC 2019
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-keerthy at 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-keerthy at 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 at lists.denx.de
>>> https://lists.denx.de/listinfo/u-boot
More information about the U-Boot
mailing list