diff options
Diffstat (limited to 'drivers/s390/scsi/zfcp_dbf.c')
-rw-r--r-- | drivers/s390/scsi/zfcp_dbf.c | 44 |
1 files changed, 8 insertions, 36 deletions
diff --git a/drivers/s390/scsi/zfcp_dbf.c b/drivers/s390/scsi/zfcp_dbf.c index 61776d490d13..5568440ec2fc 100644 --- a/drivers/s390/scsi/zfcp_dbf.c +++ b/drivers/s390/scsi/zfcp_dbf.c | |||
@@ -120,14 +120,10 @@ static int zfcp_dbf_view_header(debug_info_t *id, struct debug_view *view, | |||
120 | return p - out_buf; | 120 | return p - out_buf; |
121 | } | 121 | } |
122 | 122 | ||
123 | /** | 123 | void _zfcp_hba_dbf_event_fsf_response(const char *tag2, int level, |
124 | * zfcp_hba_dbf_event_fsf_response - trace event for request completion | 124 | struct zfcp_fsf_req *fsf_req, |
125 | * @fsf_req: request that has been completed | 125 | struct zfcp_dbf *dbf) |
126 | */ | ||
127 | void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req) | ||
128 | { | 126 | { |
129 | struct zfcp_adapter *adapter = fsf_req->adapter; | ||
130 | struct zfcp_dbf *dbf = adapter->dbf; | ||
131 | struct fsf_qtcb *qtcb = fsf_req->qtcb; | 127 | struct fsf_qtcb *qtcb = fsf_req->qtcb; |
132 | union fsf_prot_status_qual *prot_status_qual = | 128 | union fsf_prot_status_qual *prot_status_qual = |
133 | &qtcb->prefix.prot_status_qual; | 129 | &qtcb->prefix.prot_status_qual; |
@@ -138,31 +134,12 @@ void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req) | |||
138 | struct zfcp_send_els *send_els; | 134 | struct zfcp_send_els *send_els; |
139 | struct zfcp_hba_dbf_record *rec = &dbf->hba_dbf_buf; | 135 | struct zfcp_hba_dbf_record *rec = &dbf->hba_dbf_buf; |
140 | struct zfcp_hba_dbf_record_response *response = &rec->u.response; | 136 | struct zfcp_hba_dbf_record_response *response = &rec->u.response; |
141 | int level; | ||
142 | unsigned long flags; | 137 | unsigned long flags; |
143 | 138 | ||
144 | spin_lock_irqsave(&dbf->hba_dbf_lock, flags); | 139 | spin_lock_irqsave(&dbf->hba_dbf_lock, flags); |
145 | memset(rec, 0, sizeof(*rec)); | 140 | memset(rec, 0, sizeof(*rec)); |
146 | strncpy(rec->tag, "resp", ZFCP_DBF_TAG_SIZE); | 141 | strncpy(rec->tag, "resp", ZFCP_DBF_TAG_SIZE); |
147 | 142 | strncpy(rec->tag2, tag2, ZFCP_DBF_TAG_SIZE); | |
148 | if ((qtcb->prefix.prot_status != FSF_PROT_GOOD) && | ||
149 | (qtcb->prefix.prot_status != FSF_PROT_FSF_STATUS_PRESENTED)) { | ||
150 | strncpy(rec->tag2, "perr", ZFCP_DBF_TAG_SIZE); | ||
151 | level = 1; | ||
152 | } else if (qtcb->header.fsf_status != FSF_GOOD) { | ||
153 | strncpy(rec->tag2, "ferr", ZFCP_DBF_TAG_SIZE); | ||
154 | level = 1; | ||
155 | } else if ((fsf_req->fsf_command == FSF_QTCB_OPEN_PORT_WITH_DID) || | ||
156 | (fsf_req->fsf_command == FSF_QTCB_OPEN_LUN)) { | ||
157 | strncpy(rec->tag2, "open", ZFCP_DBF_TAG_SIZE); | ||
158 | level = 4; | ||
159 | } else if (qtcb->header.log_length) { | ||
160 | strncpy(rec->tag2, "qtcb", ZFCP_DBF_TAG_SIZE); | ||
161 | level = 5; | ||
162 | } else { | ||
163 | strncpy(rec->tag2, "norm", ZFCP_DBF_TAG_SIZE); | ||
164 | level = 6; | ||
165 | } | ||
166 | 143 | ||
167 | response->fsf_command = fsf_req->fsf_command; | 144 | response->fsf_command = fsf_req->fsf_command; |
168 | response->fsf_reqid = fsf_req->req_id; | 145 | response->fsf_reqid = fsf_req->req_id; |
@@ -241,14 +218,9 @@ void zfcp_hba_dbf_event_fsf_response(struct zfcp_fsf_req *fsf_req) | |||
241 | spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags); | 218 | spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags); |
242 | } | 219 | } |
243 | 220 | ||
244 | /** | 221 | void _zfcp_hba_dbf_event_fsf_unsol(const char *tag, int level, |
245 | * zfcp_hba_dbf_event_fsf_unsol - trace event for an unsolicited status buffer | 222 | struct zfcp_adapter *adapter, |
246 | * @tag: tag indicating which kind of unsolicited status has been received | 223 | struct fsf_status_read_buffer *status_buffer) |
247 | * @adapter: adapter that has issued the unsolicited status buffer | ||
248 | * @status_buffer: buffer containing payload of unsolicited status | ||
249 | */ | ||
250 | void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter, | ||
251 | struct fsf_status_read_buffer *status_buffer) | ||
252 | { | 224 | { |
253 | struct zfcp_dbf *dbf = adapter->dbf; | 225 | struct zfcp_dbf *dbf = adapter->dbf; |
254 | struct zfcp_hba_dbf_record *rec = &dbf->hba_dbf_buf; | 226 | struct zfcp_hba_dbf_record *rec = &dbf->hba_dbf_buf; |
@@ -296,7 +268,7 @@ void zfcp_hba_dbf_event_fsf_unsol(const char *tag, struct zfcp_adapter *adapter, | |||
296 | &status_buffer->payload, rec->u.status.payload_size); | 268 | &status_buffer->payload, rec->u.status.payload_size); |
297 | } | 269 | } |
298 | 270 | ||
299 | debug_event(dbf->hba_dbf, 2, rec, sizeof(*rec)); | 271 | debug_event(dbf->hba_dbf, level, rec, sizeof(*rec)); |
300 | spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags); | 272 | spin_unlock_irqrestore(&dbf->hba_dbf_lock, flags); |
301 | } | 273 | } |
302 | 274 | ||