Hi, Pawel Laszczak <pawell@xxxxxxxxxxx> writes: > diff --git a/include/linux/usb/ch9.h b/include/linux/usb/ch9.h > index da82606be605..d388a3a5ab7e 100644 > --- a/include/linux/usb/ch9.h > +++ b/include/linux/usb/ch9.h > @@ -70,4 +70,29 @@ extern enum usb_device_speed usb_get_maximum_speed(struct device *dev); > */ > extern const char *usb_state_string(enum usb_device_state state); > > +/** > + * usb_decode_ctrl - Returns human readable representation of control request. > + * @str: buffer to return a human-readable representation of control request. > + * This buffer should have about 200 bytes. > + * @size: size of str buffer. > + * @bRequestType: matches the USB bmRequestType field > + * @bRequest: matches the USB bRequest field > + * @wValue: matches the USB wValue field (CPU byte order) > + * @wIndex: matches the USB wIndex field (CPU byte order) > + * @wLength: matches the USB wLength field (CPU byte order) > + * > + * Function returns decoded, formatted and human-readable description of > + * control request packet. > + * > + * The usage scenario for this is for tracepoints, so function as a return > + * use the same value as in parameters. This approach allows to use this > + * function in TP_printk > + * > + * Important: wValue, wIndex, wLength parameters before invoking this function > + * should be processed by le16_to_cpu macro. > + */ > +extern const char *usb_decode_ctrl(char *str, size_t size, __u8 bRequestType, > + __u8 bRequest, __u16 wValue, __u16 wIndex, > + __u16 wLength); > + where's the stub when !TRACING? -- balbi