Print this page
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-4963 `fcadm force-lip wwn`: Failed to reinitialize the link of Emulex HBA
Reviewed by: Rob Gittins <rob.gittins@nexenta.com>
Reviewed by: Steve Peng <steve.peng@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 2016 Nexenta Systems, Inc. All rights reserved.
  */
 
 #include <emlxs.h>
 
 #ifdef SFCT_SUPPORT

@@ -1369,11 +1370,12 @@
 {
         emlxs_port_t *port = (emlxs_port_t *)fct_port->port_fca_private;
         emlxs_hba_t *hba = HBA;
         emlxs_vpd_t *vpd = &VPD;
 
-        (void) strncpy(port_attrs->manufacturer, "Emulex",
+        (void) strncpy(port_attrs->manufacturer,
+            hba->model_info.manufacturer,
             (sizeof (port_attrs->manufacturer)-1));
         (void) strncpy(port_attrs->serial_number, vpd->serial_num,
             (sizeof (port_attrs->serial_number)-1));
         (void) strncpy(port_attrs->model, hba->model_info.model,
             (sizeof (port_attrs->model)-1));

@@ -1466,10 +1468,11 @@
 emlxs_fct_ctl(fct_local_port_t *fct_port, int cmd, void *arg)
 {
         emlxs_port_t *port = (emlxs_port_t *)fct_port->port_fca_private;
         emlxs_hba_t *hba = HBA;
         stmf_change_status_t st;
+        int32_t rval;
 
         st.st_completion_status = FCT_SUCCESS;
         st.st_additional_info = NULL;
 
         switch (cmd) {

@@ -1556,10 +1559,11 @@
 
         case FCT_CMD_FORCE_LIP:
                 if (port->mode == MODE_INITIATOR) {
                         EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg,
                             "fct_ctl: FCT_CMD_FORCE_LIP.");
+                        *((fct_status_t *)arg) = FCT_FAILURE;
                         break;
                 }
 
                 if (hba->fw_flag & FW_UPDATE_NEEDED) {
                         EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg,

@@ -1567,18 +1571,20 @@
                             "FCT_CMD_RESET");
 
                         hba->fw_flag |= FW_UPDATE_KERNEL;
 
                         /* Reset the adapter */
-                        (void) emlxs_reset(port, FC_FCA_RESET);
+                        rval = emlxs_reset(port, FC_FCA_RESET);
                 } else {
                         EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg,
                             "fct_ctl: FCT_CMD_FORCE_LIP");
 
                         /* Reset the link */
-                        (void) emlxs_reset(port, FC_FCA_LINK_RESET);
+                        rval = emlxs_reset(port, FC_FCA_LINK_RESET);
                 }
+                *((fct_status_t *)arg) = (rval == FC_SUCCESS) ? FCT_SUCCESS:
+                    FCT_FAILURE;
                 break;
         }
 
         return;
 

@@ -2004,10 +2010,13 @@
                 link->port_speed = PORT_SPEED_10G;
                 break;
         case LA_16GHZ_LINK:
                 link->port_speed = PORT_SPEED_16G;
                 break;
+        case LA_32GHZ_LINK:
+                link->port_speed = PORT_SPEED_32G;
+                break;
         default:
                 link->port_speed = PORT_SPEED_UNKNOWN;
                 break;
         }