On Mon, 2018-11-12 at 13:40 -0800, Himanshu Madhani wrote: +AD4 diff --git a/drivers/scsi/qla2xxx/qla+AF8-attr.c +AD4 b/drivers/scsi/qla2xxx/qla+AF8-attr.c +AD4 index 678aff5ca947..323a4aa35f16 100644 +AD4 --- a/drivers/scsi/qla2xxx/qla+AF8-attr.c +AD4 +-+-+- b/drivers/scsi/qla2xxx/qla+AF8-attr.c +AD4 +AEAAQA -1665,6 +-1665,125 +AEAAQA qla2x00+AF8-max+AF8-speed+AF8-sup+AF8-show(struct device +ACo-dev, +AD4 struct device+AF8-attribute +ACo-attr, +AD4 ha-+AD4-max+AF8-speed+AF8-sup ? +ACI-32Gps+ACI : +ACI-16Gps+ACI)+ADs +AD4 +AH0 +AD4 +AD4 +-static ssize+AF8-t +AD4 +-qla27xx+AF8-nvme+AF8-connect+AF8-str+AF8-show(struct device +ACo-dev, struct device+AF8-attribute +AD4 +ACo-attr, +AD4 +- char +ACo-buf) +AD4 +-+AHs +AD4 +- scsi+AF8-qla+AF8-host+AF8-t +ACo-vha +AD0 shost+AF8-priv(class+AF8-to+AF8-shost(dev))+ADs +AD4 +- struct nvme+AF8-fc+AF8-remote+AF8-port +ACo-rport+ADs +AD4 +- struct nvme+AF8-fc+AF8-local+AF8-port +ACo-lport+ADs +AD4 +- struct qla+AF8-hw+AF8-data +ACo-ha +AD0 vha-+AD4-hw+ADs +AD4 +- struct qla+AF8-nvme+AF8-rport +ACo-qla+AF8-rport, +ACo-trport+ADs +AD4 +- fc+AF8-port+AF8-t +ACo-fcport+ADs +AD4 +- char temp+AFs-150+AF0 +AD0 +AHs-0+AH0AOw +AD4 +- char +ACo-rportstate +AD0 +ACIAIgA7 +AD4 +- +AD4 +- if (+ACE-IS+AF8-QLA27XX(ha) +ACYAJg +ACE-IS+AF8-QLA28XX(ha)) +AD4 +- return scnprintf(buf, PAGE+AF8-SIZE, +ACIAXA-n+ACI)+ADs +AD4 +- +AD4 +- if (+ACE-vha-+AD4-flags.nvme+AF8-enabled) +AD4 +- return scnprintf(buf, PAGE+AF8-SIZE, +ACIAJQ-s+AFw-n+ACI, +AD4 +- +ACI-FC-NVMe is not enabled+ACI)+ADs +AD4 +- +AD4 +- list+AF8-for+AF8-each+AF8-entry(fcport, +ACY-vha-+AD4-vp+AF8-fcports, list) +AHs +AD4 +- if (+ACE-fcport) +AHs +AD4 +- scnprintf(buf, PAGE+AF8-SIZE, +ACI-No FC host+AFw-n+ACI)+ADs +AD4 +- return strlen(buf)+ADs +AD4 +- +AH0 +AD4 +- +AD4 +- if (+ACE-vha-+AD4-nvme+AF8-local+AF8-port) +AHs +AD4 +- scnprintf(buf, PAGE+AF8-SIZE, +AD4 +- +ACI-FC-NVMe Initiator on 0x+ACU-16llx not +AD4 registered.+AFw-n+ACI, +AD4 +- wwn+AF8-to+AF8-u64(fcport-+AD4-port+AF8-name))+ADs +AD4 +- return strlen(buf)+ADs +AD4 +- +AH0 +AD4 +- +AD4 +- list+AF8-for+AF8-each+AF8-entry+AF8-safe(qla+AF8-rport, trport, +AD4 +- +ACY-vha-+AD4-nvme+AF8-rport+AF8-list, list) +AHs +AD4 +- if (qla+AF8-rport-+AD4-fcport +AD0APQ fcport) +AHs +AD4 +- rport +AD0 fcport-+AD4-nvme+AF8-remote+AF8-port+ADs +AD4 +- +AD4 +- lport +AD0 vha-+AD4-nvme+AF8-local+AF8-port+ADs +AD4 +- +AD4 +- scnprintf(temp, sizeof(temp), +AD4 +- +ACI-FC-NVMe LPORT: host+ACU-ld nn- +AD4 0x+ACU-16llx:pn-0x+ACU-16llx port+AF8-id +ACU-06x +ACU-s+AFw-n+ACI, +AD4 +- vha-+AD4-host+AF8-no, lport-+AD4-node+AF8-name, +AD4 +- lport-+AD4-port+AF8-name, lport-+AD4-port+AF8-id, +AD4 +ACI-ONLINE+ACI)+ADs +AD4 +- +AD4 +- if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ +AD4 PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AD4 +- scnprintf(temp, sizeof(temp), +AD4 +- +ACI-FC-NVMe RPORT: host+ACU-ld nn-0x+ACU-llx:pn- +AD4 0x+ACU-llx port+AF8-id +ACU-06x +ACI, +AD4 +- vha-+AD4-host+AF8-no, rport-+AD4-node+AF8-name, +AD4 +- rport-+AD4-port+AF8-name, rport-+AD4-port+AF8-id)+ADs +AD4 +- +AD4 +- /+ACo Find out Rport State +ACo-/ +AD4 +- if (rport-+AD4-port+AF8-state +ACY +AD4 FC+AF8-OBJSTATE+AF8-ONLINE) +AD4 +- rportstate +AD0 +ACI-ONLINE+ACIAOw +AD4 +- +AD4 +- if (rport-+AD4-port+AF8-state +ACY +AD4 FC+AF8-OBJSTATE+AF8-UNKNOWN) +AD4 +- rportstate +AD0 +ACI-UNKNOWN+ACIAOw +AD4 +- +AD4 +- if (rport-+AD4-port+AF8-state +ACY +AD4 +AH4(FC+AF8-OBJSTATE+AF8-ONLINE +AHw +AD4 +- FC+AF8-OBJSTATE+AF8-UNKNOWN)) +AD4 +- rportstate +AD0 +ACI-UNSUPPORTED+ACIAOw +AD4 +- +AD4 +- if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ +AD4 +- PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AD4 +- if (rport-+AD4-port+AF8-role +ACY +AD4 +- (FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-INITIATOR +AHw +AD4 +- FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-TARGET +AHw +AD4 +- FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-DISCOVERY)) +AHs +AD4 +- if (rport-+AD4-port+AF8-role +ACY +AD4 +- FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-INITIATOR) +AD4 +- if (strlcat(buf, +AD4 +ACI-INITIATOR +ACI, +AD4 +- PAGE+AF8-SIZE) +AD4APQ +AD4 PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AD4 +- if (rport-+AD4-port+AF8-role +ACY +AD4 +- FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-TARGET) +AD4 +- if (strlcat(buf, +ACI-TARGET +AD4 +ACI, +AD4 +- PAGE+AF8-SIZE) +AD4APQ +AD4 PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AD4 +- if (rport-+AD4-port+AF8-role +ACY +AD4 +- FC+AF8-PORT+AF8-ROLE+AF8-NVME+AF8-DISCOVERY) +AD4 +- if (strlcat(buf, +AD4 +ACI-DISCOVERY +ACI, +AD4 +- PAGE+AF8-SIZE) +AD4APQ +AD4 PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AH0 else +AHs +AD4 +- if (strlcat(buf, +ACI-UNKNOWN+AF8-ROLE +ACI, +AD4 +- PAGE+AF8-SIZE) +AD4APQ PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AH0 +AD4 +- scnprintf(temp, sizeof(temp), +ACIAJQ-s+AFw-n+ACI, +AD4 rportstate)+ADs +AD4 +- +AD4 +- if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ +AD4 PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AD4 +- scnprintf(temp, sizeof(temp), +AD4 +- +ACI-NVMECLI: host-traddr+AD0-nn-0x+ACU-16llx:pn- +AD4 0x+ACU-16llx traddr+AD0-nn-0x+ACU-16llx:pn-0x+ACU-16llx+AFw-n+ACI, +AD4 +- lport-+AD4-node+AF8-name, lport-+AD4-port+AF8-name, +AD4 +- rport-+AD4-node+AF8-name, rport-+AD4-port+AF8-name)+ADs +AD4 +- +AD4 +- if (strlcat(buf, temp, PAGE+AF8-SIZE) +AD4APQ +AD4 PAGE+AF8-SIZE) +AD4 +- goto done+ADs +AD4 +- +AH0 +AD4 +- +AH0 +AD4 +- +AH0 +AD4 +- +AD4 +- return strlen(buf)+ADs +AD4 +- +AD4 +-done: +AD4 +- ql+AF8-log(ql+AF8-log+AF8-warn, vha, 0xffff, +AD4 +- +ACI-NVME connect string buffer size 0x+ACU-lx exceeds 0x+ACU-lx+AFw-n+ACI, +AD4 +- sizeof(+ACo-buf), PAGE+AF8-SIZE)+ADs +AD4 +- return strlen(buf)+ADs +AD4 +-+AH0 Hi Himanshu, Are you familiar with the +ACI-one value per file+ACI rule for sysfs? A quote from Documentation/filesystems/sysfs.txt: +ACI-Attributes should be ASCII text files, preferably with only one value per file.+ACI Thanks, Bart.