[dpdk-dev] [dpdk-stable] [PATCH v3 1/2] net/ixgbe: fix x550 code to handle unidentified PHY

Luca Boccassi bluca at debian.org
Mon Nov 5 19:08:29 CET 2018


On Mon, 2018-11-05 at 17:41 +0000, Zhang, Qi Z wrote:
> > -----Original Message-----
> > From: Luca Boccassi [mailto:bluca at debian.org]
> > Sent: Friday, November 2, 2018 8:19 AM
> > To: dev at dpdk.org
> > Cc: Lu, Wenzhuo <wenzhuo.lu at intel.com>; Ananyev, Konstantin
> > <konstantin.ananyev at intel.com>; Zhang, Qi Z <qi.z.zhang at intel.com>;
> > 3chas3 at gmail.com; Luca Boccassi <bluca at debian.org>; stable at dpdk.org
> > Subject: [PATCH v3 1/2] net/ixgbe: fix x550 code to handle
> > unidentified PHY
> > 
> > ixgbe_identify_sfp_module_X550em() was missing the code to handle
> > unidentified PHY that has been there in 82599 so it was not able to
> > complete
> > initialization of ixgbe sequence if no sfp plugged in.
> > Port it over to return an appropriate type and complete init
> > sequence
> > properly.
> > 
> > Fixes: d2e72774e58c ("ixgbe/base: support X550")
> > Cc: stable at dpdk.org
> > 
> > Signed-off-by: Luca Boccassi <bluca at debian.org>
> > ---
> > v2: refresh to remove merge conflict with master
> > v3: coalesce fix into ixgbe_identify_sfp_module_X550em to avoid
> >     code duplication, improve comment
> > 
> >  drivers/net/ixgbe/base/ixgbe_x550.c | 6 ++++++
> >  1 file changed, 6 insertions(+)
> > 
> > diff --git a/drivers/net/ixgbe/base/ixgbe_x550.c
> > b/drivers/net/ixgbe/base/ixgbe_x550.c
> > index f7b98af52..a88d5c86a 100644
> > --- a/drivers/net/ixgbe/base/ixgbe_x550.c
> > +++ b/drivers/net/ixgbe/base/ixgbe_x550.c
> > @@ -1561,6 +1561,12 @@ s32 ixgbe_identify_sfp_module_X550em(struct
> > ixgbe_hw *hw)
> > 
> >  	status = ixgbe_identify_module_generic(hw);
> > 
> > +	/* Set PHY type none if no PHY detected to allow init
> > without SFP */
> > +	if (hw->phy.type == ixgbe_phy_unknown) {
> > +		hw->phy.type = ixgbe_phy_none;
> 
> Set PHY type to none for a device that does have PHY looks weird.  
> does ixgeb_phy_generic works here?
> 
> Where is failure you met with ixgbe_phy_unknown?

Yes it is a bit weird, but it works :-)

The issue is that the PMD fails to initialise when there is no SFP
plugged, and then it will always stay in that failed state when an SFP
is later plugged in, and it won't work until the machine is rebooted
with the SFP plugged in.

The logs (with an older DPDK version):

PMD: eth_ixgbe_dev_init(): Hardware Initialization Failure: -20
EAL: Requested device 0000:04:00.0 cannot be used

The kernel driver didn't like it either:

[    7.579782] ixgbe 0000:04:00.0: Multiqueue Enabled: Rx Queue count = 8, Tx Queue count = 8
[    7.649766] ixgbe 0000:04:00.0: MAC: 5, PHY: 0, PBA No: 020A00-000
[    7.649774] ixgbe 0000:04:00.0: 00:25:90:5e:05:20
[    8.763790] ixgbe 0000:04:00.0 0000:04:00.0 (uninitialized): CS4227 reset did not complete
[    8.772051] ixgbe 0000:04:00.0 0000:04:00.0 (uninitialized): CS4227 reset failed: -3
[    9.059374] ixgbe 0000:04:00.0: Intel(R) 10 Gigabit Network Connection

But with the kernel driver, if an SFP is plugged in later then the
interface works correctly.

With this series, an SFP can be plugged in after booting and
initialising the DPDK application.

-- 
Kind regards,
Luca Boccassi


More information about the dev mailing list