diff options
author | James Smart <james.smart@emulex.com> | 2010-11-20 23:11:55 -0500 |
---|---|---|
committer | James Bottomley <James.Bottomley@suse.de> | 2010-12-21 13:24:01 -0500 |
commit | 19ca760979e4be41a3eb215fb8d0e96637161947 (patch) | |
tree | de6c32815eb813ba770a26178c1612015acf719b /drivers/scsi/lpfc/lpfc.h | |
parent | 76a95d75ede64e4f1684ddb8c626fdfdb641bda2 (diff) |
[SCSI] lpfc 8.3.19: Added support for ELS RRQ command
Added support for ELS RRQ command
- Add new routine lpfc_set_rrq_active() to track XRI qualifier state.
- Add new module parameter lpfc_enable_rrq to control RRQ operation.
- Add logic to ELS RRQ completion handler and xri qualifier timeout
to clear XRI qualifier state.
- Use OX_ID from XRI_ABORTED_CQE for RRQ payload.
- Tie abort and XRI_ABORTED_CQE andler to RRQ generation.
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@suse.de>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc.h')
-rw-r--r-- | drivers/scsi/lpfc/lpfc.h | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/drivers/scsi/lpfc/lpfc.h b/drivers/scsi/lpfc/lpfc.h index e86a0d2add3c..746dd3d7a092 100644 --- a/drivers/scsi/lpfc/lpfc.h +++ b/drivers/scsi/lpfc/lpfc.h | |||
@@ -486,7 +486,7 @@ struct lpfc_hba { | |||
486 | int (*lpfc_new_scsi_buf) | 486 | int (*lpfc_new_scsi_buf) |
487 | (struct lpfc_vport *, int); | 487 | (struct lpfc_vport *, int); |
488 | struct lpfc_scsi_buf * (*lpfc_get_scsi_buf) | 488 | struct lpfc_scsi_buf * (*lpfc_get_scsi_buf) |
489 | (struct lpfc_hba *); | 489 | (struct lpfc_hba *, struct lpfc_nodelist *); |
490 | int (*lpfc_scsi_prep_dma_buf) | 490 | int (*lpfc_scsi_prep_dma_buf) |
491 | (struct lpfc_hba *, struct lpfc_scsi_buf *); | 491 | (struct lpfc_hba *, struct lpfc_scsi_buf *); |
492 | void (*lpfc_scsi_unprep_dma_buf) | 492 | void (*lpfc_scsi_unprep_dma_buf) |
@@ -574,6 +574,7 @@ struct lpfc_hba { | |||
574 | #define HBA_FIP_SUPPORT 0x800 /* FIP support in HBA */ | 574 | #define HBA_FIP_SUPPORT 0x800 /* FIP support in HBA */ |
575 | #define HBA_AER_ENABLED 0x1000 /* AER enabled with HBA */ | 575 | #define HBA_AER_ENABLED 0x1000 /* AER enabled with HBA */ |
576 | #define HBA_DEVLOSS_TMO 0x2000 /* HBA in devloss timeout */ | 576 | #define HBA_DEVLOSS_TMO 0x2000 /* HBA in devloss timeout */ |
577 | #define HBA_RRQ_ACTIVE 0x4000 /* process the rrq active list */ | ||
577 | uint32_t fcp_ring_in_use; /* When polling test if intr-hndlr active*/ | 578 | uint32_t fcp_ring_in_use; /* When polling test if intr-hndlr active*/ |
578 | struct lpfc_dmabuf slim2p; | 579 | struct lpfc_dmabuf slim2p; |
579 | 580 | ||
@@ -623,6 +624,7 @@ struct lpfc_hba { | |||
623 | /* HBA Config Parameters */ | 624 | /* HBA Config Parameters */ |
624 | uint32_t cfg_ack0; | 625 | uint32_t cfg_ack0; |
625 | uint32_t cfg_enable_npiv; | 626 | uint32_t cfg_enable_npiv; |
627 | uint32_t cfg_enable_rrq; | ||
626 | uint32_t cfg_topology; | 628 | uint32_t cfg_topology; |
627 | uint32_t cfg_link_speed; | 629 | uint32_t cfg_link_speed; |
628 | uint32_t cfg_cr_delay; | 630 | uint32_t cfg_cr_delay; |
@@ -733,6 +735,7 @@ struct lpfc_hba { | |||
733 | uint32_t total_scsi_bufs; | 735 | uint32_t total_scsi_bufs; |
734 | struct list_head lpfc_iocb_list; | 736 | struct list_head lpfc_iocb_list; |
735 | uint32_t total_iocbq_bufs; | 737 | uint32_t total_iocbq_bufs; |
738 | struct list_head active_rrq_list; | ||
736 | spinlock_t hbalock; | 739 | spinlock_t hbalock; |
737 | 740 | ||
738 | /* pci_mem_pools */ | 741 | /* pci_mem_pools */ |
@@ -745,6 +748,7 @@ struct lpfc_hba { | |||
745 | 748 | ||
746 | mempool_t *mbox_mem_pool; | 749 | mempool_t *mbox_mem_pool; |
747 | mempool_t *nlp_mem_pool; | 750 | mempool_t *nlp_mem_pool; |
751 | mempool_t *rrq_pool; | ||
748 | 752 | ||
749 | struct fc_host_statistics link_stats; | 753 | struct fc_host_statistics link_stats; |
750 | enum intr_type_t intr_type; | 754 | enum intr_type_t intr_type; |
@@ -801,6 +805,7 @@ struct lpfc_hba { | |||
801 | unsigned long skipped_hb; | 805 | unsigned long skipped_hb; |
802 | struct timer_list hb_tmofunc; | 806 | struct timer_list hb_tmofunc; |
803 | uint8_t hb_outstanding; | 807 | uint8_t hb_outstanding; |
808 | struct timer_list rrq_tmr; | ||
804 | enum hba_temp_state over_temp_state; | 809 | enum hba_temp_state over_temp_state; |
805 | /* ndlp reference management */ | 810 | /* ndlp reference management */ |
806 | spinlock_t ndlp_lock; | 811 | spinlock_t ndlp_lock; |