From patchwork Wed Jan 2 16:00:55 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Meunier X-Patchwork-Id: 49386 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 D427D1B120; Wed, 2 Jan 2019 17:01:16 +0100 (CET) Received: from EUR01-HE1-obe.outbound.protection.outlook.com (mail-eopbgr130131.outbound.protection.outlook.com [40.107.13.131]) by dpdk.org (Postfix) with ESMTP id 9CD741B0F8 for ; Wed, 2 Jan 2019 17:01:15 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector1-nokia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Nch9yY4Yj2tz2tbdooNsX0VWZsP81Tb8rvXGveSMrfc=; b=JBOP7g2W6vIgf1i+o4VKsTq1SsfB4Opughrd9L27ehX2xGJmcLhg5y/uXzQoPcRbAc+8EF8jrHr6o0vq7sRKJ7gIKpWPjndnUCtGcZd6a+ExCtZhQsdq/uhcKuBttno32LPRAsw4CkVXGTRk7/jFq983zKCfcdO7pHtMSivwX+k= Received: from HE1PR07CA0030.eurprd07.prod.outlook.com (2603:10a6:7:66::16) by DB6PR0701MB2774.eurprd07.prod.outlook.com (2603:10a6:4:24::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1495.5; Wed, 2 Jan 2019 16:01:14 +0000 Received: from DB5EUR03FT044.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::206) by HE1PR07CA0030.outlook.office365.com (2603:10a6:7:66::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1516.2 via Frontend Transport; Wed, 2 Jan 2019 16:01:14 +0000 Received-SPF: Pass (protection.outlook.com: domain of nokia.com designates 131.228.2.241 as permitted sender) receiver=protection.outlook.com; client-ip=131.228.2.241; helo=fihe3nok0735.emea.nsn-net.net; Received: from fihe3nok0735.emea.nsn-net.net (131.228.2.241) by DB5EUR03FT044.mail.protection.outlook.com (10.152.21.167) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1382.18 via Frontend Transport; Wed, 2 Jan 2019 16:01:13 +0000 Received: from lfs-up-04.localdomain ([10.157.84.234]) by fihe3nok0735.emea.nsn-net.net (GMO) with ESMTP id x02G1CYZ017399; Wed, 2 Jan 2019 16:01:12 GMT Received: by lfs-up-04.localdomain (Postfix, from userid 62146483) id 11E9C5FA9; Wed, 2 Jan 2019 18:01:12 +0200 (EET) From: Julien Meunier To: , CC: Date: Wed, 2 Jan 2019 18:00:55 +0200 Message-ID: <20190102160055.30301-1-julien.meunier@nokia.com> X-Mailer: git-send-email 2.10.2 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(376002)(136003)(346002)(39860400002)(396003)(2980300002)(3190300001)(189003)(199004)(53936002)(42186006)(110136005)(316002)(16586007)(86362001)(106466001)(50466002)(4326008)(5660300001)(52956003)(47776003)(44832011)(486006)(36756003)(6266002)(48376002)(106002)(50226002)(305945005)(2616005)(478600001)(356004)(2906002)(8936002)(6666004)(81166006)(26826003)(81156014)(51416003)(103686004)(8676002)(6346003)(186003)(97736004)(26005)(68736007)(14444005)(126002)(476003)(336012)(1076003); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0701MB2774; H:fihe3nok0735.emea.nsn-net.net; FPR:; SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; MX:1; A:1; X-Microsoft-Exchange-Diagnostics: 1; DB5EUR03FT044; 1:X81uMrsp7PVBBxj2lH1KwMwyGAh1jsFEoK7MO8LJzjMuIxDDnT4Vt5sKIn7EVeB4bb4f48A6woTZf15Eqer7TMZ9IIydyUS0I7Nr3Xctw/+A6evpNkobJMp4IMlmAcTl MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: bfb1a8dd-3b20-4c78-36c1-08d670cb856d X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600109)(711020)(4608076)(4709027)(2017052603328); SRVR:DB6PR0701MB2774; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2774; 3:M2HWL/5HYT5ckxC6h72B8jbbWixpuW6lGqP9S1Lfm+qiKhfuSOJhuHJXPmTQJ/zWAwKXnVrcbSXnh1dcnTxCsjMfki6D9a8Sncz6kFptpODfeVhf4zOpvwdeQypdUeojUDdJ+gQrKPQb4aBSHeXCpsdZMgOTYJelZg2zk/C3j/P0FW9bGwNdwKVgdKf/tfIYhyD/ShDElJxwZbwXCwzUWIJTREbbSmQ1MhYKyJ/iy3Gknnr2gg00zoz984QM1c1L3uXI5tXaRd1QNBKl3btt+pzrRvWmpMBpUKFv1FhfJRUuqxGKSuloH68A6qRDd7nlB3TGT8Ea54qPofWaZ+v7JoF+YOSsw4GQFjAXt7ZjcLQ/oRiN4xxd9XaW2VMoi9Nq; 25:pS49cn1pCZQDAnCJYpEfZA1aByJhFS+yi+C3TqhLSLtCIyvF4E/YRiHSUWi1siokUcN1aV5SUQJUWgmg9b2XsjkDAkdKKIpNEuxzDUv0hKhY7/vyxPfW0Ru2cUz8Qo2gWjxh8P9vQ+WyXOYxHK+EtsBJPutao5cyuj0PJSIMakL6+QgrxCF8Q7CaRDEv/vTKAkoaJ5n6SIdfeZCRZKTWjBV6Cfm/voDRowLWyRfZy0zbbdrwC7CY/2ddV9JpqzqBiHwgu14OX6gL0pnDhdVf9Od+MmVrbZQb6VUT3cg3FqaG4umlF4NQH9oY2kiqRYaAnCNs34mN39UygKWKQRi9ow== X-MS-TrafficTypeDiagnostic: DB6PR0701MB2774: X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2774; 31:oUR5tp20qQ/nM19x7AkQ8c/vFVxzdZSREq02xLO6PeuLgGGqN3+S3DTK5EEctOQSIxZRI/YKdZILlSM2z7AvBhv5bqPDx2f//R5XIVfi5FOLPTKu6qhQewtZq7aR9Pi679frMQRpjNZuVtWSAywu/J7HTH9rpYPIjNV1P+hsV5hEEOGFgpJWwE1NWof9DhVtS1zNb1/K/JY2gnTjvg8OPAXGy5WQ9gWgtTEKW0r9B3w=; 20:0HOKxvBOWvQfAIQs1HPuEkroOdrQ+JyCYNxfin9ihiBhKv0Pd1YVQfUgsQLVrqNA36GvNwEt5RS000YDk7fBgtXUmFTWCFEIUw8TOSZUorAd2jqo9atl8hXd572RXKI+N29/4LFjAeYptHWCulmF2wlb2te++piJCVRP/sxdHU8OR2uhjN/YMAGeEHV4qkcCnkr6k9mygfvi42KJ1H5oFz2Zt/UDeGfpZanFjlFJS/0Hyb1ZZZhgzN88rfezBxi/CxJYn3OjMuDI0R8JifKbs8GCgyDoF2hWBrfbv/RJM868F7ifWYBGMdq0BWYV8i12VK7jkBPqYoXWsOVKzCz16+k1h2rR/Wb8PXG4MWHqKXu9N+w1KFb6EbcVitwNVDvTJpE9GRaoNCbh6WhyJubZmykI7JfDeQ/HlafIE+67P50PcNipjev4TOo7ZttIwfMds8WHmZ49iQnnyxkSUwlNUcf2vOFiIXkYHp5gGKumYGGaTiB1She3SGbqjc4LNSMxKMjja+uxwkE8S8AM1eCekq5w3/dWhSwbchD2JeLLG4MEppcxEOudobfiEYa4Ec/KqA/h9mDz7poR5z/UXFAOMG+nN4+UGq++SnbU2h8Iogo= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(8211001083)(3230021)(908002)(999002)(11241501185)(806100)(5005026)(6040522)(8220060)(2401047)(8121501046)(3231475)(944501520)(52105112)(93006095)(93004095)(3002001)(10201501046)(6055026)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123560045)(20161123562045)(20161123564045)(201708071742011)(7699051)(76991095); SRVR:DB6PR0701MB2774; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0701MB2774; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2774; 4:r+tjacHP4kYrG3DjuzLOHMRc7yz8KO9ZwlHlBI7MtZkuXF8kL9OBZqEfiel+gn7K1HZWhR5hJuvR7e7neBPTyLd4vxBywvq0XshmfvtjfDwEI1oi3sk84xa5KLMPr+Oe921aAvqWUzqgeRN1dhG9YZaAP0XJXQz5QpsyVcvOFigW5/zOWP0YKc/6Vdz93thkFdgwLcwBLSWefISk5Dv060lJ7v2kQG/xvrzuAz0gQ+75L/Zhc0QSBC7RTaRVNa+NPJqrqidgHIQm6HxD+db4IvNEkDf5d3y/LrXrlE4hlvr2vd6ppsaOusgkWbq1OFEP X-Forefront-PRVS: 0905A6B2C7 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0701MB2774; 23:AmuTAHCXIwSXpg2wc86Zt0UHNMsQTO2G86eNi+7?= F9ecR9EMbu6CttKs4wXY9zMtmMKmWV+4ipZIINc6nlBLviVXT7KlpD5RlIruTxL9vDvB8spqZpqYre354I8xnvdjgtSPJFPhp5BDJh6s+m1IY4qFLL9TLvAoeSsE22DiysGEyTsbaCzEqvKtuB9N18tG3JgPzCgnz0JG7ebr2lcAX16rVBkwpThPb6UXQnPTRDj2IdEqi1ErKkJu669yEE5AIZfNmDzm7zV2FSC1HiHcaR9iX84MGJcy56bEMZgZXBt9Vcy7KsL8aQZnLL3C6rimlBBkcBdcAuxvmU12A1+VC0jj6o/q66HQoZOLx3lMIRYsnBLl8S76yHxFnc0YKUWvk3LtPEOywvZWUvzYqWutZDe7gvxPs7fmr1Xk9/ftx2TPiuuBB30IiMInMemoCD1m4dxrUddAWQxZPY38i39L+IlgVshdP/b8JmvfxVNmklmz/YBQWEm2Q4PlAl11hq6F9jnyq861/IC3xpEWqYQBaH0E928TvJvq0tNnlYUyDuY8EF+rd2N8jziqol+gaO0UqE/wFwdKnyUz06SCg3DpOUXvIUJCxe4YeNpSrT3kWw0sFvZZqYinBDORYqNNBrOqZRNdsXk6EyiS7OLnMhT4LomVWg95j9Be2Vp+ynhpDJYxmkC8CojbM/Vq2ZY/R/JjBAYK4p6nVabcMlYYox5ob+Z4sGJdMRxZXatHq8OKA7fB8f4oP5AzV6zwrvbKWf5Wn43XPAS8jRbXR5VgB9gTKW2w/CcSXDwFVOe48xlSRJG7OAnP8DgQdawGE3DJHDdYZnioM7C5Y0B1gEuZaJg63C2cUnEB+FLnbzrzmjWPlCrR8WPYlL2TvmHNE4hN6Du+ms/B0qc84SAm6A5lPXCWAZ8171MWDvKD8NY7pvoGojFRgPSNW6tG0TCV97G/dI4Cyu7s10viN1bkb7DtaguTKnR2OW73fcaOFzRj1Z8GVTCnvSGTmSSqR5a3DuOaVnwTRPPvyeqhQQBX/1++qkF+mgKOV2nonwl/KZy4XWp4AiYAVRAeyIM7klE2ZJTFn5EI/FkbmJB+4b1HrB+CI5BCH3JVVBuYFlfE6uhpaY1iL0VgimKUBkgaS1sqy6Cp3U/Lq X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: zrbrQlIFg+6LpYT7OcbsaCBYih9tWgabzdQe8etM08o77V5OBHgWcn2Z3N90Dfztzl70/2E9VqNYotfsMdl9x5ygASgVAqeCwkZIePoUWgHa/nLmW6sWDY70QIZJXzRVEFp3Bb7K0bEMkbibGapepma8j5OPk5NcSpwZOspRp481UsFw3NS30LnWyvUEowddFe4SqjqDbhuno6I4yRBeoGnW1z0NU6m01z27LdGc5SxBrh8GMNFyGWCz1mvS73JJ5BC3wc/3xRHYxSq34yRMx8//A7o3QkaI/nnaCGyLBQJmMVcGGcMEraZtovipBAUJ X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2774; 6:Z38xzRNB2hMF6yo/4+s1J5Hlor9KGOInj6O6ZLOEMWc7V06a7pvAMr8eqJKLDI0EWtaXslD779DzIuPZgkJrqzh6lBNgzvnqbK68ro/MLNmKbuSoJNeagqeMK0EfSc7ckQIA4ROW1qcQFMJDcwGhI6LahFOoChuS43j29hn34zhVuMgZ5vduAH4HEwvNdcFcVEgcbcNgoCAH1xdooleTXZQJLcIa25m52kS2IgxveZgoDB5VLpmLBu4tMDg2f13pgTfqcvkEd9Y+jNpwrP6De6oXPlmIRxrvH0rQ9kSMplZaeSnXmWps/OwRpo9JeCPWZEqe+YiQgyNp+FnR2OFZuWAAn7CJk94VHseBDrZmvzfpXgrcjpjssPubcojtP18OEaIxnrAiTes2qKJh6V/uQhwptPv5Iz4+gV5uYoutfGrSiX4sfhoJj3CF81pTzrvaZ3gL3zJhc6K4ZsmopbLd9w==; 5:TFz36zDbHfmeR5r/9HfQc5RZLXplpuKJpJfL8fkASFVX82fbAVCNQc081f4z5IwaPRXT8v8lucKK/4GvP/jTQttZGHkbLyt6e8OpCorp67RFq8XXykjBAZBG2dOH/qI0r0m/tKpdJpIi8ER/M+iPH3xohWqE8w+XkVuJKewirazcRgC3V2bS9hp2lQzwC8+Arh4/6n7JyMX5QA1v5Vx5Eg==; 7:JL+8Sl4zecA7OpeG40PztoXjRenrYypKwmk8CZ45kqx/TV0K/D77VdxKY4C4KbRYTeMYopMEOKzsWNzrA6zS8LfSEKVIqvUtY62JhSeVOe93rpfpNl62CVtkUa70bE2myxyGQ4mZsL+QntumsZOQlw== SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Jan 2019 16:01:13.6828 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: bfb1a8dd-3b20-4c78-36c1-08d670cb856d X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[fihe3nok0735.emea.nsn-net.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0701MB2774 Subject: [dpdk-dev] [PATCH] net/ixgbe: add support of loopback for X540/X550 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" Loopback mode is also supported on X540 and X550 NICs, according to their datasheet (section 15.2). The way to set it up is a little different of the 82599. Signed-off-by: Julien Meunier --- drivers/net/ixgbe/ixgbe_ethdev.c | 10 ++++++--- drivers/net/ixgbe/ixgbe_ethdev.h | 5 ++--- drivers/net/ixgbe/ixgbe_rxtx.c | 47 ++++++++++++++++++++++++++++++++++------ 3 files changed, 49 insertions(+), 13 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c index 7493110..7eb3303 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.c +++ b/drivers/net/ixgbe/ixgbe_ethdev.c @@ -2652,9 +2652,13 @@ ixgbe_dev_start(struct rte_eth_dev *dev) goto error; } - /* Skip link setup if loopback mode is enabled for 82599. */ - if (hw->mac.type == ixgbe_mac_82599EB && - dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX) + /* Skip link setup if loopback mode is enabled. */ + if ((hw->mac.type == ixgbe_mac_82599EB || + hw->mac.type == ixgbe_mac_X540 || + hw->mac.type == ixgbe_mac_X550 || + hw->mac.type == ixgbe_mac_X550EM_x || + hw->mac.type == ixgbe_mac_X550EM_a) && + dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_TX_RX) goto skip_link_setup; if (ixgbe_is_sfp(hw) && hw->phy.multispeed_fiber) { diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h index 565c69c..c60a697 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.h +++ b/drivers/net/ixgbe/ixgbe_ethdev.h @@ -65,9 +65,8 @@ #define IXGBE_QUEUE_ITR_INTERVAL_DEFAULT 500 /* 500us */ /* Loopback operation modes */ -/* 82599 specific loopback operation types */ -#define IXGBE_LPBK_82599_NONE 0x0 /* Default value. Loopback is disabled. */ -#define IXGBE_LPBK_82599_TX_RX 0x1 /* Tx->Rx loopback operation is enabled. */ +#define IXGBE_LPBK_NONE 0x0 /* Default value. Loopback is disabled. */ +#define IXGBE_LPBK_TX_RX 0x1 /* Tx->Rx loopback operation is enabled. */ #define IXGBE_MAX_JUMBO_FRAME_SIZE 0x2600 /* Maximum Jumbo frame size. */ diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c index 9a79d18..0ef7fdf 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx.c +++ b/drivers/net/ixgbe/ixgbe_rxtx.c @@ -4879,10 +4879,14 @@ ixgbe_dev_rx_init(struct rte_eth_dev *dev) hlreg0 &= ~IXGBE_HLREG0_JUMBOEN; /* - * If loopback mode is configured for 82599, set LPBK bit. + * If loopback mode is configured, set LPBK bit. */ - if (hw->mac.type == ixgbe_mac_82599EB && - dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX) + if ((hw->mac.type == ixgbe_mac_82599EB || + hw->mac.type == ixgbe_mac_X540 || + hw->mac.type == ixgbe_mac_X550 || + hw->mac.type == ixgbe_mac_X550EM_x || + hw->mac.type == ixgbe_mac_X550EM_a) && + dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_TX_RX) hlreg0 |= IXGBE_HLREG0_LPBK; else hlreg0 &= ~IXGBE_HLREG0_LPBK; @@ -5088,6 +5092,29 @@ ixgbe_setup_loopback_link_82599(struct ixgbe_hw *hw) msec_delay(50); } +/* + * Set up link loopback for X540 / X550 mode Tx->Rx. + */ +static inline void __attribute__((cold)) +ixgbe_setup_loopback_link_x540_x550(struct ixgbe_hw *hw) +{ + uint32_t macc; + PMD_INIT_FUNC_TRACE(); + + /* datasheet 15.2.1: MACC.FLU = 1 (force link up) */ + macc = IXGBE_READ_REG(hw, IXGBE_MACC); + macc |= IXGBE_MACC_FLU; + IXGBE_WRITE_REG(hw, IXGBE_MACC, macc); + + /* Restart link */ + IXGBE_WRITE_REG(hw, + IXGBE_AUTOC, + IXGBE_AUTOC_LMS_10G_LINK_NO_AN | IXGBE_AUTOC_FLU); + + hw->mac.ops.release_swfw_sync(hw, IXGBE_GSSR_MAC_CSR_SM); + msec_delay(50); +} + /* * Start Transmit and Receive Units. @@ -5148,10 +5175,16 @@ ixgbe_dev_rxtx_start(struct rte_eth_dev *dev) rxctrl |= IXGBE_RXCTRL_RXEN; hw->mac.ops.enable_rx_dma(hw, rxctrl); - /* If loopback mode is enabled for 82599, set up the link accordingly */ - if (hw->mac.type == ixgbe_mac_82599EB && - dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX) - ixgbe_setup_loopback_link_82599(hw); + /* If loopback mode is enabled, set up the link accordingly */ + if (dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_TX_RX) { + if (hw->mac.type == ixgbe_mac_82599EB) + ixgbe_setup_loopback_link_82599(hw); + else if (hw->mac.type == ixgbe_mac_X540 || + hw->mac.type == ixgbe_mac_X550 || + hw->mac.type == ixgbe_mac_X550EM_x || + hw->mac.type == ixgbe_mac_X550EM_a) + ixgbe_setup_loopback_link_x540_x550(hw); + } #ifdef RTE_LIBRTE_SECURITY if ((dev->data->dev_conf.rxmode.offloads & From patchwork Wed Feb 20 21:05:30 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Julien Meunier X-Patchwork-Id: 50394 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 B500E28FD; Wed, 20 Feb 2019 22:05:39 +0100 (CET) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70100.outbound.protection.outlook.com [40.107.7.100]) by dpdk.org (Postfix) with ESMTP id 5AF611F28 for ; Wed, 20 Feb 2019 22:05:37 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nokia.onmicrosoft.com; s=selector1-nokia-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=apMogoX5L2288zp2urQPvkS1iuSLpOT/yWHVMYOoEOw=; b=m2zNnqJQQMidTzANy0JMkWzM2m9KMUl5YU84C5xiLANQURN8NEUS9DHSzxjyhyLHfUpzldpKN43oZXzB7J+PBkP/CzKKhw/oG+3I3YyDer/ydcnvfcbmj/ysAd5ZGgj4O2vn2cP25U/AXk9zmuKC9haapJ3XecV4K1H1R64ngZc= Received: from DB6PR07CA0081.eurprd07.prod.outlook.com (2603:10a6:6:2b::19) by VI1PR0701MB2847.eurprd07.prod.outlook.com (2603:10a6:800:85::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.14; Wed, 20 Feb 2019 21:05:35 +0000 Received: from DB5EUR03FT023.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::208) by DB6PR07CA0081.outlook.office365.com (2603:10a6:6:2b::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1665.5 via Frontend Transport; Wed, 20 Feb 2019 21:05:35 +0000 Authentication-Results: spf=pass (sender IP is 131.228.2.241) smtp.mailfrom=nokia.com; intel.com; dkim=none (message not signed) header.d=none; intel.com; dmarc=pass action=none header.from=nokia.com; Received-SPF: Pass (protection.outlook.com: domain of nokia.com designates 131.228.2.241 as permitted sender) receiver=protection.outlook.com; client-ip=131.228.2.241; helo=fihe3nok0735.emea.nsn-net.net; Received: from fihe3nok0735.emea.nsn-net.net (131.228.2.241) by DB5EUR03FT023.mail.protection.outlook.com (10.152.20.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.11 via Frontend Transport; Wed, 20 Feb 2019 21:05:34 +0000 Received: from lfs-up-04.localdomain ([10.157.84.234]) by fihe3nok0735.emea.nsn-net.net (GMO) with ESMTP id x1KL5YWF013047; Wed, 20 Feb 2019 21:05:34 GMT Received: by lfs-up-04.localdomain (Postfix, from userid 62146483) id 2109D9FCD; Wed, 20 Feb 2019 23:05:34 +0200 (EET) From: Julien Meunier To: , , Wenzhuo Lu , Konstantin Ananyev CC: Date: Wed, 20 Feb 2019 23:05:30 +0200 Message-ID: <20190220210531.48322-2-julien.meunier@nokia.com> X-Mailer: git-send-email 2.10.2 In-Reply-To: <20190220210531.48322-1-julien.meunier@nokia.com> References: <20190102160055.30301-1-julien.meunier@nokia.com> <20190220210531.48322-1-julien.meunier@nokia.com> X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; SCL:-1; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(396003)(376002)(136003)(39860400002)(346002)(2980300002)(3190300001)(199004)(189003)(186003)(97736004)(44832011)(14444005)(476003)(126002)(47776003)(5660300002)(81156014)(106466001)(478600001)(81166006)(103686004)(52956003)(446003)(50226002)(8676002)(11346002)(305945005)(4326008)(1076003)(26826003)(2906002)(6266002)(86362001)(26005)(42186006)(356004)(8936002)(53936002)(6666004)(51416003)(316002)(50466002)(36756003)(16586007)(336012)(110136005)(106002)(486006)(76176011)(68736007)(2616005)(48376002); DIR:OUT; SFP:1102; SCL:1; SRVR:VI1PR0701MB2847; H:fihe3nok0735.emea.nsn-net.net; FPR:; SPF:Pass; LANG:en; PTR:InfoDomainNonexistent; A:1; MX:1; MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: b042abee-2ee4-403a-854d-08d697772832 X-Microsoft-Antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600110)(711020)(4605104)(4608103)(4709054)(2017052603328); SRVR:VI1PR0701MB2847; X-MS-TrafficTypeDiagnostic: VI1PR0701MB2847: X-Microsoft-Exchange-Diagnostics: 1; VI1PR0701MB2847; 20:+GuQLJSXFHLHz9RHNUfrsSljGo9VBvB+2vJf8ahL+IoEwpxR5T073ztdLYbaqT3w2MOcGj/VL/tbFxVlXXH7tpCDkFNKCETPyEOgXvk2dhVmsLIwFstdQQVoodW5k7Llm4JX3gKh2kVpur/zGf5KiSN/8xVIhPjLbA/nIYTTFfbV/jAF7TS7gWDuIAAo1eot+m7A5g5QjQOLnMygpxIE1Pzqp7YLmEsY5Dpu9ARDKwYfNlzdW8EgyxQmjpfcJIrDnlXNqTE0oaE/3sWJ1ywjliLzsakBJ2+gI+ydYYIcoxwdGImcSJOYVIWVuWljZxAyIZb22srZ2pWyVxfQ1gpfz3fTHNvv7Sc+BUGuL95tRyL0NLLd9ldzz7Obt7hePE6eSjpXoyeV+vJL5aJrmnHOjnf07sSol6+01TX30p72s94NC8Xd2ZJTgWIxQQs5lRpp41HgDAa1+MCOlmKpuKrHGwScRdxWrJ5q9ui4gbHOyslEaHS1x5/PxjLplcmJPAumMgS8YVZuQ7jjZgasSDh+LdbtitnTkTG3FcVDWPYdTXM1vyYgb8HiY3nqFeB9RlNt1Yh34N4WjRJ5PlboWbHqpjtjCJ5m84W+Jb/viPy8JaU= X-Microsoft-Antispam-PRVS: X-Forefront-PRVS: 0954EE4910 X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; VI1PR0701MB2847; 23:ls7bf9n1myYwojEqQqlAGtHXlZCZUknx/D3Rq/m?= 3ddaHfuFfDNCOvpwkP+Jzs6EETzXvumXb88x9Ev0d2E3gFiHRuXeTUHQoIAt9CZQA14FuQtt2UyIXozcF423b623rGEa+1U0aS8UFXbD1ZbUtQT3ar0/XDRNuIWRs/fMGnneamBAbrHjzwYMRGS/PtjTWtY/NlE9zMY6vFU8Ch7/Mf7rHa55ATv02jknNOZ2OvRaxMPgnmBxQG5EAERiIovNfub3mNRxeMePAKYVznv7P63dClnu1HlOB2RSBXgjQCTsjmIl1E/hTCT9FpwRnM57V2GXd8YwrNcuHC/Qw10ecBdqXkLHDw42uWctMZSr5XW0g3269MCQ93Ycs7WxohstdzJ/iQjWqqzHCpvFaR0Y9kb1pwCEGtH0n80yIx6pV3loRfNVipT9l1oXpt7XneOGLfq96Z1zoC3PYEMJ47g/LG+dO+3VUxYLKkVFdUdBppQqQ+kcY5RH1vegEjRGX3aZno8lHD0ySuVirC+vxpKxBdEWSgYocR9RN1XmcW3Adpw3QTye9Jv2Qgm0P342c2hJUyyZ62Yqa0hFsUk6pQ5adaSuesmLPyQC6qPmmXoQ6WLpt95FZ2rClKQeHv4SWtisq8pGiRXCIi8AIehSsqLpzEi6dlsCTrgrRLfyqfv4S1iewf53IOh2E4avKy6nkhrO8WnOld6oCWl4IILlr1YSJ4W45vo9h6/HiJTG3joCLdAbfR39pPI/QigvCKZwWXxFKaE9+ZtbUvEhP+c7iC8Y6FzKbyuNhCzOSguOD8hnKpRvT4NtNSDbtnSuooofJTmZiuv54XVZvhFcPI3/Gop5TyZY3AlgtjvSVtObcN2hmo01OC+c0jQxp+7rNpWJ2WvCE2mDxy8D0A1wdJEWSZcqe3Y+KMGzVGp3te0cp5W70AYdIBOxhyOCKhlq701KOyn/siysBvDp7ICWoxGttdwIogtZCtKabD7S3FvNzJ+J3NOUzeWphYE/3YaO0vgRqxxtzlYhgv8bfQ+wfpkFuramhEbRVbuI43RtZ8phcFUB8nARbsCikD4XOSTehLj+sYRzjWLSMeJiRKDymxDwP2luyd+QIAzz6Y/E3SC21u9YLtB2ldE4P0N6AFiuaMhK7AsRgeCTFqZfo7PNhAyFAl/2U/h+QmBIoDhxPioda0vu6U94= X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Message-Info: YUxalFFZKTxXIvU2pgRRJMXiC7ZC7WLmHJOQkvNHCZWuCQjyR7n7432vBt/7hBBI8fHB7pzmhofADvRNc7KuI3ZxIvi9m6GQ6+v4eU0ND51Xst2O/bmKYpDyMtaIU66J1jcoK2JkDugD2jFX/WvZJWNwVc9KIcPG6tZW6zaUJAfUWrvK+xUN9dBU0xxjoKzpIb4b4vuAQ8bbimIfESYAepEF5HLfthmk8KAoceOVJVmpoYNYrD9aauYZYvLqEwsVCN824enpepyr54/qcONWJyMfnQ04t1ej5hZlIeix63IuFK31nyK2NDEx6iu3F48L/U84o4y8b2l0+GQelild3lLZJ5WFQQVPy/2almMypPnmxbGj/bbTDK8/8Yx8GaSxVEaRgPNi3D117LHN5OiVy8jkqvcygmR2oMKXxH8feMI= X-OriginatorOrg: nokia.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Feb 2019 21:05:34.9004 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: b042abee-2ee4-403a-854d-08d697772832 X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[fihe3nok0735.emea.nsn-net.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0701MB2847 Subject: [dpdk-dev] [PATCH v3 2/2] net/ixgbe: add support of loopback for X540/X550 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" Loopback mode is also supported on X540 and X550 NICs, according to their datasheet (section 15.2). The way to set it up is a little different of the 82599. Signed-off-by: Julien Meunier Acked-by: Wei Zhao --- v3: - reorganize and merge common code - restore MACC_FLU on stop v2: - disable / enable autoneg when loopback is requested for X540 / X550 --- drivers/net/ixgbe/ixgbe_ethdev.h | 7 +++--- drivers/net/ixgbe/ixgbe_rxtx.c | 53 ++++++++++++++++++++++++++++++++++++++-- 2 files changed, 55 insertions(+), 5 deletions(-) diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h index 565c69c..99a5077 100644 --- a/drivers/net/ixgbe/ixgbe_ethdev.h +++ b/drivers/net/ixgbe/ixgbe_ethdev.h @@ -65,9 +65,10 @@ #define IXGBE_QUEUE_ITR_INTERVAL_DEFAULT 500 /* 500us */ /* Loopback operation modes */ -/* 82599 specific loopback operation types */ -#define IXGBE_LPBK_82599_NONE 0x0 /* Default value. Loopback is disabled. */ -#define IXGBE_LPBK_82599_TX_RX 0x1 /* Tx->Rx loopback operation is enabled. */ +#define IXGBE_LPBK_NONE 0x0 /* Default value. Loopback is disabled. */ +#define IXGBE_LPBK_TX_RX 0x1 /* Tx->Rx loopback operation is enabled. */ +/* X540-X550 specific loopback operations */ +#define IXGBE_MII_AUTONEG_ENABLE 0x1000 /* Auto-negociation enable (default = 1) */ #define IXGBE_MAX_JUMBO_FRAME_SIZE 0x2600 /* Maximum Jumbo frame size. */ diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c index c9a70a8..e92a70f 100644 --- a/drivers/net/ixgbe/ixgbe_rxtx.c +++ b/drivers/net/ixgbe/ixgbe_rxtx.c @@ -3168,12 +3168,44 @@ ixgbe_dev_tx_descriptor_status(void *tx_queue, uint16_t offset) return RTE_ETH_TX_DESC_FULL; } +/* + * Set up link loopback for X540/X550 mode Tx->Rx. + */ +static inline void __attribute__((cold)) +ixgbe_setup_loopback_link_x540_x550(struct ixgbe_hw *hw, bool enable) +{ + uint32_t macc; + PMD_INIT_FUNC_TRACE(); + + u16 autoneg_reg = IXGBE_MII_AUTONEG_REG; + + hw->phy.ops.read_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL, + IXGBE_MDIO_AUTO_NEG_DEV_TYPE, &autoneg_reg); + macc = IXGBE_READ_REG(hw, IXGBE_MACC); + + if (enable) { + /* datasheet 15.2.1: disable AUTONEG (PHY Bit 7.0.C) */ + autoneg_reg |= IXGBE_MII_AUTONEG_ENABLE; + /* datasheet 15.2.1: MACC.FLU = 1 (force link up) */ + macc |= IXGBE_MACC_FLU; + } else { + autoneg_reg &= ~IXGBE_MII_AUTONEG_ENABLE; + macc &= ~IXGBE_MACC_FLU; + } + + hw->phy.ops.write_reg(hw, IXGBE_MDIO_AUTO_NEG_CONTROL, + IXGBE_MDIO_AUTO_NEG_DEV_TYPE, autoneg_reg); + + IXGBE_WRITE_REG(hw, IXGBE_MACC, macc); +} + void __attribute__((cold)) ixgbe_dev_clear_queues(struct rte_eth_dev *dev) { unsigned i; struct ixgbe_adapter *adapter = (struct ixgbe_adapter *)dev->data->dev_private; + struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); PMD_INIT_FUNC_TRACE(); @@ -3194,6 +3226,14 @@ ixgbe_dev_clear_queues(struct rte_eth_dev *dev) ixgbe_reset_rx_queue(adapter, rxq); } } + /* If loopback mode was enabled, reconfigure the link accordingly */ + if (dev->data->dev_conf.lpbk_mode != 0) { + if (hw->mac.type == ixgbe_mac_X540 || + hw->mac.type == ixgbe_mac_X550 || + hw->mac.type == ixgbe_mac_X550EM_x || + hw->mac.type == ixgbe_mac_X550EM_a) + ixgbe_setup_loopback_link_x540_x550(hw, false); + } } void @@ -5074,8 +5114,12 @@ ixgbe_check_supported_loopback_mode(struct rte_eth_dev *dev) { struct ixgbe_hw *hw = IXGBE_DEV_PRIVATE_TO_HW(dev->data->dev_private); - if (dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_82599_TX_RX) - if (hw->mac.type == ixgbe_mac_82599EB) + if (dev->data->dev_conf.lpbk_mode == IXGBE_LPBK_TX_RX) + if (hw->mac.type == ixgbe_mac_82599EB || + hw->mac.type == ixgbe_mac_X540 || + hw->mac.type == ixgbe_mac_X550 || + hw->mac.type == ixgbe_mac_X550EM_x || + hw->mac.type == ixgbe_mac_X550EM_a) return 0; return -ENOTSUP; @@ -5172,6 +5216,11 @@ ixgbe_dev_rxtx_start(struct rte_eth_dev *dev) if (dev->data->dev_conf.lpbk_mode != 0) { if (hw->mac.type == ixgbe_mac_82599EB) ixgbe_setup_loopback_link_82599(hw); + else if (hw->mac.type == ixgbe_mac_X540 || + hw->mac.type == ixgbe_mac_X550 || + hw->mac.type == ixgbe_mac_X550EM_x || + hw->mac.type == ixgbe_mac_X550EM_a) + ixgbe_setup_loopback_link_x540_x550(hw, true); } #ifdef RTE_LIBRTE_SECURITY