[PATCH 00/36] usb: gadget: f_tcm: Enhance UASP driver

Thinh Nguyen
2022-07-06T23:34:31Z

The Linux UASP gadget driver is incomplete and remained broken for a long time.
It was not implemented for performance either. This series adds some of the
required features for the UASP driver to work. It also makes some fixes to the
target core.

Please note that the f_tcm is far from a good state. It needs better error
recovery, error reports, more cleanup, and the ability to handle various
required commands.

Also please note that I try to juggle between checkpatch warnings and code
style consistency. As a result, there maybe some minor checkpatch warnings.

Hopefully this can help jumpstart the UASP driver. Please test it out.

This was tested against UASP CV and DWC_usb3x controller.

Thanks!

Thinh Nguyen (36):
target: Handle MI_REPORT_SUPPORTED_OPERATION_CODES
target: Add overlapped response to tmrsp_table
target: Don't drain empty list
target: Does tmr notify on aborted command
target: Don't remove command too early
target: Return Function Complete
target: Don't do tmr_notify on empty aborted list
target: Refactor core_tmr_abort_task
target: Add common Task Management values
target: Implement TMR_ABORT_TASK_SET
target: Properly set Sense Data Length of CHECK CONDITION
target: Properly set Sense data length when copy sense
target: Don't respond TMR_LUN_DOES_NOT_EXIST for all TMR failure
target: Introduce target_submit_tmr_fail_response
target: Include INQUIRY length
usb: gadget: f_tcm: Increase stream count
usb: gadget: f_tcm: Increase bMaxBurst
usb: gadget: f_tcm: Don't set static stream_id
usb: gadget: f_tcm: Allocate matching number of commands to streams
usb: gadget: f_tcm: Limit number of sessions
usb: gadget: f_tcm: Handle multiple commands in parallel
usb: gadget: f_tcm: Use extra number of commands
usb: gadget: f_tcm: Return ATA cmd direction
usb: gadget: f_tcm: Execute command on write completion
usb: gadget: f_tcm: Minor cleanup redundant code
usb: gadget: f_tcm: Don't free command immediately
usb: gadget: f_tcm: Translate error to sense
usb: gadget: f_tcm: Cleanup unused variable
usb: gadget: f_tcm: Update state on data write
usb: gadget: f_tcm: Handle abort command
usb: gadget: f_tcm: Cleanup requests on ep disable
usb: gadget: f_tcm: Send sense reason
usb: gadget: f_tcm: Save CPU ID per command
usb: gadget: f_tcm: Free tags earlier
usb: gadget: f_tcm: Handle TASK_MANAGEMENT commands
usb: gadget: f_tcm: Comply with UAS Task Management requirement

drivers/target/target_core_alua.c | 66 ++++
drivers/target/target_core_alua.h | 2 +
drivers/target/target_core_spc.c | 16 +-
drivers/target/target_core_tmr.c | 39 +-
drivers/target/target_core_transport.c | 73 +++-
drivers/usb/gadget/function/f_tcm.c | 502 ++++++++++++++++++-------
drivers/usb/gadget/function/tcm.h | 20 +-
include/target/target_core_base.h | 9 +-
include/target/target_core_fabric.h | 3 +
9 files changed, 562 insertions(+), 168 deletions(-)

base-commit: 90557fa89d3e99286506593fd5180f699c41b152
--
2.28.0