Print this page
MFV: illumos-omnios@aea0472ecb9ee91fa70556d6f6a941c10c989f1d
Add support for Emulex Corporation Lancer Gen6: LPe32000 FC Host Adapter
Author: Andy Fiddaman <omnios@citrus-it.co.uk>
NEX-8705 Drivers for ATTO Celerity FC-162E Gen 5 and Celerity FC-162P Gen 6 16GB FC cards support
Reviewed by: Dan Fields <dan.fields@nexenta.com>
Reviewed by: Rick McNeal <rick.mcneal@nexenta.com>
NEX-1878 update emlxs from source provided by Emulex

@@ -20,10 +20,11 @@
  */
 
 /*
  * Copyright (c) 2004-2012 Emulex. All rights reserved.
  * Use is subject to license terms.
+ * Copyright 2018 OmniOS Community Edition (OmniOSce) Association.
  */
 
 #ifndef _EMLXS_ADAPTERS_H
 #define _EMLXS_ADAPTERS_H
 

@@ -98,19 +99,35 @@
 
         /* BE3 (43) */
         OCe11101,       /* Generic Single Channel */
         OCe11102,       /* Generic Dual Channel */
 
-        /* Lancer FC (45) */
+        /* Lancer FC Gen5 HBAs (45) */
         LPe16000,       /* Generic Single Channel FC */
         LPe1600X,       /* Generic Multi Channel FC */
         LPem16002_FC_O, /* Oracle branded */
         LPe16002_FC_O,  /* Oracle branded */
         LPe16002_FC_SP1, /* Oracle excluded - Spare */
         LPe16002_FC_SP2, /* Oracle excluded - Spare */
 
-        /* Lancer FCoE (51) */
+        /* Lancer FC Gen6 HBAs */
+        LPe31000_M6_L,  /* Single port 16Gb, Lenovo-branded */
+        LPe32000,       /* Generic Single Channel FC */
+        LPe3200X,       /* Generic Multi Channel FC */
+
+        /* Celerity 16 FC Gen5 */
+        CelerityFC161E,
+        CelerityFC162E,
+        CelerityFC164E,
+
+        /* Celerity 16 FC Gen6 */
+        CelerityFC162P,
+        CelerityFC164P,
+        CelerityFC321E,
+        CelerityFC322E,
+
+        /* Lancer FCoE */
         OCe15100,       /* Generic Single Channel FCOE */
         OCe1510X,       /* Generic Multi Channel FCOE */
         LPem16002_FE_O, /* Oracle branded */
         LPe16002_FE_O,  /* Oracle branded */
         LPe16002_FE_SP1, /* Oracle excluded - Spare */

@@ -121,18 +138,20 @@
 
 } emlxs_adapter_t;
 
 
 #define PCI_VENDOR_ID_EMULEX            0x10df
+#define PCI_VENDOR_ID_ATTO              0x117c
 
 /* Subsystem Vendor IDs */
 #define PCI_SSVID_EMULEX                0x10df
 #define PCI_SSVID_HP                    0x103c
 #define PCI_SSVID_IBM                   0x1014
 #define PCI_SSVID_FUJITSU               0x1734
 #define PCI_SSVID_CISCO                 0x1137
 #define PCI_SSVID_HITACHI               0x1054
+#define PCI_SSVID_ATTO                  0x117c
 
 
 /* PCI_DEVICE_IDs & PCI_SSDIDs */
 /* F800: Dragonfly */
 #define PCI_DEVICE_ID_DRAGONFLY         0xf800

@@ -254,30 +273,50 @@
 
 /* 0724: BE4 (Skyhawk) */
 #define PCI_DEVICE_ID_BE4               0x0724
 #define PCI_SSDID_OCe12104              0xEF81
 
