@@ -3090,6 +3090,10 @@ static const char *target_tmf_name(enum tcm_tmreq_table tmf)
case TMR_TARGET_WARM_RESET: return "TARGET_WARM_RESET";
case TMR_TARGET_COLD_RESET: return "TARGET_COLD_RESET";
case TMR_LUN_RESET_PRO: return "LUN_RESET_PRO";
+ case TMR_I_T_NEXUS_RESET: return "I_T_NEXUS_RESET";
+ case TMR_QUERY_TASK: return "QUERY_TASK";
+ case TMR_QUERY_TASK_SET: return "QUERY_TASK_SET";
+ case TMR_QUERY_ASYNC_EVENT: return "QUERY_ASYNC_EVENT";
case TMR_UNKNOWN: break;
}
return "(?)";
@@ -3538,6 +3542,12 @@ static void target_tmr_work(struct work_struct *work)
case TMR_TARGET_COLD_RESET:
tmr->response = TMR_FUNCTION_REJECTED;
break;
+ case TMR_I_T_NEXUS_RESET:
+ case TMR_QUERY_TASK:
+ case TMR_QUERY_TASK_SET:
+ case TMR_QUERY_ASYNC_EVENT:
+ tmr->response = TMR_FUNCTION_REJECTED;
+ break;
default:
pr_err("Unknown TMR function: 0x%02x.\n",
tmr->function);
@@ -206,12 +206,16 @@ enum target_sc_flags_table {
enum tcm_tmreq_table {
TMR_ABORT_TASK = 1,
TMR_ABORT_TASK_SET = 2,
- TMR_CLEAR_ACA = 3,
+ TMR_CLEAR_ACA = 0x40,
TMR_CLEAR_TASK_SET = 4,
TMR_LUN_RESET = 5,
TMR_TARGET_WARM_RESET = 6,
TMR_TARGET_COLD_RESET = 7,
- TMR_LUN_RESET_PRO = 0x80,
+ TMR_I_T_NEXUS_RESET = 0x10,
+ TMR_QUERY_TASK = 0x80,
+ TMR_QUERY_TASK_SET = 0x81,
+ TMR_QUERY_ASYNC_EVENT = 0x82,
+ TMR_LUN_RESET_PRO = 0xf0,
TMR_UNKNOWN = 0xff,
};
Add some standard TMR and match their code id based on UAS-r04 and SPL4-r13. Note that the non-standard TMR_LUN_RESET_PRO is using the same id value of QUERY TASK. Change it to 0xf0 instead. Signed-off-by: Thinh Nguyen <Thinh.Nguyen@synopsys.com> --- drivers/target/target_core_transport.c | 10 ++++++++++ include/target/target_core_base.h | 8 ++++++-- 2 files changed, 16 insertions(+), 2 deletions(-)