Commit e6ad2b79 authored by Joe Carnuccio's avatar Joe Carnuccio Committed by Martin K. Petersen
Browse files

scsi: qla2xxx: Add sysfs node for D-Port Diagnostics AEN data

parent 054f4382
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -2323,6 +2323,26 @@ qla2x00_port_no_show(struct device *dev, struct device_attribute *attr,
	return scnprintf(buf, PAGE_SIZE, "%u\n", vha->hw->port_no);
}

static ssize_t
qla2x00_dport_diagnostics_show(struct device *dev,
	struct device_attribute *attr, char *buf)
{
	scsi_qla_host_t *vha = shost_priv(class_to_shost(dev));

	if (!IS_QLA83XX(vha->hw) && !IS_QLA27XX(vha->hw) &&
	    !IS_QLA28XX(vha->hw))
		return scnprintf(buf, PAGE_SIZE, "\n");

	if (!*vha->dport_data)
		return scnprintf(buf, PAGE_SIZE, "\n");

	return scnprintf(buf, PAGE_SIZE, "%04x %04x %04x %04x\n",
	    vha->dport_data[0], vha->dport_data[1],
	    vha->dport_data[2], vha->dport_data[3]);
}
static DEVICE_ATTR(dport_diagnostics, 0444,
	   qla2x00_dport_diagnostics_show, NULL);

static DEVICE_ATTR(driver_version, S_IRUGO, qla2x00_driver_version_show, NULL);
static DEVICE_ATTR(fw_version, S_IRUGO, qla2x00_fw_version_show, NULL);
static DEVICE_ATTR(serial_num, S_IRUGO, qla2x00_serial_num_show, NULL);
@@ -2431,6 +2451,7 @@ struct device_attribute *qla2x00_host_attrs[] = {
	&dev_attr_port_speed,
	&dev_attr_port_no,
	&dev_attr_fw_attr,
	&dev_attr_dport_diagnostics,
	NULL, /* reserve for qlini_mode */
	NULL, /* reserve for ql2xiniexchg */
	NULL, /* reserve for ql2xexchoffld */
+1 −0
Original line number Diff line number Diff line
@@ -4541,6 +4541,7 @@ typedef struct scsi_qla_host {
	uint8_t n2n_node_name[WWN_SIZE];
	uint8_t n2n_port_name[WWN_SIZE];
	uint16_t	n2n_id;
	__le16 dport_data[4];
	struct list_head gpnid_list;
	struct fab_scan scan;

+1 −0
Original line number Diff line number Diff line
@@ -1254,6 +1254,7 @@ qla2x00_async_event(scsi_qla_host_t *vha, struct rsp_que *rsp, uint16_t *mb)
		ql_dbg(ql_dbg_async, vha, 0x5052,
		    "D-Port Diagnostics: %04x %04x %04x %04x\n",
		    mb[0], mb[1], mb[2], mb[3]);
		memcpy(vha->dport_data, mb, sizeof(vha->dport_data));
		if (IS_QLA83XX(ha) || IS_QLA27XX(ha) || IS_QLA28XX(ha)) {
			static char *results[] = {
			    "start", "done(pass)", "done(error)", "undefined" };