• Jason Wessel's avatar
    USB: usb_debug, usb_generic_serial: implement multi urb write · 715b1dc0
    Jason Wessel authored
    The usb_debug driver, when used as the console, will always fail to
    insert the carriage return and new line sequence as well as randomly
    drop console output.  This is a result of only having the single
    write_urb and that the tty layer will have a lock that prevents the
    processing of the back to back urb requests.
    
    The solution is to allow more than one urb to be outstanding and have
    a slightly deeper transmit queue.  The idea and some code is borrowed
    from the ftdi_sio usb driver.
    
    The generic usb serial driver was modified so as to allow the classic
    method of 1 write urb, or a multi write urb scheme with N allowed
    outstanding urbs where N is controlled by max_in_flight_urbs.  When
    max_in_flight_urbs in a "struct usb_serial_driver" is non zero the
    multi write urb scheme will be used.
    
    The size of 4000 was selected for the usb_debug driver so that the
    driver lowers possibility of losing the queued console messages during
    the kernel startup.
    Signed-off-by: default avatarJason Wessel <jason.wessel@windriver.com>
    Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
    715b1dc0
generic.c 13.7 KB