On Wed, Jun 1, 2016 at 11:40 AM, Stephen Warren <swar...@wwwdotorg.org> wrote: > On 04/26/2016 04:05 PM, Joe Hershberger wrote: >> >> On Tue, Apr 26, 2016 at 4:29 PM, Stephen Warren <swar...@wwwdotorg.org> >> wrote: >>> >>> From: Stephen Warren <swar...@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 <swar...@nvidia.com> >> >> >> Looks reasonable to me. >> Acked-by: Joe Hershberger <joe.hershber...@ni.com> > > > Joe, > > I assume you'll be applying this?
Yes. _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot