aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/scsi/ipr.h
diff options
context:
space:
mode:
authorbrking@us.ibm.com <brking@us.ibm.com>2005-11-01 18:02:15 -0500
committerJames Bottomley <jejb@mulgrave.(none)>2005-11-06 14:09:22 -0500
commitee0f05b863df0a623792eaa46703019c100be2de (patch)
tree07bb5f102447be0b4ef9babae1b5569021640155 /drivers/scsi/ipr.h
parentc8f7489251269b9c4d516c3075b902d2b067b1b3 (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.h67
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
257struct ipr_ext_vpd {
258 struct ipr_vpd vpd;
259 __be32 wwid[2];
260}__attribute__((packed));
261
257struct ipr_std_inq_data { 262struct 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
561struct 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
556struct ipr_hostrcb_array_data_entry { 571struct 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
577struct 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
562struct ipr_hostrcb_type_ff_error { 584struct 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
566struct ipr_hostrcb_type_01_error { 588struct 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
603struct 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
581struct ipr_hostrcb_type_03_error { 611struct 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
620struct 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
590struct ipr_hostrcb_type_04_error { 628struct 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
643struct 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
605struct ipr_hostrcb_type_07_error { 655struct 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
661struct 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
611struct ipr_hostrcb_error { 667struct 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];