[U-Boot] [PATCH 01/14] net: eth-uclass: eth_get_dev based on SEQ_ALIAS instead of probe order
Lokesh Vutla
lokeshvutla at ti.com
Tue Oct 29 09:03:00 UTC 2019
On 25/10/19 10:23 PM, keerthy wrote:
>
>
> On 10/25/2019 5:35 PM, Tom Rini wrote:
>> On Tue, Aug 06, 2019 at 04:08:31PM +0530, Keerthy wrote:
>>
>>> In case of multiple eth interfaces currently eth_get_dev
>>> fetches the device based on the probe order which can be
>>> random hence try with the alias.
>>>
>>> Signed-off-by: Keerthy <j-keerthy at ti.com>
>>> ---
>>> net/eth-uclass.c | 4 ++--
>>> 1 file changed, 2 insertions(+), 2 deletions(-)
>>>
>>> diff --git a/net/eth-uclass.c b/net/eth-uclass.c
>>> index 031d558625..f11c307b8c 100644
>>> --- a/net/eth-uclass.c
>>> +++ b/net/eth-uclass.c
>>> @@ -68,8 +68,8 @@ struct udevice *eth_get_dev(void)
>>> uc_priv = eth_get_uclass_priv();
>>> if (!uc_priv->current)
>>> - eth_errno = uclass_first_device(UCLASS_ETH,
>>> - &uc_priv->current);
>>> + eth_errno = uclass_get_device_by_seq(UCLASS_ETH,
>>> + 0, &uc_priv->current);
>>> return uc_priv->current;
>>> }
>>
>> This breaks networking on qemu_arm / qemu_arm64 and no networking device
>> is found.
>
> Okay. That is pretty strange. So seems like uclass_get_device_by_seq is failing
> for some reason.
because not everyone populates aliases. You can do something like below:
eth_errno = uclass_get_device_by_seq(UCLASS_ETH, 0, &uc_priv->current);
if (eth_errno || !uc_priv->current)
eth_errno = uclass_first_device(UCLASS_ETH, &uc_priv->current);
Thanks and regards,
Lokesh
>
>>
More information about the U-Boot
mailing list