mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-17 09:14:19 +08:00
usb: dwc2: make the scheduler handle excessive NAKs better
I'm seeing problems with a d-link dwcl-g122 wifi dongle that someone sent me. There are reports of other wifi dongles with the same/similar problem. The devices appear to be NAKing to the point of confusing the dwc2 driver completely. The attached patch helps with my d-link dwl-g122 - it's adapted from the Raspberry Pi dwc_otg driver, which is a modified version of the Synopsys vendor driver. The error recovery is still valid after the patch, I think. Cc: Dom Cobley <popcornmix@gmail.com> Signed-off-by: Nick Hudson <skrll@netbsd.org> Signed-off-by: Paul Zimmerman <paulz@synopsys.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
87df8ac3d2
commit
151d0cbdbe
@ -1890,12 +1890,20 @@ static void dwc2_hc_chhltd_intr_dma(struct dwc2_hsotg *hsotg,
|
|||||||
"hcint 0x%08x, intsts 0x%08x\n",
|
"hcint 0x%08x, intsts 0x%08x\n",
|
||||||
chan->hcint,
|
chan->hcint,
|
||||||
readl(hsotg->regs + GINTSTS));
|
readl(hsotg->regs + GINTSTS));
|
||||||
|
goto error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
dev_info(hsotg->dev,
|
dev_info(hsotg->dev,
|
||||||
"NYET/NAK/ACK/other in non-error case, 0x%08x\n",
|
"NYET/NAK/ACK/other in non-error case, 0x%08x\n",
|
||||||
chan->hcint);
|
chan->hcint);
|
||||||
|
error:
|
||||||
|
/* Failthrough: use 3-strikes rule */
|
||||||
|
qtd->error_count++;
|
||||||
|
dwc2_update_urb_state_abn(hsotg, chan, chnum, qtd->urb,
|
||||||
|
qtd, DWC2_HC_XFER_XACT_ERR);
|
||||||
|
dwc2_hcd_save_data_toggle(hsotg, chan, chnum, qtd);
|
||||||
|
dwc2_halt_channel(hsotg, chan, qtd, DWC2_HC_XFER_XACT_ERR);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user