Print this page
Update i40e for new devices, prototype changes
@@ -13,10 +13,11 @@
* 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,11 +669,11 @@
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,
+ 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,10 +1056,12 @@
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,10 +1069,12 @@
* 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,10 +1234,28 @@
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;