-/* E200: Lancer FC */
+/* E200: Lancer FC Gen5 */
 #define PCI_DEVICE_ID_LANCER_FC         0xE200
 #define PCI_SSDID_LPe16000              0xE200
 #define PCI_SSDID_LPe1600X              0xE200 /* Identified by cache_line */
 #define PCI_SSDID_LPem16002_FC_O        0xE20C
 #define PCI_SSDID_LPe16002_FC_O         0xE20E
 #define PCI_SSDID_LPe16002_FC_SP1       0xE217
 #define PCI_SSDID_LPe16002_FC_SP2       0xE219
 
+/* E300: Lancer FC Gen6 */
+#define PCI_DEVICE_ID_LANCER_G6_FC      0xE300
+#define PCI_SSDID_LPe31000_M6_L         0xE333
+#define PCI_SSDID_LPe32000              0xE300
+#define PCI_SSDID_LPe3200X              0xE300
+
 /* E260: Lancer FCoE */
 #define PCI_DEVICE_ID_LANCER_FE         0xE260
 #define PCI_SSDID_OCe15100              0xE260
 #define PCI_SSDID_OCe1510X              0xE260 /* Identified by cache_line */
 #define PCI_SSDID_LPem16002_FE_O        0xE20C
 #define PCI_SSDID_LPe16002_FE_O         0xE20E
 #define PCI_SSDID_LPe16002_FE_SP1       0xE217
 #define PCI_SSDID_LPe16002_FE_SP2       0xE219
 
+/* 0063: ATTO Celerity 16 FC Gen5 */
+#define PCI_DEVICE_ID_CLRTY_FC_161E     0x0063
+#define PCI_DEVICE_ID_CLRTY_FC_162E     0x0064
+#define PCI_DEVICE_ID_CLRTY_FC_164E     0x0065
+#define PCI_SSDID_CLRTY_FC_161E 0x0063
+#define PCI_SSDID_CLRTY_FC_162E 0x0064
+#define PCI_SSDID_CLRTY_FC_164E 0x0065
 
+/* 0094 ATTO Celerity 16 FC Gen6 */
+#define PCI_DEVICE_ID_CLRTY_FC_G6       0x0094
+#define PCI_SSDID_CLRTY_FC_162P 0x0094
+#define PCI_SSDID_CLRTY_FC_164P 0x00A1
+#define PCI_SSDID_CLRTY_FC_321E 0x00A2
+#define PCI_SSDID_CLRTY_FC_322E 0x00A3
 
+
 /* JEDEC codes */
 #define FIREFLY_JEDEC_ID        0x1ACC
 #define SUPERFLY_JEDEC_ID       0x0020
 #define DRAGONFLY_JEDEC_ID      0x0021
 #define DRAGONFLY_V2_JEDEC_ID   0x0025

@@ -307,10 +346,12 @@
         /* flags */
 #define EMLXS_INTX_SUPPORTED    0x00000001
 #define EMLXS_MSI_SUPPORTED     0x00000002
 #define EMLXS_MSIX_SUPPORTED    0x00000004
 #define EMLXS_E2E_SUPPORTED     0x00000010 /* End-to-end authentication */
+#define EMLXS_FC_GEN6           0x00000020
+#define EMLXS_GPIO_LEDS         0x00000040
 #define EMLXS_ORACLE_BRANDED    0x10000000
 #define EMLXS_ORACLE_EXCLUDED   0x20000000
 #define EMLXS_NOT_SUPPORTED     0x80000000
 
         uint32_t        chip;

@@ -1638,10 +1679,201 @@
                 EMLXS_INTR_NO_LIMIT,
                 EMLXS_SLI4_MASK,
                 EMLXS_MULTI_CHANNEL,
                 NULL_PROG_TYPES,
         },
