[dpdk-dev] [PATCH 1/2] net/ixgbe: fix x550 code to handle unidentified PHY
Zhang, Qi Z
qi.z.zhang at intel.com
Fri Nov 2 15:11:50 CET 2018
> -----Original Message-----
> From: Luca Boccassi [mailto:bluca at debian.org]
> Sent: Thursday, November 1, 2018 9:04 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>; Luca
> Boccassi <bluca at debian.org>; stable at dpdk.org
> Subject: [PATCH 1/2] net/ixgbe: fix x550 code to handle unidentified PHY
>
> ixgbe_identify_phy_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
>
> drivers/net/ixgbe/base/ixgbe_x550.c | 19 ++++++++++++++++---
> 1 file changed, 16 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/ixgbe/base/ixgbe_x550.c
> b/drivers/net/ixgbe/base/ixgbe_x550.c
> index f7b98af52..83b394861 100644
> --- a/drivers/net/ixgbe/base/ixgbe_x550.c
> +++ b/drivers/net/ixgbe/base/ixgbe_x550.c
> @@ -315,13 +315,21 @@ STATIC void ixgbe_setup_mux_ctl(struct ixgbe_hw
> *hw)
> */
> STATIC s32 ixgbe_identify_phy_x550em(struct ixgbe_hw *hw) {
> + s32 status;
> +
> hw->mac.ops.set_lan_id(hw);
>
> ixgbe_read_mng_if_sel_x550em(hw);
>
> switch (hw->device_id) {
> case IXGBE_DEV_ID_X550EM_A_SFP:
> - return ixgbe_identify_sfp_module_X550em(hw);
> + status = ixgbe_identify_sfp_module_X550em(hw);
> + /* Set PHY type none if no PHY detected */
> + if (hw->phy.type == ixgbe_phy_unknown) {
> + hw->phy.type = ixgbe_phy_none;
> + return IXGBE_SUCCESS;
> + }
Why this can't be handled at caller, why we replace phy_unknown by phy_none only for x550?
> + return status;
> case IXGBE_DEV_ID_X550EM_X_SFP:
> /* set up for CS4227 usage */
> ixgbe_setup_mux_ctl(hw);
> @@ -329,8 +337,13 @@ STATIC s32 ixgbe_identify_phy_x550em(struct
> ixgbe_hw *hw)
> /* Fallthrough */
>
> case IXGBE_DEV_ID_X550EM_A_SFP_N:
> - return ixgbe_identify_sfp_module_X550em(hw);
> - break;
> + status = ixgbe_identify_sfp_module_X550em(hw);
> + /* Set PHY type none if no PHY detected */
> + if (hw->phy.type == ixgbe_phy_unknown) {
> + hw->phy.type = ixgbe_phy_none;
> + return IXGBE_SUCCESS;
> + }
> + return status;
> case IXGBE_DEV_ID_X550EM_X_KX4:
> hw->phy.type = ixgbe_phy_x550em_kx4;
> break;
> --
> 2.19.1
More information about the dev
mailing list