Print this page
Update i40e for new devices, prototype changes

Split Close
Expand all
Collapse all
          --- old/usr/src/uts/common/io/i40e/i40e_gld.c
          +++ new/usr/src/uts/common/io/i40e/i40e_gld.c
↓ open down ↓ 7 lines elided ↑ open up ↑
   8    8   * source.  A copy of the CDDL is also available via the Internet at
   9    9   * http://www.illumos.org/license/CDDL.
  10   10   */
  11   11  
  12   12  /*
  13   13   * Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved.
  14   14   * Copyright (c) 2018, Joyent, Inc.
  15   15   * Copyright 2017 Tegile Systems, Inc.  All rights reserved.
  16   16   * Copyright 2020 Ryan Zezeski
  17   17   * Copyright 2020 RackTop Systems, Inc.
       18 + * Copyright 2021 Oxide Computer Company
  18   19   */
  19   20  
  20   21  /*
  21   22   * For more information, please see the big theory statement in i40e_main.c.
  22   23   */
  23   24  
  24   25  #include "i40e_sw.h"
  25   26  
  26   27  #define I40E_PROP_RX_DMA_THRESH "_rx_dma_threshold"
  27   28  #define I40E_PROP_TX_DMA_THRESH "_tx_dma_threshold"
↓ open down ↓ 635 lines elided ↑ open up ↑
 663  664              hw->aq.api_min_ver < 7) {
 664  665                  mutex_exit(&i40e->i40e_general_lock);
 665  666                  return (ENOTSUP);
 666  667          }
 667  668  
 668  669          for (i = 0; i < nbytes; i++, offset++) {
 669  670                  enum i40e_status_code status;
 670  671                  uint32_t val;
 671  672  
 672  673                  status = i40e_aq_get_phy_register(hw,
 673      -                    I40E_AQ_PHY_REG_ACCESS_EXTERNAL_MODULE, page, offset,
      674 +                    I40E_AQ_PHY_REG_ACCESS_EXTERNAL_MODULE, page, TRUE, offset,
 674  675                      &val, NULL);
 675  676                  if (status != I40E_SUCCESS) {
 676  677                          mutex_exit(&i40e->i40e_general_lock);
 677  678                          return (EIO);
 678  679                  }
 679  680  
 680  681                  buf8[i] = (uint8_t)val;
 681  682          }
 682  683  
 683  684          mutex_exit(&i40e->i40e_general_lock);
↓ open down ↓ 366 lines elided ↑ open up ↑
1050 1051  
1051 1052          switch (pr_num) {
1052 1053          /*
1053 1054           * These properties are always read-only across every device.
1054 1055           */
1055 1056          case MAC_PROP_DUPLEX:
1056 1057          case MAC_PROP_SPEED:
1057 1058          case MAC_PROP_STATUS:
1058 1059          case MAC_PROP_ADV_100FDX_CAP:
1059 1060          case MAC_PROP_ADV_1000FDX_CAP:
     1061 +        case MAC_PROP_ADV_2500FDX_CAP:
     1062 +        case MAC_PROP_ADV_5000FDX_CAP:
1060 1063          case MAC_PROP_ADV_10GFDX_CAP:
1061 1064          case MAC_PROP_ADV_25GFDX_CAP:
1062 1065          case MAC_PROP_ADV_40GFDX_CAP:
1063 1066                  ret = ENOTSUP;
1064 1067                  break;
1065 1068          /*
1066 1069           * These are read-only at this time as we don't support configuring
1067 1070           * auto-negotiation. See the theory statement in i40e_main.c.
1068 1071           */
1069 1072          case MAC_PROP_EN_100FDX_CAP:
1070 1073          case MAC_PROP_EN_1000FDX_CAP:
     1074 +        case MAC_PROP_EN_2500FDX_CAP:
     1075 +        case MAC_PROP_EN_5000FDX_CAP:
1071 1076          case MAC_PROP_EN_10GFDX_CAP:
1072 1077          case MAC_PROP_EN_25GFDX_CAP:
1073 1078          case MAC_PROP_EN_40GFDX_CAP:
1074 1079          case MAC_PROP_AUTONEG:
1075 1080          case MAC_PROP_FLOWCTRL:
1076 1081                  ret = ENOTSUP;
1077 1082                  break;
1078 1083  
1079 1084          case MAC_PROP_MTU:
1080 1085                  bcopy(pr_val, &new_mtu, sizeof (new_mtu));
↓ open down ↓ 143 lines elided ↑ open up ↑
1224 1229                  break;
1225 1230          case MAC_PROP_ADV_1000FDX_CAP:
1226 1231          case MAC_PROP_EN_1000FDX_CAP:
1227 1232                  if (pr_valsize < sizeof (uint8_t)) {
1228 1233                          ret = EOVERFLOW;
1229 1234                          break;
1230 1235                  }
1231 1236                  u8 = pr_val;
1232 1237                  *u8 = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_1GB) != 0;
1233 1238                  break;
     1239 +        case MAC_PROP_ADV_2500FDX_CAP:
     1240 +        case MAC_PROP_EN_2500FDX_CAP:
     1241 +                if (pr_valsize < sizeof (uint8_t)) {
     1242 +                        ret = EOVERFLOW;
     1243 +                        break;
     1244 +                }
     1245 +                u8 = pr_val;
     1246 +                *u8 = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_2_5GB) != 0;
     1247 +                break;
     1248 +        case MAC_PROP_ADV_5000FDX_CAP:
     1249 +        case MAC_PROP_EN_5000FDX_CAP:
     1250 +                if (pr_valsize < sizeof (uint8_t)) {
     1251 +                        ret = EOVERFLOW;
     1252 +                        break;
     1253 +                }
     1254 +                u8 = pr_val;
     1255 +                *u8 = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_5GB) != 0;
     1256 +                break;
1234 1257          case MAC_PROP_ADV_10GFDX_CAP:
1235 1258          case MAC_PROP_EN_10GFDX_CAP:
1236 1259                  if (pr_valsize < sizeof (uint8_t)) {
1237 1260                          ret = EOVERFLOW;
1238 1261                          break;
1239 1262                  }
1240 1263                  u8 = pr_val;
1241 1264                  *u8 = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_10GB) != 0;
1242 1265                  break;
1243 1266          case MAC_PROP_ADV_25GFDX_CAP:
↓ open down ↓ 189 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX