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,29 ****
--- 20,30 ----
*/
/*
* 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,1379 ****
{
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",
(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));
--- 1370,1381 ----
{
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,
! 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,1475 ****
--- 1468,1478 ----
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,1565 ****
--- 1559,1569 ----
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,1584 ****
"FCT_CMD_RESET");
hba->fw_flag |= FW_UPDATE_KERNEL;
/* Reset the adapter */
! (void) 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);
}
break;
}
return;
--- 1571,1590 ----
"FCT_CMD_RESET");
hba->fw_flag |= FW_UPDATE_KERNEL;
/* Reset the adapter */
! 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 */
! rval = emlxs_reset(port, FC_FCA_LINK_RESET);
}
+ *((fct_status_t *)arg) = (rval == FC_SUCCESS) ? FCT_SUCCESS:
+ FCT_FAILURE;
break;
}
return;
*** 2004,2013 ****
--- 2010,2022 ----
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;
}