Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial
[cascardo/linux.git] / drivers / scsi / lpfc / lpfc_hw.h
index 2cce88e..dd20412 100644 (file)
@@ -1097,6 +1097,18 @@ struct fc_rdp_port_name_desc {
 };
 
 
+struct fc_rdp_fec_info {
+       uint32_t CorrectedBlocks;
+       uint32_t UncorrectableBlocks;
+};
+
+#define RDP_FEC_DESC_TAG  0x00010005
+struct fc_fec_rdp_desc {
+       uint32_t tag;
+       uint32_t length;
+       struct fc_rdp_fec_info info;
+};
+
 struct fc_rdp_link_error_status_payload_info {
        struct fc_link_status link_status; /* 24 bytes */
        uint32_t  port_type;             /* bits 31-30 only */
@@ -1196,14 +1208,15 @@ struct fc_rdp_res_frame {
        struct fc_rdp_link_error_status_desc link_error_desc; /* Word 13-21 */
        struct fc_rdp_port_name_desc diag_port_names_desc;    /* Word 22-27 */
        struct fc_rdp_port_name_desc attached_port_names_desc;/* Word 28-33 */
+       struct fc_fec_rdp_desc fec_desc;              /* FC Word 34 - 37 */
 };
 
 
 #define RDP_DESC_PAYLOAD_SIZE (sizeof(struct fc_rdp_link_service_desc) \
-                       + sizeof(struct fc_rdp_sfp_desc) \
-                       + sizeof(struct fc_rdp_port_speed_desc) \
-                       + sizeof(struct fc_rdp_link_error_status_desc) \
-                       + (sizeof(struct fc_rdp_port_name_desc) * 2))
+                               + sizeof(struct fc_rdp_sfp_desc) \
+                               + sizeof(struct fc_rdp_port_speed_desc) \
+                               + sizeof(struct fc_rdp_link_error_status_desc) \
+                               + (sizeof(struct fc_rdp_port_name_desc) * 2))
 
 
 /******** FDMI ********/
