[PATCH 1/2] net: rtl8169: add minimal support for 8125B variant

Eugen Hristev eugen.hristev at collabora.com
Wed May 17 12:54:30 CEST 2023

On 4/30/23 22:44, Ramon Fried wrote:
> On Tue, Apr 25, 2023 at 10:47 PM Eugen Hristev
> <eugen.hristev at collabora.com> wrote:
>> On 4/25/23 22:22, Ramon Fried wrote:
>>> On Tue, Apr 25, 2023 at 4:17 PM Eugen Hristev
>>> <eugen.hristev at collabora.com> wrote:
>>>> On 4/25/23 16:06, Eugen Hristev wrote:
>>>>> Add minimal support for 8125B version.
>>>>> Changes are based on the Linux driver.
>>>>> Tested on Radxa Rock 5B Rk3588 board.
>>>>> Connection to a laptop worked fine in 100 Mbps mode.
>>>>> 1000 Mbps mode is not working at the moment.
>>>>> Signed-off-by: Eugen Hristev <eugen.hristev at collabora.com>
>>>>> ---
>>>> The one thing that impacts all the rtl chips is the way the pci BAR is
>>>> now mapped.
>>>> I could not test this on another platform so help on this matter is
>>>> appreciated.
>>>> Thanks!
>>>> Eugen
>>> Let's wait a bit to see if someone can test it. why did you change the
>>> mapping of the BAR ?
>> It did not work with the old code. It provided a bad address, to some
>> area which did not have the right registers.
>> I looked into similar drivers and they were using this call, which works
>> perfectly for 8125b device
>> Eugen
> Ok.
> Hopefully nothing breaks.
> Reviewed-by: Ramon Fried <rfried.dev at gmail.com>

Hello Ramon,

I have a question if you don't mind, maybe you are better suited to 
answer this :

In the case of rtl8169 which is a pci express device, the probing is 
done on demand (pci enum) or with MISC_INIT_R, anyway, the probing is 
done *after* the board init is done, and in case of rockchip, the board 
init will check if there is any 'ethaddr' set, and if not, set the 
ethaddr by generating an unique cpuid-based MAC. This happens, no 
ethaddr is set, and the MAC is generated.
However, when the rtl8169 probes, it has ofcourse a different hardware 
written MAC, but the uboot subsystem will deny it, and claim ethaddr is 
already set, and it will call the 8169 driver to rewrite its MAC.
This then happens, and Uboot will use the initial ethaddr (the one 
generated) for any kind of packets.
While this is not a problem at first glance, when Linux boots, it will 
read the MAC from rtl8169 ROM (even if uboot attempted to rewrite its 
MAC, being a ROM, it will not be written), and Linux will use a 
different MAC now.
Do you have any idea on how to solve this problem ? I would like that 
once rtl8169 driver probes, the initial ethaddr would be overwritten.

Thanks !

More information about the U-Boot mailing list