From patchwork Fri Nov 2 15:18:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Boccassi X-Patchwork-Id: 47749 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 07A9B7CDA; Fri, 2 Nov 2018 16:18:56 +0100 (CET) Received: from mail-wr1-f66.google.com (mail-wr1-f66.google.com [209.85.221.66]) by dpdk.org (Postfix) with ESMTP id ED78B6CD8; Fri, 2 Nov 2018 16:18:53 +0100 (CET) Received: by mail-wr1-f66.google.com with SMTP id y15-v6so2352108wru.9; Fri, 02 Nov 2018 08:18:53 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=+jZgh+nrcqLd/ZpcIxsZCq59YG0lxR3orkc4+cKQzZ8=; b=EoFMkGgurZUQvwISuLZqN3QrB7JiQaNgqEGv24gkKw4bpEmZkQhvDHH4n5CUOCIpCb tq6BLF4IEzFetLBoy5+g6KumhrJ20AmTasMYdzq4c3uBVwsbTjMAnHZwd5sMWsHQVYVC pEOxbj0eLMghLjGLO5yF1PPBfV36weijoIa90MkiJ73SMGvVr0KyJ3qsQ7WqFAlT4BeN 8IWLPYVWD7EE3cV5aFFMuko3G76Vvqpr6C1U5WahzA5gO/gq4u7hQUD3Wq1b9VhTvNrz Ajmm+cK8z87RkES5bTp8yh+EtM3B3RrC2SUoAqxb9U5Zbnx/T5Ws/L7eaLnrgI0neOj4 RgAQ== X-Gm-Message-State: AGRZ1gIfqctVm2q+4fJ1Y3WNdErcBakgebwYBNEhhhGBwlv87n/bVhsu Ko5d1uOm0rd3FGsTgpYugAJaj5stD+I= X-Google-Smtp-Source: AJdET5cyxGNaoqn9qVXMdDiKmgPF3QCgaOAZftiGBVdSqM7fRgJh4lwSnADqC+r7PvyZ/aGMR/V6LQ== X-Received: by 2002:adf:fc0c:: with SMTP id i12-v6mr10630432wrr.145.1541171933181; Fri, 02 Nov 2018 08:18:53 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id j13sm21896257wrx.5.2018.11.02.08.18.51 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 02 Nov 2018 08:18:51 -0700 (PDT) From: Luca Boccassi To: dev@dpdk.org Cc: wenzhuo.lu@intel.com, konstantin.ananyev@intel.com, qi.z.zhang@intel.com, 3chas3@gmail.com, Luca Boccassi , stable@dpdk.org Date: Fri, 2 Nov 2018 15:18:47 +0000 Message-Id: <20181102151848.18024-1-bluca@debian.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20180815170932.23536-1-bluca@debian.org> References: <20180815170932.23536-1-bluca@debian.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 1/2] net/ixgbe: fix x550 code to handle unidentified PHY X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" 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@dpdk.org Signed-off-by: Luca Boccassi --- 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; + return IXGBE_SUCCESS; + } + if (status != IXGBE_SUCCESS) return status; From patchwork Fri Nov 2 15:18:48 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Boccassi X-Patchwork-Id: 47750 X-Patchwork-Delegate: qi.z.zhang@intel.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id B03791B137; Fri, 2 Nov 2018 16:18:57 +0100 (CET) Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by dpdk.org (Postfix) with ESMTP id 241951B114; Fri, 2 Nov 2018 16:18:56 +0100 (CET) Received: by mail-wm1-f66.google.com with SMTP id v24-v6so2310717wmh.3; Fri, 02 Nov 2018 08:18:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=r1iAnViIaf+2/WCyFr1YhBo9pkLSonzgPl8kqbIOpYk=; b=WvCeIn+7MCQJV9PH6vmv+Ky2i9L1RRcVd80fzY2cyBe9eRxbX3PuAeGrYaHjbYmzS6 O+RndxTjYVkNOQZMfGksvWnr2AYNmfewM3wMpggaH0aNJQTg5xl6hem6+AMcQMW/Alou TEOl7+o8gX2DZgOVHXj9BxnKIhkQPglnV/R0rH0GJCFS6kHgjBhlJ9IWZunyBDmsKMZb C/+Kv8UW+wHMRm72OjWXOjHOjMqNLN6JpNCBHfaWe9lZi32sQ+vx1pBW6sfNp9rOtcdD t1N0BDEKiRasXDMvre3hjrvR6viJTJPGjO60s3kdPvqbnImhg9fKZzjUIejZLSlWl/h+ WnGA== X-Gm-Message-State: AGRZ1gKUMVi/rS4ITp9YUpwvv+v62AFSEIXAqsRsMwb/GNj4diZdIp64 x4LE6xN/DzHOQK1NF//i8c/BisRBdNU= X-Google-Smtp-Source: AJdET5cNu8NYqsbdVcLRw91NycWHowCvuYq1B2yrXmHatiUmaLyRs2k/wYfZcgrfqQN8dK1R0L9Iug== X-Received: by 2002:a1c:174c:: with SMTP id 73-v6mr86015wmx.105.1541171935271; Fri, 02 Nov 2018 08:18:55 -0700 (PDT) Received: from localhost ([88.98.246.218]) by smtp.gmail.com with ESMTPSA id c8-v6sm46410072wrb.6.2018.11.02.08.18.53 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 02 Nov 2018 08:18:54 -0700 (PDT) From: Luca Boccassi To: dev@dpdk.org Cc: wenzhuo.lu@intel.com, konstantin.ananyev@intel.com, qi.z.zhang@intel.com, 3chas3@gmail.com, Luca Boccassi , stable@dpdk.org Date: Fri, 2 Nov 2018 15:18:48 +0000 Message-Id: <20181102151848.18024-2-bluca@debian.org> X-Mailer: git-send-email 2.19.1 In-Reply-To: <20181102151848.18024-1-bluca@debian.org> References: <20180815170932.23536-1-bluca@debian.org> <20181102151848.18024-1-bluca@debian.org> MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH v3 2/2] net/ixgbe: add LHA ID to x550 code X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" ixgbe is able to recognize 1G SX and LX id, but it is missing the LHA. Add it, so that it can handle LHA sfp plugin. Fixes: d2e72774e58c ("ixgbe/base: support X550") Cc: stable@dpdk.org Signed-off-by: Luca Boccassi --- drivers/net/ixgbe/base/ixgbe_82599.c | 2 ++ drivers/net/ixgbe/base/ixgbe_phy.c | 13 +++++++++++++ drivers/net/ixgbe/base/ixgbe_phy.h | 1 + drivers/net/ixgbe/base/ixgbe_type.h | 2 ++ drivers/net/ixgbe/base/ixgbe_x550.c | 4 ++++ 5 files changed, 22 insertions(+) diff --git a/drivers/net/ixgbe/base/ixgbe_82599.c b/drivers/net/ixgbe/base/ixgbe_82599.c index 7de753fd3..96bdde62c 100644 --- a/drivers/net/ixgbe/base/ixgbe_82599.c +++ b/drivers/net/ixgbe/base/ixgbe_82599.c @@ -392,6 +392,8 @@ s32 ixgbe_get_link_capabilities_82599(struct ixgbe_hw *hw, /* Check if 1G SFP module. */ if (hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core1 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || diff --git a/drivers/net/ixgbe/base/ixgbe_phy.c b/drivers/net/ixgbe/base/ixgbe_phy.c index 6cdd8fbab..dd118f917 100644 --- a/drivers/net/ixgbe/base/ixgbe_phy.c +++ b/drivers/net/ixgbe/base/ixgbe_phy.c @@ -1402,6 +1402,13 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) else hw->phy.sfp_type = ixgbe_sfp_type_1g_lx_core1; + } else if (comp_codes_1g & IXGBE_SFF_1GBASELHA_CAPABLE) { + if (hw->bus.lan_id == 0) + hw->phy.sfp_type = + ixgbe_sfp_type_1g_lha_core0; + else + hw->phy.sfp_type = + ixgbe_sfp_type_1g_lha_core1; } else { hw->phy.sfp_type = ixgbe_sfp_type_unknown; } @@ -1489,6 +1496,8 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) if (comp_codes_10g == 0 && !(hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || @@ -1508,6 +1517,8 @@ s32 ixgbe_identify_sfp_module_generic(struct ixgbe_hw *hw) if (!(enforce_sfp & IXGBE_DEVICE_CAPS_ALLOW_ANY_SFP) && !(hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_cu_core1 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || @@ -1835,11 +1846,13 @@ s32 ixgbe_get_sfp_init_sequence_offsets(struct ixgbe_hw *hw, */ if (sfp_type == ixgbe_sfp_type_da_act_lmt_core0 || sfp_type == ixgbe_sfp_type_1g_lx_core0 || + sfp_type == ixgbe_sfp_type_1g_lha_core0 || sfp_type == ixgbe_sfp_type_1g_cu_core0 || sfp_type == ixgbe_sfp_type_1g_sx_core0) sfp_type = ixgbe_sfp_type_srlr_core0; else if (sfp_type == ixgbe_sfp_type_da_act_lmt_core1 || sfp_type == ixgbe_sfp_type_1g_lx_core1 || + sfp_type == ixgbe_sfp_type_1g_lha_core1 || sfp_type == ixgbe_sfp_type_1g_cu_core1 || sfp_type == ixgbe_sfp_type_1g_sx_core1) sfp_type = ixgbe_sfp_type_srlr_core1; diff --git a/drivers/net/ixgbe/base/ixgbe_phy.h b/drivers/net/ixgbe/base/ixgbe_phy.h index 132fa542b..f1605f2cc 100644 --- a/drivers/net/ixgbe/base/ixgbe_phy.h +++ b/drivers/net/ixgbe/base/ixgbe_phy.h @@ -41,6 +41,7 @@ #define IXGBE_SFF_1GBASESX_CAPABLE 0x1 #define IXGBE_SFF_1GBASELX_CAPABLE 0x2 #define IXGBE_SFF_1GBASET_CAPABLE 0x8 +#define IXGBE_SFF_1GBASELHA_CAPABLE 0x10 #define IXGBE_SFF_10GBASESR_CAPABLE 0x10 #define IXGBE_SFF_10GBASELR_CAPABLE 0x20 #define IXGBE_SFF_SOFT_RS_SELECT_MASK 0x8 diff --git a/drivers/net/ixgbe/base/ixgbe_type.h b/drivers/net/ixgbe/base/ixgbe_type.h index cee6ba2e0..077b8f01c 100644 --- a/drivers/net/ixgbe/base/ixgbe_type.h +++ b/drivers/net/ixgbe/base/ixgbe_type.h @@ -3724,6 +3724,8 @@ enum ixgbe_sfp_type { ixgbe_sfp_type_1g_sx_core1 = 12, ixgbe_sfp_type_1g_lx_core0 = 13, ixgbe_sfp_type_1g_lx_core1 = 14, + ixgbe_sfp_type_1g_lha_core0 = 15, + ixgbe_sfp_type_1g_lha_core1 = 16, ixgbe_sfp_type_not_present = 0xFFFE, ixgbe_sfp_type_unknown = 0xFFFF }; diff --git a/drivers/net/ixgbe/base/ixgbe_x550.c b/drivers/net/ixgbe/base/ixgbe_x550.c index a88d5c86a..1114d3faf 100644 --- a/drivers/net/ixgbe/base/ixgbe_x550.c +++ b/drivers/net/ixgbe/base/ixgbe_x550.c @@ -1534,6 +1534,8 @@ STATIC s32 ixgbe_supported_sfp_modules_X550em(struct ixgbe_hw *hw, bool *linear) case ixgbe_sfp_type_1g_sx_core1: case ixgbe_sfp_type_1g_lx_core0: case ixgbe_sfp_type_1g_lx_core1: + case ixgbe_sfp_type_1g_lha_core0: + case ixgbe_sfp_type_1g_lha_core1: *linear = false; break; case ixgbe_sfp_type_unknown: @@ -1880,6 +1882,8 @@ s32 ixgbe_get_link_capabilities_X550em(struct ixgbe_hw *hw, /* Check if 1G SFP module. */ if (hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_sx_core1 + || hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core0 || + hw->phy.sfp_type == ixgbe_sfp_type_1g_lha_core1 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core0 || hw->phy.sfp_type == ixgbe_sfp_type_1g_lx_core1) { *speed = IXGBE_LINK_SPEED_1GB_FULL;