summaryrefslogtreecommitdiff
path: root/drivers/scsi/lpfc/lpfc_scsi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_scsi.c')
-rw-r--r--drivers/scsi/lpfc/lpfc_scsi.c49
1 files changed, 15 insertions, 34 deletions
diff --git a/drivers/scsi/lpfc/lpfc_scsi.c b/drivers/scsi/lpfc/lpfc_scsi.c
index f2cab134af7f..8a795c65e3c3 100644
--- a/drivers/scsi/lpfc/lpfc_scsi.c
+++ b/drivers/scsi/lpfc/lpfc_scsi.c
@@ -21,6 +21,7 @@
* included with this package. *
*******************************************************************/
#include <linux/pci.h>
+#include <linux/seq_buf.h>
#include <linux/slab.h>
#include <linux/interrupt.h>
#include <linux/export.h>
@@ -5103,57 +5104,37 @@ lpfc_info(struct Scsi_Host *host)
struct lpfc_hba *phba = vport->phba;
int link_speed = 0;
static char lpfcinfobuf[384];
- char tmp[384] = {0};
+ struct seq_buf s;
memset(lpfcinfobuf, 0, sizeof(lpfcinfobuf));
+ seq_buf_init(&s, lpfcinfobuf, sizeof(lpfcinfobuf));
if (phba && phba->pcidev){
/* Model Description */
- scnprintf(tmp, sizeof(tmp), phba->ModelDesc);
- if (strlcat(lpfcinfobuf, tmp, sizeof(lpfcinfobuf)) >=
- sizeof(lpfcinfobuf))
- goto buffer_done;
+ seq_buf_printf(&s, "%s", phba->ModelDesc);
/* PCI Info */
- scnprintf(tmp, sizeof(tmp),
- " on PCI bus %02x device %02x irq %d",
- phba->pcidev->bus->number, phba->pcidev->devfn,
- phba->pcidev->irq);
- if (strlcat(lpfcinfobuf, tmp, sizeof(lpfcinfobuf)) >=
- sizeof(lpfcinfobuf))
- goto buffer_done;
+ seq_buf_printf(&s, " on PCI bus %02x device %02x irq %d",
+ phba->pcidev->bus->number, phba->pcidev->devfn,
+ phba->pcidev->irq);
/* Port Number */
- if (phba->Port[0]) {
- scnprintf(tmp, sizeof(tmp), " port %s", phba->Port);
- if (strlcat(lpfcinfobuf, tmp, sizeof(lpfcinfobuf)) >=
- sizeof(lpfcinfobuf))
- goto buffer_done;
- }
+ if (phba->Port[0])
+ seq_buf_printf(&s, " port %s", phba->Port);
/* Link Speed */
link_speed = lpfc_sli_port_speed_get(phba);
- if (link_speed != 0) {
- scnprintf(tmp, sizeof(tmp),
- " Logical Link Speed: %d Mbps", link_speed);
- if (strlcat(lpfcinfobuf, tmp, sizeof(lpfcinfobuf)) >=
- sizeof(lpfcinfobuf))
- goto buffer_done;
- }
+ if (link_speed != 0)
+ seq_buf_printf(&s, " Logical Link Speed: %d Mbps",
+ link_speed);
/* Support for BSG ioctls */
- scnprintf(tmp, sizeof(tmp), " BSG");
- if (strlcat(lpfcinfobuf, tmp, sizeof(lpfcinfobuf)) >=
- sizeof(lpfcinfobuf))
- goto buffer_done;
+ seq_buf_printf(&s, " BSG");
/* PCI resettable */
- if (!lpfc_check_pci_resettable(phba)) {
- scnprintf(tmp, sizeof(tmp), " PCI resettable");
- strlcat(lpfcinfobuf, tmp, sizeof(lpfcinfobuf));
- }
+ if (!lpfc_check_pci_resettable(phba))
+ seq_buf_printf(&s, " PCI resettable");
}
-buffer_done:
return lpfcinfobuf;
}