FWIW, the plan looks fine to me. Just adding a couple of hints to simplify the implementation. Sarah Sharp <sarah.a.sharp@xxxxxxxxxxxxxxx> writes: > Let's do this fix the right way, instead of wall papering over the > issue. Here's what we should do: > > 1. Disable scatter-gather for the ax88179_178a driver when it's under an > xHCI host. No need to make this conditional. SG is only enabled in the ax88179_178a driver if udev->bus->no_sg_constraint is true, so it applies only to xHCI hosts in the first place. > 2. Revert the following commits: > f2d9b991c549 xhci: Set scatter-gather limit to avoid failed block writes. > d6c9ea9069af xhci: Avoid infinite loop when sg urb requires too many trbs > 35773dac5f86 usb: xhci: Link TRB must not occur within a USB payload burst > > 3. Dan and Mathias can work together to come up with an overall plan to > change the xHCI driver architecture to be fully compliant with the TD > fragment rules. That can be done over the next few kernel releases. > > The end result is that we don't destabilize storage or break userspace > USB drivers, we don't break people's xHCI host controllers, > the ax88179_178a USB ethernet devices still work under xHCI (a bit with > worse performance), and other USB ethernet devices still get the > performance improvement introduced in 3.12. No other usbnet drivers has enabled SG... Which is why you have only seen this problem with the ax88179_178a devices. So there is no performance improvement to keep. Bjørn -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html