* [PATCH] usb: xhci: fix interrupt transfer error happened on MTK platforms
@ 2018-09-07 5:51 Chunfeng Yun
2018-09-07 6:31 ` [SPAM][PATCH] " Sean Wang
0 siblings, 1 reply; 3+ messages in thread
From: Chunfeng Yun @ 2018-09-07 5:51 UTC (permalink / raw)
To: Mathias Nyman
Cc: Greg Kroah-Hartman, Felipe Balbi, Matthias Brugger, Chunfeng Yun,
linux-usb, devicetree, linux-kernel, linux-arm-kernel,
linux-mediatek
The MTK xHCI controller use some reserved bytes in endpoint context for
bandwidth scheduling, so need keep them in xhci_endpoint_copy();
The issue is introduced by:
commit f5249461b504 ("xhci: Clear the host side toggle manually when
endpoint is soft reset")
It resets endpoints and will drop bandwidth scheduling parameters used
by interrupt or isochronous endpoints on MTK xHCI controller.
Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
---
drivers/usb/host/xhci-mem.c | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
index ef350c3..b1f27aa 100644
--- a/drivers/usb/host/xhci-mem.c
+++ b/drivers/usb/host/xhci-mem.c
@@ -1613,6 +1613,10 @@ void xhci_endpoint_copy(struct xhci_hcd *xhci,
in_ep_ctx->ep_info2 = out_ep_ctx->ep_info2;
in_ep_ctx->deq = out_ep_ctx->deq;
in_ep_ctx->tx_info = out_ep_ctx->tx_info;
+ if (xhci->quirks & XHCI_MTK_HOST) {
+ in_ep_ctx->reserved[0] = out_ep_ctx->reserved[0];
+ in_ep_ctx->reserved[1] = out_ep_ctx->reserved[1];
+ }
}
/* Copy output xhci_slot_ctx to the input xhci_slot_ctx.
--
1.9.1
^ permalink raw reply related [flat|nested] 3+ messages in thread* Re: [SPAM][PATCH] usb: xhci: fix interrupt transfer error happened on MTK platforms
2018-09-07 5:51 [PATCH] usb: xhci: fix interrupt transfer error happened on MTK platforms Chunfeng Yun
@ 2018-09-07 6:31 ` Sean Wang
2018-09-07 7:21 ` Chunfeng Yun
0 siblings, 1 reply; 3+ messages in thread
From: Sean Wang @ 2018-09-07 6:31 UTC (permalink / raw)
To: Chunfeng Yun
Cc: devicetree, Mathias Nyman, Felipe Balbi, Greg Kroah-Hartman,
linux-usb, linux-kernel, linux-mediatek, Matthias Brugger,
linux-arm-kernel
Hi,
Should add Fixes: tag and Cc: <stable@vger.kernel.org> also to apply the patch to the stable tree. Otherwise, the problem still is kept in the stable kernel.
The patch really can solve the problem by testing with the ASIX AX88179 u3 Ethernet can't work since v4.17.x.
So, Tested-by: Sean Wang <sean.wang@mediatek.com>
and attach the log testing with AX88179
[ 126.369574] usb 2-1: new SuperSpeed Gen 1 USB device number 2 using xhci-mtk
[ 126.730806] ax88179_178a 2-1:1.0 eth2: register 'ax88179_178a' at usb-1a0c0000.usb-1, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:11:6b:68:4c:9e
[ 126.759932] ax88179_178a 2-1:1.0 enx00116b684c9e: renamed from eth2
~# ifconfig enx00116b684c9e 10.10.10.1
~# ping 10[ 147.613266] ax88179_178a 2-1:1.0 enx00116b684c9e: ax88179 - Link status is: 1
.10.10.3
PING 10.10.10.3 (10.10.10.3) 56(84) bytes of data.
64 bytes from 10.10.10.3: icmp_seq=1 ttl=64 time=0.414 ms
64 bytes from 10.10.10.3: icmp_seq=2 ttl=64 time=0.422 ms
64 bytes from 10.10.10.3: icmp_seq=3 ttl=64 time=0.376 ms
64 bytes from 10.10.10.3: icmp_seq=4 ttl=64 time=0.309 ms
64 bytes from 10.10.10.3: icmp_seq=5 ttl=64 time=0.392 ms
64 bytes from 10.10.10.3: icmp_seq=6 ttl=64 time=0.355 ms
64 bytes from 10.10.10.3: icmp_seq=7 ttl=64 time=0.407 ms
64 bytes from 10.10.10.3: icmp_seq=8 ttl=64 time=0.325 ms
On Fri, 2018-09-07 at 13:51 +0800, Chunfeng Yun wrote:
> The MTK xHCI controller use some reserved bytes in endpoint context for
> bandwidth scheduling, so need keep them in xhci_endpoint_copy();
>
> The issue is introduced by:
> commit f5249461b504 ("xhci: Clear the host side toggle manually when
> endpoint is soft reset")
> It resets endpoints and will drop bandwidth scheduling parameters used
> by interrupt or isochronous endpoints on MTK xHCI controller.
>
> Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> ---
> drivers/usb/host/xhci-mem.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
> index ef350c3..b1f27aa 100644
> --- a/drivers/usb/host/xhci-mem.c
> +++ b/drivers/usb/host/xhci-mem.c
> @@ -1613,6 +1613,10 @@ void xhci_endpoint_copy(struct xhci_hcd *xhci,
> in_ep_ctx->ep_info2 = out_ep_ctx->ep_info2;
> in_ep_ctx->deq = out_ep_ctx->deq;
> in_ep_ctx->tx_info = out_ep_ctx->tx_info;
> + if (xhci->quirks & XHCI_MTK_HOST) {
> + in_ep_ctx->reserved[0] = out_ep_ctx->reserved[0];
> + in_ep_ctx->reserved[1] = out_ep_ctx->reserved[1];
> + }
> }
>
> /* Copy output xhci_slot_ctx to the input xhci_slot_ctx.
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [SPAM][PATCH] usb: xhci: fix interrupt transfer error happened on MTK platforms
2018-09-07 6:31 ` [SPAM][PATCH] " Sean Wang
@ 2018-09-07 7:21 ` Chunfeng Yun
0 siblings, 0 replies; 3+ messages in thread
From: Chunfeng Yun @ 2018-09-07 7:21 UTC (permalink / raw)
To: Sean Wang
Cc: devicetree, Mathias Nyman, Felipe Balbi, Greg Kroah-Hartman,
linux-usb, linux-kernel, linux-mediatek, Matthias Brugger,
linux-arm-kernel
Hi Sean,
I'll send a new version, thanks
On Fri, 2018-09-07 at 14:31 +0800, Sean Wang wrote:
> Hi,
>
> Should add Fixes: tag and Cc: <stable@vger.kernel.org> also to apply the patch to the stable tree. Otherwise, the problem still is kept in the stable kernel.
>
> The patch really can solve the problem by testing with the ASIX AX88179 u3 Ethernet can't work since v4.17.x.
>
> So, Tested-by: Sean Wang <sean.wang@mediatek.com>
>
> and attach the log testing with AX88179
>
> [ 126.369574] usb 2-1: new SuperSpeed Gen 1 USB device number 2 using xhci-mtk
> [ 126.730806] ax88179_178a 2-1:1.0 eth2: register 'ax88179_178a' at usb-1a0c0000.usb-1, ASIX AX88179 USB 3.0 Gigabit Ethernet, 00:11:6b:68:4c:9e
> [ 126.759932] ax88179_178a 2-1:1.0 enx00116b684c9e: renamed from eth2
>
> ~# ifconfig enx00116b684c9e 10.10.10.1
> ~# ping 10[ 147.613266] ax88179_178a 2-1:1.0 enx00116b684c9e: ax88179 - Link status is: 1
> .10.10.3
> PING 10.10.10.3 (10.10.10.3) 56(84) bytes of data.
> 64 bytes from 10.10.10.3: icmp_seq=1 ttl=64 time=0.414 ms
> 64 bytes from 10.10.10.3: icmp_seq=2 ttl=64 time=0.422 ms
> 64 bytes from 10.10.10.3: icmp_seq=3 ttl=64 time=0.376 ms
> 64 bytes from 10.10.10.3: icmp_seq=4 ttl=64 time=0.309 ms
> 64 bytes from 10.10.10.3: icmp_seq=5 ttl=64 time=0.392 ms
> 64 bytes from 10.10.10.3: icmp_seq=6 ttl=64 time=0.355 ms
> 64 bytes from 10.10.10.3: icmp_seq=7 ttl=64 time=0.407 ms
> 64 bytes from 10.10.10.3: icmp_seq=8 ttl=64 time=0.325 ms
>
> On Fri, 2018-09-07 at 13:51 +0800, Chunfeng Yun wrote:
> > The MTK xHCI controller use some reserved bytes in endpoint context for
> > bandwidth scheduling, so need keep them in xhci_endpoint_copy();
> >
> > The issue is introduced by:
> > commit f5249461b504 ("xhci: Clear the host side toggle manually when
> > endpoint is soft reset")
> > It resets endpoints and will drop bandwidth scheduling parameters used
> > by interrupt or isochronous endpoints on MTK xHCI controller.
> >
> > Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
> > ---
> > drivers/usb/host/xhci-mem.c | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c
> > index ef350c3..b1f27aa 100644
> > --- a/drivers/usb/host/xhci-mem.c
> > +++ b/drivers/usb/host/xhci-mem.c
> > @@ -1613,6 +1613,10 @@ void xhci_endpoint_copy(struct xhci_hcd *xhci,
> > in_ep_ctx->ep_info2 = out_ep_ctx->ep_info2;
> > in_ep_ctx->deq = out_ep_ctx->deq;
> > in_ep_ctx->tx_info = out_ep_ctx->tx_info;
> > + if (xhci->quirks & XHCI_MTK_HOST) {
> > + in_ep_ctx->reserved[0] = out_ep_ctx->reserved[0];
> > + in_ep_ctx->reserved[1] = out_ep_ctx->reserved[1];
> > + }
> > }
> >
> > /* Copy output xhci_slot_ctx to the input xhci_slot_ctx.
>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2018-09-07 7:21 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-09-07 5:51 [PATCH] usb: xhci: fix interrupt transfer error happened on MTK platforms Chunfeng Yun
2018-09-07 6:31 ` [SPAM][PATCH] " Sean Wang
2018-09-07 7:21 ` Chunfeng Yun
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).