+
+        /* Lancer Gen6 16Gb FC Single-port, Lenovo-branded */
+        {
+                LPe31000_M6_L,
+                PCI_DEVICE_ID_LANCER_G6_FC,
+                PCI_SSDID_LPe31000_M6_L,
+                "LPe31000",
+                "PCI_SSDID_LPe31000_M6_L",
+                "Emulex",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_FC_GEN6,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* Lancer Gen6 FC (Generic) */
+        {
+                LPe32000,
+                PCI_DEVICE_ID_LANCER_G6_FC,
+                PCI_SSDID_LPe32000,
+                "LPe32000",
+                "Emulex LightPulse LPe32000 32Gb 1-port FC HBA",
+                "Emulex",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_FC_GEN6,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* Lancer Gen6 FC (Generic Multi-Channel) */
+        /* !! Must always follow the single channel entry in list */
+        {
+                LPe3200X,
+                PCI_DEVICE_ID_LANCER_G6_FC,
+                PCI_SSDID_LPe3200X,
+                "LPe32000",
+                "Emulex LightPulse LPe32000 32Gb Multi-port FC HBA",
+                "Emulex",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_FC_GEN6,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_MULTI_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* ATTO Celerity 161E */
+        {
+                CelerityFC161E,
+                PCI_DEVICE_ID_CLRTY_FC_161E,
+                PCI_SSDID_CLRTY_FC_161E,
+                "Celerity FC 161E",
+                "ATTO Celerity 161E Single-Channel FC HBA",
+                "ATTO Technology",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_GPIO_LEDS,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* ATTO Celerity 162E */
+        {
+                CelerityFC162E,
+                PCI_DEVICE_ID_CLRTY_FC_162E,
+                PCI_SSDID_CLRTY_FC_162E,
+                "Celerity FC 162E",
+                "ATTO Celerity 162E Dual-Channel FC HBA",
+                "ATTO Technology",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_GPIO_LEDS,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* ATTO Celerity 164E */
+        {
+                CelerityFC164E,
+                PCI_DEVICE_ID_CLRTY_FC_164E,
+                PCI_SSDID_CLRTY_FC_164E,
+                "Celerity FC 164E",
+                "ATTO Celerity 164E Quad-Channel FC HBA",
+                "ATTO Technology",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_GPIO_LEDS,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* ATTO Celerity 162P */
+        {
+                CelerityFC162P,
+                PCI_DEVICE_ID_CLRTY_FC_G6,
+                PCI_SSDID_CLRTY_FC_162P,
+                "Celerity FC 162P",
+                "ATTO Celerity 162P Dual-Channel FC HBA",
+                "ATTO Technology",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_FC_GEN6,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* ATTO Celerity 164P */
+        {
+                CelerityFC164P,
+                PCI_DEVICE_ID_CLRTY_FC_G6,
+                PCI_SSDID_CLRTY_FC_164P,
+                "Celerity FC 164P",
+                "ATTO Celerity 164P Quad-Channel FC HBA",
+                "ATTO Technology",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_FC_GEN6,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* ATTO Celerity 321E */
+        {
+                CelerityFC321E,
+                PCI_DEVICE_ID_CLRTY_FC_G6,
+                PCI_SSDID_CLRTY_FC_321E,
+                "Celerity FC 321E",
+                "ATTO Celerity 321E Single-Channel FC HBA",
+                "ATTO Technology",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_FC_GEN6,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
+
+        /* ATTO Celerity 322E */
+        {
+                CelerityFC322E,
+                PCI_DEVICE_ID_CLRTY_FC_G6,
+                PCI_SSDID_CLRTY_FC_322E,
+                "Celerity FC 322E",
+                "ATTO Celerity 322E Dual-Channel FC HBA",
+                "ATTO Technology",
+                EMLXS_INTX_SUPPORTED |
+                        EMLXS_MSI_SUPPORTED | EMLXS_MSIX_SUPPORTED |
+                        EMLXS_E2E_SUPPORTED | EMLXS_FC_GEN6,
+                EMLXS_LANCER_CHIP,
+                FW_NOT_PROVIDED,
+                EMLXS_INTR_NO_LIMIT,
+                EMLXS_SLI4_MASK,
+                EMLXS_SINGLE_CHANNEL,
+                NULL_PROG_TYPES,
+        },
 
         /* Lancer FCOE (Generic) */
         {
                 OCe15100,
                 PCI_DEVICE_ID_LANCER_FE,