Message ID | d89b41eb3be83be3ef532209245caca356a8db49.1657149962.git.Thinh.Nguyen@synopsys.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | usb: gadget: f_tcm: Enhance UASP driver | expand |
Hi Thinh, On Wed, Jul 06, 2022 at 04:35:20PM -0700, Thinh Nguyen wrote: > 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(-) > > diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c > index 105d3b0e470f..cbd876e44cf0 100644 > --- a/drivers/target/target_core_transport.c > +++ b/drivers/target/target_core_transport.c > @@ -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); > diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h > index 8e3da143a1ce..ccd98604eaf4 100644 > --- a/include/target/target_core_base.h > +++ b/include/target/target_core_base.h > @@ -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, There is no need to align that values to some standart. This enum is not standard. That is even stated in the comment for it: /* fabric independent task management function values */ So, just add new values continuing from 8. > 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, > }; >
On 7/7/2022, Dmitry Bogdanov wrote: > Hi Thinh, > > On Wed, Jul 06, 2022 at 04:35:20PM -0700, Thinh Nguyen wrote: >> 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(-) >> >> diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c >> index 105d3b0e470f..cbd876e44cf0 100644 >> --- a/drivers/target/target_core_transport.c >> +++ b/drivers/target/target_core_transport.c >> @@ -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); >> diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h >> index 8e3da143a1ce..ccd98604eaf4 100644 >> --- a/include/target/target_core_base.h >> +++ b/include/target/target_core_base.h >> @@ -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, > There is no need to align that values to some standart. This enum is not > standard. That is even stated in the comment for it: > /* fabric independent task management function values */ > So, just add new values continuing from 8. Sure. I'll do that. Thanks, Thinh >> 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, >> }; >>
diff --git a/drivers/target/target_core_transport.c b/drivers/target/target_core_transport.c index 105d3b0e470f..cbd876e44cf0 100644 --- a/drivers/target/target_core_transport.c +++ b/drivers/target/target_core_transport.c @@ -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); diff --git a/include/target/target_core_base.h b/include/target/target_core_base.h index 8e3da143a1ce..ccd98604eaf4 100644 --- a/include/target/target_core_base.h +++ b/include/target/target_core_base.h @@ -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(-)