From 92991e5c690e8ad55f9cf0fdb81c26c1d1143b7d Mon Sep 17 00:00:00 2001 From: Matthew Smith Date: Wed, 9 Mar 2022 23:30:16 +0000 Subject: dpdk: add patch to support i226v Type: improvement Add a patch to the DPDK 21.11 build to enable the PCI device ID for the I226-V. Signed-off-by: Matthew Smith Change-Id: I82ff4b70e6b6e0ba0803519943190a564e85d2ac --- .../0001-net-igc-Add-device-ID-for-i226v.patch | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 build/external/patches/dpdk_21.11/0001-net-igc-Add-device-ID-for-i226v.patch (limited to 'build/external') diff --git a/build/external/patches/dpdk_21.11/0001-net-igc-Add-device-ID-for-i226v.patch b/build/external/patches/dpdk_21.11/0001-net-igc-Add-device-ID-for-i226v.patch new file mode 100644 index 00000000000..f499136bba4 --- /dev/null +++ b/build/external/patches/dpdk_21.11/0001-net-igc-Add-device-ID-for-i226v.patch @@ -0,0 +1,137 @@ +From f4192afd7712a8d6be1e80af7478a12caaaa8917 Mon Sep 17 00:00:00 2001 +From: Matthew Smith +Date: Fri, 25 Feb 2022 16:15:40 -0600 +Subject: [PATCH] net/igc: Add device ID for i226v + +Add the device ID 0x125C in order to enable the i226v. +Add phy ID for the i226 and allow that ID anywhere the phy ID for the +i225 was allowed. +--- + drivers/net/igc/base/igc_api.c | 1 + + drivers/net/igc/base/igc_defines.h | 1 + + drivers/net/igc/base/igc_hw.h | 1 + + drivers/net/igc/base/igc_i225.c | 1 + + drivers/net/igc/base/igc_phy.c | 11 ++++++----- + drivers/net/igc/igc_ethdev.c | 1 + + 6 files changed, 11 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/igc/base/igc_api.c b/drivers/net/igc/base/igc_api.c +index 2f8c0753cb..da51ef2d59 100644 +--- a/drivers/net/igc/base/igc_api.c ++++ b/drivers/net/igc/base/igc_api.c +@@ -888,6 +888,7 @@ s32 igc_set_mac_type(struct igc_hw *hw) + case IGC_DEV_ID_I225_I: + case IGC_DEV_ID_I220_V: + case IGC_DEV_ID_I225_BLANK_NVM: ++ case IGC_DEV_ID_I226_V: + mac->type = igc_i225; + break; + case IGC_DEV_ID_I350_VF: +diff --git a/drivers/net/igc/base/igc_defines.h b/drivers/net/igc/base/igc_defines.h +index 30a41300f5..767587a171 100644 +--- a/drivers/net/igc/base/igc_defines.h ++++ b/drivers/net/igc/base/igc_defines.h +@@ -1351,6 +1351,7 @@ + #define IGP04IGC_E_PHY_ID 0x02A80391 + #define M88_VENDOR 0x0141 + #define I225_I_PHY_ID 0x67C9DC00 ++#define I226_I_PHY_ID 0x67C9DC10 + + /* M88E1000 Specific Registers */ + #define M88IGC_PHY_SPEC_CTRL 0x10 /* PHY Specific Control Reg */ +diff --git a/drivers/net/igc/base/igc_hw.h b/drivers/net/igc/base/igc_hw.h +index be38fafa5f..686fb721af 100644 +--- a/drivers/net/igc/base/igc_hw.h ++++ b/drivers/net/igc/base/igc_hw.h +@@ -164,6 +164,7 @@ struct igc_hw; + #define IGC_DEV_ID_I225_V 0x15F3 + #define IGC_DEV_ID_I225_K 0x3100 + #define IGC_DEV_ID_I225_I 0x15F8 ++#define IGC_DEV_ID_I226_V 0x125C + #define IGC_DEV_ID_I220_V 0x15F7 + #define IGC_DEV_ID_I225_BLANK_NVM 0x15FD + #define IGC_DEV_ID_I354_BACKPLANE_1GBPS 0x1F40 +diff --git a/drivers/net/igc/base/igc_i225.c b/drivers/net/igc/base/igc_i225.c +index 060b2f8f93..8c078029f7 100644 +--- a/drivers/net/igc/base/igc_i225.c ++++ b/drivers/net/igc/base/igc_i225.c +@@ -176,6 +176,7 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) + /* Verify phy id and set remaining function pointers */ + switch (phy->id) { + case I225_I_PHY_ID: ++ case I226_I_PHY_ID: + phy->type = igc_phy_i225; + phy->ops.set_d0_lplu_state = igc_set_d0_lplu_state_i225; + phy->ops.set_d3_lplu_state = igc_set_d3_lplu_state_i225; +diff --git a/drivers/net/igc/base/igc_phy.c b/drivers/net/igc/base/igc_phy.c +index 43bbe69bca..d46a6b3555 100644 +--- a/drivers/net/igc/base/igc_phy.c ++++ b/drivers/net/igc/base/igc_phy.c +@@ -1474,8 +1474,7 @@ s32 igc_phy_setup_autoneg(struct igc_hw *hw) + return ret_val; + } + +- if ((phy->autoneg_mask & ADVERTISE_2500_FULL) && +- hw->phy.id == I225_I_PHY_ID) { ++ if (phy->autoneg_mask & ADVERTISE_2500_FULL) { + /* Read the MULTI GBT AN Control Register - reg 7.32 */ + ret_val = phy->ops.read_reg(hw, (STANDARD_AN_REG_MASK << + MMD_DEVADDR_SHIFT) | +@@ -1615,8 +1614,7 @@ s32 igc_phy_setup_autoneg(struct igc_hw *hw) + ret_val = phy->ops.write_reg(hw, PHY_1000T_CTRL, + mii_1000t_ctrl_reg); + +- if ((phy->autoneg_mask & ADVERTISE_2500_FULL) && +- hw->phy.id == I225_I_PHY_ID) ++ if (phy->autoneg_mask & ADVERTISE_2500_FULL) + ret_val = phy->ops.write_reg(hw, + (STANDARD_AN_REG_MASK << + MMD_DEVADDR_SHIFT) | +@@ -1882,6 +1880,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) + /* fall-through */ + case I225_I_PHY_ID: + /* fall-through */ ++ case I226_I_PHY_ID: + reset_dsp = false; + break; + default: +@@ -1923,7 +1922,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) + return IGC_SUCCESS; + if (hw->phy.id == I210_I_PHY_ID) + return IGC_SUCCESS; +- if (hw->phy.id == I225_I_PHY_ID) ++ if (hw->phy.type == igc_phy_i225) + return IGC_SUCCESS; + if (hw->phy.id == M88E1543_E_PHY_ID || hw->phy.id == M88E1512_E_PHY_ID) + return IGC_SUCCESS; +@@ -2480,6 +2479,7 @@ s32 igc_get_cable_length_m88_gen2(struct igc_hw *hw) + phy->cable_length = phy_data / (is_cm ? 100 : 1); + break; + case I225_I_PHY_ID: ++ case I226_I_PHY_ID: + if (ret_val) + return ret_val; + /* TODO - complete with Foxville data */ +@@ -3064,6 +3064,7 @@ enum igc_phy_type igc_get_phy_type_from_id(u32 phy_id) + phy_type = igc_phy_i210; + break; + case I225_I_PHY_ID: ++ case I226_I_PHY_ID: + phy_type = igc_phy_i225; + break; + default: +diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c +index a1f1a9772b..0dd3a212d7 100644 +--- a/drivers/net/igc/igc_ethdev.c ++++ b/drivers/net/igc/igc_ethdev.c +@@ -97,6 +97,7 @@ static const struct rte_pci_id pci_id_igc_map[] = { + { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I225_V) }, + { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I225_I) }, + { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I225_K) }, ++ { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I226_V) }, + { .vendor_id = 0, /* sentinel */ }, + }; + +-- +2.30.1 (Apple Git-130) + -- cgit 1.2.3-korg