usba: usba_process_cv_descr() needs to handle companion descs
Inspired by this report: https://github.com/joyent/smartos-live/issues/694 and seeing that our own Seagate USB3 drive wouldn't attach, I took the DTrace script provided there, and dove in, trying to see why the drive wouldn't attach.
I found out, once I dove in deep, that usba_process_cv_descr() was failing. It was failing because it didn't recognize the last-processed descriptor type. It should recognize it (a new USB3 descriptor type) and act accordingly. Once this failure is addressed, the rest of the USB3 stack should churn along and accept the drive.
Updated by Robert Mustacchi about 4 years ago
USB 3.x introduced a couple of new companion endpoint descriptors, these are descriptors which follow a USB endpoint, but occur before any vendor specific ones. The problem is that we missed updating a switch statement in the general USBA descriptor parsing code to handle this case. Basically the SuperSpeed Endpoint Companion Descriptor should be treated the same as the normal endpoint descriptor.
Updated by Electric Monk about 4 years ago
- Status changed from New to Closed
commit b1c06e09487e261e84c3cea05e329fd46d712f71 Author: Robert Mustacchi <firstname.lastname@example.org> Date: 2017-03-25T16:11:32.000Z 7974 usba: usba_process_cv_descr() needs to handle companion descs Reviewed by: Dan McDonald <email@example.com> Reviewed by: Dale Ghent <firstname.lastname@example.org> Reviewed by: Toomas Soome <email@example.com> Approved by: Gordon Ross <firstname.lastname@example.org>