Print this page
Update i40e for new devices, prototype changes
        
*** 13,22 ****
--- 13,23 ----
   * Copyright 2015 OmniTI Computer Consulting, Inc. All rights reserved.
   * Copyright (c) 2018, Joyent, Inc.
   * Copyright 2017 Tegile Systems, Inc.  All rights reserved.
   * Copyright 2020 Ryan Zezeski
   * Copyright 2020 RackTop Systems, Inc.
+  * Copyright 2021 Oxide Computer Company
   */
  
  /*
   * For more information, please see the big theory statement in i40e_main.c.
   */
*** 668,678 ****
          for (i = 0; i < nbytes; i++, offset++) {
                  enum i40e_status_code status;
                  uint32_t val;
  
                  status = i40e_aq_get_phy_register(hw,
!                     I40E_AQ_PHY_REG_ACCESS_EXTERNAL_MODULE, page, offset,
                      &val, NULL);
                  if (status != I40E_SUCCESS) {
                          mutex_exit(&i40e->i40e_general_lock);
                          return (EIO);
                  }
--- 669,679 ----
          for (i = 0; i < nbytes; i++, offset++) {
                  enum i40e_status_code status;
                  uint32_t val;
  
                  status = i40e_aq_get_phy_register(hw,
!                     I40E_AQ_PHY_REG_ACCESS_EXTERNAL_MODULE, page, TRUE, offset,
                      &val, NULL);
                  if (status != I40E_SUCCESS) {
                          mutex_exit(&i40e->i40e_general_lock);
                          return (EIO);
                  }
*** 1055,1064 ****
--- 1056,1067 ----
          case MAC_PROP_DUPLEX:
          case MAC_PROP_SPEED:
          case MAC_PROP_STATUS:
          case MAC_PROP_ADV_100FDX_CAP:
          case MAC_PROP_ADV_1000FDX_CAP:
+         case MAC_PROP_ADV_2500FDX_CAP:
+         case MAC_PROP_ADV_5000FDX_CAP:
          case MAC_PROP_ADV_10GFDX_CAP:
          case MAC_PROP_ADV_25GFDX_CAP:
          case MAC_PROP_ADV_40GFDX_CAP:
                  ret = ENOTSUP;
                  break;
*** 1066,1075 ****
--- 1069,1080 ----
           * These are read-only at this time as we don't support configuring
           * auto-negotiation. See the theory statement in i40e_main.c.
           */
          case MAC_PROP_EN_100FDX_CAP:
          case MAC_PROP_EN_1000FDX_CAP:
+         case MAC_PROP_EN_2500FDX_CAP:
+         case MAC_PROP_EN_5000FDX_CAP:
          case MAC_PROP_EN_10GFDX_CAP:
          case MAC_PROP_EN_25GFDX_CAP:
          case MAC_PROP_EN_40GFDX_CAP:
          case MAC_PROP_AUTONEG:
          case MAC_PROP_FLOWCTRL:
*** 1229,1238 ****
--- 1234,1261 ----
                          break;
                  }
                  u8 = pr_val;
                  *u8 = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_1GB) != 0;
                  break;
+         case MAC_PROP_ADV_2500FDX_CAP:
+         case MAC_PROP_EN_2500FDX_CAP:
+                 if (pr_valsize < sizeof (uint8_t)) {
+                         ret = EOVERFLOW;
+                         break;
+                 }
+                 u8 = pr_val;
+                 *u8 = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_2_5GB) != 0;
+                 break;
+         case MAC_PROP_ADV_5000FDX_CAP:
+         case MAC_PROP_EN_5000FDX_CAP:
+                 if (pr_valsize < sizeof (uint8_t)) {
+                         ret = EOVERFLOW;
+                         break;
+                 }
+                 u8 = pr_val;
+                 *u8 = (i40e->i40e_phy.link_speed & I40E_LINK_SPEED_5GB) != 0;
+                 break;
          case MAC_PROP_ADV_10GFDX_CAP:
          case MAC_PROP_EN_10GFDX_CAP:
                  if (pr_valsize < sizeof (uint8_t)) {
                          ret = EOVERFLOW;
                          break;