[U-Boot] [PATCH] net: rtl8169: fix switching between adapters

Joe Hershberger joe.hershberger at gmail.com
Fri Jun 3 00:06:11 CEST 2016


On Wed, Jun 1, 2016 at 11:40 AM, Stephen Warren <swarren at wwwdotorg.org> wrote:
> On 04/26/2016 04:05 PM, Joe Hershberger wrote:
>>
>> On Tue, Apr 26, 2016 at 4:29 PM, Stephen Warren <swarren at wwwdotorg.org>
>> wrote:
>>>
>>> From: Stephen Warren <swarren at nvidia.com>
>>>
>>> The rtl8169 driver uses a global variable to store the register address
>>> of the adapter being operated upon. This is updated to point at the
>>> correct adapter when sending or receiving a packet, or shutting down the
>>> adapter, but not when initializing the adapter. Consequently, switching
>>> between different adapters within the same U-Boot runtime does not work
>>> correctly since the driver programs the wrong registers during
>>> rtl8169_eth_start() -> rtl8169_common_start() -> rtl8169_hw_start().
>>>
>>> Note that since rtl8169_eth_stop() does set the global variable, the
>>> second consecutive attempt to use the "new" adapter did work even before
>>> this patch, because each time network usage is shut down, the network
>>> core calls stop, which sets the variable so that the next start does
>>> actually initialize the hardware, and the adapter works.
>>>
>>> Equally, rtl8169_eth_probe() calls rtl_init() which sets the global, so
>>> if using only a single device, or if picking the "right" device (based on
>>> probe order) when multiple devices are present, ioaddr will already be
>>> set
>>> correctly from the get-go, so the issue does not occur.
>>>
>>> Signed-off-by: Stephen Warren <swarren at nvidia.com>
>>
>>
>> Looks reasonable to me.
>> Acked-by: Joe Hershberger <joe.hershberger at ni.com>
>
>
> Joe,
>
> I assume you'll be applying this?

Yes.


More information about the U-Boot mailing list