Module Name: src Committed By: yamaguchi Date: Wed Mar 16 05:26:37 UTC 2022
Modified Files: src/sys/dev/pci: if_ixl.c if_ixlvar.h Log Message: ixl: Added support for Intel ethernet X710-T*L To generate a diff of this commit: cvs rdiff -u -r1.77 -r1.78 src/sys/dev/pci/if_ixl.c cvs rdiff -u -r1.7 -r1.8 src/sys/dev/pci/if_ixlvar.h Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/dev/pci/if_ixl.c diff -u src/sys/dev/pci/if_ixl.c:1.77 src/sys/dev/pci/if_ixl.c:1.78 --- src/sys/dev/pci/if_ixl.c:1.77 Wed Jun 16 00:21:18 2021 +++ src/sys/dev/pci/if_ixl.c Wed Mar 16 05:26:37 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ixl.c,v 1.77 2021/06/16 00:21:18 riastradh Exp $ */ +/* $NetBSD: if_ixl.c,v 1.78 2022/03/16 05:26:37 yamaguchi Exp $ */ /* * Copyright (c) 2013-2015, Intel Corporation @@ -74,7 +74,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: if_ixl.c,v 1.77 2021/06/16 00:21:18 riastradh Exp $"); +__KERNEL_RCSID(0, "$NetBSD: if_ixl.c,v 1.78 2022/03/16 05:26:37 yamaguchi Exp $"); #ifdef _KERNEL_OPT #include "opt_net_mpsafe.h" @@ -899,12 +899,18 @@ static const struct ixl_phy_type ixl_phy { 1ULL << IXL_PHY_TYPE_25GBASE_LR, IFM_25G_LR }, { 1ULL << IXL_PHY_TYPE_25GBASE_AOC, IFM_25G_AOC }, { 1ULL << IXL_PHY_TYPE_25GBASE_ACC, IFM_25G_ACC }, + { 1ULL << IXL_PHY_TYPE_2500BASE_T_1, IFM_2500_T }, + { 1ULL << IXL_PHY_TYPE_5000BASE_T_1, IFM_5000_T }, + { 1ULL << IXL_PHY_TYPE_2500BASE_T_2, IFM_2500_T }, + { 1ULL << IXL_PHY_TYPE_5000BASE_T_2, IFM_5000_T }, }; static const struct ixl_speed_type ixl_speed_type_map[] = { { IXL_AQ_LINK_SPEED_40GB, IF_Gbps(40) }, { IXL_AQ_LINK_SPEED_25GB, IF_Gbps(25) }, { IXL_AQ_LINK_SPEED_10GB, IF_Gbps(10) }, + { IXL_AQ_LINK_SPEED_5000MB, IF_Mbps(5000) }, + { IXL_AQ_LINK_SPEED_2500MB, IF_Mbps(2500) }, { IXL_AQ_LINK_SPEED_1000MB, IF_Mbps(1000) }, { IXL_AQ_LINK_SPEED_100MB, IF_Mbps(100)}, }; @@ -949,7 +955,8 @@ static const struct ixl_product ixl_prod { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_XL710_QSFP_A }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_XL710_QSFP_B }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_XL710_QSFP_C }, - { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X710_10G_T }, + { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X710_10G_T_1 }, + { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X710_10G_T_2 }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_XL710_20G_BP_1 }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_XL710_20G_BP_2 }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X710_T4_10G }, @@ -961,6 +968,8 @@ static const struct ixl_product ixl_prod { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X722_1G_BASET }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X722_10G_BASET }, { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X722_I_SFP }, + { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X710_10G_SFP }, + { PCI_VENDOR_INTEL, PCI_PRODUCT_INTEL_X710_10G_BP }, /* required last entry */ {0, 0} }; @@ -1836,12 +1845,15 @@ ixl_mactype(pci_product_id_t id) case PCI_PRODUCT_INTEL_XL710_QSFP_A: case PCI_PRODUCT_INTEL_XL710_QSFP_B: case PCI_PRODUCT_INTEL_XL710_QSFP_C: - case PCI_PRODUCT_INTEL_X710_10G_T: + case PCI_PRODUCT_INTEL_X710_10G_T_1: + case PCI_PRODUCT_INTEL_X710_10G_T_2: case PCI_PRODUCT_INTEL_XL710_20G_BP_1: case PCI_PRODUCT_INTEL_XL710_20G_BP_2: case PCI_PRODUCT_INTEL_X710_T4_10G: case PCI_PRODUCT_INTEL_XXV710_25G_BP: case PCI_PRODUCT_INTEL_XXV710_25G_SFP28: + case PCI_PRODUCT_INTEL_X710_10G_SFP: + case PCI_PRODUCT_INTEL_X710_10G_BP: return I40E_MAC_XL710; case PCI_PRODUCT_INTEL_X722_KX: Index: src/sys/dev/pci/if_ixlvar.h diff -u src/sys/dev/pci/if_ixlvar.h:1.7 src/sys/dev/pci/if_ixlvar.h:1.8 --- src/sys/dev/pci/if_ixlvar.h:1.7 Tue Sep 8 10:05:47 2020 +++ src/sys/dev/pci/if_ixlvar.h Wed Mar 16 05:26:37 2022 @@ -1,4 +1,4 @@ -/* $NetBSD: if_ixlvar.h,v 1.7 2020/09/08 10:05:47 yamaguchi Exp $ */ +/* $NetBSD: if_ixlvar.h,v 1.8 2022/03/16 05:26:37 yamaguchi Exp $ */ /* * Copyright (c) 2019 Internet Initiative Japan, Inc. @@ -326,12 +326,20 @@ struct ixl_aq_switch_config_element { #define IXL_PHY_TYPE_25GBASE_AOC 0x23 #define IXL_PHY_TYPE_25GBASE_ACC 0x24 +#define IXL_PHY_TYPE_2500BASE_T_1 0x26 +#define IXL_PHY_TYPE_5000BASE_T_1 0x27 + +#define IXL_PHY_TYPE_2500BASE_T_2 0x30 +#define IXL_PHY_TYPE_5000BASE_T_2 0x31 + +#define IXL_PHY_LINK_SPEED_2500MB (1 << 0) #define IXL_PHY_LINK_SPEED_100MB (1 << 1) #define IXL_PHY_LINK_SPEED_1000MB (1 << 2) #define IXL_PHY_LINK_SPEED_10GB (1 << 3) #define IXL_PHY_LINK_SPEED_40GB (1 << 4) #define IXL_PHY_LINK_SPEED_20GB (1 << 5) #define IXL_PHY_LINK_SPEED_25GB (1 << 6) +#define IXL_PHY_LINK_SPEED_5000MB (1 << 7) #define IXL_PHY_ABILITY_PAUSE_TX (1 << 0) #define IXL_PHY_ABILITY_PAUSE_RX (1 << 1) @@ -363,6 +371,10 @@ struct ixl_aq_phy_abilities { #define IXL_AQ_PHY_TYPE_EXT_25G_CR 0x02 #define IXL_AQ_PHY_TYPE_EXT_25G_SR 0x04 #define IXL_AQ_PHY_TYPE_EXT_25G_LR 0x08 +#define IXL_AQ_PHY_TYPE_EXT_25G_AOC 0x10 +#define IXL_AQ_PHY_TYPE_EXT_25G_ACC 0x20 +#define IXL_AQ_PHY_TYPE_EXT_2500_T 0x40 +#define IXL_AQ_PHY_TYPE_EXT_5000_T 0x80 uint8_t fec_cfg_curr_mod_ext_info; #define IXL_AQ_ENABLE_FEC_KR 0x01 #define IXL_AQ_ENABLE_FEC_RS 0x02 @@ -669,11 +681,13 @@ struct ixl_aq_link_status { /* this occu #define IXL_AQ_LSE_IS_ENABLED 0x1 /* only set in response */ uint8_t phy_type; uint8_t link_speed; +#define IXL_AQ_LINK_SPEED_2500MB (1 << 0) #define IXL_AQ_LINK_SPEED_100MB (1 << 1) #define IXL_AQ_LINK_SPEED_1000MB (1 << 2) #define IXL_AQ_LINK_SPEED_10GB (1 << 3) #define IXL_AQ_LINK_SPEED_40GB (1 << 4) #define IXL_AQ_LINK_SPEED_25GB (1 << 6) +#define IXL_AQ_LINK_SPEED_5000MB (1 << 7) uint8_t link_info; #define IXL_AQ_LINK_UP_FUNCTION 0x01 #define IXL_AQ_LINK_FAULT 0x02