提交 1de933f3 编写于 作者: J James.Smart@Emulex.Com 提交者: James Bottomley

[SCSI] lpfc 8.1.1: Miscellaneous Cleanups

Miscellaneous Cleanups:
- Remove ProgType READ_REV mailbox command value check in lpfc_config_port_prep.
- Convert simple printk to an lpfc_printf_log in queuecommand.
- Modify lpfc_abort_handler message 0749 to display more accurate text and data.
- Minor style cleanup: fix 3 long lines in lpfc_hw.h
Signed-off-by: NJames Smart <James.Smart@emulex.com>
Signed-off-by: NJames Bottomley <James.Bottomley@SteelEye.com>
上级 0a21ef1e
...@@ -266,9 +266,11 @@ struct lpfc_name { ...@@ -266,9 +266,11 @@ struct lpfc_name {
struct { struct {
#ifdef __BIG_ENDIAN_BITFIELD #ifdef __BIG_ENDIAN_BITFIELD
uint8_t nameType:4; /* FC Word 0, bit 28:31 */ uint8_t nameType:4; /* FC Word 0, bit 28:31 */
uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */ uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit
8:11 of IEEE ext */
#else /* __LITTLE_ENDIAN_BITFIELD */ #else /* __LITTLE_ENDIAN_BITFIELD */
uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit 8:11 of IEEE ext */ uint8_t IEEEextMsn:4; /* FC Word 0, bit 24:27, bit
8:11 of IEEE ext */
uint8_t nameType:4; /* FC Word 0, bit 28:31 */ uint8_t nameType:4; /* FC Word 0, bit 28:31 */
#endif #endif
...@@ -278,7 +280,8 @@ struct lpfc_name { ...@@ -278,7 +280,8 @@ struct lpfc_name {
#define NAME_IP_TYPE 0x4 /* IP address */ #define NAME_IP_TYPE 0x4 /* IP address */
#define NAME_CCITT_TYPE 0xC #define NAME_CCITT_TYPE 0xC
#define NAME_CCITT_GR_TYPE 0xE #define NAME_CCITT_GR_TYPE 0xE
uint8_t IEEEextLsb; /* FC Word 0, bit 16:23, IEEE extended Lsb */ uint8_t IEEEextLsb; /* FC Word 0, bit 16:23, IEEE
extended Lsb */
uint8_t IEEE[6]; /* FC IEEE address */ uint8_t IEEE[6]; /* FC IEEE address */
} s; } s;
uint8_t wwn[8]; uint8_t wwn[8];
......
...@@ -126,34 +126,26 @@ lpfc_config_port_prep(struct lpfc_hba * phba) ...@@ -126,34 +126,26 @@ lpfc_config_port_prep(struct lpfc_hba * phba)
return -ERESTART; return -ERESTART;
} }
/* The HBA's current state is provided by the ProgType and rr fields. /*
* Read and check the value of these fields before continuing to config * The value of rr must be 1 since the driver set the cv field to 1.
* this port. * This setting requires the FW to set all revision fields.
*/ */
if (mb->un.varRdRev.rr == 0 || mb->un.varRdRev.un.b.ProgType != 2) { if (mb->un.varRdRev.rr == 0) {
/* Old firmware */
vp->rev.rBit = 0; vp->rev.rBit = 0;
lpfc_printf_log(phba, lpfc_printf_log(phba, KERN_ERR, LOG_INIT,
KERN_ERR, "%d:0440 Adapter failed to init, READ_REV has "
LOG_INIT, "missing revision information.\n",
"%d:0440 Adapter failed to init, mbxCmd x%x " phba->brd_no);
"READ_REV detected outdated firmware"
"Data: x%x\n",
phba->brd_no,
mb->mbxCommand, 0);
mempool_free(pmb, phba->mbox_mem_pool); mempool_free(pmb, phba->mbox_mem_pool);
return -ERESTART; return -ERESTART;
} else {
vp->rev.rBit = 1;
vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev;
memcpy(vp->rev.sli1FwName,
(char*)mb->un.varRdRev.sli1FwName, 16);
vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev;
memcpy(vp->rev.sli2FwName,
(char *)mb->un.varRdRev.sli2FwName, 16);
} }
/* Save information as VPD data */ /* Save information as VPD data */
vp->rev.rBit = 1;
vp->rev.sli1FwRev = mb->un.varRdRev.sli1FwRev;
memcpy(vp->rev.sli1FwName, (char*) mb->un.varRdRev.sli1FwName, 16);
vp->rev.sli2FwRev = mb->un.varRdRev.sli2FwRev;
memcpy(vp->rev.sli2FwName, (char *) mb->un.varRdRev.sli2FwName, 16);
vp->rev.biuRev = mb->un.varRdRev.biuRev; vp->rev.biuRev = mb->un.varRdRev.biuRev;
vp->rev.smRev = mb->un.varRdRev.smRev; vp->rev.smRev = mb->un.varRdRev.smRev;
vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev; vp->rev.smFwRev = mb->un.varRdRev.un.smFwRev;
......
...@@ -721,8 +721,9 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *)) ...@@ -721,8 +721,9 @@ lpfc_queuecommand(struct scsi_cmnd *cmnd, void (*done) (struct scsi_cmnd *))
} }
lpfc_cmd = lpfc_sli_get_scsi_buf (phba); lpfc_cmd = lpfc_sli_get_scsi_buf (phba);
if (lpfc_cmd == NULL) { if (lpfc_cmd == NULL) {
printk(KERN_WARNING "%s: No buffer available - list empty, " lpfc_printf_log(phba, KERN_INFO, LOG_FCP,
"total count %d\n", __FUNCTION__, phba->total_scsi_bufs); "%d:0707 driver's buffer pool is empty, "
"IO busied\n", phba->brd_no);
goto out_host_busy; goto out_host_busy;
} }
...@@ -844,8 +845,8 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd) ...@@ -844,8 +845,8 @@ __lpfc_abort_handler(struct scsi_cmnd *cmnd)
out: out:
lpfc_printf_log(phba, KERN_WARNING, LOG_FCP, lpfc_printf_log(phba, KERN_WARNING, LOG_FCP,
"%d:0749 SCSI layer issued abort device: ret %#x, " "%d:0749 SCSI Layer I/O Abort Request "
"ID %d, LUN %d, snum %#lx\n", "Status x%x ID %d LUN %d snum %#lx\n",
phba->brd_no, ret, cmnd->device->id, phba->brd_no, ret, cmnd->device->id,
cmnd->device->lun, cmnd->serial_number); cmnd->device->lun, cmnd->serial_number);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册