@@ -1233,31 +1246,10 @@ struct lpfc_fdmi_attr_def { /* Defined in TLV format */
 /* Attribute Entry */
 struct lpfc_fdmi_attr_entry {
        union {
-               uint32_t VendorSpecific;
-               uint32_t SupportClass;
-               uint32_t SupportSpeed;
-               uint32_t PortSpeed;
-               uint32_t MaxFrameSize;
-               uint32_t MaxCTPayloadLen;
-               uint32_t PortState;
-               uint32_t PortId;
-               struct lpfc_name NodeName;
-               struct lpfc_name PortName;
-               struct lpfc_name FabricName;
-               uint8_t FC4Types[32];
-               uint8_t Manufacturer[64];
-               uint8_t SerialNumber[64];
-               uint8_t Model[256];
-               uint8_t ModelDescription[256];
-               uint8_t HardwareVersion[256];
-               uint8_t DriverVersion[256];
-               uint8_t OptionROMVersion[256];
-               uint8_t FirmwareVersion[256];
-               uint8_t OsHostName[256];
-               uint8_t NodeSymName[256];
-               uint8_t OsDeviceName[256];
-               uint8_t OsNameVersion[256];
-               uint8_t HostName[256];
+               uint32_t AttrInt;
+               uint8_t  AttrTypes[32];
+               uint8_t  AttrString[256];
+               struct lpfc_name AttrWWN;
        } un;
 };
 
@@ -1327,6 +1319,8 @@ struct lpfc_fdmi_reg_portattr {
 #define  SLI_MGMT_DPRT     0x310       /* De-register Port */
 #define  SLI_MGMT_DPA      0x311       /* De-register Port attributes */
 
+#define LPFC_FDMI_MAX_RETRY     3  /* Max retries for a FDMI command */
+
 /*
  * HBA Attribute Types
  */
@@ -1342,6 +1336,39 @@ struct lpfc_fdmi_reg_portattr {
 #define  RHBA_OS_NAME_VERSION   0xa /* 4 to 256 byte ASCII string */
 #define  RHBA_MAX_CT_PAYLOAD_LEN 0xb /* 32-bit unsigned int */
 #define  RHBA_SYM_NODENAME       0xc /* 4 to 256 byte ASCII string */
+#define  RHBA_VENDOR_INFO        0xd  /* 32-bit unsigned int */
+#define  RHBA_NUM_PORTS          0xe  /* 32-bit unsigned int */
+#define  RHBA_FABRIC_WWNN        0xf  /* 8 byte WWNN */
+#define  RHBA_BIOS_VERSION       0x10 /* 4 to 256 byte ASCII string */
+#define  RHBA_BIOS_STATE         0x11 /* 32-bit unsigned int */
+#define  RHBA_VENDOR_ID          0xe0 /* 8 byte ASCII string */
+
+/* Bit mask for all individual HBA attributes */
+#define LPFC_FDMI_HBA_ATTR_wwnn                        0x00000001
+#define LPFC_FDMI_HBA_ATTR_manufacturer                0x00000002
+#define LPFC_FDMI_HBA_ATTR_sn                  0x00000004
+#define LPFC_FDMI_HBA_ATTR_model               0x00000008
+#define LPFC_FDMI_HBA_ATTR_description         0x00000010
+#define LPFC_FDMI_HBA_ATTR_hdw_ver             0x00000020
+#define LPFC_FDMI_HBA_ATTR_drvr_ver            0x00000040
+#define LPFC_FDMI_HBA_ATTR_rom_ver             0x00000080
+#define LPFC_FDMI_HBA_ATTR_fmw_ver             0x00000100
+#define LPFC_FDMI_HBA_ATTR_os_ver              0x00000200
+#define LPFC_FDMI_HBA_ATTR_ct_len              0x00000400
+#define LPFC_FDMI_HBA_ATTR_symbolic_name       0x00000800
+#define LPFC_FDMI_HBA_ATTR_vendor_info         0x00001000 /* Not used */
+#define LPFC_FDMI_HBA_ATTR_num_ports           0x00002000
+#define LPFC_FDMI_HBA_ATTR_fabric_wwnn         0x00004000
+#define LPFC_FDMI_HBA_ATTR_bios_ver            0x00008000
+#define LPFC_FDMI_HBA_ATTR_bios_state          0x00010000 /* Not used */
+#define LPFC_FDMI_HBA_ATTR_vendor_id           0x00020000
+
+/* Bit mask for FDMI-1 defined HBA attributes */
+#define LPFC_FDMI1_HBA_ATTR                    0x000007ff
+
+/* Bit mask for FDMI-2 defined HBA attributes */
+/* Skip vendor_info and bios_state */
+#define LPFC_FDMI2_HBA_ATTR                    0x0002efff
 
 /*
  * Port Attrubute Types
@@ -1353,15 +1380,65 @@ struct lpfc_fdmi_reg_portattr {
 #define  RPRT_OS_DEVICE_NAME          0x5 /* 4 to 256 byte ASCII string */
 #define  RPRT_HOST_NAME               0x6 /* 4 to 256 byte ASCII string */
 #define  RPRT_NODENAME                0x7 /* 8 byte WWNN */
-#define  RPRT_PORTNAME                0x8 /* 8 byte WWNN */
+#define  RPRT_PORTNAME                0x8 /* 8 byte WWPN */
 #define  RPRT_SYM_PORTNAME            0x9 /* 4 to 256 byte ASCII string */
 #define  RPRT_PORT_TYPE               0xa /* 32-bit unsigned int */
 #define  RPRT_SUPPORTED_CLASS         0xb /* 32-bit unsigned int */
-#define  RPRT_FABRICNAME              0xc /* 8 byte Fabric WWNN */
+#define  RPRT_FABRICNAME              0xc /* 8 byte Fabric WWPN */
 #define  RPRT_ACTIVE_FC4_TYPES        0xd /* 32 byte binary array */
 #define  RPRT_PORT_STATE              0x101 /* 32-bit unsigned int */
 #define  RPRT_DISC_PORT               0x102 /* 32-bit unsigned int */
 #define  RPRT_PORT_ID                 0x103 /* 32-bit unsigned int */
+#define  RPRT_SMART_SERVICE           0xf100 /* 4 to 256 byte ASCII string */
+#define  RPRT_SMART_GUID              0xf101 /* 8 byte WWNN + 8 byte WWPN */
+#define  RPRT_SMART_VERSION           0xf102 /* 4 to 256 byte ASCII string */
+#define  RPRT_SMART_MODEL             0xf103 /* 4 to 256 byte ASCII string */
+#define  RPRT_SMART_PORT_INFO         0xf104 /* 32-bit unsigned int */
+#define  RPRT_SMART_QOS               0xf105 /* 32-bit unsigned int */
+#define  RPRT_SMART_SECURITY          0xf106 /* 32-bit unsigned int */
+
+/* Bit mask for all individual PORT attributes */
+#define LPFC_FDMI_PORT_ATTR_fc4type            0x00000001
+#define LPFC_FDMI_PORT_ATTR_support_speed      0x00000002
+#define LPFC_FDMI_PORT_ATTR_speed              0x00000004
+#define LPFC_FDMI_PORT_ATTR_max_frame          0x00000008
+#define LPFC_FDMI_PORT_ATTR_os_devname         0x00000010
+#define LPFC_FDMI_PORT_ATTR_host_name          0x00000020
+#define LPFC_FDMI_PORT_ATTR_wwnn               0x00000040
+#define LPFC_FDMI_PORT_ATTR_wwpn               0x00000080
+#define LPFC_FDMI_PORT_ATTR_symbolic_name      0x00000100
+#define LPFC_FDMI_PORT_ATTR_port_type          0x00000200
+#define LPFC_FDMI_PORT_ATTR_class              0x00000400
+#define LPFC_FDMI_PORT_ATTR_fabric_wwpn                0x00000800
+#define LPFC_FDMI_PORT_ATTR_port_state         0x00001000
+#define LPFC_FDMI_PORT_ATTR_active_fc4type     0x00002000
+#define LPFC_FDMI_PORT_ATTR_num_disc           0x00004000
+#define LPFC_FDMI_PORT_ATTR_nportid            0x00008000
+#define LPFC_FDMI_SMART_ATTR_service           0x00010000 /* Vendor specific */
+#define LPFC_FDMI_SMART_ATTR_guid              0x00020000 /* Vendor specific */
+#define LPFC_FDMI_SMART_ATTR_version           0x00040000 /* Vendor specific */
+#define LPFC_FDMI_SMART_ATTR_model             0x00080000 /* Vendor specific */
+#define LPFC_FDMI_SMART_ATTR_port_info         0x00100000 /* Vendor specific */
+#define LPFC_FDMI_SMART_ATTR_qos               0x00200000 /* Vendor specific */
+#define LPFC_FDMI_SMART_ATTR_security          0x00400000 /* Vendor specific */
+
+/* Bit mask for FDMI-1 defined PORT attributes */
+#define LPFC_FDMI1_PORT_ATTR                   0x0000003f
+
+/* Bit mask for FDMI-2 defined PORT attributes */
+#define LPFC_FDMI2_PORT_ATTR                   0x0000ffff
+
+/* Bit mask for Smart SAN defined PORT attributes */
+#define LPFC_FDMI2_SMART_ATTR                  0x007fffff
+
+/* Defines for PORT port state attribute */
+#define LPFC_FDMI_PORTSTATE_UNKNOWN    1
+#define LPFC_FDMI_PORTSTATE_ONLINE     2
+
+/* Defines for PORT port type attribute */
+#define LPFC_FDMI_PORTTYPE_UNKNOWN     0
+#define LPFC_FDMI_PORTTYPE_NPORT       1
+#define LPFC_FDMI_PORTTYPE_NLPORT      2
 
 /*
  *  Begin HBA configuration parameters.
@@ -2498,10 +2575,38 @@ typedef struct {
 /* Structure for MB Command READ_LINK_STAT (18) */
 
 typedef struct {
-       uint32_t rsvd1;
+       uint32_t word0;
+
+#define lpfc_read_link_stat_rec_SHIFT   0
+#define lpfc_read_link_stat_rec_MASK   0x1
+#define lpfc_read_link_stat_rec_WORD   word0
+
+#define lpfc_read_link_stat_gec_SHIFT  1
+#define lpfc_read_link_stat_gec_MASK   0x1
+#define lpfc_read_link_stat_gec_WORD   word0
+
+#define lpfc_read_link_stat_w02oftow23of_SHIFT 2
+#define lpfc_read_link_stat_w02oftow23of_MASK   0x3FFFFF
+#define lpfc_read_link_stat_w02oftow23of_WORD   word0
+
+#define lpfc_read_link_stat_rsvd_SHIFT 24
+#define lpfc_read_link_stat_rsvd_MASK   0x1F
+#define lpfc_read_link_stat_rsvd_WORD   word0
+
+#define lpfc_read_link_stat_gec2_SHIFT  29
+#define lpfc_read_link_stat_gec2_MASK   0x1
+#define lpfc_read_link_stat_gec2_WORD   word0
+
+#define lpfc_read_link_stat_clrc_SHIFT  30
+#define lpfc_read_link_stat_clrc_MASK   0x1
+#define lpfc_read_link_stat_clrc_WORD   word0
+
+#define lpfc_read_link_stat_clof_SHIFT  31
+#define lpfc_read_link_stat_clof_MASK   0x1
+#define lpfc_read_link_stat_clof_WORD   word0
+
        uint32_t linkFailureCnt;
        uint32_t lossSyncCnt;
-
        uint32_t lossSignalCnt;
        uint32_t primSeqErrCnt;
        uint32_t invalidXmitWord;
@@ -2509,6 +2614,19 @@ typedef struct {
        uint32_t primSeqTimeout;
        uint32_t elasticOverrun;
        uint32_t arbTimeout;
+       uint32_t advRecBufCredit;
+       uint32_t curRecBufCredit;
+       uint32_t advTransBufCredit;
+       uint32_t curTransBufCredit;
+       uint32_t recEofCount;
+       uint32_t recEofdtiCount;
+       uint32_t recEofniCount;
+       uint32_t recSofcount;
+       uint32_t rsvd1;
+       uint32_t rsvd2;
+       uint32_t recDrpXriCount;
+       uint32_t fecCorrBlkCount;
+       uint32_t fecUncorrBlkCount;
 } READ_LNK_VAR;
 
 /* Structure for MB Command REG_LOGIN (19) */