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

Joe Hershberger joe.hershberger at gmail.com
Wed Apr 27 00:05:29 CEST 2016


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>

> ---
> Note that as with almost any patch, I believe NVIDIA copyright applies to
> the submission. However, I don't want to block all my work based on that
> other conversion, so I'm just going to deliberately ignore our policy of
> adding/updating copyright headers to files when editing them. Hopefully
> doing so deliberately (rather than the usual case of just forgetting)
> doesn't get me fired.

Hope you keep your job... at least if you like it.

-Joe


More information about the U-Boot mailing list