lkml.org 
[lkml]   [2022]   [Jul]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
Date
From
Subject[PATCH v2 25/25] usb: gadget: f_tcm: Comply with UAS Task Management requirement
The UASP driver must support all the task management functions listed in
Table 20 of UAS-r04. However, not all of them are implemented in the
Target core. To remain compliant while indicate that the TMR did not go
through, report RC_TMF_FAILED instead of RC_TMF_NOT_SUPPORTED and print
a warning to the user.

Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com>
---
Changes in v2:
- None

drivers/usb/gadget/function/f_tcm.c | 24 ++++++++++++++++++++++++
1 file changed, 24 insertions(+)

diff --git a/drivers/usb/gadget/function/f_tcm.c b/drivers/usb/gadget/function/f_tcm.c
index dfa3e7c043a3..727d7c3e61c2 100644
--- a/drivers/usb/gadget/function/f_tcm.c
+++ b/drivers/usb/gadget/function/f_tcm.c
@@ -643,6 +643,30 @@ static void uasp_prepare_response(struct usbg_cmd *cmd)
rsp_iu->response_code =
tcm_to_uasp_response(se_cmd->se_tmr_req->response);

+ /*
+ * The UASP driver must support all the task management functions listed
+ * in Table 20 of UAS-r04. To remain compliant while indicate that the
+ * TMR did not go through, report RC_TMF_FAILED instead of
+ * RC_TMF_NOT_SUPPORTED and print a warning to the user.
+ */
+ switch (cmd->tmr_func) {
+ case TMR_ABORT_TASK:
+ case TMR_ABORT_TASK_SET:
+ case TMR_CLEAR_TASK_SET:
+ case TMR_LUN_RESET:
+ case TMR_I_T_NEXUS_RESET:
+ case TMR_CLEAR_ACA:
+ case TMR_QUERY_TASK:
+ case TMR_QUERY_TASK_SET:
+ case TMR_QUERY_ASYNC_EVENT:
+ if (rsp_iu->response_code == RC_TMF_NOT_SUPPORTED) {
+ pr_warn("TMR function %d not supported\n",
+ cmd->tmr_func);
+ rsp_iu->response_code = RC_TMF_FAILED;
+ }
+ break;
+ }
+
stream->req_status->is_last = 1;
stream->req_status->stream_id = cmd->tag;
stream->req_status->context = cmd;
--
2.28.0
\
 
 \ /
  Last update: 2022-07-19 03:48    [W:1.022 / U:0.108 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site