Add missed flushing of data which can happen when "xhci_configure_mask()"
is called from "xhci_configure_reset_endpoint()". Ensure the 3-strikes error feature is always enabled except for ISOCHRONOUS transfers. MFC after: 1 week Suggested by: marius@
This commit is contained in:
parent
7a063c27e6
commit
91cccb29c1
@ -2283,6 +2283,7 @@ xhci_configure_mask(struct usb_device *udev, uint32_t mask, uint8_t drop)
|
||||
temp |= XHCI_SCTX_0_CTX_NUM_SET(x + 1);
|
||||
xhci_ctx_set_le32(sc, &pinp->ctx_slot.dwSctx0, temp);
|
||||
}
|
||||
usb_pc_cpu_flush(&sc->sc_hw.devs[index].input_pc);
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -2387,10 +2388,14 @@ xhci_configure_endpoint(struct usb_device *udev,
|
||||
XHCI_EPCTX_1_MAXB_SET(max_packet_count) |
|
||||
XHCI_EPCTX_1_MAXP_SIZE_SET(max_packet_size);
|
||||
|
||||
if ((udev->parent_hs_hub != NULL) || (udev->address != 0)) {
|
||||
if (type != UE_ISOCHRONOUS)
|
||||
temp |= XHCI_EPCTX_1_CERR_SET(3);
|
||||
}
|
||||
/*
|
||||
* Always enable the "three strikes and you are gone" feature
|
||||
* except for ISOCHRONOUS endpoints. This is suggested by
|
||||
* section 4.3.3 in the XHCI specification about device slot
|
||||
* initialisation.
|
||||
*/
|
||||
if (type != UE_ISOCHRONOUS)
|
||||
temp |= XHCI_EPCTX_1_CERR_SET(3);
|
||||
|
||||
switch (type) {
|
||||
case UE_CONTROL:
|
||||
|
Loading…
x
Reference in New Issue
Block a user