* [PATCH] IGC: Remove I225_I_PHY_ID checking @ 2022-08-29 8:14 iotg.dpdk.ref.app 2022-08-30 11:17 ` Zhang, Qi Z 2022-08-31 22:51 ` [PATCH v2] " iotg.dpdk.ref.app 0 siblings, 2 replies; 16+ messages in thread From: iotg.dpdk.ref.app @ 2022-08-29 8:14 UTC (permalink / raw) To: dev From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> i225 devices have only one PHY vendor. There is unnecessary to check _I_PHY_ID during the link establishment and auto-negotiation process, the checking also caused devices like i225-IT failed. This patch is to remove the mentioned unnecessary checking. Cc: stable@dpdk.org Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> --- drivers/net/igc/base/igc_api.c | 1 + drivers/net/igc/base/igc_hw.h | 1 + drivers/net/igc/base/igc_i225.c | 15 ++------------- drivers/net/igc/base/igc_phy.c | 6 ++---- drivers/net/igc/igc_ethdev.c | 1 + 5 files changed, 7 insertions(+), 17 deletions(-) diff --git a/drivers/net/igc/base/igc_api.c b/drivers/net/igc/base/igc_api.c index 9b791dc082..c9fc9ed4b0 100644 --- a/drivers/net/igc/base/igc_api.c +++ b/drivers/net/igc/base/igc_api.c @@ -886,6 +886,7 @@ s32 igc_set_mac_type(struct igc_hw *hw) case IGC_DEV_ID_I225_V: case IGC_DEV_ID_I225_K: case IGC_DEV_ID_I225_I: + case IGC_DEV_ID_I225_IT: case IGC_DEV_ID_I220_V: case IGC_DEV_ID_I225_BLANK_NVM: case IGC_DEV_ID_I226_K: diff --git a/drivers/net/igc/base/igc_hw.h b/drivers/net/igc/base/igc_hw.h index 707a1883b4..e919a11c02 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_I225_IT 0x0D9F #define IGC_DEV_ID_I220_V 0x15F7 #define IGC_DEV_ID_I225_BLANK_NVM 0x15FD #define IGC_DEV_ID_I226_K 0x3102 diff --git a/drivers/net/igc/base/igc_i225.c b/drivers/net/igc/base/igc_i225.c index 5f3d535490..bdc6f74976 100644 --- a/drivers/net/igc/base/igc_i225.c +++ b/drivers/net/igc/base/igc_i225.c @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) phy->ops.write_reg = igc_write_phy_reg_gpy; ret_val = igc_get_phy_id(hw); - /* Verify phy id and set remaining function pointers */ - switch (phy->id) { - case I225_I_PHY_ID: - case I226_LM_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; - /* TODO - complete with GPY PHY information */ - break; - default: - ret_val = -IGC_ERR_PHY; - goto out; - } + + phy->type = igc_phy_i225; out: return ret_val; diff --git a/drivers/net/igc/base/igc_phy.c b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c index 7f221a5d34..2989b8d488 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_I225_IT) }, { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I226_K) }, { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I226_LMVP) }, { RTE_PCI_DEVICE(IGC_INTEL_VENDOR_ID, IGC_DEV_ID_I226_LM) }, -- 2.36.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH] IGC: Remove I225_I_PHY_ID checking 2022-08-29 8:14 [PATCH] IGC: Remove I225_I_PHY_ID checking iotg.dpdk.ref.app @ 2022-08-30 11:17 ` Zhang, Qi Z 2022-08-31 22:42 ` Mah, Yock Gen 2022-08-31 22:51 ` [PATCH v2] " iotg.dpdk.ref.app 1 sibling, 1 reply; 16+ messages in thread From: Zhang, Qi Z @ 2022-08-30 11:17 UTC (permalink / raw) To: IOTG DPDK Ref App, dev > -----Original Message----- > From: iotg.dpdk.ref.app@intel.com <iotg.dpdk.ref.app@intel.com> > Sent: Monday, August 29, 2022 4:15 PM > To: dev@dpdk.org > Subject: [PATCH] IGC: Remove I225_I_PHY_ID checking > > From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > > i225 devices have only one PHY vendor. There is unnecessary to check > _I_PHY_ID during the link establishment and auto-negotiation process, the > checking also caused devices like i225-IT failed. This patch is to remove the > mentioned unnecessary checking. > > Cc: stable@dpdk.org > Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> Is this the expected author name? > --- > drivers/net/igc/base/igc_api.c | 1 + > drivers/net/igc/base/igc_hw.h | 1 + > drivers/net/igc/base/igc_i225.c | 15 ++------------- > drivers/net/igc/base/igc_phy.c | 6 ++---- > drivers/net/igc/igc_ethdev.c | 1 + > 5 files changed, 7 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/igc/base/igc_api.c b/drivers/net/igc/base/igc_api.c > index 9b791dc082..c9fc9ed4b0 100644 > --- a/drivers/net/igc/base/igc_api.c > +++ b/drivers/net/igc/base/igc_api.c > @@ -886,6 +886,7 @@ s32 igc_set_mac_type(struct igc_hw *hw) > case IGC_DEV_ID_I225_V: > case IGC_DEV_ID_I225_K: > case IGC_DEV_ID_I225_I: > + case IGC_DEV_ID_I225_IT: > case IGC_DEV_ID_I220_V: > case IGC_DEV_ID_I225_BLANK_NVM: > case IGC_DEV_ID_I226_K: > diff --git a/drivers/net/igc/base/igc_hw.h b/drivers/net/igc/base/igc_hw.h > index 707a1883b4..e919a11c02 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_I225_IT 0x0D9F The patch's commit log claims to remove something, but in code it also add some new device ID, could you clarify why we need this or it should be in a separate patch? ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH] IGC: Remove I225_I_PHY_ID checking 2022-08-30 11:17 ` Zhang, Qi Z @ 2022-08-31 22:42 ` Mah, Yock Gen 2022-09-01 8:22 ` David Marchand 0 siblings, 1 reply; 16+ messages in thread From: Mah, Yock Gen @ 2022-08-31 22:42 UTC (permalink / raw) To: Zhang, Qi Z, IOTG DPDK Ref App, dev >-----Original Message----- >From: Zhang, Qi Z <qi.z.zhang@intel.com> >Sent: Tuesday, 30 August, 2022 7:17 PM >To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; dev@dpdk.org >Subject: RE: [PATCH] IGC: Remove I225_I_PHY_ID checking > -----Original Message----- > From: iotg.dpdk.ref.app@intel.com <iotg.dpdk.ref.app@intel.com> > Sent: Monday, August 29, 2022 4:15 PM > To: dev@dpdk.org > Subject: [PATCH] IGC: Remove I225_I_PHY_ID checking > > From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > > i225 devices have only one PHY vendor. There is unnecessary to check > _I_PHY_ID during the link establishment and auto-negotiation process, > the checking also caused devices like i225-IT failed. This patch is to > remove the mentioned unnecessary checking. > > Cc: stable@dpdk.org > Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >Is this the expected author name? Yes, this is expected author name, the PDL email contain all developers working on the patch for better support and response. > --- > drivers/net/igc/base/igc_api.c | 1 + > drivers/net/igc/base/igc_hw.h | 1 + > drivers/net/igc/base/igc_i225.c | 15 ++------------- > drivers/net/igc/base/igc_phy.c | 6 ++---- > drivers/net/igc/igc_ethdev.c | 1 + > 5 files changed, 7 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/igc/base/igc_api.c > b/drivers/net/igc/base/igc_api.c index 9b791dc082..c9fc9ed4b0 100644 > --- a/drivers/net/igc/base/igc_api.c > +++ b/drivers/net/igc/base/igc_api.c > @@ -886,6 +886,7 @@ s32 igc_set_mac_type(struct igc_hw *hw) > case IGC_DEV_ID_I225_V: > case IGC_DEV_ID_I225_K: > case IGC_DEV_ID_I225_I: > + case IGC_DEV_ID_I225_IT: > case IGC_DEV_ID_I220_V: > case IGC_DEV_ID_I225_BLANK_NVM: > case IGC_DEV_ID_I226_K: > diff --git a/drivers/net/igc/base/igc_hw.h > b/drivers/net/igc/base/igc_hw.h index 707a1883b4..e919a11c02 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_I225_IT 0x0D9F >The patch's commit log claims to remove something, but in code it also add some new device ID, could you clarify why we need this or it should be in a separate patch? The checking issue was firstly discovered because of i225-IT not working on our lab and escalated to DPDK team for support, as informed by DPDK team after the patch sent, that the i225-IT device ID has been patched in DPDK next release, we'll send out v2 patch soon with only removing redundance checking without i225-IT device ID. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] IGC: Remove I225_I_PHY_ID checking 2022-08-31 22:42 ` Mah, Yock Gen @ 2022-09-01 8:22 ` David Marchand 2022-09-02 7:01 ` David Marchand 0 siblings, 1 reply; 16+ messages in thread From: David Marchand @ 2022-09-01 8:22 UTC (permalink / raw) To: Mah, Yock Gen, Zhang, Qi Z Cc: IOTG DPDK Ref App, dev, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko On Thu, Sep 1, 2022 at 10:08 AM Mah, Yock Gen <yock.gen.mah@intel.com> wrote: > > >-----Original Message----- > >From: Zhang, Qi Z <qi.z.zhang@intel.com> > >Sent: Tuesday, 30 August, 2022 7:17 PM > >To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; dev@dpdk.org > >Subject: RE: [PATCH] IGC: Remove I225_I_PHY_ID checking > > > -----Original Message----- > > From: iotg.dpdk.ref.app@intel.com <iotg.dpdk.ref.app@intel.com> > > Sent: Monday, August 29, 2022 4:15 PM > > To: dev@dpdk.org > > Subject: [PATCH] IGC: Remove I225_I_PHY_ID checking > > > > From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > > > > i225 devices have only one PHY vendor. There is unnecessary to check > > _I_PHY_ID during the link establishment and auto-negotiation process, > > the checking also caused devices like i225-IT failed. This patch is to > > remove the mentioned unnecessary checking. > > > > Cc: stable@dpdk.org > > Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > > >Is this the expected author name? > Yes, this is expected author name, the PDL email contain all developers working on the patch for better support and response. This is not acceptable. https://doc.dpdk.org/guides/contributing/patches.html#commit-messages-body It is clearly stated that: """ The signoff must be a real name and not an alias or nickname. More than one signoff is allowed. """ And all developers involved in the making of a patch must follow the Developer’s Certificate of Origin. https://www.kernel.org/doc/html/latest/process/submitting-patches.html#developer-s-certificate-of-origin-1-1 In its current form, this patch cannot be merged in the DPDK project. Besides, please register to the @dev mailing list. -- David Marchand ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH] IGC: Remove I225_I_PHY_ID checking 2022-09-01 8:22 ` David Marchand @ 2022-09-02 7:01 ` David Marchand 0 siblings, 0 replies; 16+ messages in thread From: David Marchand @ 2022-09-02 7:01 UTC (permalink / raw) To: Mah, Yock Gen, Zhang, Qi Z Cc: IOTG DPDK Ref App, dev, Thomas Monjalon, Ferruh Yigit, Andrew Rybchenko On Thu, Sep 1, 2022 at 10:22 AM David Marchand <david.marchand@redhat.com> wrote: > Besides, please register to the @dev mailing list. Bis. Please register to the @dev mailing list. -- David Marchand ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-08-29 8:14 [PATCH] IGC: Remove I225_I_PHY_ID checking iotg.dpdk.ref.app 2022-08-30 11:17 ` Zhang, Qi Z @ 2022-08-31 22:51 ` iotg.dpdk.ref.app 2022-09-02 0:18 ` [PATCH v3] " yock.gen.mah 2022-10-11 11:04 ` [PATCH v2] " Kevin Traynor 1 sibling, 2 replies; 16+ messages in thread From: iotg.dpdk.ref.app @ 2022-08-31 22:51 UTC (permalink / raw) To: qi.z.zhang; +Cc: dev From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> i225 devices have only one PHY vendor. There is unnecessary to check _I_PHY_ID during the link establishment and auto-negotiation process, the checking also caused devices like i225-IT failed. This patch is to remove the mentioned unnecessary checking. Cc: stable@dpdk.org Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> --- drivers/net/igc/base/igc_i225.c | 15 ++------------- drivers/net/igc/base/igc_phy.c | 6 ++---- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/drivers/net/igc/base/igc_i225.c b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb 100644 --- a/drivers/net/igc/base/igc_i225.c +++ b/drivers/net/igc/base/igc_i225.c @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) phy->ops.write_reg = igc_write_phy_reg_gpy; ret_val = igc_get_phy_id(hw); - /* Verify phy id and set remaining function pointers */ - switch (phy->id) { - case I225_I_PHY_ID: - case I226_LM_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; - /* TODO - complete with GPY PHY information */ - break; - default: - ret_val = -IGC_ERR_PHY; - goto out; - } + phy->type = igc_phy_i225; + out: return ret_val; diff --git a/drivers/net/igc/base/igc_phy.c b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | -- 2.36.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH v3] IGC: Remove I225_I_PHY_ID checking 2022-08-31 22:51 ` [PATCH v2] " iotg.dpdk.ref.app @ 2022-09-02 0:18 ` yock.gen.mah 2022-09-04 1:55 ` Zhang, Qi Z 2022-10-11 11:04 ` [PATCH v2] " Kevin Traynor 1 sibling, 1 reply; 16+ messages in thread From: yock.gen.mah @ 2022-09-02 0:18 UTC (permalink / raw) To: qi.z.zhang; +Cc: dev From: Mah Yock Gen <yock.gen.mah@intel.com> i225 devices have only one PHY vendor. There is unnecessary to check _I_PHY_ID during the link establishment and auto-negotiation process, the checking also caused devices like i225-IT failed. This patch is to remove the mentioned unnecessary checking. Cc: stable@dpdk.org <changelog> Co-developed-by: Mah Yock Gen <yock.gen.mah@intel.com> Signed-off-by: Mah Yock Gen <yock.gen.mah@intel.com> Co-developed-by: Taripin Samuel <samuel.taripin@intel.com> Signed-off-by: Taripin Samuel <samuel.taripin@intel.com> Signed-off-by: Mah Yock Gen <yock.gen.mah@intel.com> --- V3: * Fixed coding style issue V2: * Removing i225-IT device id added in V1 patch, as it has been superseded drivers/net/igc/base/igc_i225.c | 15 ++------------- drivers/net/igc/base/igc_phy.c | 6 ++---- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/drivers/net/igc/base/igc_i225.c b/drivers/net/igc/base/igc_i225.c index 5f3d535490..180d3cf687 100644 --- a/drivers/net/igc/base/igc_i225.c +++ b/drivers/net/igc/base/igc_i225.c @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) phy->ops.write_reg = igc_write_phy_reg_gpy; ret_val = igc_get_phy_id(hw); - /* Verify phy id and set remaining function pointers */ - switch (phy->id) { - case I225_I_PHY_ID: - case I226_LM_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; - /* TODO - complete with GPY PHY information */ - break; - default: - ret_val = -IGC_ERR_PHY; - goto out; - } + phy->type = igc_phy_i225; + out: return ret_val; diff --git a/drivers/net/igc/base/igc_phy.c b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | -- 2.36.1 ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH v3] IGC: Remove I225_I_PHY_ID checking 2022-09-02 0:18 ` [PATCH v3] " yock.gen.mah @ 2022-09-04 1:55 ` Zhang, Qi Z 0 siblings, 0 replies; 16+ messages in thread From: Zhang, Qi Z @ 2022-09-04 1:55 UTC (permalink / raw) To: Mah, Yock Gen; +Cc: dev > -----Original Message----- > From: Mah, Yock Gen <yock.gen.mah@intel.com> > Sent: Friday, September 2, 2022 8:18 AM > To: Zhang, Qi Z <qi.z.zhang@intel.com> > Cc: dev@dpdk.org > Subject: [PATCH v3] IGC: Remove I225_I_PHY_ID checking > > From: Mah Yock Gen <yock.gen.mah@intel.com> > > i225 devices have only one PHY vendor. There is unnecessary to check > _I_PHY_ID during the link establishment and auto-negotiation process, the > checking also caused devices like i225-IT failed. This patch is to remove the > mentioned unnecessary checking. > > Cc: stable@dpdk.org > > <changelog> > > Co-developed-by: Mah Yock Gen <yock.gen.mah@intel.com> > Signed-off-by: Mah Yock Gen <yock.gen.mah@intel.com> > Co-developed-by: Taripin Samuel <samuel.taripin@intel.com> > Signed-off-by: Taripin Samuel <samuel.taripin@intel.com> > Signed-off-by: Mah Yock Gen <yock.gen.mah@intel.com> Acked-by: Qi Zhang <qi.z.zhang@intel.com> Applied to dpdk-next-net-intel with below minor changes. 1. rename title to "remove unnecessary PHY ID checking" to fix check-git-log warning 2. remove "<change log>" tag 3. remove duplicated "Signed-off-by" Thanks Qi ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-08-31 22:51 ` [PATCH v2] " iotg.dpdk.ref.app 2022-09-02 0:18 ` [PATCH v3] " yock.gen.mah @ 2022-10-11 11:04 ` Kevin Traynor 2022-10-12 7:45 ` Mah, Yock Gen 1 sibling, 1 reply; 16+ messages in thread From: Kevin Traynor @ 2022-10-11 11:04 UTC (permalink / raw) To: iotg.dpdk.ref.app, qi.z.zhang; +Cc: dev On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: > From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > > i225 devices have only one PHY vendor. There is unnecessary to check > _I_PHY_ID during the link establishment and auto-negotiation process, > the checking also caused devices like i225-IT failed. This patch is to > remove the mentioned unnecessary checking. > > Cc: stable@dpdk.org > Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > --- > drivers/net/igc/base/igc_i225.c | 15 ++------------- > drivers/net/igc/base/igc_phy.c | 6 ++---- > 2 files changed, 4 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/igc/base/igc_i225.c b/drivers/net/igc/base/igc_i225.c > index 5f3d535490..af26602afb 100644 > --- a/drivers/net/igc/base/igc_i225.c > +++ b/drivers/net/igc/base/igc_i225.c > @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) > phy->ops.write_reg = igc_write_phy_reg_gpy; > > ret_val = igc_get_phy_id(hw); > - /* Verify phy id and set remaining function pointers */ > - switch (phy->id) { > - case I225_I_PHY_ID: > - case I226_LM_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; The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. Why are they removed, were they not needed? > - /* TODO - complete with GPY PHY information */ > - break; > - default: > - ret_val = -IGC_ERR_PHY; > - goto out; > - } > + phy->type = igc_phy_i225; > + > > out: > return ret_val; > diff --git a/drivers/net/igc/base/igc_phy.c b/drivers/net/igc/base/igc_phy.c > index 43bbe69bca..2906bae21a 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) | ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-10-11 11:04 ` [PATCH v2] " Kevin Traynor @ 2022-10-12 7:45 ` Mah, Yock Gen 2022-10-12 8:39 ` Kevin Traynor 0 siblings, 1 reply; 16+ messages in thread From: Mah, Yock Gen @ 2022-10-12 7:45 UTC (permalink / raw) To: Kevin Traynor, IOTG DPDK Ref App, Zhang, Qi Z; +Cc: dev -----Original Message----- From: Kevin Traynor <ktraynor@redhat.com> Sent: Tuesday, 11 October, 2022 7:05 PM To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> Cc: dev@dpdk.org Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: > From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > > i225 devices have only one PHY vendor. There is unnecessary to check > _I_PHY_ID during the link establishment and auto-negotiation process, > the checking also caused devices like i225-IT failed. This patch is to > remove the mentioned unnecessary checking. > > Cc: stable@dpdk.org > Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> > --- > drivers/net/igc/base/igc_i225.c | 15 ++------------- > drivers/net/igc/base/igc_phy.c | 6 ++---- > 2 files changed, 4 insertions(+), 17 deletions(-) > > diff --git a/drivers/net/igc/base/igc_i225.c > b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb 100644 > --- a/drivers/net/igc/base/igc_i225.c > +++ b/drivers/net/igc/base/igc_i225.c > @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) > phy->ops.write_reg = igc_write_phy_reg_gpy; > > ret_val = igc_get_phy_id(hw); > - /* Verify phy id and set remaining function pointers */ > - switch (phy->id) { > - case I225_I_PHY_ID: > - case I226_LM_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; > - The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. > - Why are they removed, were they not needed? i225 devices have only one PHY vendor. There is no point checking _I_PHY_ID during the link establishment and auto-negotiation process. > - /* TODO - complete with GPY PHY information */ > - break; > - default: > - ret_val = -IGC_ERR_PHY; > - goto out; > - } > + phy->type = igc_phy_i225; > + > > out: > return ret_val; > diff --git a/drivers/net/igc/base/igc_phy.c > b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-10-12 7:45 ` Mah, Yock Gen @ 2022-10-12 8:39 ` Kevin Traynor 2022-10-18 12:54 ` Kevin Traynor 0 siblings, 1 reply; 16+ messages in thread From: Kevin Traynor @ 2022-10-12 8:39 UTC (permalink / raw) To: Mah, Yock Gen, IOTG DPDK Ref App, Zhang, Qi Z; +Cc: dev On 12/10/2022 08:45, Mah, Yock Gen wrote: > > > -----Original Message----- > From: Kevin Traynor <ktraynor@redhat.com> > Sent: Tuesday, 11 October, 2022 7:05 PM > To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> > Cc: dev@dpdk.org > Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking > > On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: >> From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >> >> i225 devices have only one PHY vendor. There is unnecessary to check >> _I_PHY_ID during the link establishment and auto-negotiation process, >> the checking also caused devices like i225-IT failed. This patch is to >> remove the mentioned unnecessary checking. >> >> Cc: stable@dpdk.org >> Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >> --- >> drivers/net/igc/base/igc_i225.c | 15 ++------------- >> drivers/net/igc/base/igc_phy.c | 6 ++---- >> 2 files changed, 4 insertions(+), 17 deletions(-) >> >> diff --git a/drivers/net/igc/base/igc_i225.c >> b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb 100644 >> --- a/drivers/net/igc/base/igc_i225.c >> +++ b/drivers/net/igc/base/igc_i225.c >> @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) >> phy->ops.write_reg = igc_write_phy_reg_gpy; >> >> ret_val = igc_get_phy_id(hw); >> - /* Verify phy id and set remaining function pointers */ >> - switch (phy->id) { >> - case I225_I_PHY_ID: >> - case I226_LM_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; > >> - The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. > >> - Why are they removed, were they not needed? > > > i225 devices have only one PHY vendor. There is no point checking _I_PHY_ID during the link establishment and auto-negotiation process. > Right, that's clear about the vendor ID check. But it's not clear to me why the the resulting code like this: phy->type = igc_phy_i225; and not like this: 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; So it is using dummy null functions instead: https://git.dpdk.org/dpdk/tree/drivers/net/igc/base/igc_phy.c#n61 Do the device registers not need to be set anymore? >> - /* TODO - complete with GPY PHY information */ >> - break; >> - default: >> - ret_val = -IGC_ERR_PHY; >> - goto out; >> - } >> + phy->type = igc_phy_i225; >> + >> >> out: >> return ret_val; >> diff --git a/drivers/net/igc/base/igc_phy.c >> b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-10-12 8:39 ` Kevin Traynor @ 2022-10-18 12:54 ` Kevin Traynor 2022-10-18 22:45 ` Mah, Yock Gen 0 siblings, 1 reply; 16+ messages in thread From: Kevin Traynor @ 2022-10-18 12:54 UTC (permalink / raw) To: Mah, Yock Gen, IOTG DPDK Ref App, Zhang, Qi Z; +Cc: dev On 12/10/2022 09:39, Kevin Traynor wrote: > On 12/10/2022 08:45, Mah, Yock Gen wrote: >> >> >> -----Original Message----- >> From: Kevin Traynor <ktraynor@redhat.com> >> Sent: Tuesday, 11 October, 2022 7:05 PM >> To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> >> Cc: dev@dpdk.org >> Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking >> >> On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: >>> From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>> >>> i225 devices have only one PHY vendor. There is unnecessary to check >>> _I_PHY_ID during the link establishment and auto-negotiation process, >>> the checking also caused devices like i225-IT failed. This patch is to >>> remove the mentioned unnecessary checking. >>> >>> Cc: stable@dpdk.org >>> Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>> --- >>> drivers/net/igc/base/igc_i225.c | 15 ++------------- >>> drivers/net/igc/base/igc_phy.c | 6 ++---- >>> 2 files changed, 4 insertions(+), 17 deletions(-) >>> >>> diff --git a/drivers/net/igc/base/igc_i225.c >>> b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb 100644 >>> --- a/drivers/net/igc/base/igc_i225.c >>> +++ b/drivers/net/igc/base/igc_i225.c >>> @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) >>> phy->ops.write_reg = igc_write_phy_reg_gpy; >>> >>> ret_val = igc_get_phy_id(hw); >>> - /* Verify phy id and set remaining function pointers */ >>> - switch (phy->id) { >>> - case I225_I_PHY_ID: >>> - case I226_LM_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; >> >>> - The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. >> >>> - Why are they removed, were they not needed? >> >> >> i225 devices have only one PHY vendor. There is no point checking _I_PHY_ID during the link establishment and auto-negotiation process. >> > > Right, that's clear about the vendor ID check. But it's not clear to me > why the the resulting code like this: > > phy->type = igc_phy_i225; > > and not like this: > > 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; > > So it is using dummy null functions instead: > https://git.dpdk.org/dpdk/tree/drivers/net/igc/base/igc_phy.c#n61 > > Do the device registers not need to be set anymore? > For main branch, it would be nice to have an answer to above. It only adds a small readability benefit by removing some code branches, but does change functionality which adds risk, so I don't think it's a good candidate for stable branches. >>> - /* TODO - complete with GPY PHY information */ >>> - break; >>> - default: >>> - ret_val = -IGC_ERR_PHY; >>> - goto out; >>> - } >>> + phy->type = igc_phy_i225; >>> + >>> >>> out: >>> return ret_val; >>> diff --git a/drivers/net/igc/base/igc_phy.c >>> b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-10-18 12:54 ` Kevin Traynor @ 2022-10-18 22:45 ` Mah, Yock Gen 2022-10-19 8:34 ` Kevin Traynor 0 siblings, 1 reply; 16+ messages in thread From: Mah, Yock Gen @ 2022-10-18 22:45 UTC (permalink / raw) To: Kevin Traynor, IOTG DPDK Ref App, Zhang, Qi Z, Taripin, Samuel; +Cc: dev -----Original Message----- From: Kevin Traynor <ktraynor@redhat.com> Sent: Tuesday, 18 October, 2022 8:54 PM To: Mah, Yock Gen <yock.gen.mah@intel.com>; IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> Cc: dev@dpdk.org Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking On 12/10/2022 09:39, Kevin Traynor wrote: > On 12/10/2022 08:45, Mah, Yock Gen wrote: >> >> >> -----Original Message----- >> From: Kevin Traynor <ktraynor@redhat.com> >> Sent: Tuesday, 11 October, 2022 7:05 PM >> To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z >> <qi.z.zhang@intel.com> >> Cc: dev@dpdk.org >> Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking >> >> On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: >>> From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>> >>> i225 devices have only one PHY vendor. There is unnecessary to check >>> _I_PHY_ID during the link establishment and auto-negotiation >>> process, the checking also caused devices like i225-IT failed. This >>> patch is to remove the mentioned unnecessary checking. >>> >>> Cc: stable@dpdk.org >>> Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>> --- >>> drivers/net/igc/base/igc_i225.c | 15 ++------------- >>> drivers/net/igc/base/igc_phy.c | 6 ++---- >>> 2 files changed, 4 insertions(+), 17 deletions(-) >>> >>> diff --git a/drivers/net/igc/base/igc_i225.c >>> b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb >>> 100644 >>> --- a/drivers/net/igc/base/igc_i225.c >>> +++ b/drivers/net/igc/base/igc_i225.c >>> @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) >>> phy->ops.write_reg = igc_write_phy_reg_gpy; >>> >>> ret_val = igc_get_phy_id(hw); >>> - /* Verify phy id and set remaining function pointers */ >>> - switch (phy->id) { >>> - case I225_I_PHY_ID: >>> - case I226_LM_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; >> >>> - The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. >> >>> - Why are they removed, were they not needed? >> >> >> i225 devices have only one PHY vendor. There is no point checking _I_PHY_ID during the link establishment and auto-negotiation process. >> > > Right, that's clear about the vendor ID check. But it's not clear to > me why the the resulting code like this: > > phy->type = igc_phy_i225; > > and not like this: > > 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; > > So it is using dummy null functions instead: > https://git.dpdk.org/dpdk/tree/drivers/net/igc/base/igc_phy.c#n61 > > Do the device registers not need to be set anymore? > > For main branch, it would be nice to have an answer to above. > It only adds a small readability benefit by removing some code branches, but does change functionality which adds risk, so I don't think it's a good candidate for stable branches. This is not only added readability, but to fix real world issue, we were experiencing i225-IT not runnable issue without patching another case checking as below: +++ b/drivers/net/igc/base/igc_phy.c @@ -1881,6 +1881,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) case I210_I_PHY_ID: /* fall-through */ case I225_I_PHY_ID: + case I225_IT_PHY_ID: However, cleaner solution is to remove those unnecessary checking completely as it does in kernel also https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7c496de538eebd8212dc2a3c9a468386b264d0d4 >>> - /* TODO - complete with GPY PHY information */ >>> - break; >>> - default: >>> - ret_val = -IGC_ERR_PHY; >>> - goto out; >>> - } >>> + phy->type = igc_phy_i225; >>> + >>> >>> out: >>> return ret_val; >>> diff --git a/drivers/net/igc/base/igc_phy.c >>> b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-10-18 22:45 ` Mah, Yock Gen @ 2022-10-19 8:34 ` Kevin Traynor 2022-12-20 15:47 ` Kevin Traynor 0 siblings, 1 reply; 16+ messages in thread From: Kevin Traynor @ 2022-10-19 8:34 UTC (permalink / raw) To: Mah, Yock Gen, IOTG DPDK Ref App, Zhang, Qi Z, Taripin, Samuel; +Cc: dev On 18/10/2022 23:45, Mah, Yock Gen wrote: > > > -----Original Message----- > From: Kevin Traynor <ktraynor@redhat.com> > Sent: Tuesday, 18 October, 2022 8:54 PM > To: Mah, Yock Gen <yock.gen.mah@intel.com>; IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> > Cc: dev@dpdk.org > Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking > > On 12/10/2022 09:39, Kevin Traynor wrote: >> On 12/10/2022 08:45, Mah, Yock Gen wrote: >>> >>> >>> -----Original Message----- >>> From: Kevin Traynor <ktraynor@redhat.com> >>> Sent: Tuesday, 11 October, 2022 7:05 PM >>> To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z >>> <qi.z.zhang@intel.com> >>> Cc: dev@dpdk.org >>> Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking >>> >>> On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: >>>> From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>>> >>>> i225 devices have only one PHY vendor. There is unnecessary to check >>>> _I_PHY_ID during the link establishment and auto-negotiation >>>> process, the checking also caused devices like i225-IT failed. This >>>> patch is to remove the mentioned unnecessary checking. >>>> >>>> Cc: stable@dpdk.org >>>> Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>>> --- >>>> drivers/net/igc/base/igc_i225.c | 15 ++------------- >>>> drivers/net/igc/base/igc_phy.c | 6 ++---- >>>> 2 files changed, 4 insertions(+), 17 deletions(-) >>>> >>>> diff --git a/drivers/net/igc/base/igc_i225.c >>>> b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb >>>> 100644 >>>> --- a/drivers/net/igc/base/igc_i225.c >>>> +++ b/drivers/net/igc/base/igc_i225.c >>>> @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) >>>> phy->ops.write_reg = igc_write_phy_reg_gpy; >>>> >>>> ret_val = igc_get_phy_id(hw); >>>> - /* Verify phy id and set remaining function pointers */ >>>> - switch (phy->id) { >>>> - case I225_I_PHY_ID: >>>> - case I226_LM_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; >>> >>>> - The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. >>> >>>> - Why are they removed, were they not needed? >>> >>> >>> i225 devices have only one PHY vendor. There is no point checking _I_PHY_ID during the link establishment and auto-negotiation process. >>> >> >> Right, that's clear about the vendor ID check. But it's not clear to >> me why the the resulting code like this: >> >> phy->type = igc_phy_i225; >> >> and not like this: >> >> 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; >> >> So it is using dummy null functions instead: >> https://git.dpdk.org/dpdk/tree/drivers/net/igc/base/igc_phy.c#n61 >> >> Do the device registers not need to be set anymore? >> > >> For main branch, it would be nice to have an answer to above. > >> It only adds a small readability benefit by removing some code branches, but does change functionality which adds risk, so I don't think it's a good candidate for stable branches. > > This is not only added readability, but to fix real world issue, we were experiencing i225-IT not runnable issue without patching another case checking as below: > > +++ b/drivers/net/igc/base/igc_phy.c > @@ -1881,6 +1881,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) > case I210_I_PHY_ID: > /* fall-through */ > case I225_I_PHY_ID: > + case I225_IT_PHY_ID: > > However, cleaner solution is to remove those unnecessary checking completely as it does in kernel also https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7c496de538eebd8212dc2a3c9a468386b264d0d4 > ok, you are correct that it is more than readability. I can apply but first it would be good if you can answer the original question and explain why the functionality is changed for I225_I_PHY_ID by removing the function pointers that set the registers. >>>> - /* TODO - complete with GPY PHY information */ >>>> - break; >>>> - default: >>>> - ret_val = -IGC_ERR_PHY; >>>> - goto out; >>>> - } >>>> + phy->type = igc_phy_i225; >>>> + >>>> >>>> out: >>>> return ret_val; >>>> diff --git a/drivers/net/igc/base/igc_phy.c >>>> b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | >>> >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-10-19 8:34 ` Kevin Traynor @ 2022-12-20 15:47 ` Kevin Traynor 2022-12-21 3:01 ` Mah, Yock Gen 0 siblings, 1 reply; 16+ messages in thread From: Kevin Traynor @ 2022-12-20 15:47 UTC (permalink / raw) To: Mah, Yock Gen, IOTG DPDK Ref App, Zhang, Qi Z, Taripin, Samuel; +Cc: dev On 19/10/2022 09:34, Kevin Traynor wrote: > On 18/10/2022 23:45, Mah, Yock Gen wrote: >> >> >> -----Original Message----- >> From: Kevin Traynor <ktraynor@redhat.com> >> Sent: Tuesday, 18 October, 2022 8:54 PM >> To: Mah, Yock Gen <yock.gen.mah@intel.com>; IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> >> Cc: dev@dpdk.org >> Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking >> >> On 12/10/2022 09:39, Kevin Traynor wrote: >>> On 12/10/2022 08:45, Mah, Yock Gen wrote: >>>> >>>> >>>> -----Original Message----- >>>> From: Kevin Traynor <ktraynor@redhat.com> >>>> Sent: Tuesday, 11 October, 2022 7:05 PM >>>> To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z >>>> <qi.z.zhang@intel.com> >>>> Cc: dev@dpdk.org >>>> Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking >>>> >>>> On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: >>>>> From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>>>> >>>>> i225 devices have only one PHY vendor. There is unnecessary to check >>>>> _I_PHY_ID during the link establishment and auto-negotiation >>>>> process, the checking also caused devices like i225-IT failed. This >>>>> patch is to remove the mentioned unnecessary checking. >>>>> >>>>> Cc: stable@dpdk.org >>>>> Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>>>> --- >>>>> drivers/net/igc/base/igc_i225.c | 15 ++------------- >>>>> drivers/net/igc/base/igc_phy.c | 6 ++---- >>>>> 2 files changed, 4 insertions(+), 17 deletions(-) >>>>> >>>>> diff --git a/drivers/net/igc/base/igc_i225.c >>>>> b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb >>>>> 100644 >>>>> --- a/drivers/net/igc/base/igc_i225.c >>>>> +++ b/drivers/net/igc/base/igc_i225.c >>>>> @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) >>>>> phy->ops.write_reg = igc_write_phy_reg_gpy; >>>>> >>>>> ret_val = igc_get_phy_id(hw); >>>>> - /* Verify phy id and set remaining function pointers */ >>>>> - switch (phy->id) { >>>>> - case I225_I_PHY_ID: >>>>> - case I226_LM_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; >>>> >>>>> - The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. >>>> >>>>> - Why are they removed, were they not needed? >>>> >>>> >>>> i225 devices have only one PHY vendor. There is no point checking _I_PHY_ID during the link establishment and auto-negotiation process. >>>> >>> >>> Right, that's clear about the vendor ID check. But it's not clear to >>> me why the the resulting code like this: >>> >>> phy->type = igc_phy_i225; >>> >>> and not like this: >>> >>> 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; >>> >>> So it is using dummy null functions instead: >>> https://git.dpdk.org/dpdk/tree/drivers/net/igc/base/igc_phy.c#n61 >>> >>> Do the device registers not need to be set anymore? >>> >> >>> For main branch, it would be nice to have an answer to above. >> >>> It only adds a small readability benefit by removing some code branches, but does change functionality which adds risk, so I don't think it's a good candidate for stable branches. >> >> This is not only added readability, but to fix real world issue, we were experiencing i225-IT not runnable issue without patching another case checking as below: >> >> +++ b/drivers/net/igc/base/igc_phy.c >> @@ -1881,6 +1881,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) >> case I210_I_PHY_ID: >> /* fall-through */ >> case I225_I_PHY_ID: >> + case I225_IT_PHY_ID: >> >> However, cleaner solution is to remove those unnecessary checking completely as it does in kernel also https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=7c496de538eebd8212dc2a3c9a468386b264d0d4 >> > > ok, you are correct that it is more than readability. I can apply but > first it would be good if you can answer the original question and > explain why the functionality is changed for I225_I_PHY_ID by removing > the function pointers that set the registers. > Hi, I didn't apply this to DPDK 21.11.3 because there was no explanation of why the registers were changing after asking multiple times. If it is required for a later 21.11 LTS release, please send a backport to stable mailing list with an updated commit message explaining the changes. thanks, Kevin. >>>>> - /* TODO - complete with GPY PHY information */ >>>>> - break; >>>>> - default: >>>>> - ret_val = -IGC_ERR_PHY; >>>>> - goto out; >>>>> - } >>>>> + phy->type = igc_phy_i225; >>>>> + >>>>> >>>>> out: >>>>> return ret_val; >>>>> diff --git a/drivers/net/igc/base/igc_phy.c >>>>> b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a 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) | >>>> >>> >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
* RE: [PATCH v2] IGC: Remove I225_I_PHY_ID checking 2022-12-20 15:47 ` Kevin Traynor @ 2022-12-21 3:01 ` Mah, Yock Gen 0 siblings, 0 replies; 16+ messages in thread From: Mah, Yock Gen @ 2022-12-21 3:01 UTC (permalink / raw) To: Kevin Traynor, IOTG DPDK Ref App, Zhang, Qi Z, Taripin, Samuel; +Cc: dev -----Original Message----- From: Kevin Traynor <ktraynor@redhat.com> Sent: Tuesday, 20 December, 2022 11:48 PM To: Mah, Yock Gen <yock.gen.mah@intel.com>; IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Taripin, Samuel <samuel.taripin@intel.com> Cc: dev@dpdk.org Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking On 19/10/2022 09:34, Kevin Traynor wrote: > On 18/10/2022 23:45, Mah, Yock Gen wrote: >> >> >> -----Original Message----- >> From: Kevin Traynor <ktraynor@redhat.com> >> Sent: Tuesday, 18 October, 2022 8:54 PM >> To: Mah, Yock Gen <yock.gen.mah@intel.com>; IOTG DPDK Ref App >> <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com> >> Cc: dev@dpdk.org >> Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking >> >> On 12/10/2022 09:39, Kevin Traynor wrote: >>> On 12/10/2022 08:45, Mah, Yock Gen wrote: >>>> >>>> >>>> -----Original Message----- >>>> From: Kevin Traynor <ktraynor@redhat.com> >>>> Sent: Tuesday, 11 October, 2022 7:05 PM >>>> To: IOTG DPDK Ref App <iotg.dpdk.ref.app@intel.com>; Zhang, Qi Z >>>> <qi.z.zhang@intel.com> >>>> Cc: dev@dpdk.org >>>> Subject: Re: [PATCH v2] IGC: Remove I225_I_PHY_ID checking >>>> >>>> On 31/08/2022 23:51, iotg.dpdk.ref.app@intel.com wrote: >>>>> From: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>>>> >>>>> i225 devices have only one PHY vendor. There is unnecessary to >>>>> check _I_PHY_ID during the link establishment and auto-negotiation >>>>> process, the checking also caused devices like i225-IT failed. >>>>> This patch is to remove the mentioned unnecessary checking. >>>>> >>>>> Cc: stable@dpdk.org >>>>> Signed-off-by: NSWE SWS DPDK Dev <iotg.dpdk.ref.app@intel.com> >>>>> --- >>>>> drivers/net/igc/base/igc_i225.c | 15 ++------------- >>>>> drivers/net/igc/base/igc_phy.c | 6 ++---- >>>>> 2 files changed, 4 insertions(+), 17 deletions(-) >>>>> >>>>> diff --git a/drivers/net/igc/base/igc_i225.c >>>>> b/drivers/net/igc/base/igc_i225.c index 5f3d535490..af26602afb >>>>> 100644 >>>>> --- a/drivers/net/igc/base/igc_i225.c >>>>> +++ b/drivers/net/igc/base/igc_i225.c >>>>> @@ -173,19 +173,8 @@ static s32 igc_init_phy_params_i225(struct igc_hw *hw) >>>>> phy->ops.write_reg = igc_write_phy_reg_gpy; >>>>> >>>>> ret_val = igc_get_phy_id(hw); >>>>> - /* Verify phy id and set remaining function pointers */ >>>>> - switch (phy->id) { >>>>> - case I225_I_PHY_ID: >>>>> - case I226_LM_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; >>>> >>>>> - The commit log says it is removing a check on the ID, but it does not say why these function pointers are being removed. >>>> >>>>> - Why are they removed, were they not needed? >>>> >>>> >>>> i225 devices have only one PHY vendor. There is no point checking _I_PHY_ID during the link establishment and auto-negotiation process. >>>> >>> >>> Right, that's clear about the vendor ID check. But it's not clear to >>> me why the the resulting code like this: >>> >>> phy->type = igc_phy_i225; >>> >>> and not like this: >>> >>> 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; >>> >>> So it is using dummy null functions instead: >>> https://git.dpdk.org/dpdk/tree/drivers/net/igc/base/igc_phy.c#n61 >>> >>> Do the device registers not need to be set anymore? >>> >> >>> For main branch, it would be nice to have an answer to above. >> >>> It only adds a small readability benefit by removing some code branches, but does change functionality which adds risk, so I don't think it's a good candidate for stable branches. >> >> This is not only added readability, but to fix real world issue, we were experiencing i225-IT not runnable issue without patching another case checking as below: >> >> +++ b/drivers/net/igc/base/igc_phy.c >> @@ -1881,6 +1881,7 @@ s32 igc_phy_force_speed_duplex_m88(struct igc_hw *hw) >> case I210_I_PHY_ID: >> /* fall-through */ >> case I225_I_PHY_ID: >> + case I225_IT_PHY_ID: >> >> However, cleaner solution is to remove those unnecessary checking >> completely as it does in kernel also >> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/co >> mmit/?id=7c496de538eebd8212dc2a3c9a468386b264d0d4 >> > > ok, you are correct that it is more than readability. I can apply but > first it would be good if you can answer the original question and > explain why the functionality is changed for I225_I_PHY_ID by removing > the function pointers that set the registers. > >Hi, I didn't apply this to DPDK 21.11.3 because there was no explanation of why the registers were changing after asking multiple times. I>f it is required for a later 21.11 LTS release, please send a backport to stable mailing list with an updated commit message explaining the changes. >thanks, >Kevin. Apology of the late reply, we were missed out your last message. Yes, we will re-submit the patch for 21.11 LTS with clearer explanation. Thanks, Mah >>>>> - /* TODO - complete with GPY PHY information */ >>>>> - break; >>>>> - default: >>>>> - ret_val = -IGC_ERR_PHY; >>>>> - goto out; >>>>> - } >>>>> + phy->type = igc_phy_i225; >>>>> + >>>>> >>>>> out: >>>>> return ret_val; >>>>> diff --git a/drivers/net/igc/base/igc_phy.c >>>>> b/drivers/net/igc/base/igc_phy.c index 43bbe69bca..2906bae21a >>>>> 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) | >>>> >>> >> > ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2022-12-21 10:19 UTC | newest] Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-08-29 8:14 [PATCH] IGC: Remove I225_I_PHY_ID checking iotg.dpdk.ref.app 2022-08-30 11:17 ` Zhang, Qi Z 2022-08-31 22:42 ` Mah, Yock Gen 2022-09-01 8:22 ` David Marchand 2022-09-02 7:01 ` David Marchand 2022-08-31 22:51 ` [PATCH v2] " iotg.dpdk.ref.app 2022-09-02 0:18 ` [PATCH v3] " yock.gen.mah 2022-09-04 1:55 ` Zhang, Qi Z 2022-10-11 11:04 ` [PATCH v2] " Kevin Traynor 2022-10-12 7:45 ` Mah, Yock Gen 2022-10-12 8:39 ` Kevin Traynor 2022-10-18 12:54 ` Kevin Traynor 2022-10-18 22:45 ` Mah, Yock Gen 2022-10-19 8:34 ` Kevin Traynor 2022-12-20 15:47 ` Kevin Traynor 2022-12-21 3:01 ` Mah, Yock Gen
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).