diff options
author | Jamie Wellnitz <Jamie.Wellnitz@emulex.com> | 2006-02-28 19:25:15 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.il.steeleye.com> | 2006-02-28 19:52:50 -0500 |
commit | 7bb3b137abf2b7073e683c14cfe062d811d35247 (patch) | |
tree | 3293962805fc790ef90fd5aa28171cb419dd82c4 /drivers/scsi/lpfc/lpfc_hw.h | |
parent | 0228aadd0fb1d8ca90efbe74291f3b5b753c2da2 (diff) |
[SCSI] lpfc 8.1.2: Handling of ELS commands RRQ, RPS, RPL and LIRR correctly
Handling of ELS commands RRQ, RPS, RPL and LIRR correctly
Signed-off-by: Jamie Wellnitz <Jamie.Wellnitz@emulex.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/lpfc/lpfc_hw.h')
-rw-r--r-- | drivers/scsi/lpfc/lpfc_hw.h | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/drivers/scsi/lpfc/lpfc_hw.h b/drivers/scsi/lpfc/lpfc_hw.h index 1ea565e0561f..e613dd07d2ad 100644 --- a/drivers/scsi/lpfc/lpfc_hw.h +++ b/drivers/scsi/lpfc/lpfc_hw.h | |||
@@ -454,10 +454,13 @@ struct serv_parm { /* Structure is in Big Endian format */ | |||
454 | #define ELS_CMD_ADISC 0x52000000 | 454 | #define ELS_CMD_ADISC 0x52000000 |
455 | #define ELS_CMD_FARP 0x54000000 | 455 | #define ELS_CMD_FARP 0x54000000 |
456 | #define ELS_CMD_FARPR 0x55000000 | 456 | #define ELS_CMD_FARPR 0x55000000 |
457 | #define ELS_CMD_RPS 0x56000000 | ||
458 | #define ELS_CMD_RPL 0x57000000 | ||
457 | #define ELS_CMD_FAN 0x60000000 | 459 | #define ELS_CMD_FAN 0x60000000 |
458 | #define ELS_CMD_RSCN 0x61040000 | 460 | #define ELS_CMD_RSCN 0x61040000 |
459 | #define ELS_CMD_SCR 0x62000000 | 461 | #define ELS_CMD_SCR 0x62000000 |
460 | #define ELS_CMD_RNID 0x78000000 | 462 | #define ELS_CMD_RNID 0x78000000 |
463 | #define ELS_CMD_LIRR 0x7A000000 | ||
461 | #else /* __LITTLE_ENDIAN_BITFIELD */ | 464 | #else /* __LITTLE_ENDIAN_BITFIELD */ |
462 | #define ELS_CMD_MASK 0xffff | 465 | #define ELS_CMD_MASK 0xffff |
463 | #define ELS_RSP_MASK 0xff | 466 | #define ELS_RSP_MASK 0xff |
@@ -486,10 +489,13 @@ struct serv_parm { /* Structure is in Big Endian format */ | |||
486 | #define ELS_CMD_ADISC 0x52 | 489 | #define ELS_CMD_ADISC 0x52 |
487 | #define ELS_CMD_FARP 0x54 | 490 | #define ELS_CMD_FARP 0x54 |
488 | #define ELS_CMD_FARPR 0x55 | 491 | #define ELS_CMD_FARPR 0x55 |
492 | #define ELS_CMD_RPS 0x56 | ||
493 | #define ELS_CMD_RPL 0x57 | ||
489 | #define ELS_CMD_FAN 0x60 | 494 | #define ELS_CMD_FAN 0x60 |
490 | #define ELS_CMD_RSCN 0x0461 | 495 | #define ELS_CMD_RSCN 0x0461 |
491 | #define ELS_CMD_SCR 0x62 | 496 | #define ELS_CMD_SCR 0x62 |
492 | #define ELS_CMD_RNID 0x78 | 497 | #define ELS_CMD_RNID 0x78 |
498 | #define ELS_CMD_LIRR 0x7A | ||
493 | #endif | 499 | #endif |
494 | 500 | ||
495 | /* | 501 | /* |
@@ -758,12 +764,40 @@ typedef struct _RNID { /* Structure is in Big Endian format */ | |||
758 | } un; | 764 | } un; |
759 | } RNID; | 765 | } RNID; |
760 | 766 | ||
761 | typedef struct _RRQ { /* Structure is in Big Endian format */ | 767 | typedef struct _RPS { /* Structure is in Big Endian format */ |
762 | uint32_t SID; | 768 | union { |
763 | uint16_t Oxid; | 769 | uint32_t portNum; |
764 | uint16_t Rxid; | 770 | struct lpfc_name portName; |
765 | uint8_t resv[32]; /* optional association hdr */ | 771 | } un; |
766 | } RRQ; | 772 | } RPS; |
773 | |||
774 | typedef struct _RPS_RSP { /* Structure is in Big Endian format */ | ||
775 | uint16_t rsvd1; | ||
776 | uint16_t portStatus; | ||
777 | uint32_t linkFailureCnt; | ||
778 | uint32_t lossSyncCnt; | ||
779 | uint32_t lossSignalCnt; | ||
780 | uint32_t primSeqErrCnt; | ||
781 | uint32_t invalidXmitWord; | ||
782 | uint32_t crcCnt; | ||
783 | } RPS_RSP; | ||
784 | |||
785 | typedef struct _RPL { /* Structure is in Big Endian format */ | ||
786 | uint32_t maxsize; | ||
787 | uint32_t index; | ||
788 | } RPL; | ||
789 | |||
790 | typedef struct _PORT_NUM_BLK { | ||
791 | uint32_t portNum; | ||
792 | uint32_t portID; | ||
793 | struct lpfc_name portName; | ||
794 | } PORT_NUM_BLK; | ||
795 | |||
796 | typedef struct _RPL_RSP { /* Structure is in Big Endian format */ | ||
797 | uint32_t listLen; | ||
798 | uint32_t index; | ||
799 | PORT_NUM_BLK port_num_blk; | ||
800 | } RPL_RSP; | ||
767 | 801 | ||
768 | /* This is used for RSCN command */ | 802 | /* This is used for RSCN command */ |
769 | typedef struct _D_ID { /* Structure is in Big Endian format */ | 803 | typedef struct _D_ID { /* Structure is in Big Endian format */ |
@@ -804,7 +838,6 @@ typedef struct _ELS_PKT { /* Structure is in Big Endian format */ | |||
804 | FARP farp; /* Payload for FARP/ACC */ | 838 | FARP farp; /* Payload for FARP/ACC */ |
805 | FAN fan; /* Payload for FAN */ | 839 | FAN fan; /* Payload for FAN */ |
806 | SCR scr; /* Payload for SCR/ACC */ | 840 | SCR scr; /* Payload for SCR/ACC */ |
807 | RRQ rrq; /* Payload for RRQ */ | ||
808 | RNID rnid; /* Payload for RNID */ | 841 | RNID rnid; /* Payload for RNID */ |
809 | uint8_t pad[128 - 4]; /* Pad out to payload of 128 bytes */ | 842 | uint8_t pad[128 - 4]; /* Pad out to payload of 128 bytes */ |
810 | } un; | 843 | } un; |