Message ID | 20231114125111.313229-2-jtornosm@redhat.com (mailing list archive) |
---|---|
State | Accepted |
Commit | 0739af07d1d947af27c877f797cb82ceee702515 |
Headers | show |
Series | net: usb: ax88179_178a: fix and improve reset procedure | expand |
On Tue, 2023-11-14 at 13:50 +0100, Jose Ignacio Tornos Martinez wrote: > Using generic ASIX Electronics Corp. AX88179 Gigabit Ethernet device, > the following test cycle has been implemented: > - power on > - check logs > - shutdown > - after detecting the system shutdown, disconnect power > - after approximately 60 seconds of sleep, power is restored > Running some cycles, sometimes error logs like this appear: > kernel: ax88179_178a 2-9:1.0 (unnamed net_device) (uninitialized): Failed to write reg index 0x0001: -19 > kernel: ax88179_178a 2-9:1.0 (unnamed net_device) (uninitialized): Failed to read reg index 0x0001: -19 > ... > These failed operation are happening during ax88179_reset execution, so > the initialization could not be correct. > > In order to avoid this, we need to increase the delay after reset and > clock initial operations. By using these larger values, many cycles > have been run and no failed operations appear. > > Reported-by: Herb Wei <weihao.bj@ieisystem.com> > Tested-by: Herb Wei <weihao.bj@ieisystem.com> > Signed-off-by: Jose Ignacio Tornos Martinez <jtornosm@redhat.com> We need at least a suitable Fixes tag > --- > drivers/net/usb/ax88179_178a.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c > index aff39bf3161d..4ea0e155bb0d 100644 > --- a/drivers/net/usb/ax88179_178a.c > +++ b/drivers/net/usb/ax88179_178a.c > @@ -1583,11 +1583,11 @@ static int ax88179_reset(struct usbnet *dev) > > *tmp16 = AX_PHYPWR_RSTCTL_IPRL; > ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16); > - msleep(200); > + msleep(500); Do you know if there is some status register you can query for 'reset completed'? or some official documentation you can quote for the above delay? Thanks! Paolo
On Thu, Nov 16, 2023 at 10:38 AM Paolo Abeni <pabeni@redhat.com> wrote: > We need at least a suitable Fixes tag Ok, I will add it in my next version. > Do you know if there is some status register you can query for 'reset > completed'? or some official documentation you can quote for the above > delay? I have only continued the previous way. But, you are right, maybe it can be done better, let me try if possible. Thank you Best regards José Ignacio
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c index aff39bf3161d..4ea0e155bb0d 100644 --- a/drivers/net/usb/ax88179_178a.c +++ b/drivers/net/usb/ax88179_178a.c @@ -1583,11 +1583,11 @@ static int ax88179_reset(struct usbnet *dev) *tmp16 = AX_PHYPWR_RSTCTL_IPRL; ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_PHYPWR_RSTCTL, 2, 2, tmp16); - msleep(200); + msleep(500); *tmp = AX_CLK_SELECT_ACS | AX_CLK_SELECT_BCS; ax88179_write_cmd(dev, AX_ACCESS_MAC, AX_CLK_SELECT, 1, 1, tmp); - msleep(100); + msleep(200); /* Ethernet PHY Auto Detach*/ ax88179_auto_detach(dev);