]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/scsi/qla2xxx/qla_fw.h
Merge branch 'x86-boot-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git...
[karo-tx-linux.git] / drivers / scsi / qla2xxx / qla_fw.h
index 8a2368b32dece20d048ca2e90115306642f7f755..1f808928763b4e0348f2e705bba13b7e4162a852 100644 (file)
@@ -72,6 +72,37 @@ struct port_database_24xx {
        uint8_t reserved_3[24];
 };
 
+/*
+ * MB 75h returns a list of DB entries similar to port_database_24xx(64B).
+ * However, in this case it returns 1st 40 bytes.
+ */
+struct get_name_list_extended {
+       __le16 flags;
+       u8 current_login_state;
+       u8 last_login_state;
+       u8 hard_address[3];
+       u8 reserved_1;
+       u8 port_id[3];
+       u8 sequence_id;
+       __le16 port_timer;
+       __le16 nport_handle;                    /* N_PORT handle. */
+       __le16 receive_data_size;
+       __le16 reserved_2;
+
+       /* PRLI SVC Param are Big endian */
+       u8 prli_svc_param_word_0[2]; /* Bits 15-0 of word 0 */
+       u8 prli_svc_param_word_3[2]; /* Bits 15-0 of word 3 */
+       u8 port_name[WWN_SIZE];
+       u8 node_name[WWN_SIZE];
+};
+
+/* MB 75h: This is the short version of the database */
+struct get_name_list {
+       u8 port_node_name[WWN_SIZE]; /* B7 most sig, B0 least sig */
+       __le16 nport_handle;
+       u8 reserved;
+};
+
 struct vp_database_24xx {
        uint16_t vp_status;
        uint8_t  options;
@@ -1270,27 +1301,76 @@ struct vp_config_entry_24xx {
 };
 
 #define VP_RPT_ID_IOCB_TYPE    0x32    /* Report ID Acquisition entry. */
+enum VP_STATUS {
+       VP_STAT_COMPL,
+       VP_STAT_FAIL,
+       VP_STAT_ID_CHG,
+       VP_STAT_SNS_TO,                         /* timeout */
+       VP_STAT_SNS_RJT,
+       VP_STAT_SCR_TO,                         /* timeout */
+       VP_STAT_SCR_RJT,
+};
+
+enum VP_FLAGS {
+       VP_FLAGS_CON_FLOOP = 1,
+       VP_FLAGS_CON_P2P = 2,
+       VP_FLAGS_CON_FABRIC = 3,
+       VP_FLAGS_NAME_VALID = BIT_5,
+};
+
 struct vp_rpt_id_entry_24xx {
        uint8_t entry_type;             /* Entry type. */
        uint8_t entry_count;            /* Entry count. */
        uint8_t sys_define;             /* System defined. */
        uint8_t entry_status;           /* Entry Status. */
-
-       uint32_t handle;                /* System handle. */
-
-       uint16_t vp_count;              /* Format 0 -- | VP setup | VP acq |. */
-                                       /* Format 1 -- | VP count |. */
-       uint16_t vp_idx;                /* Format 0 -- Reserved. */
-                                       /* Format 1 -- VP status and index. */
+       uint32_t resv1;
+       uint8_t vp_acquired;
+       uint8_t vp_setup;
+       uint8_t vp_idx;         /* Format 0=reserved */
+       uint8_t vp_status;      /* Format 0=reserved */
 
        uint8_t port_id[3];
        uint8_t format;
-
-       uint8_t vp_idx_map[16];
-
-       uint8_t reserved_4[24];
-       uint16_t bbcr;
-       uint8_t reserved_5[6];
+       union {
+               struct {
+                       /* format 0 loop */
+                       uint8_t vp_idx_map[16];
+                       uint8_t reserved_4[32];
+               } f0;
+               struct {
+                       /* format 1 fabric */
+                       uint8_t vpstat1_subcode; /* vp_status=1 subcode */
+                       uint8_t flags;
+                       uint16_t fip_flags;
+                       uint8_t rsv2[12];
+
+                       uint8_t ls_rjt_vendor;
+                       uint8_t ls_rjt_explanation;
+                       uint8_t ls_rjt_reason;
+                       uint8_t rsv3[5];
+
+                       uint8_t port_name[8];
+                       uint8_t node_name[8];
+                       uint16_t bbcr;
+                       uint8_t reserved_5[6];
+               } f1;
+               struct { /* format 2: N2N direct connect */
+                   uint8_t vpstat1_subcode;
+                   uint8_t flags;
+                   uint16_t rsv6;
+                   uint8_t rsv2[12];
+
+                   uint8_t ls_rjt_vendor;
+                   uint8_t ls_rjt_explanation;
+                   uint8_t ls_rjt_reason;
+                   uint8_t rsv3[5];
+
+                   uint8_t port_name[8];
+                   uint8_t node_name[8];
+                   uint32_t remote_nport_id;
+                   uint32_t reserved_5;
+               } f2;
+       } u;
 };
 
 #define VF_EVFP_IOCB_TYPE       0x26    /* Exchange Virtual Fabric Parameters entry. */