Project

General

Profile

Feature #11177

usba should read the device binary object store

Added by Robert Mustacchi 5 months ago. Updated 4 months ago.

Status:
Closed
Priority:
Normal
Category:
driver - device drivers
Start date:
Due date:
% Done:

100%

Estimated time:
Difficulty:
Medium
Tags:

Description

In USB 3.0, the binary object store became a set of device capability descriptors that are now required for each device. While there are a varying number of capabilities that exist, there are several that are interesting for us:

1. The SuperSpeed capability which describes the speeds the device can operate at and its minimum speed
2. The Container capability which provides us a means to map between one or more devices that are operating at the same time at different speeds, such as a USB hub.
3. The SuperSpeedPlus capability which describes USB 3.1+ devices

The kernel should read and store this for all such devices that it encounters and finds that it has support for. At the moment, we'll expose aspects of the SuperSpeed and Container capabilities for topo. Once we have hardware to test various aspects of the SuperSpeedPlus hardware, we'll go through and do a better job of exposing that.

To test this I used several USB 3.x devices including both USB hubs and USB mass storage devices (the only USB 3.x devices we had) and verified that we parsed all of the capabilities that they presented correctly. I made sure that the devices devinfo properties matched what we expected. I also went through and verified that we still ask for these properties when we're behind a USB 2.x hub, meaning that our bcdUSB is 0x2010. I also used several USB 2.0 and 1.x devices to make sure that this didn't introduce any regressions during attach. This was also tested with 11176.

History

#1

Updated by Electric Monk 4 months ago

  • Status changed from New to Closed

git commit 0d2006e4703eda0f88de2e571bf9fb317552faa2

commit  0d2006e4703eda0f88de2e571bf9fb317552faa2
Author: Robert Mustacchi <rm@joyent.com>
Date:   2019-06-14T22:23:14.000Z

    11177 usba should read the device binary object store
    11178 USB topology could know about supported, minimum speeds
    11179 usba parsing code should take const data pointers
    11176 usba kernel module should be CERRWARN and smatch clean
    Reviewed by: John Levon <john.levon@joyent.com>
    Reviewed by: Rob Johnston <rob.johnston@joyent.com>
    Approved by: Gordon Ross <gordon.ross@nexenta.com>

Also available in: Atom PDF