Message ID | 20231114125111.313229-3-jtornosm@redhat.com (mailing list archive) |
---|---|
State | New, archived |
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: > The device is always reset two consecutive times (ax88179_reset is called > twice), one from usbnet_probe during the device binding and the other from > usbnet_open. > > Let only the reset during the device binding to prepare the device as soon > as possible and not repeat the reset operation (tested with generic ASIX > Electronics Corp. AX88179 Gigabit Ethernet device). > > 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 a suitable Fixes tag even here ;) > --- > drivers/net/usb/ax88179_178a.c | 13 ------------- > 1 file changed, 13 deletions(-) > > diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c > index 4ea0e155bb0d..864c6fc2db33 100644 > --- a/drivers/net/usb/ax88179_178a.c > +++ b/drivers/net/usb/ax88179_178a.c > @@ -1678,7 +1678,6 @@ static const struct driver_info ax88179_info = { > .unbind = ax88179_unbind, > .status = ax88179_status, > .link_reset = ax88179_link_reset, > - .reset = ax88179_reset, > .stop = ax88179_stop, > .flags = FLAG_ETHER | FLAG_FRAMING_AX, > .rx_fixup = ax88179_rx_fixup, This looks potentially dangerous, as the device will not get a reset in down/up cycles; *possibly* dropping the reset call from ax88179_bind() would be safer. In both cases touching so many H/W variant with testing available on a single one sounds dangerous. Is the unneeded 2nd reset causing any specific issue? Thanks, Paolo
On Thu, Nov 16, 2023 at 10:42 AM Paolo Abeni <pabeni@redhat.com> wrote: > We need a suitable Fixes tag even here ;) Ok, I will add it in my next version. > > --- > > drivers/net/usb/ax88179_178a.c | 13 ------------- > > 1 file changed, 13 deletions(-) > > > > diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c > > index 4ea0e155bb0d..864c6fc2db33 100644 > > --- a/drivers/net/usb/ax88179_178a.c > > +++ b/drivers/net/usb/ax88179_178a.c > > @@ -1678,7 +1678,6 @@ static const struct driver_info ax88179_info = { > > .unbind = ax88179_unbind, > > .status = ax88179_status, > > .link_reset = ax88179_link_reset, > > - .reset = ax88179_reset, > > .stop = ax88179_stop, > > .flags = FLAG_ETHER | FLAG_FRAMING_AX, > > .rx_fixup = ax88179_rx_fixup, > > This looks potentially dangerous, as the device will not get a reset in > down/up cycles; *possibly* dropping the reset call from ax88179_bind() > would be safer. Ok, I had the doubt about which reset would be the best, because it seemed to me that reset would be better as soon as possible. I will try what you say to avoid down/up cycles. > In both cases touching so many H/W variant with testing available on a > single one sounds dangerous. Is the unneeded 2nd reset causing any > specific issue? Actually, this double reboot somewhat masked the first problem, because the probability of getting a successful initialization, if there is a previous problem seems to be higher. So, it is not strictly needed but I think it is better to avoid a second unnecessary reset. Ok, if I modify the call from ax88179_bind() I will be respecting the reset operation of all devices. Thanks Best regards José Ignacio
diff --git a/drivers/net/usb/ax88179_178a.c b/drivers/net/usb/ax88179_178a.c index 4ea0e155bb0d..864c6fc2db33 100644 --- a/drivers/net/usb/ax88179_178a.c +++ b/drivers/net/usb/ax88179_178a.c @@ -1678,7 +1678,6 @@ static const struct driver_info ax88179_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1691,7 +1690,6 @@ static const struct driver_info ax88178a_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1704,7 +1702,6 @@ static const struct driver_info cypress_GX3_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1717,7 +1714,6 @@ static const struct driver_info dlink_dub1312_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1730,7 +1726,6 @@ static const struct driver_info sitecom_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1743,7 +1738,6 @@ static const struct driver_info samsung_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1756,7 +1750,6 @@ static const struct driver_info lenovo_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1769,7 +1762,6 @@ static const struct driver_info belkin_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1782,7 +1774,6 @@ static const struct driver_info toshiba_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1795,7 +1786,6 @@ static const struct driver_info mct_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1808,7 +1798,6 @@ static const struct driver_info at_umc2000_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1821,7 +1810,6 @@ static const struct driver_info at_umc200_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup, @@ -1834,7 +1822,6 @@ static const struct driver_info at_umc2000sp_info = { .unbind = ax88179_unbind, .status = ax88179_status, .link_reset = ax88179_link_reset, - .reset = ax88179_reset, .stop = ax88179_stop, .flags = FLAG_ETHER | FLAG_FRAMING_AX, .rx_fixup = ax88179_rx_fixup,