Lines Matching +full:port +full:- +full:level
1 // SPDX-License-Identifier: GPL-2.0
31 "log level for each debug feature area "
36 return sizeof(struct zfcp_dbf_pay) + offset - ZFCP_DBF_PAY_MAX_REC; in zfcp_dbf_plen()
43 struct zfcp_dbf_pay *pl = &dbf->pay_buf; in zfcp_dbf_pl_write()
46 spin_lock(&dbf->pay_lock); in zfcp_dbf_pl_write()
48 pl->fsf_req_id = req_id; in zfcp_dbf_pl_write()
49 memcpy(pl->area, area, ZFCP_DBF_TAG_LEN); in zfcp_dbf_pl_write()
53 (u16) (length - offset)); in zfcp_dbf_pl_write()
54 memcpy(pl->data, data + offset, rec_length); in zfcp_dbf_pl_write()
55 debug_event(dbf->pay, 1, pl, zfcp_dbf_plen(rec_length)); in zfcp_dbf_pl_write()
58 pl->counter++; in zfcp_dbf_pl_write()
61 spin_unlock(&dbf->pay_lock); in zfcp_dbf_pl_write()
65 * zfcp_dbf_hba_fsf_res - trace event for fsf responses
67 * @level: trace level to be used for event
70 void zfcp_dbf_hba_fsf_res(char *tag, int level, struct zfcp_fsf_req *req) in zfcp_dbf_hba_fsf_res() argument
72 struct zfcp_dbf *dbf = req->adapter->dbf; in zfcp_dbf_hba_fsf_res()
73 struct fsf_qtcb_prefix *q_pref = &req->qtcb->prefix; in zfcp_dbf_hba_fsf_res()
74 struct fsf_qtcb_header *q_head = &req->qtcb->header; in zfcp_dbf_hba_fsf_res()
75 struct zfcp_dbf_hba *rec = &dbf->hba_buf; in zfcp_dbf_hba_fsf_res()
78 spin_lock_irqsave(&dbf->hba_lock, flags); in zfcp_dbf_hba_fsf_res()
81 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_hba_fsf_res()
82 rec->id = ZFCP_DBF_HBA_RES; in zfcp_dbf_hba_fsf_res()
83 rec->fsf_req_id = req->req_id; in zfcp_dbf_hba_fsf_res()
84 rec->fsf_req_status = req->status; in zfcp_dbf_hba_fsf_res()
85 rec->fsf_cmd = q_head->fsf_command; in zfcp_dbf_hba_fsf_res()
86 rec->fsf_seq_no = q_pref->req_seq_no; in zfcp_dbf_hba_fsf_res()
87 rec->u.res.req_issued = req->issued; in zfcp_dbf_hba_fsf_res()
88 rec->u.res.prot_status = q_pref->prot_status; in zfcp_dbf_hba_fsf_res()
89 rec->u.res.fsf_status = q_head->fsf_status; in zfcp_dbf_hba_fsf_res()
90 rec->u.res.port_handle = q_head->port_handle; in zfcp_dbf_hba_fsf_res()
91 rec->u.res.lun_handle = q_head->lun_handle; in zfcp_dbf_hba_fsf_res()
93 memcpy(rec->u.res.prot_status_qual, &q_pref->prot_status_qual, in zfcp_dbf_hba_fsf_res()
95 memcpy(rec->u.res.fsf_status_qual, &q_head->fsf_status_qual, in zfcp_dbf_hba_fsf_res()
98 rec->pl_len = q_head->log_length; in zfcp_dbf_hba_fsf_res()
99 zfcp_dbf_pl_write(dbf, (char *)q_pref + q_head->log_start, in zfcp_dbf_hba_fsf_res()
100 rec->pl_len, "fsf_res", req->req_id); in zfcp_dbf_hba_fsf_res()
102 debug_event(dbf->hba, level, rec, sizeof(*rec)); in zfcp_dbf_hba_fsf_res()
103 spin_unlock_irqrestore(&dbf->hba_lock, flags); in zfcp_dbf_hba_fsf_res()
107 * zfcp_dbf_hba_fsf_fces - trace event for fsf responses related to
111 * @wwpn: remote port or ZFCP_DBF_INVALID_WWPN
118 struct zfcp_dbf *dbf = req->adapter->dbf; in zfcp_dbf_hba_fsf_fces()
119 struct fsf_qtcb_prefix *q_pref = &req->qtcb->prefix; in zfcp_dbf_hba_fsf_fces()
120 struct fsf_qtcb_header *q_head = &req->qtcb->header; in zfcp_dbf_hba_fsf_fces()
121 struct zfcp_dbf_hba *rec = &dbf->hba_buf; in zfcp_dbf_hba_fsf_fces()
122 static int const level = 3; in zfcp_dbf_hba_fsf_fces() local
125 if (unlikely(!debug_level_enabled(dbf->hba, level))) in zfcp_dbf_hba_fsf_fces()
128 spin_lock_irqsave(&dbf->hba_lock, flags); in zfcp_dbf_hba_fsf_fces()
131 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_hba_fsf_fces()
132 rec->id = ZFCP_DBF_HBA_FCES; in zfcp_dbf_hba_fsf_fces()
133 rec->fsf_req_id = req->req_id; in zfcp_dbf_hba_fsf_fces()
134 rec->fsf_req_status = req->status; in zfcp_dbf_hba_fsf_fces()
135 rec->fsf_cmd = q_head->fsf_command; in zfcp_dbf_hba_fsf_fces()
136 rec->fsf_seq_no = q_pref->req_seq_no; in zfcp_dbf_hba_fsf_fces()
137 rec->u.fces.req_issued = req->issued; in zfcp_dbf_hba_fsf_fces()
138 rec->u.fces.fsf_status = q_head->fsf_status; in zfcp_dbf_hba_fsf_fces()
139 rec->u.fces.port_handle = q_head->port_handle; in zfcp_dbf_hba_fsf_fces()
140 rec->u.fces.wwpn = wwpn; in zfcp_dbf_hba_fsf_fces()
141 rec->u.fces.fc_security_old = fc_security_old; in zfcp_dbf_hba_fsf_fces()
142 rec->u.fces.fc_security_new = fc_security_new; in zfcp_dbf_hba_fsf_fces()
144 debug_event(dbf->hba, level, rec, sizeof(*rec)); in zfcp_dbf_hba_fsf_fces()
145 spin_unlock_irqrestore(&dbf->hba_lock, flags); in zfcp_dbf_hba_fsf_fces()
149 * zfcp_dbf_hba_fsf_uss - trace event for an unsolicited status buffer
155 struct zfcp_dbf *dbf = req->adapter->dbf; in zfcp_dbf_hba_fsf_uss()
156 struct fsf_status_read_buffer *srb = req->data; in zfcp_dbf_hba_fsf_uss()
157 struct zfcp_dbf_hba *rec = &dbf->hba_buf; in zfcp_dbf_hba_fsf_uss()
158 static int const level = 2; in zfcp_dbf_hba_fsf_uss() local
161 if (unlikely(!debug_level_enabled(dbf->hba, level))) in zfcp_dbf_hba_fsf_uss()
164 spin_lock_irqsave(&dbf->hba_lock, flags); in zfcp_dbf_hba_fsf_uss()
167 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_hba_fsf_uss()
168 rec->id = ZFCP_DBF_HBA_USS; in zfcp_dbf_hba_fsf_uss()
169 rec->fsf_req_id = req->req_id; in zfcp_dbf_hba_fsf_uss()
170 rec->fsf_req_status = req->status; in zfcp_dbf_hba_fsf_uss()
171 rec->fsf_cmd = FSF_QTCB_UNSOLICITED_STATUS; in zfcp_dbf_hba_fsf_uss()
176 rec->u.uss.status_type = srb->status_type; in zfcp_dbf_hba_fsf_uss()
177 rec->u.uss.status_subtype = srb->status_subtype; in zfcp_dbf_hba_fsf_uss()
178 rec->u.uss.d_id = ntoh24(srb->d_id); in zfcp_dbf_hba_fsf_uss()
179 rec->u.uss.lun = srb->fcp_lun; in zfcp_dbf_hba_fsf_uss()
180 memcpy(&rec->u.uss.queue_designator, &srb->queue_designator, in zfcp_dbf_hba_fsf_uss()
181 sizeof(rec->u.uss.queue_designator)); in zfcp_dbf_hba_fsf_uss()
184 rec->pl_len = (!srb->length) ? 0 : srb->length - in zfcp_dbf_hba_fsf_uss()
187 if (rec->pl_len) in zfcp_dbf_hba_fsf_uss()
188 zfcp_dbf_pl_write(dbf, srb->payload.data, rec->pl_len, in zfcp_dbf_hba_fsf_uss()
189 "fsf_uss", req->req_id); in zfcp_dbf_hba_fsf_uss()
191 debug_event(dbf->hba, level, rec, sizeof(*rec)); in zfcp_dbf_hba_fsf_uss()
192 spin_unlock_irqrestore(&dbf->hba_lock, flags); in zfcp_dbf_hba_fsf_uss()
196 * zfcp_dbf_hba_bit_err - trace event for bit error conditions
202 struct zfcp_dbf *dbf = req->adapter->dbf; in zfcp_dbf_hba_bit_err()
203 struct zfcp_dbf_hba *rec = &dbf->hba_buf; in zfcp_dbf_hba_bit_err()
204 struct fsf_status_read_buffer *sr_buf = req->data; in zfcp_dbf_hba_bit_err()
205 static int const level = 1; in zfcp_dbf_hba_bit_err() local
208 if (unlikely(!debug_level_enabled(dbf->hba, level))) in zfcp_dbf_hba_bit_err()
211 spin_lock_irqsave(&dbf->hba_lock, flags); in zfcp_dbf_hba_bit_err()
214 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_hba_bit_err()
215 rec->id = ZFCP_DBF_HBA_BIT; in zfcp_dbf_hba_bit_err()
216 rec->fsf_req_id = req->req_id; in zfcp_dbf_hba_bit_err()
217 rec->fsf_req_status = req->status; in zfcp_dbf_hba_bit_err()
218 rec->fsf_cmd = FSF_QTCB_UNSOLICITED_STATUS; in zfcp_dbf_hba_bit_err()
219 memcpy(&rec->u.be, &sr_buf->payload.bit_error, in zfcp_dbf_hba_bit_err()
222 debug_event(dbf->hba, level, rec, sizeof(*rec)); in zfcp_dbf_hba_bit_err()
223 spin_unlock_irqrestore(&dbf->hba_lock, flags); in zfcp_dbf_hba_bit_err()
227 * zfcp_dbf_hba_def_err - trace event for deferred error messages
236 struct zfcp_dbf *dbf = adapter->dbf; in zfcp_dbf_hba_def_err()
237 struct zfcp_dbf_pay *payload = &dbf->pay_buf; in zfcp_dbf_hba_def_err()
239 static int const level = 1; in zfcp_dbf_hba_def_err() local
242 if (unlikely(!debug_level_enabled(dbf->pay, level))) in zfcp_dbf_hba_def_err()
248 spin_lock_irqsave(&dbf->pay_lock, flags); in zfcp_dbf_hba_def_err()
251 memcpy(payload->area, "def_err", 7); in zfcp_dbf_hba_def_err()
252 payload->fsf_req_id = req_id; in zfcp_dbf_hba_def_err()
253 payload->counter = 0; in zfcp_dbf_hba_def_err()
257 while (payload->counter < scount && (char *)pl[payload->counter]) { in zfcp_dbf_hba_def_err()
258 memcpy(payload->data, (char *)pl[payload->counter], length); in zfcp_dbf_hba_def_err()
259 debug_event(dbf->pay, level, payload, zfcp_dbf_plen(length)); in zfcp_dbf_hba_def_err()
260 payload->counter++; in zfcp_dbf_hba_def_err()
263 spin_unlock_irqrestore(&dbf->pay_lock, flags); in zfcp_dbf_hba_def_err()
267 * zfcp_dbf_hba_basic - trace event for basic adapter events
273 struct zfcp_dbf *dbf = adapter->dbf; in zfcp_dbf_hba_basic()
274 struct zfcp_dbf_hba *rec = &dbf->hba_buf; in zfcp_dbf_hba_basic()
275 static int const level = 1; in zfcp_dbf_hba_basic() local
278 if (unlikely(!debug_level_enabled(dbf->hba, level))) in zfcp_dbf_hba_basic()
281 spin_lock_irqsave(&dbf->hba_lock, flags); in zfcp_dbf_hba_basic()
284 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_hba_basic()
285 rec->id = ZFCP_DBF_HBA_BASIC; in zfcp_dbf_hba_basic()
287 debug_event(dbf->hba, level, rec, sizeof(*rec)); in zfcp_dbf_hba_basic()
288 spin_unlock_irqrestore(&dbf->hba_lock, flags); in zfcp_dbf_hba_basic()
293 struct zfcp_port *port, in zfcp_dbf_set_common() argument
296 rec->adapter_status = atomic_read(&adapter->status); in zfcp_dbf_set_common()
297 if (port) { in zfcp_dbf_set_common()
298 rec->port_status = atomic_read(&port->status); in zfcp_dbf_set_common()
299 rec->wwpn = port->wwpn; in zfcp_dbf_set_common()
300 rec->d_id = port->d_id; in zfcp_dbf_set_common()
303 rec->lun_status = atomic_read(&sdev_to_zfcp(sdev)->status); in zfcp_dbf_set_common()
304 rec->lun = zfcp_scsi_dev_lun(sdev); in zfcp_dbf_set_common()
306 rec->lun = ZFCP_DBF_INVALID_LUN; in zfcp_dbf_set_common()
310 * zfcp_dbf_rec_trig - trace event related to triggered recovery
313 * @port: remote port involved in the erp_action
318 * The adapter->erp_lock has to be held.
321 struct zfcp_port *port, struct scsi_device *sdev, in zfcp_dbf_rec_trig() argument
324 struct zfcp_dbf *dbf = adapter->dbf; in zfcp_dbf_rec_trig()
325 struct zfcp_dbf_rec *rec = &dbf->rec_buf; in zfcp_dbf_rec_trig()
326 static int const level = 1; in zfcp_dbf_rec_trig() local
330 lockdep_assert_held(&adapter->erp_lock); in zfcp_dbf_rec_trig()
332 if (unlikely(!debug_level_enabled(dbf->rec, level))) in zfcp_dbf_rec_trig()
335 spin_lock_irqsave(&dbf->rec_lock, flags); in zfcp_dbf_rec_trig()
338 rec->id = ZFCP_DBF_REC_TRIG; in zfcp_dbf_rec_trig()
339 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_rec_trig()
340 zfcp_dbf_set_common(rec, adapter, port, sdev); in zfcp_dbf_rec_trig()
342 list_for_each(entry, &adapter->erp_ready_head) in zfcp_dbf_rec_trig()
343 rec->u.trig.ready++; in zfcp_dbf_rec_trig()
345 list_for_each(entry, &adapter->erp_running_head) in zfcp_dbf_rec_trig()
346 rec->u.trig.running++; in zfcp_dbf_rec_trig()
348 rec->u.trig.want = want; in zfcp_dbf_rec_trig()
349 rec->u.trig.need = need; in zfcp_dbf_rec_trig()
351 debug_event(dbf->rec, level, rec, sizeof(*rec)); in zfcp_dbf_rec_trig()
352 spin_unlock_irqrestore(&dbf->rec_lock, flags); in zfcp_dbf_rec_trig()
356 * zfcp_dbf_rec_trig_lock - trace event related to triggered recovery with lock
359 * @port: remote port involved in the erp_action
364 * The adapter->erp_lock must not be held.
367 struct zfcp_port *port, struct scsi_device *sdev, in zfcp_dbf_rec_trig_lock() argument
372 read_lock_irqsave(&adapter->erp_lock, flags); in zfcp_dbf_rec_trig_lock()
373 zfcp_dbf_rec_trig(tag, adapter, port, sdev, want, need); in zfcp_dbf_rec_trig_lock()
374 read_unlock_irqrestore(&adapter->erp_lock, flags); in zfcp_dbf_rec_trig_lock()
378 * zfcp_dbf_rec_run_lvl - trace event related to running recovery
379 * @level: trace level to be used for event
383 void zfcp_dbf_rec_run_lvl(int level, char *tag, struct zfcp_erp_action *erp) in zfcp_dbf_rec_run_lvl() argument
385 struct zfcp_dbf *dbf = erp->adapter->dbf; in zfcp_dbf_rec_run_lvl()
386 struct zfcp_dbf_rec *rec = &dbf->rec_buf; in zfcp_dbf_rec_run_lvl()
389 if (!debug_level_enabled(dbf->rec, level)) in zfcp_dbf_rec_run_lvl()
392 spin_lock_irqsave(&dbf->rec_lock, flags); in zfcp_dbf_rec_run_lvl()
395 rec->id = ZFCP_DBF_REC_RUN; in zfcp_dbf_rec_run_lvl()
396 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_rec_run_lvl()
397 zfcp_dbf_set_common(rec, erp->adapter, erp->port, erp->sdev); in zfcp_dbf_rec_run_lvl()
399 rec->u.run.fsf_req_id = erp->fsf_req_id; in zfcp_dbf_rec_run_lvl()
400 rec->u.run.rec_status = erp->status; in zfcp_dbf_rec_run_lvl()
401 rec->u.run.rec_step = erp->step; in zfcp_dbf_rec_run_lvl()
402 rec->u.run.rec_action = erp->type; in zfcp_dbf_rec_run_lvl()
404 if (erp->sdev) in zfcp_dbf_rec_run_lvl()
405 rec->u.run.rec_count = in zfcp_dbf_rec_run_lvl()
406 atomic_read(&sdev_to_zfcp(erp->sdev)->erp_counter); in zfcp_dbf_rec_run_lvl()
407 else if (erp->port) in zfcp_dbf_rec_run_lvl()
408 rec->u.run.rec_count = atomic_read(&erp->port->erp_counter); in zfcp_dbf_rec_run_lvl()
410 rec->u.run.rec_count = atomic_read(&erp->adapter->erp_counter); in zfcp_dbf_rec_run_lvl()
412 debug_event(dbf->rec, level, rec, sizeof(*rec)); in zfcp_dbf_rec_run_lvl()
413 spin_unlock_irqrestore(&dbf->rec_lock, flags); in zfcp_dbf_rec_run_lvl()
417 * zfcp_dbf_rec_run - trace event related to running recovery
427 * zfcp_dbf_rec_run_wka - trace wka port event with info like running recovery
429 * @wka_port: well known address port
435 struct zfcp_dbf *dbf = wka_port->adapter->dbf; in zfcp_dbf_rec_run_wka()
436 struct zfcp_dbf_rec *rec = &dbf->rec_buf; in zfcp_dbf_rec_run_wka()
437 static int const level = 1; in zfcp_dbf_rec_run_wka() local
440 if (unlikely(!debug_level_enabled(dbf->rec, level))) in zfcp_dbf_rec_run_wka()
443 spin_lock_irqsave(&dbf->rec_lock, flags); in zfcp_dbf_rec_run_wka()
446 rec->id = ZFCP_DBF_REC_RUN; in zfcp_dbf_rec_run_wka()
447 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_rec_run_wka()
448 rec->port_status = wka_port->status; in zfcp_dbf_rec_run_wka()
449 rec->d_id = wka_port->d_id; in zfcp_dbf_rec_run_wka()
450 rec->lun = ZFCP_DBF_INVALID_LUN; in zfcp_dbf_rec_run_wka()
452 rec->u.run.fsf_req_id = req_id; in zfcp_dbf_rec_run_wka()
453 rec->u.run.rec_status = ~0; in zfcp_dbf_rec_run_wka()
454 rec->u.run.rec_step = ~0; in zfcp_dbf_rec_run_wka()
455 rec->u.run.rec_action = ~0; in zfcp_dbf_rec_run_wka()
456 rec->u.run.rec_count = ~0; in zfcp_dbf_rec_run_wka()
458 debug_event(dbf->rec, level, rec, sizeof(*rec)); in zfcp_dbf_rec_run_wka()
459 spin_unlock_irqrestore(&dbf->rec_lock, flags); in zfcp_dbf_rec_run_wka()
469 struct zfcp_dbf_san *rec = &dbf->san_buf; in zfcp_dbf_san()
472 struct zfcp_dbf_pay *payload = &dbf->pay_buf; in zfcp_dbf_san()
475 spin_lock_irqsave(&dbf->san_lock, flags); in zfcp_dbf_san()
478 rec->id = id; in zfcp_dbf_san()
479 rec->fsf_req_id = req_id; in zfcp_dbf_san()
480 rec->d_id = d_id; in zfcp_dbf_san()
481 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_san()
482 rec->pl_len = len; /* full length even if we cap pay below */ in zfcp_dbf_san()
485 rec_len = min_t(unsigned int, sg->length, ZFCP_DBF_SAN_MAX_PAYLOAD); in zfcp_dbf_san()
486 memcpy(rec->payload, sg_virt(sg), rec_len); /* part of 1st sg entry */ in zfcp_dbf_san()
488 goto out; /* skip pay record if full content in rec->payload */ in zfcp_dbf_san()
491 * dump data up to cap_len ignoring small duplicate in rec->payload in zfcp_dbf_san()
493 spin_lock(&dbf->pay_lock); in zfcp_dbf_san()
495 memcpy(payload->area, paytag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_san()
496 payload->fsf_req_id = req_id; in zfcp_dbf_san()
497 payload->counter = 0; in zfcp_dbf_san()
501 while (offset < sg->length && pay_sum < cap_len) { in zfcp_dbf_san()
503 (u16)(sg->length - offset)); in zfcp_dbf_san()
505 memcpy(payload->data, sg_virt(sg) + offset, pay_len); in zfcp_dbf_san()
506 debug_event(dbf->pay, ZFCP_DBF_SAN_LEVEL, payload, in zfcp_dbf_san()
508 payload->counter++; in zfcp_dbf_san()
513 spin_unlock(&dbf->pay_lock); in zfcp_dbf_san()
516 debug_event(dbf->san, ZFCP_DBF_SAN_LEVEL, rec, sizeof(*rec)); in zfcp_dbf_san()
517 spin_unlock_irqrestore(&dbf->san_lock, flags); in zfcp_dbf_san()
521 * zfcp_dbf_san_req - trace event for issued SAN request
529 struct zfcp_dbf *dbf = fsf->adapter->dbf; in zfcp_dbf_san_req()
530 struct zfcp_fsf_ct_els *ct_els = fsf->data; in zfcp_dbf_san_req()
533 if (unlikely(!debug_level_enabled(dbf->san, ZFCP_DBF_SAN_LEVEL))) in zfcp_dbf_san_req()
536 length = (u16)zfcp_qdio_real_bytes(ct_els->req); in zfcp_dbf_san_req()
537 zfcp_dbf_san(tag, dbf, "san_req", ct_els->req, ZFCP_DBF_SAN_REQ, in zfcp_dbf_san_req()
538 length, fsf->req_id, d_id, length); in zfcp_dbf_san_req()
545 struct zfcp_fsf_ct_els *ct_els = fsf->data; in zfcp_dbf_san_res_cap_len_if_gpn_ft()
546 struct fc_ct_hdr *reqh = sg_virt(ct_els->req); in zfcp_dbf_san_res_cap_len_if_gpn_ft()
548 struct scatterlist *resp_entry = ct_els->resp; in zfcp_dbf_san_res_cap_len_if_gpn_ft()
554 && ct_els->d_id == FC_FID_DIR_SERV in zfcp_dbf_san_res_cap_len_if_gpn_ft()
555 && reqh->ct_rev == FC_CT_REV in zfcp_dbf_san_res_cap_len_if_gpn_ft()
556 && reqh->ct_in_id[0] == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
557 && reqh->ct_in_id[1] == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
558 && reqh->ct_in_id[2] == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
559 && reqh->ct_fs_type == FC_FST_DIR in zfcp_dbf_san_res_cap_len_if_gpn_ft()
560 && reqh->ct_fs_subtype == FC_NS_SUBTYPE in zfcp_dbf_san_res_cap_len_if_gpn_ft()
561 && reqh->ct_options == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
562 && reqh->_ct_resvd1 == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
563 && reqh->ct_cmd == cpu_to_be16(FC_NS_GPN_FT) in zfcp_dbf_san_res_cap_len_if_gpn_ft()
564 /* reqh->ct_mr_size can vary so do not match but read below */ in zfcp_dbf_san_res_cap_len_if_gpn_ft()
565 && reqh->_ct_resvd2 == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
566 && reqh->ct_reason == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
567 && reqh->ct_explan == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
568 && reqh->ct_vendor == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
569 && reqn->fn_resvd == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
570 && reqn->fn_domain_id_scope == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
571 && reqn->fn_area_id_scope == 0 in zfcp_dbf_san_res_cap_len_if_gpn_ft()
572 && reqn->fn_fc4_type == FC_TYPE_FCP)) in zfcp_dbf_san_res_cap_len_if_gpn_ft()
579 if ((ct_els->status) || in zfcp_dbf_san_res_cap_len_if_gpn_ft()
580 (resph->ct_cmd != cpu_to_be16(FC_FS_ACC))) in zfcp_dbf_san_res_cap_len_if_gpn_ft()
583 max_entries = (be16_to_cpu(reqh->ct_mr_size) * 4 / in zfcp_dbf_san_res_cap_len_if_gpn_ft()
585 + 1 /* zfcp_fc_scan_ports: bytes correct, entries off-by-one in zfcp_dbf_san_res_cap_len_if_gpn_ft()
589 * response, allowing us to skip special handling for it - just skip it in zfcp_dbf_san_res_cap_len_if_gpn_ft()
597 last = acc->fp_flags & FC_NS_FID_LAST; in zfcp_dbf_san_res_cap_len_if_gpn_ft()
604 * zfcp_dbf_san_res - trace event for received SAN request
610 struct zfcp_dbf *dbf = fsf->adapter->dbf; in zfcp_dbf_san_res()
611 struct zfcp_fsf_ct_els *ct_els = fsf->data; in zfcp_dbf_san_res()
614 if (unlikely(!debug_level_enabled(dbf->san, ZFCP_DBF_SAN_LEVEL))) in zfcp_dbf_san_res()
617 length = (u16)zfcp_qdio_real_bytes(ct_els->resp); in zfcp_dbf_san_res()
618 zfcp_dbf_san(tag, dbf, "san_res", ct_els->resp, ZFCP_DBF_SAN_RES, in zfcp_dbf_san_res()
619 length, fsf->req_id, ct_els->d_id, in zfcp_dbf_san_res()
624 * zfcp_dbf_san_in_els - trace event for incoming ELS
630 struct zfcp_dbf *dbf = fsf->adapter->dbf; in zfcp_dbf_san_in_els()
632 (struct fsf_status_read_buffer *) fsf->data; in zfcp_dbf_san_in_els()
636 if (unlikely(!debug_level_enabled(dbf->san, ZFCP_DBF_SAN_LEVEL))) in zfcp_dbf_san_in_els()
639 length = (u16)(srb->length - in zfcp_dbf_san_in_els()
641 sg_init_one(&sg, srb->payload.data, length); in zfcp_dbf_san_in_els()
643 fsf->req_id, ntoh24(srb->d_id), length); in zfcp_dbf_san_in_els()
647 * zfcp_dbf_scsi_common() - Common trace event helper for scsi.
649 * @level: trace level of event.
654 void zfcp_dbf_scsi_common(char *tag, int level, struct scsi_device *sdev, in zfcp_dbf_scsi_common() argument
658 (struct zfcp_adapter *) sdev->host->hostdata[0]; in zfcp_dbf_scsi_common()
659 struct zfcp_dbf *dbf = adapter->dbf; in zfcp_dbf_scsi_common()
660 struct zfcp_dbf_scsi *rec = &dbf->scsi_buf; in zfcp_dbf_scsi_common()
665 spin_lock_irqsave(&dbf->scsi_lock, flags); in zfcp_dbf_scsi_common()
668 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_scsi_common()
669 rec->id = ZFCP_DBF_SCSI_CMND; in zfcp_dbf_scsi_common()
671 rec->scsi_result = sc->result; in zfcp_dbf_scsi_common()
672 rec->scsi_retries = sc->retries; in zfcp_dbf_scsi_common()
673 rec->scsi_allowed = sc->allowed; in zfcp_dbf_scsi_common()
674 rec->scsi_id = sc->device->id; in zfcp_dbf_scsi_common()
675 rec->scsi_lun = (u32)sc->device->lun; in zfcp_dbf_scsi_common()
676 rec->scsi_lun_64_hi = (u32)(sc->device->lun >> 32); in zfcp_dbf_scsi_common()
677 rec->host_scribble = (unsigned long)sc->host_scribble; in zfcp_dbf_scsi_common()
679 memcpy(rec->scsi_opcode, sc->cmnd, in zfcp_dbf_scsi_common()
680 min_t(int, sc->cmd_len, ZFCP_DBF_SCSI_OPCODE)); in zfcp_dbf_scsi_common()
682 rec->scsi_result = ~0; in zfcp_dbf_scsi_common()
683 rec->scsi_retries = ~0; in zfcp_dbf_scsi_common()
684 rec->scsi_allowed = ~0; in zfcp_dbf_scsi_common()
685 rec->scsi_id = sdev->id; in zfcp_dbf_scsi_common()
686 rec->scsi_lun = (u32)sdev->lun; in zfcp_dbf_scsi_common()
687 rec->scsi_lun_64_hi = (u32)(sdev->lun >> 32); in zfcp_dbf_scsi_common()
688 rec->host_scribble = ~0; in zfcp_dbf_scsi_common()
690 memset(rec->scsi_opcode, 0xff, ZFCP_DBF_SCSI_OPCODE); in zfcp_dbf_scsi_common()
694 rec->fsf_req_id = fsf->req_id; in zfcp_dbf_scsi_common()
695 rec->pl_len = FCP_RESP_WITH_EXT; in zfcp_dbf_scsi_common()
696 fcp_rsp = &(fsf->qtcb->bottom.io.fcp_rsp.iu); in zfcp_dbf_scsi_common()
698 memcpy(&rec->fcp_rsp, fcp_rsp, FCP_RESP_WITH_EXT); in zfcp_dbf_scsi_common()
699 if (fcp_rsp->resp.fr_flags & FCP_RSP_LEN_VAL) { in zfcp_dbf_scsi_common()
701 rec->fcp_rsp_info = fcp_rsp_info->rsp_code; in zfcp_dbf_scsi_common()
702 rec->pl_len += be32_to_cpu(fcp_rsp->ext.fr_rsp_len); in zfcp_dbf_scsi_common()
704 if (fcp_rsp->resp.fr_flags & FCP_SNS_LEN_VAL) { in zfcp_dbf_scsi_common()
705 rec->pl_len += be32_to_cpu(fcp_rsp->ext.fr_sns_len); in zfcp_dbf_scsi_common()
710 if (fcp_rsp->resp.fr_flags != 0) in zfcp_dbf_scsi_common()
716 min_t(u16, max_t(u16, rec->pl_len, in zfcp_dbf_scsi_common()
719 "fcp_riu", fsf->req_id); in zfcp_dbf_scsi_common()
722 debug_event(dbf->scsi, level, rec, sizeof(*rec)); in zfcp_dbf_scsi_common()
723 spin_unlock_irqrestore(&dbf->scsi_lock, flags); in zfcp_dbf_scsi_common()
727 * zfcp_dbf_scsi_eh() - Trace event for special cases of scsi_eh callbacks.
739 struct zfcp_dbf *dbf = adapter->dbf; in zfcp_dbf_scsi_eh()
740 struct zfcp_dbf_scsi *rec = &dbf->scsi_buf; in zfcp_dbf_scsi_eh()
742 static int const level = 1; in zfcp_dbf_scsi_eh() local
744 if (unlikely(!debug_level_enabled(adapter->dbf->scsi, level))) in zfcp_dbf_scsi_eh()
747 spin_lock_irqsave(&dbf->scsi_lock, flags); in zfcp_dbf_scsi_eh()
750 memcpy(rec->tag, tag, ZFCP_DBF_TAG_LEN); in zfcp_dbf_scsi_eh()
751 rec->id = ZFCP_DBF_SCSI_CMND; in zfcp_dbf_scsi_eh()
752 rec->scsi_result = ret; /* re-use field, int is 4 bytes and fits */ in zfcp_dbf_scsi_eh()
753 rec->scsi_retries = ~0; in zfcp_dbf_scsi_eh()
754 rec->scsi_allowed = ~0; in zfcp_dbf_scsi_eh()
755 rec->fcp_rsp_info = ~0; in zfcp_dbf_scsi_eh()
756 rec->scsi_id = scsi_id; in zfcp_dbf_scsi_eh()
757 rec->scsi_lun = (u32)ZFCP_DBF_INVALID_LUN; in zfcp_dbf_scsi_eh()
758 rec->scsi_lun_64_hi = (u32)(ZFCP_DBF_INVALID_LUN >> 32); in zfcp_dbf_scsi_eh()
759 rec->host_scribble = ~0; in zfcp_dbf_scsi_eh()
760 memset(rec->scsi_opcode, 0xff, ZFCP_DBF_SCSI_OPCODE); in zfcp_dbf_scsi_eh()
762 debug_event(dbf->scsi, level, rec, sizeof(*rec)); in zfcp_dbf_scsi_eh()
763 spin_unlock_irqrestore(&dbf->scsi_lock, flags); in zfcp_dbf_scsi_eh()
785 debug_unregister(dbf->scsi); in zfcp_dbf_unregister()
786 debug_unregister(dbf->san); in zfcp_dbf_unregister()
787 debug_unregister(dbf->hba); in zfcp_dbf_unregister()
788 debug_unregister(dbf->pay); in zfcp_dbf_unregister()
789 debug_unregister(dbf->rec); in zfcp_dbf_unregister()
794 * zfcp_adapter_debug_register - registers debug feature for an adapter
796 * return: -ENOMEM on error, 0 otherwise
805 return -ENOMEM; in zfcp_dbf_adapter_register()
807 spin_lock_init(&dbf->pay_lock); in zfcp_dbf_adapter_register()
808 spin_lock_init(&dbf->hba_lock); in zfcp_dbf_adapter_register()
809 spin_lock_init(&dbf->san_lock); in zfcp_dbf_adapter_register()
810 spin_lock_init(&dbf->scsi_lock); in zfcp_dbf_adapter_register()
811 spin_lock_init(&dbf->rec_lock); in zfcp_dbf_adapter_register()
814 sprintf(name, "zfcp_%s_rec", dev_name(&adapter->ccw_device->dev)); in zfcp_dbf_adapter_register()
815 dbf->rec = zfcp_dbf_reg(name, dbfsize, sizeof(struct zfcp_dbf_rec)); in zfcp_dbf_adapter_register()
816 if (!dbf->rec) in zfcp_dbf_adapter_register()
820 sprintf(name, "zfcp_%s_hba", dev_name(&adapter->ccw_device->dev)); in zfcp_dbf_adapter_register()
821 dbf->hba = zfcp_dbf_reg(name, dbfsize, sizeof(struct zfcp_dbf_hba)); in zfcp_dbf_adapter_register()
822 if (!dbf->hba) in zfcp_dbf_adapter_register()
826 sprintf(name, "zfcp_%s_pay", dev_name(&adapter->ccw_device->dev)); in zfcp_dbf_adapter_register()
827 dbf->pay = zfcp_dbf_reg(name, dbfsize * 2, sizeof(struct zfcp_dbf_pay)); in zfcp_dbf_adapter_register()
828 if (!dbf->pay) in zfcp_dbf_adapter_register()
832 sprintf(name, "zfcp_%s_san", dev_name(&adapter->ccw_device->dev)); in zfcp_dbf_adapter_register()
833 dbf->san = zfcp_dbf_reg(name, dbfsize, sizeof(struct zfcp_dbf_san)); in zfcp_dbf_adapter_register()
834 if (!dbf->san) in zfcp_dbf_adapter_register()
838 sprintf(name, "zfcp_%s_scsi", dev_name(&adapter->ccw_device->dev)); in zfcp_dbf_adapter_register()
839 dbf->scsi = zfcp_dbf_reg(name, dbfsize, sizeof(struct zfcp_dbf_scsi)); in zfcp_dbf_adapter_register()
840 if (!dbf->scsi) in zfcp_dbf_adapter_register()
843 adapter->dbf = dbf; in zfcp_dbf_adapter_register()
848 return -ENOMEM; in zfcp_dbf_adapter_register()
852 * zfcp_adapter_debug_unregister - unregisters debug feature for an adapter
857 struct zfcp_dbf *dbf = adapter->dbf; in zfcp_dbf_adapter_unregister()
859 adapter->dbf = NULL; in zfcp_dbf_adapter_unregister()