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

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c
          +++ new/usr/src/uts/common/io/fibre-channel/fca/emlxs/emlxs_fct.c
↓ open down ↓ 14 lines elided ↑ open up ↑
  15   15   * If applicable, add the following below this CDDL HEADER, with the
  16   16   * fields enclosed by brackets "[]" replaced with your own identifying
  17   17   * information: Portions Copyright [yyyy] [name of copyright owner]
  18   18   *
  19   19   * CDDL HEADER END
  20   20   */
  21   21  
  22   22  /*
  23   23   * Copyright (c) 2004-2012 Emulex. All rights reserved.
  24   24   * Use is subject to license terms.
       25 + * Copyright 2016 Nexenta Systems, Inc. All rights reserved.
  25   26   */
  26   27  
  27   28  #include <emlxs.h>
  28   29  
  29   30  #ifdef SFCT_SUPPORT
  30   31  
  31   32  
  32   33  /* Required for EMLXS_CONTEXT in EMLXS_MSGF calls */
  33   34  EMLXS_MSG_DEF(EMLXS_FCT_C);
  34   35  
↓ open down ↓ 1329 lines elided ↑ open up ↑
1364 1365  
1365 1366  /* COMSTAR ENTER POINT */
1366 1367  static void
1367 1368  emlxs_fct_populate_hba_details(fct_local_port_t *fct_port,
1368 1369      fct_port_attrs_t *port_attrs)
1369 1370  {
1370 1371          emlxs_port_t *port = (emlxs_port_t *)fct_port->port_fca_private;
1371 1372          emlxs_hba_t *hba = HBA;
1372 1373          emlxs_vpd_t *vpd = &VPD;
1373 1374  
1374      -        (void) strncpy(port_attrs->manufacturer, "Emulex",
     1375 +        (void) strncpy(port_attrs->manufacturer,
     1376 +            hba->model_info.manufacturer,
1375 1377              (sizeof (port_attrs->manufacturer)-1));
1376 1378          (void) strncpy(port_attrs->serial_number, vpd->serial_num,
1377 1379              (sizeof (port_attrs->serial_number)-1));
1378 1380          (void) strncpy(port_attrs->model, hba->model_info.model,
1379 1381              (sizeof (port_attrs->model)-1));
1380 1382          (void) strncpy(port_attrs->model_description,
1381 1383              hba->model_info.model_desc,
1382 1384              (sizeof (port_attrs->model_description)-1));
1383 1385          (void) snprintf(port_attrs->hardware_version,
1384 1386              (sizeof (port_attrs->hardware_version)-1),
↓ open down ↓ 76 lines elided ↑ open up ↑
1461 1463  
1462 1464  
1463 1465  /* COMSTAR ENTER POINT */
1464 1466  /* ARGSUSED */
1465 1467  static void
1466 1468  emlxs_fct_ctl(fct_local_port_t *fct_port, int cmd, void *arg)
1467 1469  {
1468 1470          emlxs_port_t *port = (emlxs_port_t *)fct_port->port_fca_private;
1469 1471          emlxs_hba_t *hba = HBA;
1470 1472          stmf_change_status_t st;
     1473 +        int32_t rval;
1471 1474  
1472 1475          st.st_completion_status = FCT_SUCCESS;
1473 1476          st.st_additional_info = NULL;
1474 1477  
1475 1478          switch (cmd) {
1476 1479          case FCT_CMD_PORT_ONLINE:
1477 1480                  /* If the HBA is offline, we cannot bring the tgtport online */
1478 1481                  if (hba->flag & (FC_OFFLINE_MODE | FC_OFFLINING_MODE)) {
1479 1482                          st.st_completion_status = FCT_FAILURE;
1480 1483                          MODSYM(fct_ctl) (fct_port->port_lport,
↓ open down ↓ 70 lines elided ↑ open up ↑
1551 1554          case FCT_ACK_PORT_ONLINE_COMPLETE:
1552 1555                  port->fct_flags &= ~FCT_STATE_NOT_ACKED;
1553 1556                  EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg,
1554 1557                      "STATE: ONLINE ack");
1555 1558                  break;
1556 1559  
1557 1560          case FCT_CMD_FORCE_LIP:
1558 1561                  if (port->mode == MODE_INITIATOR) {
1559 1562                          EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg,
1560 1563                              "fct_ctl: FCT_CMD_FORCE_LIP.");
     1564 +                        *((fct_status_t *)arg) = FCT_FAILURE;
1561 1565                          break;
1562 1566                  }
1563 1567  
1564 1568                  if (hba->fw_flag & FW_UPDATE_NEEDED) {
1565 1569                          EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg,
1566 1570                              "fct_ctl: FCT_CMD_FORCE_LIP -> "
1567 1571                              "FCT_CMD_RESET");
1568 1572  
1569 1573                          hba->fw_flag |= FW_UPDATE_KERNEL;
1570 1574  
1571 1575                          /* Reset the adapter */
1572      -                        (void) emlxs_reset(port, FC_FCA_RESET);
     1576 +                        rval = emlxs_reset(port, FC_FCA_RESET);
1573 1577                  } else {
1574 1578                          EMLXS_MSGF(EMLXS_CONTEXT, &emlxs_fct_detail_msg,
1575 1579                              "fct_ctl: FCT_CMD_FORCE_LIP");
1576 1580  
1577 1581                          /* Reset the link */
1578      -                        (void) emlxs_reset(port, FC_FCA_LINK_RESET);
     1582 +                        rval = emlxs_reset(port, FC_FCA_LINK_RESET);
1579 1583                  }
     1584 +                *((fct_status_t *)arg) = (rval == FC_SUCCESS) ? FCT_SUCCESS:
     1585 +                    FCT_FAILURE;
1580 1586                  break;
1581 1587          }
1582 1588  
1583 1589          return;
1584 1590  
1585 1591  } /* emlxs_fct_ctl() */
1586 1592  
1587 1593  
1588 1594  extern int
1589 1595  emlxs_fct_port_shutdown(emlxs_port_t *port)
↓ open down ↓ 409 lines elided ↑ open up ↑
1999 2005                  break;
2000 2006          case LA_8GHZ_LINK:
2001 2007                  link->port_speed = PORT_SPEED_8G;
2002 2008                  break;
2003 2009          case LA_10GHZ_LINK:
2004 2010                  link->port_speed = PORT_SPEED_10G;
2005 2011                  break;
2006 2012          case LA_16GHZ_LINK:
2007 2013                  link->port_speed = PORT_SPEED_16G;
2008 2014                  break;
     2015 +        case LA_32GHZ_LINK:
     2016 +                link->port_speed = PORT_SPEED_32G;
     2017 +                break;
2009 2018          default:
2010 2019                  link->port_speed = PORT_SPEED_UNKNOWN;
2011 2020                  break;
2012 2021          }
2013 2022  
2014 2023          link->portid = port->did;
2015 2024          link->port_no_fct_flogi = 0;
2016 2025          link->port_fca_flogi_done = 0;
2017 2026          link->port_fct_flogi_done = 0;
2018 2027  
↓ open down ↓ 3396 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX