break;
case FSF_STATUS_READ_LINK_DOWN:
- rec->type.status.payload_size = sizeof(u64);
+ switch (status_buffer->status_subtype) {
+ case FSF_STATUS_READ_SUB_NO_PHYSICAL_LINK:
+ case FSF_STATUS_READ_SUB_FDISC_FAILED:
+ rec->type.status.payload_size =
+ sizeof(struct fsf_link_down_info);
+ }
break;
+ case FSF_STATUS_READ_FEATURE_UPDATE_ALERT:
+ rec->type.status.payload_size =
+ ZFCP_DBF_UNSOL_PAYLOAD_FEATURE_UPDATE_ALERT;
+ break;
}
memcpy(&rec->type.status.payload,
&status_buffer->payload, rec->type.status.payload_size);
inline void
_zfcp_san_dbf_event_common_ct(const char *tag, struct zfcp_fsf_req *fsf_req,
- fc_id_t s_id, fc_id_t d_id,
- void *buffer, int buflen)
+ u32 s_id, u32 d_id, void *buffer, int buflen)
{
struct zfcp_send_ct *send_ct = (struct zfcp_send_ct *)fsf_req->data;
struct zfcp_port *port = send_ct->port;
struct zfcp_port *port = ct->port;
struct zfcp_adapter *adapter = port->adapter;
- _zfcp_san_dbf_event_common_ct("octc",
- fsf_req, adapter->s_id, port->d_id,
- zfcp_sg_to_address(ct->req),
+ _zfcp_san_dbf_event_common_ct("octc", fsf_req,
+ fc_host_port_id(adapter->scsi_host),
+ port->d_id, zfcp_sg_to_address(ct->req),
ct->req->length);
}
struct zfcp_port *port = ct->port;
struct zfcp_adapter *adapter = port->adapter;
- _zfcp_san_dbf_event_common_ct("rctc",
- fsf_req, port->d_id, adapter->s_id,
+ _zfcp_san_dbf_event_common_ct("rctc", fsf_req, port->d_id,
+ fc_host_port_id(adapter->scsi_host),
zfcp_sg_to_address(ct->resp),
ct->resp->length);
}
static inline void
_zfcp_san_dbf_event_common_els(const char *tag, int level,
- struct zfcp_fsf_req *fsf_req,
- fc_id_t s_id, fc_id_t d_id, u8 ls_code,
- void *buffer, int buflen)
+ struct zfcp_fsf_req *fsf_req, u32 s_id,
+ u32 d_id, u8 ls_code, void *buffer, int buflen)
{
struct zfcp_adapter *adapter = fsf_req->adapter;
struct zfcp_san_dbf_record *rec = &adapter->san_dbf_buf;
{
struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
- _zfcp_san_dbf_event_common_els("oels", 2,
- fsf_req, els->adapter->s_id, els->d_id,
+ _zfcp_san_dbf_event_common_els("oels", 2, fsf_req,
+ fc_host_port_id(els->adapter->scsi_host),
+ els->d_id,
*(u8 *) zfcp_sg_to_address(els->req),
zfcp_sg_to_address(els->req),
els->req->length);
{
struct zfcp_send_els *els = (struct zfcp_send_els *)fsf_req->data;
- _zfcp_san_dbf_event_common_els("rels", 2,
- fsf_req, els->d_id, els->adapter->s_id,
+ _zfcp_san_dbf_event_common_els("rels", 2, fsf_req, els->d_id,
+ fc_host_port_id(els->adapter->scsi_host),
*(u8 *) zfcp_sg_to_address(els->req),
zfcp_sg_to_address(els->resp),
els->resp->length);
int length = (int)status_buffer->length -
(int)((void *)&status_buffer->payload - (void *)status_buffer);
- _zfcp_san_dbf_event_common_els("iels", 1,
- fsf_req, status_buffer->d_id,
- adapter->s_id,
+ _zfcp_san_dbf_event_common_els("iels", 1, fsf_req, status_buffer->d_id,
+ fc_host_port_id(adapter->scsi_host),
*(u8 *) status_buffer->payload,
(void *)status_buffer->payload, length);
}
char dbf_name[DEBUG_MAX_NAME_LEN];
/* debug feature area which records recovery activity */
- spin_lock_init(&adapter->erp_dbf_lock);
sprintf(dbf_name, "zfcp_%s_erp", zfcp_get_busid_by_adapter(adapter));
adapter->erp_dbf = debug_register(dbf_name, dbfsize, 2,
sizeof(struct zfcp_erp_dbf_record));
debug_set_level(adapter->erp_dbf, 3);
/* debug feature area which records HBA (FSF and QDIO) conditions */
- spin_lock_init(&adapter->hba_dbf_lock);
sprintf(dbf_name, "zfcp_%s_hba", zfcp_get_busid_by_adapter(adapter));
adapter->hba_dbf = debug_register(dbf_name, dbfsize, 1,
sizeof(struct zfcp_hba_dbf_record));
debug_set_level(adapter->hba_dbf, 3);
/* debug feature area which records SAN command failures and recovery */
- spin_lock_init(&adapter->san_dbf_lock);
sprintf(dbf_name, "zfcp_%s_san", zfcp_get_busid_by_adapter(adapter));
adapter->san_dbf = debug_register(dbf_name, dbfsize, 1,
sizeof(struct zfcp_san_dbf_record));
debug_set_level(adapter->san_dbf, 6);
/* debug feature area which records SCSI command failures and recovery */
- spin_lock_init(&adapter->scsi_dbf_lock);
sprintf(dbf_name, "zfcp_%s_scsi", zfcp_get_busid_by_adapter(adapter));
adapter->scsi_dbf = debug_register(dbf_name, dbfsize, 1,
sizeof(struct zfcp_scsi_dbf_record));