dpdk: add patch to support i226v 23/35623/2
authorMatthew Smith <mgsmith@netgate.com>
Wed, 9 Mar 2022 23:30:16 +0000 (23:30 +0000)
committerDamjan Marion <dmarion@me.com>
Mon, 14 Mar 2022 20:04:40 +0000 (20:04 +0000)
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 <mgsmith@netgate.com>
Change-Id: I82ff4b70e6b6e0ba0803519943190a564e85d2ac

build/external/patches/dpdk_21.11/0001-net-igc-Add-device-ID-for-i226v.patch [new file with mode: 0644]

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 (file)
index 0000000..f499136
--- /dev/null
@@ -0,0 +1,137 @@
+From f4192afd7712a8d6be1e80af7478a12caaaa8917 Mon Sep 17 00:00:00 2001
+From: Matthew Smith <mgsmith@netgate.com>
+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)
+