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