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

Reply via email to