On 05/18/2017 04:08 AM, Yuyang Du wrote: > From: Yuyang Du <yuyang.du@xxxxxxxxx> > > As USB3 has (slightly) different bit meanings in the port > status. Add a new status bit array for USB3. > > Signed-off-by: Yuyang Du <yuyang.du@xxxxxxxxx> Acked-by: Shuah Khan <shuahkh@xxxxxxxxxxxxxxx> thanks, -- Shuah > --- > drivers/usb/usbip/vhci_hcd.c | 56 +++++++++++++++++++++++++++++++++++++++----- > 1 file changed, 50 insertions(+), 6 deletions(-) > > diff --git a/drivers/usb/usbip/vhci_hcd.c b/drivers/usb/usbip/vhci_hcd.c > index 43cacbc..a71254b 100644 > --- a/drivers/usb/usbip/vhci_hcd.c > +++ b/drivers/usb/usbip/vhci_hcd.c > @@ -66,7 +66,7 @@ static const char * const bit_desc[] = { > "SUSPEND", /*2*/ > "OVER_CURRENT", /*3*/ > "RESET", /*4*/ > - "R5", /*5*/ > + "L1", /*5*/ > "R6", /*6*/ > "R7", /*7*/ > "POWER", /*8*/ > @@ -82,7 +82,7 @@ static const char * const bit_desc[] = { > "C_SUSPEND", /*18*/ > "C_OVER_CURRENT", /*19*/ > "C_RESET", /*20*/ > - "R21", /*21*/ > + "C_L1", /*21*/ > "R22", /*22*/ > "R23", /*23*/ > "R24", /*24*/ > @@ -95,10 +95,49 @@ static const char * const bit_desc[] = { > "R31", /*31*/ > }; > > -static void dump_port_status_diff(u32 prev_status, u32 new_status) > +static const char * const bit_desc_ss[] = { > + "CONNECTION", /*0*/ > + "ENABLE", /*1*/ > + "SUSPEND", /*2*/ > + "OVER_CURRENT", /*3*/ > + "RESET", /*4*/ > + "L1", /*5*/ > + "R6", /*6*/ > + "R7", /*7*/ > + "R8", /*8*/ > + "POWER", /*9*/ > + "HIGHSPEED", /*10*/ > + "PORT_TEST", /*11*/ > + "INDICATOR", /*12*/ > + "R13", /*13*/ > + "R14", /*14*/ > + "R15", /*15*/ > + "C_CONNECTION", /*16*/ > + "C_ENABLE", /*17*/ > + "C_SUSPEND", /*18*/ > + "C_OVER_CURRENT", /*19*/ > + "C_RESET", /*20*/ > + "C_BH_RESET", /*21*/ > + "C_LINK_STATE", /*22*/ > + "C_CONFIG_ERROR", /*23*/ > + "R24", /*24*/ > + "R25", /*25*/ > + "R26", /*26*/ > + "R27", /*27*/ > + "R28", /*28*/ > + "R29", /*29*/ > + "R30", /*30*/ > + "R31", /*31*/ > +}; > + > +static void dump_port_status_diff(u32 prev_status, u32 new_status, bool usb3) > { > int i = 0; > u32 bit = 1; > + const char * const *desc = bit_desc; > + > + if (usb3) > + desc = bit_desc_ss; > > pr_debug("status prev -> new: %08x -> %08x\n", prev_status, new_status); > while (bit) { > @@ -113,8 +152,12 @@ static void dump_port_status_diff(u32 prev_status, u32 new_status) > else > change = ' '; > > - if (prev || new) > - pr_debug(" %c%s\n", change, bit_desc[i]); > + if (prev || new) { > + pr_debug(" %c%s\n", change, desc[i]); > + > + if (bit == 1) /* USB_PORT_STAT_CONNECTION */ > + pr_debug(" %c%s\n", change, "USB_PORT_STAT_SPEED_5GBPS"); > + } > bit <<= 1; > i++; > } > @@ -563,7 +606,8 @@ static int vhci_hub_control(struct usb_hcd *hcd, u16 typeReq, u16 wValue, > /* Only dump valid port status */ > if (rhport >= 0) { > dump_port_status_diff(prev_port_status[rhport], > - vhci_hcd->port_status[rhport]); > + vhci_hcd->port_status[rhport], > + hcd->speed == HCD_USB3); > } > } > usbip_dbg_vhci_rh(" bye\n"); > -- 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