mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-25 08:20:50 +07:00
[SCSI] libfc: improve debug messages for ELS response handlers
Improve lport and rport debug messages to indicate whether the response is LS_ACC, LS_RJT, closed, or timeout. Signed-off-by: Joe Eykholt <jeykholt@cisco.com> Signed-off-by: Robert Love <robert.w.love@intel.com> Signed-off-by: James Bottomley <James.Bottomley@suse.de>
This commit is contained in:
parent
25b37b981e
commit
f657d299cf
@ -70,3 +70,41 @@ int fc_elsct_init(struct fc_lport *lport)
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL(fc_elsct_init);
|
||||
|
||||
/**
|
||||
* fc_els_resp_type() - return string describing ELS response for debug.
|
||||
* @fp: frame pointer with possible error code.
|
||||
*/
|
||||
const char *fc_els_resp_type(struct fc_frame *fp)
|
||||
{
|
||||
const char *msg;
|
||||
if (IS_ERR(fp)) {
|
||||
switch (-PTR_ERR(fp)) {
|
||||
case FC_NO_ERR:
|
||||
msg = "response no error";
|
||||
break;
|
||||
case FC_EX_TIMEOUT:
|
||||
msg = "response timeout";
|
||||
break;
|
||||
case FC_EX_CLOSED:
|
||||
msg = "response closed";
|
||||
break;
|
||||
default:
|
||||
msg = "response unknown error";
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
switch (fc_frame_payload_op(fp)) {
|
||||
case ELS_LS_ACC:
|
||||
msg = "accept";
|
||||
break;
|
||||
case ELS_LS_RJT:
|
||||
msg = "reject";
|
||||
break;
|
||||
default:
|
||||
msg = "response unknown ELS";
|
||||
break;
|
||||
}
|
||||
}
|
||||
return msg;
|
||||
}
|
||||
|
@ -1006,13 +1006,13 @@ static void fc_lport_rft_id_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
struct fc_frame_header *fh;
|
||||
struct fc_ct_hdr *ct;
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a RFT_ID %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (fp == ERR_PTR(-FC_EX_CLOSED))
|
||||
return;
|
||||
|
||||
mutex_lock(&lport->lp_mutex);
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a RFT_ID response\n");
|
||||
|
||||
if (lport->state != LPORT_ST_RFT_ID) {
|
||||
FC_LPORT_DBG(lport, "Received a RFT_ID response, but in state "
|
||||
"%s\n", fc_lport_state(lport));
|
||||
@ -1060,13 +1060,13 @@ static void fc_lport_rpn_id_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
struct fc_frame_header *fh;
|
||||
struct fc_ct_hdr *ct;
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a RPN_ID %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (fp == ERR_PTR(-FC_EX_CLOSED))
|
||||
return;
|
||||
|
||||
mutex_lock(&lport->lp_mutex);
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a RPN_ID response\n");
|
||||
|
||||
if (lport->state != LPORT_ST_RPN_ID) {
|
||||
FC_LPORT_DBG(lport, "Received a RPN_ID response, but in state "
|
||||
"%s\n", fc_lport_state(lport));
|
||||
@ -1112,13 +1112,13 @@ static void fc_lport_scr_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
struct fc_lport *lport = lp_arg;
|
||||
u8 op;
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a SCR %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (fp == ERR_PTR(-FC_EX_CLOSED))
|
||||
return;
|
||||
|
||||
mutex_lock(&lport->lp_mutex);
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a SCR response\n");
|
||||
|
||||
if (lport->state != LPORT_ST_SCR) {
|
||||
FC_LPORT_DBG(lport, "Received a SCR response, but in state "
|
||||
"%s\n", fc_lport_state(lport));
|
||||
@ -1333,13 +1333,13 @@ static void fc_lport_logo_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
struct fc_lport *lport = lp_arg;
|
||||
u8 op;
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a LOGO %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (fp == ERR_PTR(-FC_EX_CLOSED))
|
||||
return;
|
||||
|
||||
mutex_lock(&lport->lp_mutex);
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a LOGO response\n");
|
||||
|
||||
if (lport->state != LPORT_ST_LOGO) {
|
||||
FC_LPORT_DBG(lport, "Received a LOGO response, but in state "
|
||||
"%s\n", fc_lport_state(lport));
|
||||
@ -1415,13 +1415,13 @@ static void fc_lport_flogi_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
unsigned int e_d_tov;
|
||||
u16 mfs;
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a FLOGI %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (fp == ERR_PTR(-FC_EX_CLOSED))
|
||||
return;
|
||||
|
||||
mutex_lock(&lport->lp_mutex);
|
||||
|
||||
FC_LPORT_DBG(lport, "Received a FLOGI response\n");
|
||||
|
||||
if (lport->state != LPORT_ST_FLOGI) {
|
||||
FC_LPORT_DBG(lport, "Received a FLOGI response, but in state "
|
||||
"%s\n", fc_lport_state(lport));
|
||||
|
@ -544,7 +544,7 @@ static void fc_rport_plogi_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
|
||||
mutex_lock(&rdata->rp_mutex);
|
||||
|
||||
FC_RPORT_DBG(rdata, "Received a PLOGI response\n");
|
||||
FC_RPORT_DBG(rdata, "Received a PLOGI %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (rdata->rp_state != RPORT_ST_PLOGI) {
|
||||
FC_RPORT_DBG(rdata, "Received a PLOGI response, but in state "
|
||||
@ -651,7 +651,7 @@ static void fc_rport_prli_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
|
||||
mutex_lock(&rdata->rp_mutex);
|
||||
|
||||
FC_RPORT_DBG(rdata, "Received a PRLI response\n");
|
||||
FC_RPORT_DBG(rdata, "Received a PRLI %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (rdata->rp_state != RPORT_ST_PRLI) {
|
||||
FC_RPORT_DBG(rdata, "Received a PRLI response, but in state "
|
||||
@ -717,7 +717,7 @@ static void fc_rport_logo_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
|
||||
mutex_lock(&rdata->rp_mutex);
|
||||
|
||||
FC_RPORT_DBG(rdata, "Received a LOGO response\n");
|
||||
FC_RPORT_DBG(rdata, "Received a LOGO %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (rdata->rp_state != RPORT_ST_LOGO) {
|
||||
FC_RPORT_DBG(rdata, "Received a LOGO response, but in state "
|
||||
@ -801,7 +801,7 @@ static void fc_rport_rtv_resp(struct fc_seq *sp, struct fc_frame *fp,
|
||||
|
||||
mutex_lock(&rdata->rp_mutex);
|
||||
|
||||
FC_RPORT_DBG(rdata, "Received a RTV response\n");
|
||||
FC_RPORT_DBG(rdata, "Received a RTV %s\n", fc_els_resp_type(fp));
|
||||
|
||||
if (rdata->rp_state != RPORT_ST_RTV) {
|
||||
FC_RPORT_DBG(rdata, "Received a RTV response, but in state "
|
||||
|
@ -1084,4 +1084,9 @@ void fc_destroy_exch_mgr(void);
|
||||
int fc_setup_rport(void);
|
||||
void fc_destroy_rport(void);
|
||||
|
||||
/*
|
||||
* Internal libfc functions.
|
||||
*/
|
||||
const char *fc_els_resp_type(struct fc_frame *);
|
||||
|
||||
#endif /* _LIBFC_H_ */
|
||||
|
Loading…
Reference in New Issue
Block a user