Commit a4bc3379 authored by James Smart's avatar James Smart Committed by James Bottomley

[SCSI] lpfc 8.1.11 : Fix lpfc_multi_ring_support

It was not accounted for in the fast/slow rings.
Genericize the implementation and control it via sysfs
Signed-off-by: default avatarJames Smart <James.Smart@emulex.com>
Signed-off-by: default avatarJames Bottomley <James.Bottomley@SteelEye.com>
parent 2fb9bd8b
...@@ -296,6 +296,8 @@ struct lpfc_hba { ...@@ -296,6 +296,8 @@ struct lpfc_hba {
uint32_t cfg_cr_delay; uint32_t cfg_cr_delay;
uint32_t cfg_cr_count; uint32_t cfg_cr_count;
uint32_t cfg_multi_ring_support; uint32_t cfg_multi_ring_support;
uint32_t cfg_multi_ring_rctl;
uint32_t cfg_multi_ring_type;
uint32_t cfg_fdmi_on; uint32_t cfg_fdmi_on;
uint32_t cfg_discovery_threads; uint32_t cfg_discovery_threads;
uint32_t cfg_max_luns; uint32_t cfg_max_luns;
......
...@@ -802,7 +802,6 @@ static CLASS_DEVICE_ATTR(lpfc_devloss_tmo, S_IRUGO | S_IWUSR, ...@@ -802,7 +802,6 @@ static CLASS_DEVICE_ATTR(lpfc_devloss_tmo, S_IRUGO | S_IWUSR,
# LOG_MBOX 0x4 Mailbox events # LOG_MBOX 0x4 Mailbox events
# LOG_INIT 0x8 Initialization events # LOG_INIT 0x8 Initialization events
# LOG_LINK_EVENT 0x10 Link events # LOG_LINK_EVENT 0x10 Link events
# LOG_IP 0x20 IP traffic history
# LOG_FCP 0x40 FCP traffic history # LOG_FCP 0x40 FCP traffic history
# LOG_NODE 0x80 Node table events # LOG_NODE 0x80 Node table events
# LOG_MISC 0x400 Miscellaneous events # LOG_MISC 0x400 Miscellaneous events
...@@ -915,6 +914,22 @@ LPFC_ATTR_RW(cr_count, 1, 1, 255, "A count of I/O completions after which an " ...@@ -915,6 +914,22 @@ LPFC_ATTR_RW(cr_count, 1, 1, 255, "A count of I/O completions after which an "
LPFC_ATTR_R(multi_ring_support, 1, 1, 2, "Determines number of primary " LPFC_ATTR_R(multi_ring_support, 1, 1, 2, "Determines number of primary "
"SLI rings to spread IOCB entries across"); "SLI rings to spread IOCB entries across");
/*
# lpfc_multi_ring_rctl: If lpfc_multi_ring_support is enabled, this
# identifies what rctl value to configure the additional ring for.
# Value range is [1,0xff]. Default value is 4 (Unsolicated Data).
*/
LPFC_ATTR_R(multi_ring_rctl, FC_UNSOL_DATA, 1,
255, "Identifies RCTL for additional ring configuration");
/*
# lpfc_multi_ring_type: If lpfc_multi_ring_support is enabled, this
# identifies what type value to configure the additional ring for.
# Value range is [1,0xff]. Default value is 5 (LLC/SNAP).
*/
LPFC_ATTR_R(multi_ring_type, FC_LLC_SNAP, 1,
255, "Identifies TYPE for additional ring configuration");
/* /*
# lpfc_fdmi_on: controls FDMI support. # lpfc_fdmi_on: controls FDMI support.
# 0 = no FDMI support # 0 = no FDMI support
...@@ -974,6 +989,8 @@ struct class_device_attribute *lpfc_host_attrs[] = { ...@@ -974,6 +989,8 @@ struct class_device_attribute *lpfc_host_attrs[] = {
&class_device_attr_lpfc_cr_delay, &class_device_attr_lpfc_cr_delay,
&class_device_attr_lpfc_cr_count, &class_device_attr_lpfc_cr_count,
&class_device_attr_lpfc_multi_ring_support, &class_device_attr_lpfc_multi_ring_support,
&class_device_attr_lpfc_multi_ring_rctl,
&class_device_attr_lpfc_multi_ring_type,
&class_device_attr_lpfc_fdmi_on, &class_device_attr_lpfc_fdmi_on,
&class_device_attr_lpfc_max_luns, &class_device_attr_lpfc_max_luns,
&class_device_attr_nport_evt_cnt, &class_device_attr_nport_evt_cnt,
...@@ -1771,6 +1788,8 @@ lpfc_get_cfgparam(struct lpfc_hba *phba) ...@@ -1771,6 +1788,8 @@ lpfc_get_cfgparam(struct lpfc_hba *phba)
lpfc_cr_delay_init(phba, lpfc_cr_delay); lpfc_cr_delay_init(phba, lpfc_cr_delay);
lpfc_cr_count_init(phba, lpfc_cr_count); lpfc_cr_count_init(phba, lpfc_cr_count);
lpfc_multi_ring_support_init(phba, lpfc_multi_ring_support); lpfc_multi_ring_support_init(phba, lpfc_multi_ring_support);
lpfc_multi_ring_rctl_init(phba, lpfc_multi_ring_rctl);
lpfc_multi_ring_type_init(phba, lpfc_multi_ring_type);
lpfc_lun_queue_depth_init(phba, lpfc_lun_queue_depth); lpfc_lun_queue_depth_init(phba, lpfc_lun_queue_depth);
lpfc_fcp_class_init(phba, lpfc_fcp_class); lpfc_fcp_class_init(phba, lpfc_fcp_class);
lpfc_use_adisc_init(phba, lpfc_use_adisc); lpfc_use_adisc_init(phba, lpfc_use_adisc);
......
...@@ -1128,7 +1128,7 @@ lpfc_cmpl_els_adisc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb, ...@@ -1128,7 +1128,7 @@ lpfc_cmpl_els_adisc(struct lpfc_hba * phba, struct lpfc_iocbq * cmdiocb,
mempool_free(mbox, mempool_free(mbox,
phba->mbox_mem_pool); phba->mbox_mem_pool);
lpfc_disc_flush_list(phba); lpfc_disc_flush_list(phba);
psli->ring[(psli->ip_ring)]. psli->ring[(psli->extra_ring)].
flag &= flag &=
~LPFC_STOP_IOCB_EVENT; ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->fcp_ring)]. psli->ring[(psli->fcp_ring)].
...@@ -3046,7 +3046,7 @@ lpfc_els_rcv_farp(struct lpfc_hba * phba, ...@@ -3046,7 +3046,7 @@ lpfc_els_rcv_farp(struct lpfc_hba * phba,
/* FARP-REQ received from DID <did> */ /* FARP-REQ received from DID <did> */
lpfc_printf_log(phba, lpfc_printf_log(phba,
KERN_INFO, KERN_INFO,
LOG_IP, LOG_ELS,
"%d:0601 FARP-REQ received from DID x%x\n", "%d:0601 FARP-REQ received from DID x%x\n",
phba->brd_no, did); phba->brd_no, did);
...@@ -3108,7 +3108,7 @@ lpfc_els_rcv_farpr(struct lpfc_hba * phba, ...@@ -3108,7 +3108,7 @@ lpfc_els_rcv_farpr(struct lpfc_hba * phba,
/* FARP-RSP received from DID <did> */ /* FARP-RSP received from DID <did> */
lpfc_printf_log(phba, lpfc_printf_log(phba,
KERN_INFO, KERN_INFO,
LOG_IP, LOG_ELS,
"%d:0600 FARP-RSP received from DID x%x\n", "%d:0600 FARP-RSP received from DID x%x\n",
phba->brd_no, did); phba->brd_no, did);
......
...@@ -525,7 +525,7 @@ lpfc_mbx_cmpl_clear_la(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb) ...@@ -525,7 +525,7 @@ lpfc_mbx_cmpl_clear_la(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
psli = &phba->sli; psli = &phba->sli;
mb = &pmb->mb; mb = &pmb->mb;
/* Since we don't do discovery right now, turn these off here */ /* Since we don't do discovery right now, turn these off here */
psli->ring[psli->ip_ring].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[psli->extra_ring].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[psli->fcp_ring].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[psli->fcp_ring].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[psli->next_ring].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[psli->next_ring].flag &= ~LPFC_STOP_IOCB_EVENT;
...@@ -641,7 +641,7 @@ lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb) ...@@ -641,7 +641,7 @@ lpfc_mbx_cmpl_local_config_link(struct lpfc_hba *phba, LPFC_MBOXQ_t *pmb)
if (rc == MBX_NOT_FINISHED) { if (rc == MBX_NOT_FINISHED) {
mempool_free(pmb, phba->mbox_mem_pool); mempool_free(pmb, phba->mbox_mem_pool);
lpfc_disc_flush_list(phba); lpfc_disc_flush_list(phba);
psli->ring[(psli->ip_ring)].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[(psli->extra_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->fcp_ring)].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[(psli->fcp_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->next_ring)].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[(psli->next_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
phba->hba_state = LPFC_HBA_READY; phba->hba_state = LPFC_HBA_READY;
...@@ -696,7 +696,7 @@ lpfc_mbx_cmpl_read_sparam(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb) ...@@ -696,7 +696,7 @@ lpfc_mbx_cmpl_read_sparam(struct lpfc_hba * phba, LPFC_MBOXQ_t * pmb)
== MBX_NOT_FINISHED) { == MBX_NOT_FINISHED) {
mempool_free( pmb, phba->mbox_mem_pool); mempool_free( pmb, phba->mbox_mem_pool);
lpfc_disc_flush_list(phba); lpfc_disc_flush_list(phba);
psli->ring[(psli->ip_ring)].flag &= psli->ring[(psli->extra_ring)].flag &=
~LPFC_STOP_IOCB_EVENT; ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->fcp_ring)].flag &= psli->ring[(psli->fcp_ring)].flag &=
~LPFC_STOP_IOCB_EVENT; ~LPFC_STOP_IOCB_EVENT;
...@@ -1424,7 +1424,7 @@ lpfc_check_sli_ndlp(struct lpfc_hba * phba, ...@@ -1424,7 +1424,7 @@ lpfc_check_sli_ndlp(struct lpfc_hba * phba,
if (iocb->context1 == (uint8_t *) ndlp) if (iocb->context1 == (uint8_t *) ndlp)
return 1; return 1;
} }
} else if (pring->ringno == psli->ip_ring) { } else if (pring->ringno == psli->extra_ring) {
} else if (pring->ringno == psli->fcp_ring) { } else if (pring->ringno == psli->fcp_ring) {
/* Skip match check if waiting to relogin to FCP target */ /* Skip match check if waiting to relogin to FCP target */
...@@ -1889,7 +1889,7 @@ lpfc_disc_start(struct lpfc_hba * phba) ...@@ -1889,7 +1889,7 @@ lpfc_disc_start(struct lpfc_hba * phba)
if (rc == MBX_NOT_FINISHED) { if (rc == MBX_NOT_FINISHED) {
mempool_free( mbox, phba->mbox_mem_pool); mempool_free( mbox, phba->mbox_mem_pool);
lpfc_disc_flush_list(phba); lpfc_disc_flush_list(phba);
psli->ring[(psli->ip_ring)].flag &= psli->ring[(psli->extra_ring)].flag &=
~LPFC_STOP_IOCB_EVENT; ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->fcp_ring)].flag &= psli->ring[(psli->fcp_ring)].flag &=
~LPFC_STOP_IOCB_EVENT; ~LPFC_STOP_IOCB_EVENT;
...@@ -2268,7 +2268,7 @@ lpfc_disc_timeout_handler(struct lpfc_hba *phba) ...@@ -2268,7 +2268,7 @@ lpfc_disc_timeout_handler(struct lpfc_hba *phba)
if (clrlaerr) { if (clrlaerr) {
lpfc_disc_flush_list(phba); lpfc_disc_flush_list(phba);
psli->ring[(psli->ip_ring)].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[(psli->extra_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->fcp_ring)].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[(psli->fcp_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
psli->ring[(psli->next_ring)].flag &= ~LPFC_STOP_IOCB_EVENT; psli->ring[(psli->next_ring)].flag &= ~LPFC_STOP_IOCB_EVENT;
phba->hba_state = LPFC_HBA_READY; phba->hba_state = LPFC_HBA_READY;
......
...@@ -42,14 +42,14 @@ ...@@ -42,14 +42,14 @@
#define FCELSSIZE 1024 /* maximum ELS transfer size */ #define FCELSSIZE 1024 /* maximum ELS transfer size */
#define LPFC_FCP_RING 0 /* ring 0 for FCP initiator commands */ #define LPFC_FCP_RING 0 /* ring 0 for FCP initiator commands */
#define LPFC_IP_RING 1 /* ring 1 for IP commands */ #define LPFC_EXTRA_RING 1 /* ring 1 for other protocols */
#define LPFC_ELS_RING 2 /* ring 2 for ELS commands */ #define LPFC_ELS_RING 2 /* ring 2 for ELS commands */
#define LPFC_FCP_NEXT_RING 3 #define LPFC_FCP_NEXT_RING 3
#define SLI2_IOCB_CMD_R0_ENTRIES 172 /* SLI-2 FCP command ring entries */ #define SLI2_IOCB_CMD_R0_ENTRIES 172 /* SLI-2 FCP command ring entries */
#define SLI2_IOCB_RSP_R0_ENTRIES 134 /* SLI-2 FCP response ring entries */ #define SLI2_IOCB_RSP_R0_ENTRIES 134 /* SLI-2 FCP response ring entries */
#define SLI2_IOCB_CMD_R1_ENTRIES 4 /* SLI-2 IP command ring entries */ #define SLI2_IOCB_CMD_R1_ENTRIES 4 /* SLI-2 extra command ring entries */
#define SLI2_IOCB_RSP_R1_ENTRIES 4 /* SLI-2 IP response ring entries */ #define SLI2_IOCB_RSP_R1_ENTRIES 4 /* SLI-2 extra response ring entries */
#define SLI2_IOCB_CMD_R1XTRA_ENTRIES 36 /* SLI-2 extra FCP cmd ring entries */ #define SLI2_IOCB_CMD_R1XTRA_ENTRIES 36 /* SLI-2 extra FCP cmd ring entries */
#define SLI2_IOCB_RSP_R1XTRA_ENTRIES 52 /* SLI-2 extra FCP rsp ring entries */ #define SLI2_IOCB_RSP_R1XTRA_ENTRIES 52 /* SLI-2 extra FCP rsp ring entries */
#define SLI2_IOCB_CMD_R2_ENTRIES 20 /* SLI-2 ELS command ring entries */ #define SLI2_IOCB_CMD_R2_ENTRIES 20 /* SLI-2 ELS command ring entries */
......
...@@ -349,8 +349,8 @@ lpfc_config_port_post(struct lpfc_hba * phba) ...@@ -349,8 +349,8 @@ lpfc_config_port_post(struct lpfc_hba * phba)
phba->hba_state = LPFC_LINK_DOWN; phba->hba_state = LPFC_LINK_DOWN;
/* Only process IOCBs on ring 0 till hba_state is READY */ /* Only process IOCBs on ring 0 till hba_state is READY */
if (psli->ring[psli->ip_ring].cmdringaddr) if (psli->ring[psli->extra_ring].cmdringaddr)
psli->ring[psli->ip_ring].flag |= LPFC_STOP_IOCB_EVENT; psli->ring[psli->extra_ring].flag |= LPFC_STOP_IOCB_EVENT;
if (psli->ring[psli->fcp_ring].cmdringaddr) if (psli->ring[psli->fcp_ring].cmdringaddr)
psli->ring[psli->fcp_ring].flag |= LPFC_STOP_IOCB_EVENT; psli->ring[psli->fcp_ring].flag |= LPFC_STOP_IOCB_EVENT;
if (psli->ring[psli->next_ring].cmdringaddr) if (psli->ring[psli->next_ring].cmdringaddr)
......
...@@ -1098,6 +1098,7 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba, ...@@ -1098,6 +1098,7 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
lpfc_sli_pcimem_bcopy((uint32_t *) entry, lpfc_sli_pcimem_bcopy((uint32_t *) entry,
(uint32_t *) &rspiocbq.iocb, (uint32_t *) &rspiocbq.iocb,
sizeof (IOCB_t)); sizeof (IOCB_t));
INIT_LIST_HEAD(&(rspiocbq.list));
irsp = &rspiocbq.iocb; irsp = &rspiocbq.iocb;
type = lpfc_sli_iocb_cmd_type(irsp->ulpCommand & CMD_IOCB_MASK); type = lpfc_sli_iocb_cmd_type(irsp->ulpCommand & CMD_IOCB_MASK);
...@@ -1149,6 +1150,11 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba, ...@@ -1149,6 +1150,11 @@ lpfc_sli_handle_fast_ring_event(struct lpfc_hba * phba,
} }
} }
break; break;
case LPFC_UNSOL_IOCB:
spin_unlock_irqrestore(phba->host->host_lock, iflag);
lpfc_sli_process_unsol_iocb(phba, pring, &rspiocbq);
spin_lock_irqsave(phba->host->host_lock, iflag);
break;
default: default:
if (irsp->ulpCommand == CMD_ADAPTER_MSG) { if (irsp->ulpCommand == CMD_ADAPTER_MSG) {
char adaptermsg[LPFC_MAX_ADPTMSG]; char adaptermsg[LPFC_MAX_ADPTMSG];
...@@ -2472,13 +2478,17 @@ lpfc_extra_ring_setup( struct lpfc_hba *phba) ...@@ -2472,13 +2478,17 @@ lpfc_extra_ring_setup( struct lpfc_hba *phba)
psli = &phba->sli; psli = &phba->sli;
/* Adjust cmd/rsp ring iocb entries more evenly */ /* Adjust cmd/rsp ring iocb entries more evenly */
/* Take some away from the FCP ring */
pring = &psli->ring[psli->fcp_ring]; pring = &psli->ring[psli->fcp_ring];
pring->numCiocb -= SLI2_IOCB_CMD_R1XTRA_ENTRIES; pring->numCiocb -= SLI2_IOCB_CMD_R1XTRA_ENTRIES;
pring->numRiocb -= SLI2_IOCB_RSP_R1XTRA_ENTRIES; pring->numRiocb -= SLI2_IOCB_RSP_R1XTRA_ENTRIES;
pring->numCiocb -= SLI2_IOCB_CMD_R3XTRA_ENTRIES; pring->numCiocb -= SLI2_IOCB_CMD_R3XTRA_ENTRIES;
pring->numRiocb -= SLI2_IOCB_RSP_R3XTRA_ENTRIES; pring->numRiocb -= SLI2_IOCB_RSP_R3XTRA_ENTRIES;
pring = &psli->ring[1]; /* and give them to the extra ring */
pring = &psli->ring[psli->extra_ring];
pring->numCiocb += SLI2_IOCB_CMD_R1XTRA_ENTRIES; pring->numCiocb += SLI2_IOCB_CMD_R1XTRA_ENTRIES;
pring->numRiocb += SLI2_IOCB_RSP_R1XTRA_ENTRIES; pring->numRiocb += SLI2_IOCB_RSP_R1XTRA_ENTRIES;
pring->numCiocb += SLI2_IOCB_CMD_R3XTRA_ENTRIES; pring->numCiocb += SLI2_IOCB_CMD_R3XTRA_ENTRIES;
...@@ -2488,8 +2498,8 @@ lpfc_extra_ring_setup( struct lpfc_hba *phba) ...@@ -2488,8 +2498,8 @@ lpfc_extra_ring_setup( struct lpfc_hba *phba)
pring->iotag_max = 4096; pring->iotag_max = 4096;
pring->num_mask = 1; pring->num_mask = 1;
pring->prt[0].profile = 0; /* Mask 0 */ pring->prt[0].profile = 0; /* Mask 0 */
pring->prt[0].rctl = FC_UNSOL_DATA; pring->prt[0].rctl = phba->cfg_multi_ring_rctl;
pring->prt[0].type = 5; pring->prt[0].type = phba->cfg_multi_ring_type;
pring->prt[0].lpfc_sli_rcv_unsol_event = NULL; pring->prt[0].lpfc_sli_rcv_unsol_event = NULL;
return 0; return 0;
} }
...@@ -2505,7 +2515,7 @@ lpfc_sli_setup(struct lpfc_hba *phba) ...@@ -2505,7 +2515,7 @@ lpfc_sli_setup(struct lpfc_hba *phba)
psli->sli_flag = 0; psli->sli_flag = 0;
psli->fcp_ring = LPFC_FCP_RING; psli->fcp_ring = LPFC_FCP_RING;
psli->next_ring = LPFC_FCP_NEXT_RING; psli->next_ring = LPFC_FCP_NEXT_RING;
psli->ip_ring = LPFC_IP_RING; psli->extra_ring = LPFC_EXTRA_RING;
psli->iocbq_lookup = NULL; psli->iocbq_lookup = NULL;
psli->iocbq_lookup_len = 0; psli->iocbq_lookup_len = 0;
...@@ -2528,7 +2538,7 @@ lpfc_sli_setup(struct lpfc_hba *phba) ...@@ -2528,7 +2538,7 @@ lpfc_sli_setup(struct lpfc_hba *phba)
pring->fast_iotag = pring->iotag_max; pring->fast_iotag = pring->iotag_max;
pring->num_mask = 0; pring->num_mask = 0;
break; break;
case LPFC_IP_RING: /* ring 1 - IP */ case LPFC_EXTRA_RING: /* ring 1 - EXTRA */
/* numCiocb and numRiocb are used in config_port */ /* numCiocb and numRiocb are used in config_port */
pring->numCiocb = SLI2_IOCB_CMD_R1_ENTRIES; pring->numCiocb = SLI2_IOCB_CMD_R1_ENTRIES;
pring->numRiocb = SLI2_IOCB_RSP_R1_ENTRIES; pring->numRiocb = SLI2_IOCB_RSP_R1_ENTRIES;
...@@ -3238,6 +3248,21 @@ lpfc_intr_handler(int irq, void *dev_id) ...@@ -3238,6 +3248,21 @@ lpfc_intr_handler(int irq, void *dev_id)
lpfc_sli_handle_fast_ring_event(phba, lpfc_sli_handle_fast_ring_event(phba,
&phba->sli.ring[LPFC_FCP_RING], &phba->sli.ring[LPFC_FCP_RING],
status); status);
if (phba->cfg_multi_ring_support == 2) {
/*
* Process all events on extra ring. Take the optimized path
* for extra ring IO. Any other IO is slow path and is handled
* by the worker thread.
*/
status = (ha_copy & (HA_RXMASK << (4*LPFC_EXTRA_RING)));
status >>= (4*LPFC_EXTRA_RING);
if (status & HA_RXATT) {
lpfc_sli_handle_fast_ring_event(phba,
&phba->sli.ring[LPFC_EXTRA_RING],
status);
}
}
return IRQ_HANDLED; return IRQ_HANDLED;
} /* lpfc_intr_handler */ } /* lpfc_intr_handler */
...@@ -198,7 +198,7 @@ struct lpfc_sli { ...@@ -198,7 +198,7 @@ struct lpfc_sli {
int fcp_ring; /* ring used for FCP initiator commands */ int fcp_ring; /* ring used for FCP initiator commands */
int next_ring; int next_ring;
int ip_ring; /* ring used for IP network drv cmds */ int extra_ring; /* extra ring used for other protocols */
struct lpfc_sli_stat slistat; /* SLI statistical info */ struct lpfc_sli_stat slistat; /* SLI statistical info */
struct list_head mboxq; struct list_head mboxq;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment