• Sarah Sharp's avatar
    xhci: Store endpoint bandwidth information. · 9af5d71d
    Sarah Sharp authored
    In the upcoming patches, we'll use some stored endpoint information to
    make software keep track of the worst-case bandwidth schedule.  We need to
    store several variables associated with each periodic endpoint:
     - the type of endpoint
     - Max Packet Size
     - Mult
     - Max ESIT payload
     - Max Burst Size (aka number of packets, stored in one-based form)
     - the endpoint interval (normalized to powers of 2 microframes)
    
    All this information is available to the hardware, and stored in its
    device output context.  However, we need to ensure that the new
    information is stored before the xHCI driver drops the xhci->lock to wait
    on the Configure Endpoint command, so that another driver requesting a
    configuration or alt setting change will see the update.  The Configure
    Endpoint command will never fail on the hardware that needs this software
    bandwidth checking (assuming the slot is enabled and the flags are set
    properly), so updating the endpoint info before the command completes
    should be fine.
    
    Until we add in the bandwidth checking code, just update the endpoint
    information after the Configure Endpoint command completes, and after a
    Reset Device command completes.  Don't bother to clear the endpoint
    bandwidth info when a device is being freed, since the xhci_virt_ep is
    just going to be freed anyway.
    Signed-off-by: default avatarSarah Sharp <sarah.a.sharp@linux.intel.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    9af5d71d
xhci.c 94.8 KB