On 7/19/2022, Mike Christie wrote: > On 7/18/22 9:07 PM, Thinh Nguyen wrote: >> Task ABORT TASK SET function is required by SCSI transport protocol > What OS is using this and how do they use it? For the latter, does the > OS try an abort for each cmd first, then try an abort task set if the > aborts fail (does fail mean get a response that indicates failure and > also does a timeout count)? Or does it start with the abort task set? It's not from any real driver. It's from the USB Compliant Verification (https://www.usb.org/document-library/usb3cv). It uses the command for UASP compliant test. The test only ever aborts a single command at a time, so I can't confirm your following questions. The SAM4-r14 wasn't clear on those questions either. > I'm asking because it looks like if it does an abort first, then the > abort task set will always return TMR_TASK_DOES_NOT_EXIST. For the abort > we will remove the cmds from the state_list so if the abort task set runs > after the initiator has tried to abort all the commands it will never > find any. I didn't notice since I dropped a patch where I removed the TMR_TASK_DOES_NOT_EXIST and UASP converts this to RC_TMF_COMPLETE. UASP respond to FUNCTION COMPLETE with RC_TMF_COMPLETE. I'll can make a fix to that. If there's any suggestion to implement this, please advise. Thanks, Thinh >> standards (SAM-4 r14 section 7.3). It is similar to ABORT TASK >> function, but it applies to all commands received on a specified I_T >> nexus rather than a specific referenced command. Modify >> core_tmr_abort_task() to support TMR_ABORT_TASK_SET. >>