[SCSI] zfcp: Simplify handling of ct and els requests
[linux-2.6-block.git] / drivers / s390 / scsi / zfcp_dbf.c
index 517f196b4c52dbbf65d23cfa4471e28c56229ff3..84450955ae114acdb674dca6dfe3575caa3afde5 100644 (file)
@@ -179,7 +179,6 @@ void _zfcp_dbf_hba_fsf_response(const char *tag2, int level,
        case FSF_QTCB_SEND_ELS:
                send_els = (struct zfcp_send_els *)fsf_req->data;
                response->u.els.d_id = ntoh24(qtcb->bottom.support.d_id);
-               response->u.els.ls_code = send_els->ls_code >> 24;
                break;
 
        case FSF_QTCB_ABORT_FCP_CMND:
@@ -349,7 +348,6 @@ static void zfcp_dbf_hba_view_response(char **p,
 
        case FSF_QTCB_SEND_ELS:
                zfcp_dbf_out(p, "d_id", "0x%06x", r->u.els.d_id);
-               zfcp_dbf_out(p, "ls_code", "0x%02x", r->u.els.ls_code);
                break;
 
        case FSF_QTCB_ABORT_FCP_CMND:
@@ -678,12 +676,12 @@ void zfcp_dbf_rec_action(char *id2, struct zfcp_erp_action *erp_action)
 /**
  * zfcp_dbf_san_ct_request - trace event for issued CT request
  * @fsf_req: request containing issued CT data
+ * @d_id: destination id where ct request is sent to
  */
-void zfcp_dbf_san_ct_request(struct zfcp_fsf_req *fsf_req)
+void zfcp_dbf_san_ct_request(struct zfcp_fsf_req *fsf_req, u32 d_id)
 {
-       struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data;
-       struct zfcp_fc_wka_port *wka_port = ct->wka_port;
-       struct zfcp_adapter *adapter = wka_port->adapter;
+       struct zfcp_fsf_ct_els *ct = (struct zfcp_fsf_ct_els *)fsf_req->data;
+       struct zfcp_adapter *adapter = fsf_req->adapter;
        struct zfcp_dbf *dbf = adapter->dbf;
        struct fc_ct_hdr *hdr = sg_virt(ct->req);
        struct zfcp_dbf_san_record *r = &dbf->san_buf;
@@ -696,8 +694,7 @@ void zfcp_dbf_san_ct_request(struct zfcp_fsf_req *fsf_req)
        strncpy(r->tag, "octc", ZFCP_DBF_TAG_SIZE);
        r->fsf_reqid = fsf_req->req_id;
        r->fsf_seqno = fsf_req->seq_no;
-       r->s_id = fc_host_port_id(adapter->scsi_host);
-       r->d_id = wka_port->d_id;
+       oct->d_id = d_id;
        oct->cmd_req_code = hdr->ct_cmd;
        oct->revision = hdr->ct_rev;
        oct->gs_type = hdr->ct_fs_type;
@@ -718,9 +715,8 @@ void zfcp_dbf_san_ct_request(struct zfcp_fsf_req *fsf_req)
  */
 void zfcp_dbf_san_ct_response(struct zfcp_fsf_req *fsf_req)
 {
-       struct zfcp_send_ct *ct = (struct zfcp_send_ct *)fsf_req->data;
-       struct zfcp_fc_wka_port *wka_port = ct->wka_port;
-       struct zfcp_adapter *adapter = wka_port->adapter;
+       struct zfcp_fsf_ct_els *ct = (struct zfcp_fsf_ct_els *)fsf_req->data;
+       struct zfcp_adapter *adapter = fsf_req->adapter;
        struct fc_ct_hdr *hdr = sg_virt(ct->resp);
        struct zfcp_dbf *dbf = adapter->dbf;
        struct zfcp_dbf_san_record *r = &dbf->san_buf;
@@ -733,8 +729,6 @@ void zfcp_dbf_san_ct_response(struct zfcp_fsf_req *fsf_req)
        strncpy(r->tag, "rctc", ZFCP_DBF_TAG_SIZE);
        r->fsf_reqid = fsf_req->req_id;
        r->fsf_seqno = fsf_req->seq_no;
-       r->s_id = wka_port->d_id;
-       r->d_id = fc_host_port_id(adapter->scsi_host);
        rct->cmd_rsp_code = hdr->ct_cmd;
        rct->revision = hdr->ct_rev;
        rct->reason_code = hdr->ct_reason;
@@ -750,8 +744,8 @@ void zfcp_dbf_san_ct_response(struct zfcp_fsf_req *fsf_req)
 }
 
 static void zfcp_dbf_san_els(const char *tag, int level,
-                            struct zfcp_fsf_req *fsf_req, u32 s_id, u32 d_id,
-                            u8 ls_code, void *buffer, int buflen)
+                            struct zfcp_fsf_req *fsf_req, u32 d_id,
+                            void *buffer, int buflen)
 {
        struct zfcp_adapter *adapter = fsf_req->adapter;
        struct zfcp_dbf *dbf = adapter->dbf;
@@ -763,9 +757,7 @@ static void zfcp_dbf_san_els(const char *tag, int level,
        strncpy(rec->tag, tag, ZFCP_DBF_TAG_SIZE);
        rec->fsf_reqid = fsf_req->req_id;
        rec->fsf_seqno = fsf_req->seq_no;
-       rec->s_id = s_id;
-       rec->d_id = d_id;
-       rec->u.els.ls_code = ls_code;
+       rec->u.els.d_id = d_id;
        debug_event(dbf->san, level, rec, sizeof(*rec));
        zfcp_dbf_hexdump(dbf->san, rec, sizeof(*rec), level,
                         buffer, min(buflen, ZFCP_DBF_SAN_MAX_PAYLOAD));
@@ -778,12 +770,11 @@ static void zfcp_dbf_san_els(const char *tag, int level,
  */
 void zfcp_dbf_san_els_request(struct zfcp_fsf_req *fsf_req)
 {
-       struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
+       struct zfcp_fsf_ct_els *els = (struct zfcp_fsf_ct_els *)fsf_req->data;
+       u32 d_id = ntoh24(fsf_req->qtcb->bottom.support.d_id);
 
-       zfcp_dbf_san_els("oels", 2, fsf_req,
-                              fc_host_port_id(els->adapter->scsi_host),
-                              els->d_id, *(u8 *) sg_virt(els->req),
-                              sg_virt(els->req), els->req->length);
+       zfcp_dbf_san_els("oels", 2, fsf_req, d_id,
+                        sg_virt(els->req), els->req->length);
 }
 
 /**
@@ -792,12 +783,11 @@ void zfcp_dbf_san_els_request(struct zfcp_fsf_req *fsf_req)
  */
 void zfcp_dbf_san_els_response(struct zfcp_fsf_req *fsf_req)
 {
-       struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
+       struct zfcp_fsf_ct_els *els = (struct zfcp_fsf_ct_els *)fsf_req->data;
+       u32 d_id = ntoh24(fsf_req->qtcb->bottom.support.d_id);
 
-       zfcp_dbf_san_els("rels", 2, fsf_req, els->d_id,
-                              fc_host_port_id(els->adapter->scsi_host),
-                              *(u8 *)sg_virt(els->req), sg_virt(els->resp),
-                              els->resp->length);
+       zfcp_dbf_san_els("rels", 2, fsf_req, d_id,
+                              sg_virt(els->resp), els->resp->length);
 }
 
 /**
@@ -806,16 +796,13 @@ void zfcp_dbf_san_els_response(struct zfcp_fsf_req *fsf_req)
  */
 void zfcp_dbf_san_incoming_els(struct zfcp_fsf_req *fsf_req)
 {
-       struct zfcp_adapter *adapter = fsf_req->adapter;
        struct fsf_status_read_buffer *buf =
                        (struct fsf_status_read_buffer *)fsf_req->data;
        int length = (int)buf->length -
                     (int)((void *)&buf->payload - (void *)buf);
 
        zfcp_dbf_san_els("iels", 1, fsf_req, ntoh24(buf->d_id),
-                              fc_host_port_id(adapter->scsi_host),
-                              buf->payload.data[0], (void *)buf->payload.data,
-                              length);
+                              (void *)buf->payload.data, length);
 }
 
 static int zfcp_dbf_san_view_format(debug_info_t *id, struct debug_view *view,
@@ -830,11 +817,10 @@ static int zfcp_dbf_san_view_format(debug_info_t *id, struct debug_view *view,
        zfcp_dbf_tag(&p, "tag", r->tag);
        zfcp_dbf_out(&p, "fsf_reqid", "0x%0Lx", r->fsf_reqid);
        zfcp_dbf_out(&p, "fsf_seqno", "0x%08x", r->fsf_seqno);
-       zfcp_dbf_out(&p, "s_id", "0x%06x", r->s_id);
-       zfcp_dbf_out(&p, "d_id", "0x%06x", r->d_id);
 
        if (strncmp(r->tag, "octc", ZFCP_DBF_TAG_SIZE) == 0) {
                struct zfcp_dbf_san_record_ct_request *ct = &r->u.ct_req;
+               zfcp_dbf_out(&p, "d_id", "0x%06x", ct->d_id);
                zfcp_dbf_out(&p, "cmd_req_code", "0x%04x", ct->cmd_req_code);
                zfcp_dbf_out(&p, "revision", "0x%02x", ct->revision);
                zfcp_dbf_out(&p, "gs_type", "0x%02x", ct->gs_type);
@@ -853,7 +839,7 @@ static int zfcp_dbf_san_view_format(debug_info_t *id, struct debug_view *view,
                   strncmp(r->tag, "rels", ZFCP_DBF_TAG_SIZE) == 0 ||
                   strncmp(r->tag, "iels", ZFCP_DBF_TAG_SIZE) == 0) {
                struct zfcp_dbf_san_record_els *els = &r->u.els;
-               zfcp_dbf_out(&p, "ls_code", "0x%02x", els->ls_code);
+               zfcp_dbf_out(&p, "d_id", "0x%06x", els->d_id);
        }
        return p - out_buf;
 }