diff options
author | brking@us.ibm.com <brking@us.ibm.com> | 2005-11-01 18:02:15 -0500 |
---|---|---|
committer | James Bottomley <jejb@mulgrave.(none)> | 2005-11-06 14:09:22 -0500 |
commit | ee0f05b863df0a623792eaa46703019c100be2de (patch) | |
tree | 07bb5f102447be0b4ef9babae1b5569021640155 /drivers/scsi/ipr.h | |
parent | c8f7489251269b9c4d516c3075b902d2b067b1b3 (diff) |
[SCSI] ipr: New adapter error types
Handle some new types of ipr errors that can be returned by the adapter.
Signed-off-by: Brian King <brking@us.ibm.com>
Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
Diffstat (limited to 'drivers/scsi/ipr.h')
-rw-r--r-- | drivers/scsi/ipr.h | 67 |
1 files changed, 66 insertions, 1 deletions
diff --git a/drivers/scsi/ipr.h b/drivers/scsi/ipr.h index b8ae30669127..f7fa8cd2ecad 100644 --- a/drivers/scsi/ipr.h +++ b/drivers/scsi/ipr.h | |||
@@ -254,6 +254,11 @@ struct ipr_vpd { | |||
254 | u8 sn[IPR_SERIAL_NUM_LEN]; | 254 | u8 sn[IPR_SERIAL_NUM_LEN]; |
255 | }__attribute__((packed)); | 255 | }__attribute__((packed)); |
256 | 256 | ||
257 | struct ipr_ext_vpd { | ||
258 | struct ipr_vpd vpd; | ||
259 | __be32 wwid[2]; | ||
260 | }__attribute__((packed)); | ||
261 | |||
257 | struct ipr_std_inq_data { | 262 | struct ipr_std_inq_data { |
258 | u8 peri_qual_dev_type; | 263 | u8 peri_qual_dev_type; |
259 | #define IPR_STD_INQ_PERI_QUAL(peri) ((peri) >> 5) | 264 | #define IPR_STD_INQ_PERI_QUAL(peri) ((peri) >> 5) |
@@ -553,14 +558,31 @@ struct ipr_hostrcb_device_data_entry { | |||
553 | __be32 ioa_data[5]; | 558 | __be32 ioa_data[5]; |
554 | }__attribute__((packed, aligned (4))); | 559 | }__attribute__((packed, aligned (4))); |
555 | 560 | ||
561 | struct ipr_hostrcb_device_data_entry_enhanced { | ||
562 | struct ipr_ext_vpd vpd; | ||
563 | u8 ccin[4]; | ||
564 | struct ipr_res_addr dev_res_addr; | ||
565 | struct ipr_ext_vpd new_vpd; | ||
566 | u8 new_ccin[4]; | ||
567 | struct ipr_ext_vpd ioa_last_with_dev_vpd; | ||
568 | struct ipr_ext_vpd cfc_last_with_dev_vpd; | ||
569 | }__attribute__((packed, aligned (4))); | ||
570 | |||
556 | struct ipr_hostrcb_array_data_entry { | 571 | struct ipr_hostrcb_array_data_entry { |
557 | struct ipr_vpd vpd; | 572 | struct ipr_vpd vpd; |
558 | struct ipr_res_addr expected_dev_res_addr; | 573 | struct ipr_res_addr expected_dev_res_addr; |
559 | struct ipr_res_addr dev_res_addr; | 574 | struct ipr_res_addr dev_res_addr; |
560 | }__attribute__((packed, aligned (4))); | 575 | }__attribute__((packed, aligned (4))); |
561 | 576 | ||
577 | struct ipr_hostrcb_array_data_entry_enhanced { | ||
578 | struct ipr_ext_vpd vpd; | ||
579 | u8 ccin[4]; | ||
580 | struct ipr_res_addr expected_dev_res_addr; | ||
581 | struct ipr_res_addr dev_res_addr; | ||
582 | }__attribute__((packed, aligned (4))); | ||
583 | |||
562 | struct ipr_hostrcb_type_ff_error { | 584 | struct ipr_hostrcb_type_ff_error { |
563 | __be32 ioa_data[246]; | 585 | __be32 ioa_data[502]; |
564 | }__attribute__((packed, aligned (4))); | 586 | }__attribute__((packed, aligned (4))); |
565 | 587 | ||
566 | struct ipr_hostrcb_type_01_error { | 588 | struct ipr_hostrcb_type_01_error { |
@@ -578,6 +600,14 @@ struct ipr_hostrcb_type_02_error { | |||
578 | __be32 ioa_data[3]; | 600 | __be32 ioa_data[3]; |
579 | }__attribute__((packed, aligned (4))); | 601 | }__attribute__((packed, aligned (4))); |
580 | 602 | ||
603 | struct ipr_hostrcb_type_12_error { | ||
604 | struct ipr_ext_vpd ioa_vpd; | ||
605 | struct ipr_ext_vpd cfc_vpd; | ||
606 | struct ipr_ext_vpd ioa_last_attached_to_cfc_vpd; | ||
607 | struct ipr_ext_vpd cfc_last_attached_to_ioa_vpd; | ||
608 | __be32 ioa_data[3]; | ||
609 | }__attribute__((packed, aligned (4))); | ||
610 | |||
581 | struct ipr_hostrcb_type_03_error { | 611 | struct ipr_hostrcb_type_03_error { |
582 | struct ipr_vpd ioa_vpd; | 612 | struct ipr_vpd ioa_vpd; |
583 | struct ipr_vpd cfc_vpd; | 613 | struct ipr_vpd cfc_vpd; |
@@ -587,6 +617,14 @@ struct ipr_hostrcb_type_03_error { | |||
587 | struct ipr_hostrcb_device_data_entry dev[3]; | 617 | struct ipr_hostrcb_device_data_entry dev[3]; |
588 | }__attribute__((packed, aligned (4))); | 618 | }__attribute__((packed, aligned (4))); |
589 | 619 | ||
620 | struct ipr_hostrcb_type_13_error { | ||
621 | struct ipr_ext_vpd ioa_vpd; | ||
622 | struct ipr_ext_vpd cfc_vpd; | ||
623 | __be32 errors_detected; | ||
624 | __be32 errors_logged; | ||
625 | struct ipr_hostrcb_device_data_entry_enhanced dev[3]; | ||
626 | }__attribute__((packed, aligned (4))); | ||
627 | |||
590 | struct ipr_hostrcb_type_04_error { | 628 | struct ipr_hostrcb_type_04_error { |
591 | struct ipr_vpd ioa_vpd; | 629 | struct ipr_vpd ioa_vpd; |
592 | struct ipr_vpd cfc_vpd; | 630 | struct ipr_vpd cfc_vpd; |
@@ -602,12 +640,30 @@ struct ipr_hostrcb_type_04_error { | |||
602 | u8 protection_level[8]; | 640 | u8 protection_level[8]; |
603 | }__attribute__((packed, aligned (4))); | 641 | }__attribute__((packed, aligned (4))); |
604 | 642 | ||
643 | struct ipr_hostrcb_type_14_error { | ||
644 | struct ipr_ext_vpd ioa_vpd; | ||
645 | struct ipr_ext_vpd cfc_vpd; | ||
646 | __be32 exposed_mode_adn; | ||
647 | __be32 array_id; | ||
648 | struct ipr_res_addr last_func_vset_res_addr; | ||
649 | u8 vset_serial_num[IPR_SERIAL_NUM_LEN]; | ||
650 | u8 protection_level[8]; | ||
651 | __be32 num_entries; | ||
652 | struct ipr_hostrcb_array_data_entry_enhanced array_member[18]; | ||
653 | }__attribute__((packed, aligned (4))); | ||
654 | |||
605 | struct ipr_hostrcb_type_07_error { | 655 | struct ipr_hostrcb_type_07_error { |
606 | u8 failure_reason[64]; | 656 | u8 failure_reason[64]; |
607 | struct ipr_vpd vpd; | 657 | struct ipr_vpd vpd; |
608 | u32 data[222]; | 658 | u32 data[222]; |
609 | }__attribute__((packed, aligned (4))); | 659 | }__attribute__((packed, aligned (4))); |
610 | 660 | ||
661 | struct ipr_hostrcb_type_17_error { | ||
662 | u8 failure_reason[64]; | ||
663 | struct ipr_ext_vpd vpd; | ||
664 | u32 data[476]; | ||
665 | }__attribute__((packed, aligned (4))); | ||
666 | |||
611 | struct ipr_hostrcb_error { | 667 | struct ipr_hostrcb_error { |
612 | __be32 failing_dev_ioasc; | 668 | __be32 failing_dev_ioasc; |
613 | struct ipr_res_addr failing_dev_res_addr; | 669 | struct ipr_res_addr failing_dev_res_addr; |
@@ -620,6 +676,10 @@ struct ipr_hostrcb_error { | |||
620 | struct ipr_hostrcb_type_03_error type_03_error; | 676 | struct ipr_hostrcb_type_03_error type_03_error; |
621 | struct ipr_hostrcb_type_04_error type_04_error; | 677 | struct ipr_hostrcb_type_04_error type_04_error; |
622 | struct ipr_hostrcb_type_07_error type_07_error; | 678 | struct ipr_hostrcb_type_07_error type_07_error; |
679 | struct ipr_hostrcb_type_12_error type_12_error; | ||
680 | struct ipr_hostrcb_type_13_error type_13_error; | ||
681 | struct ipr_hostrcb_type_14_error type_14_error; | ||
682 | struct ipr_hostrcb_type_17_error type_17_error; | ||
623 | } u; | 683 | } u; |
624 | }__attribute__((packed, aligned (4))); | 684 | }__attribute__((packed, aligned (4))); |
625 | 685 | ||
@@ -654,6 +714,11 @@ struct ipr_hcam { | |||
654 | #define IPR_HOST_RCB_OVERLAY_ID_4 0x04 | 714 | #define IPR_HOST_RCB_OVERLAY_ID_4 0x04 |
655 | #define IPR_HOST_RCB_OVERLAY_ID_6 0x06 | 715 | #define IPR_HOST_RCB_OVERLAY_ID_6 0x06 |
656 | #define IPR_HOST_RCB_OVERLAY_ID_7 0x07 | 716 | #define IPR_HOST_RCB_OVERLAY_ID_7 0x07 |
717 | #define IPR_HOST_RCB_OVERLAY_ID_12 0x12 | ||
718 | #define IPR_HOST_RCB_OVERLAY_ID_13 0x13 | ||
719 | #define IPR_HOST_RCB_OVERLAY_ID_14 0x14 | ||
720 | #define IPR_HOST_RCB_OVERLAY_ID_16 0x16 | ||
721 | #define IPR_HOST_RCB_OVERLAY_ID_17 0x17 | ||
657 | #define IPR_HOST_RCB_OVERLAY_ID_DEFAULT 0xFF | 722 | #define IPR_HOST_RCB_OVERLAY_ID_DEFAULT 0xFF |
658 | 723 | ||
659 | u8 reserved1[3]; | 724 | u8 reserved1[3]; |