• Roy Luo's avatar
    usb: core: add sysfs entry for usb device state · 83cb2604
    Roy Luo authored
    Expose usb device state to userland as the information is useful in
    detecting non-compliant setups and diagnosing enumeration failures.
    For example:
    - End-to-end signal integrity issues: the device would fail port reset
      repeatedly and thus be stuck in POWERED state.
    - Charge-only cables (missing D+/D- lines): the device would never enter
      POWERED state as the HC would not see any pullup.
    
    What's the status quo?
    We do have error logs such as "Cannot enable. Maybe the USB cable is bad?"
    to flag potential setup issues, but there's no good way to expose them to
    userspace.
    
    Why add a sysfs entry in struct usb_port instead of struct usb_device?
    The struct usb_device is not device_add() to the system until it's in
    ADDRESS state hence we would miss the first two states. The struct
    usb_port is a better place to keep the information because its life
    cycle is longer than the struct usb_device that is attached to the port.
    Reported-by: default avatarkernel test robot <oliver.sang@intel.com>
    Closes: https://lore.kernel.org/oe-lkp/202306042228.e532af6e-oliver.sang@intel.comReviewed-by: default avatarAlan Stern <stern@rowland.harvard.edu>
    Signed-off-by: default avatarRoy Luo <royluo@google.com>
    Message-ID: <20230608015913.1679984-1-royluo@google.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
    83cb2604
hub.h 5.48 KB