diff options
author | James Smart <james.smart@emulex.com> | 2011-05-24 11:44:12 -0400 |
---|---|---|
committer | James Bottomley <jbottomley@parallels.com> | 2011-05-26 23:49:38 -0400 |
commit | 6d368e532168cb621731b3936945cd910cb25bd0 (patch) | |
tree | 6d49d2dea91c6637ab4cf38b61ec3a0eecc0bdfb /drivers/scsi/lpfc/lpfc_sli4.h | |
parent | 52d5244096017bbd11164479116baceaede342b0 (diff) |
[SCSI] lpfc 8.3.24: Add resource extent support
This patch adds support for hardware that returns resource ids via
extents rather than contiguous ranges.
[jejb: checkpatch.pl fixes]
Signed-off-by: Alex Iannicelli <alex.iannicelli@emulex.com>
Signed-off-by: James Smart <james.smart@emulex.com>
Signed-off-by: James Bottomley <jbottomley@parallels.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_sli4.h')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_sli4.h | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/drivers/scsi/lpfc/lpfc_sli4.h b/drivers/scsi/lpfc/lpfc_sli4.h index 03d25a9d3bf6..4b1703554a26 100644 --- a/drivers/scsi/lpfc/lpfc_sli4.h +++ b/drivers/scsi/lpfc/lpfc_sli4.h | |||
@@ -310,7 +310,6 @@ struct lpfc_max_cfg_param { | |||
310 | uint16_t vfi_base; | 310 | uint16_t vfi_base; |
311 | uint16_t vfi_used; | 311 | uint16_t vfi_used; |
312 | uint16_t max_fcfi; | 312 | uint16_t max_fcfi; |
313 | uint16_t fcfi_base; | ||
314 | uint16_t fcfi_used; | 313 | uint16_t fcfi_used; |
315 | uint16_t max_eq; | 314 | uint16_t max_eq; |
316 | uint16_t max_rq; | 315 | uint16_t max_rq; |
@@ -449,10 +448,13 @@ struct lpfc_sli4_hba { | |||
449 | uint32_t intr_enable; | 448 | uint32_t intr_enable; |
450 | struct lpfc_bmbx bmbx; | 449 | struct lpfc_bmbx bmbx; |
451 | struct lpfc_max_cfg_param max_cfg_param; | 450 | struct lpfc_max_cfg_param max_cfg_param; |
451 | uint16_t extents_in_use; /* must allocate resource extents. */ | ||
452 | uint16_t rpi_hdrs_in_use; /* must post rpi hdrs if set. */ | ||
452 | uint16_t next_xri; /* last_xri - max_cfg_param.xri_base = used */ | 453 | uint16_t next_xri; /* last_xri - max_cfg_param.xri_base = used */ |
453 | uint16_t next_rpi; | 454 | uint16_t next_rpi; |
454 | uint16_t scsi_xri_max; | 455 | uint16_t scsi_xri_max; |
455 | uint16_t scsi_xri_cnt; | 456 | uint16_t scsi_xri_cnt; |
457 | uint16_t scsi_xri_start; | ||
456 | struct list_head lpfc_free_sgl_list; | 458 | struct list_head lpfc_free_sgl_list; |
457 | struct list_head lpfc_sgl_list; | 459 | struct list_head lpfc_sgl_list; |
458 | struct lpfc_sglq **lpfc_els_sgl_array; | 460 | struct lpfc_sglq **lpfc_els_sgl_array; |
@@ -463,7 +465,17 @@ struct lpfc_sli4_hba { | |||
463 | struct lpfc_sglq **lpfc_sglq_active_list; | 465 | struct lpfc_sglq **lpfc_sglq_active_list; |
464 | struct list_head lpfc_rpi_hdr_list; | 466 | struct list_head lpfc_rpi_hdr_list; |
465 | unsigned long *rpi_bmask; | 467 | unsigned long *rpi_bmask; |
468 | uint16_t *rpi_ids; | ||
466 | uint16_t rpi_count; | 469 | uint16_t rpi_count; |
470 | struct list_head lpfc_rpi_blk_list; | ||
471 | unsigned long *xri_bmask; | ||
472 | uint16_t *xri_ids; | ||
473 | uint16_t xri_count; | ||
474 | struct list_head lpfc_xri_blk_list; | ||
475 | unsigned long *vfi_bmask; | ||
476 | uint16_t *vfi_ids; | ||
477 | uint16_t vfi_count; | ||
478 | struct list_head lpfc_vfi_blk_list; | ||
467 | struct lpfc_sli4_flags sli4_flags; | 479 | struct lpfc_sli4_flags sli4_flags; |
468 | struct list_head sp_queue_event; | 480 | struct list_head sp_queue_event; |
469 | struct list_head sp_cqe_event_pool; | 481 | struct list_head sp_cqe_event_pool; |
@@ -496,6 +508,7 @@ struct lpfc_sglq { | |||
496 | enum lpfc_sgl_state state; | 508 | enum lpfc_sgl_state state; |
497 | struct lpfc_nodelist *ndlp; /* ndlp associated with IO */ | 509 | struct lpfc_nodelist *ndlp; /* ndlp associated with IO */ |
498 | uint16_t iotag; /* pre-assigned IO tag */ | 510 | uint16_t iotag; /* pre-assigned IO tag */ |
511 | uint16_t sli4_lxritag; /* logical pre-assigned xri. */ | ||
499 | uint16_t sli4_xritag; /* pre-assigned XRI, (OXID) tag. */ | 512 | uint16_t sli4_xritag; /* pre-assigned XRI, (OXID) tag. */ |
500 | struct sli4_sge *sgl; /* pre-assigned SGL */ | 513 | struct sli4_sge *sgl; /* pre-assigned SGL */ |
501 | void *virt; /* virtual address. */ | 514 | void *virt; /* virtual address. */ |
@@ -510,6 +523,13 @@ struct lpfc_rpi_hdr { | |||
510 | uint32_t start_rpi; | 523 | uint32_t start_rpi; |
511 | }; | 524 | }; |
512 | 525 | ||
526 | struct lpfc_rsrc_blks { | ||
527 | struct list_head list; | ||
528 | uint16_t rsrc_start; | ||
529 | uint16_t rsrc_size; | ||
530 | uint16_t rsrc_used; | ||
531 | }; | ||
532 | |||
513 | /* | 533 | /* |
514 | * SLI4 specific function prototypes | 534 | * SLI4 specific function prototypes |
515 | */ | 535 | */ |
@@ -549,8 +569,11 @@ int lpfc_sli4_post_sgl(struct lpfc_hba *, dma_addr_t, dma_addr_t, uint16_t); | |||
549 | int lpfc_sli4_repost_scsi_sgl_list(struct lpfc_hba *); | 569 | int lpfc_sli4_repost_scsi_sgl_list(struct lpfc_hba *); |
550 | uint16_t lpfc_sli4_next_xritag(struct lpfc_hba *); | 570 | uint16_t lpfc_sli4_next_xritag(struct lpfc_hba *); |
551 | int lpfc_sli4_post_async_mbox(struct lpfc_hba *); | 571 | int lpfc_sli4_post_async_mbox(struct lpfc_hba *); |
552 | int lpfc_sli4_post_sgl_list(struct lpfc_hba *phba); | 572 | int lpfc_sli4_post_els_sgl_list(struct lpfc_hba *phba); |
573 | int lpfc_sli4_post_els_sgl_list_ext(struct lpfc_hba *phba); | ||
553 | int lpfc_sli4_post_scsi_sgl_block(struct lpfc_hba *, struct list_head *, int); | 574 | int lpfc_sli4_post_scsi_sgl_block(struct lpfc_hba *, struct list_head *, int); |
575 | int lpfc_sli4_post_scsi_sgl_blk_ext(struct lpfc_hba *, struct list_head *, | ||
576 | int); | ||
554 | struct lpfc_cq_event *__lpfc_sli4_cq_event_alloc(struct lpfc_hba *); | 577 | struct lpfc_cq_event *__lpfc_sli4_cq_event_alloc(struct lpfc_hba *); |
555 | struct lpfc_cq_event *lpfc_sli4_cq_event_alloc(struct lpfc_hba *); | 578 | struct lpfc_cq_event *lpfc_sli4_cq_event_alloc(struct lpfc_hba *); |
556 | void __lpfc_sli4_cq_event_release(struct lpfc_hba *, struct lpfc_cq_event *); | 579 | void __lpfc_sli4_cq_event_release(struct lpfc_hba *, struct lpfc_cq_event *); |