From patchwork Wed Mar 1 02:48:25 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 124595 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5F95041DA2; Wed, 1 Mar 2023 03:49:07 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DD3E241611; Wed, 1 Mar 2023 03:49:02 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2117.outbound.protection.outlook.com [40.107.243.117]) by mails.dpdk.org (Postfix) with ESMTP id 26ABC4067B for ; Wed, 1 Mar 2023 03:49:01 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Rry7VLK//i5Wz4AYrMslgLekPst5s8bNPW42BG4rmNKyJBw8hbmtZ5PSS0FcG3F0iHshYztdZmaXlIL6JuhmiQezLBzcYuVHTMIW+DikILDbYK9+eIz4VcxZK+fMpkaCN7uGbjwHA1lV2/LauxBcfqFVU/Lb0/9JRSW+aJ4zGOgaP/aJWKIs+OaBDW+BZcAihcDNbjA/wL5DVL4ehsgURCHF5PI8+830YhQIauzBjIIxtyzVUDKZdcLxJEY/eLQnazn+sqcwM9/87GEsUkHZXkUNI+tIYKk6RohG5x69fqgCSJrjnkuTyLHxGT3FJWamYtW1GZk8QPQg7oQtUcnsFQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=E3tey0IjPtPqb/wBkf0o/YClWkGEfqRMuMwKtc6KKqQ=; b=eDA55VYkovmDzcspYYQt9Um4txqm7EgkDetk1xsU91gHmnu6WN3tnzBXJtbm7ZSKtGnP+7XXPqywOjJfofLISqIbfV5PcjrW789WBZzZkpx6/J5ohDzPYBYaSgzPO+uqYY+tkhSJBBB5CLJRqGB6YYd8X6PVx2uHiefQkWrhpuszkyl7Hlq+qwdNh92HJEea/MBQ+TD0v7aWx9VYZzJitozjIKP2sq6MzdA1xz5oPgJ5gIAYWx/w/nkTbiKsQKid/AoL5BoLBLE/5NfVnE+ei5aImxprEaV96tMVadqkeUx+Sq6jTMjYB+WsRx5aDIZBeWDlH4sF9guJ52I3xKIvKA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=E3tey0IjPtPqb/wBkf0o/YClWkGEfqRMuMwKtc6KKqQ=; b=e7SpXXyNbi/ZkKFKH2u1lP9FInSl+QImzWdlBnk9IwwvcTFX8qMow5Gk7sxpPCMQ1SoIC6RvjHKxRcTT+0kF74fzgyEgqUw+yXooR0+fntCJXRqeutG8LNfrmVWI2IMd8NsoaiWwi92S4ZkGLGPgk4Ogn/kRjTVu9DoN30erZNQ= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by CH0PR13MB4585.namprd13.prod.outlook.com (2603:10b6:610:cb::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29; Wed, 1 Mar 2023 02:48:59 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7ea4:e421:5dd5:9f4d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7ea4:e421:5dd5:9f4d%7]) with mapi id 15.20.6134.030; Wed, 1 Mar 2023 02:48:59 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Long Wu , Chaoyong He Subject: [PATCH v3 1/2] net/bonding: add independent LACP sending function Date: Wed, 1 Mar 2023 10:48:25 +0800 Message-Id: <20230301024826.885727-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230301024826.885727-1-chaoyong.he@corigine.com> References: <20230216083231.4721-1-chaoyong.he@corigine.com> <20230301024826.885727-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2P153CA0008.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::19) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB4585:EE_ X-MS-Office365-Filtering-Correlation-Id: 07d4544f-64ce-414c-45ca-08db19ff81e5 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hZgTg0ChimtHJCmBtnpWgFZMwO8maUrqg6CKnMslCYhGMY85eDm3YAMQnPvrDa5G2uB/cd25VtQqUikjtQmjlUrQIdyVKFMpepcqqbJytcOG8VoV/bgftl4R/500B9UGMZ5/oyk0WWLglVuAklp25nmEc304c3wEdQG2+JY8g92ovTaACPw1xxcjQVM9IkZ0s4yTIb3DRUMAHNq6Da/1hssNW3OF1x+2+HTH6Sep9szY42ma+Nt6k28xdSn027e8ysO8++Tm+3Sdun7F4NR4yLDN6vi36l10ceaGeIZbno8EQBaThmEG6tlbLeaklwupOuAONBU9Y+11foBwH3hbuG/EhSmu+HIRRbLNTeMjj88XBJyEhnYLNgHQTnSMnvBOuXoC+KhqjGggSr+vsTT2ka/9R84t0tWcfs06nK8ekya3VyNZMNkxXSWNaHwcEjPMvMLjEMdP8HIKeyHLmPhlgz4q8gE7khTzeR4XIQ5w9GkRzOfBrsN8r5YDYhH52Y1MAqmU15QsGRXmJd5hsNFE4ha213A8TdluDKz7sdRLuhdSg1PHsCGNXC88cy+I8mV5lOQdJ0V5BaLBii+xSAhYO1Hx9KOnf24KPFYfXcWpTFr/BVw4vGBUXUEUE+KNX5c7eTxnSD9AwQKudxFbKqxavLzRRJoGho/KWuiVgs/zEd2iGN53YeluIi0dB8QTSGR3Xc+yeej3NlSVkjJGZShvPDFGXFy0gTDxpdBNRTHMvYUpmzZ8zW/nrxWvYby1MYPE X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(346002)(366004)(396003)(136003)(376002)(39840400004)(451199018)(66476007)(6506007)(1076003)(66946007)(66556008)(8676002)(4326008)(6916009)(6486002)(316002)(478600001)(5660300002)(36756003)(44832011)(52116002)(66574015)(86362001)(38100700002)(2906002)(54906003)(38350700002)(6666004)(83380400001)(8936002)(107886003)(2616005)(26005)(186003)(41300700001)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?FuTTI1MMFhTKYY4RD4bX0dMSAwQP?= =?utf-8?q?u8f2jlnwNmUIk36u3+qNgJuyzSV1OCGlctxOeCpkWr4dcJSXM6Gen6TNeg28tpXau?= =?utf-8?q?Njvz+xdUZTXWsHd3jhs0AvhRkc3J/o3jmbZUD/Njyrvk2aJW8yXjM2sq+D4EHzX/h?= =?utf-8?q?hICrmdE9lB5qfynjTD9veBjNu/zQjvNSwM9os+bbI5QYpGyVFnhDJrZELkiM2wsCz?= =?utf-8?q?LKjIXIde2JZvEXz8oBvOOyv3f8X9TpsQCOQ+g9eZ7eb4Nn54WQ8G9vdjTcH8CFp6B?= =?utf-8?q?0nwtZQYkhuBPwoFPlPM2m55/dICRgb11H4vbVBjcmiyy4QEPMFsKFY5Ls/hEbF0LI?= =?utf-8?q?ePYFxPuZ+Jx9ZPNztYbzRqc/4zVslE7n6mXn+WayaB2/Cv5fYXG30PQ2PZKCO7wBA?= =?utf-8?q?hS2dNOx8yu1kJL1to3j4hCeK88y78TWlGwRyRJPlc3pyycXCIsGAD7yW4Bk831Ckd?= =?utf-8?q?rohbI8fpagcKgOJbeP/3MkDyzTrvh2D9L//C4RZZgAN0GNlix2eA4O02qbUVJMHa4?= =?utf-8?q?84H3NtIjlh8pDtR4sk2beTKpw2TqZomBpPP0U0AKbQ8k4vPMsPygjVSr6hhByVSPe?= =?utf-8?q?bixqNE5ki6adYNvocZJZ+QVGQRDkFujn9dSONOSIsC8B+gPge7DA3ptaRR+QVm5o3?= =?utf-8?q?kIev1fwCmqx8hT2x1V0fGJcFoH+7LqmOQETo152Mjc2p6f7DeQg0oioPMa1+oXDgd?= =?utf-8?q?LeVOJk04vOqs4LfTd6RH0Y6CDp8kftx+k3fuS8SnnbI3SegagOv0RyYgp9/kjffhV?= =?utf-8?q?bVL44hFiF0JoilaKJbYXusZIpO6WjEpzf0XkerFFqHGeHqMpBYBkpNKrzrk0yuIL6?= =?utf-8?q?GUj8a8XU5TiQSNY2uowdand3mZPWpYt9a4PN8qxjnI5vyccamEdCmR+GOa04FHLv9?= =?utf-8?q?hYi+7dLTfGGOW4uNgT1J7KaGvNr5Ai/ZM6ZIY86H9nKnVIOrt13e/snNxATDdWLjC?= =?utf-8?q?bpM1u21mpOC2Wa72WPez735l1sHOgLM6/ewBQO3ViKM3OtNFaBhHQ+wqT/n4Rolz6?= =?utf-8?q?FC4uxjvaSyIBT512n1zfBFd863ORvh4TSdecvyjK7baaBLkJCimitwSs/VlN53o8u?= =?utf-8?q?26pWJ2AhkFMx63Uh6RtoeGuYqaxWjfDkfCq47k3PP0AY1YhCUlF2rG1ZHcDmFD34l?= =?utf-8?q?Z8sLL1SvGTQIOQUZBfN3uY2Rl5lVAUbONy8S4/wiM0SnvkQ2YOGjnHiYvoTsGzUWs?= =?utf-8?q?Uc1whcgn/ccQJqFWZ8zyrLvjZntywp+eyqccB9T3DheQjJ8pAZcs3ZWsGFdUWElvx?= =?utf-8?q?VDecQm/KJQt/8eq4fQ73hL2IFlFyjDCSVyvxF67/cOpnr4XJALEIZtcJI97zPH8pg?= =?utf-8?q?+3etBPXbMFe++WVDS2c6u/B06MwqBzUfq07ApZnqICtuW9mT5fPtOc/SOYTyCCwqK?= =?utf-8?q?71VPBrmnwDqI6OjBaPGtoU8/p72DVy52N8EvW5rI9CGpmoN88Err6fDKQVFPqX5N/?= =?utf-8?q?YnKk1T/FhsHCfICpVb78Pr1fbnDIqv/mZrd/wNgkbpheGIzss1c4zcwWv/w8rknDY?= =?utf-8?q?HFNDmrF/bFBIRRthkMoeFwnyKSO7jx5gSA=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 07d4544f-64ce-414c-45ca-08db19ff81e5 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2023 02:48:59.4072 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: 9wkXIc41rMwUEwfyXu7r+iVN62ySATgSOoEuDvBh+TUI/3+CcdsowEnJBy+fxlWpq1PmQDNbQVukrC6tgY/+i/dGZL7gnwW8jiM/znKTeHU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB4585 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Long Wu Sending LACP control packets depends on calling the bonding port's sending function if we disable dedicated queue. In some cases app would not call the bonding port's sending function if there are only LACP control packets and the negotiation between the two bonding ports will fail. We add the independent LACP sending function for app. App can call it by itself and let the negotiation succeed. Signed-off-by: Long Wu Reviewed-by: Niklas Söderlund Reviewed-by: Chaoyong He --- drivers/net/bonding/rte_eth_bond_8023ad.c | 58 +++++++++++++++++++++++ drivers/net/bonding/rte_eth_bond_8023ad.h | 21 ++++++++ drivers/net/bonding/version.map | 8 ++++ 3 files changed, 87 insertions(+) diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.c b/drivers/net/bonding/rte_eth_bond_8023ad.c index 4a266bb2ca..bedfe89663 100644 --- a/drivers/net/bonding/rte_eth_bond_8023ad.c +++ b/drivers/net/bonding/rte_eth_bond_8023ad.c @@ -1757,3 +1757,61 @@ rte_eth_bond_8023ad_dedicated_queues_disable(uint16_t port) return retval; } + +int +rte_eth_bond_8023ad_dedicated_queues_get(uint16_t port_id) +{ + struct rte_eth_dev *dev; + struct bond_dev_private *internals; + + if (valid_bonded_port_id(port_id) != 0) + return -EINVAL; + + dev = &rte_eth_devices[port_id]; + internals = dev->data->dev_private; + + if (internals->mode != BONDING_MODE_8023AD) + return -EINVAL; + + return internals->mode4.dedicated_queues.enabled; +} + +void +rte_eth_bond_8023ad_lacp_send_one(void *queue) +{ + uint32_t i; + uint16_t member_tx_count; + uint16_t active_member_count; + uint16_t active_member_ids[RTE_MAX_ETHPORTS]; + struct bond_tx_queue *bd_tx_q = queue; + struct bond_dev_private *internals = bd_tx_q->dev_private; + + active_member_count = internals->active_slave_count; + if (unlikely(active_member_count == 0)) + return; + + for (i = 0; i < active_member_count; i++) + active_member_ids[i] = internals->active_slaves[i]; + + /* Check for LACP control packets and send if available */ + for (i = 0; i < active_member_count; i++) { + struct rte_mbuf *ctrl_pkt = NULL; + struct port *port = &bond_mode_8023ad_ports[active_member_ids[i]]; + + if (likely(rte_ring_empty(port->tx_ring))) + continue; + + if (rte_ring_dequeue(port->tx_ring, (void **)&ctrl_pkt) == 0) { + member_tx_count = rte_eth_tx_prepare(active_member_ids[i], + bd_tx_q->queue_id, &ctrl_pkt, 1); + member_tx_count = rte_eth_tx_burst(active_member_ids[i], + bd_tx_q->queue_id, &ctrl_pkt, member_tx_count); + /* + * Re-enqueue LAG control plane packets to buffering + * ring if transmission fails so the packet won't lost. + */ + if (member_tx_count != 1) + rte_ring_enqueue(port->tx_ring, ctrl_pkt); + } + } +} diff --git a/drivers/net/bonding/rte_eth_bond_8023ad.h b/drivers/net/bonding/rte_eth_bond_8023ad.h index 7eb392f8c8..29a1610650 100644 --- a/drivers/net/bonding/rte_eth_bond_8023ad.h +++ b/drivers/net/bonding/rte_eth_bond_8023ad.h @@ -331,4 +331,25 @@ rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id); int rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id, enum rte_bond_8023ad_agg_selection agg_selection); + +/** + * Get LACP dedicated queues enable/disable for 8023ad + * @param port_id Bonding device id + * @return + * 0 - the port is a bonding mode 4 port with disabled dedicated queue + * 1 - the port is a bonding mode 4 port with enabled dedicated queue + * -EINVAL - the port is not a bonding port or the bonding port's mode is not 4 + */ +__rte_experimental +int +rte_eth_bond_8023ad_dedicated_queues_get(uint16_t port_id); + +/** + * Send one LACP packet for bonding port in mode 4 with disabled dedicated queue + * @param queue Bonding port's tx queue + */ +__rte_experimental +void +rte_eth_bond_8023ad_lacp_send_one(void *queue); + #endif /* RTE_ETH_BOND_8023AD_H_ */ diff --git a/drivers/net/bonding/version.map b/drivers/net/bonding/version.map index 9333923b4e..d5db1d15e0 100644 --- a/drivers/net/bonding/version.map +++ b/drivers/net/bonding/version.map @@ -31,3 +31,11 @@ DPDK_23 { local: *; }; + +EXPERIMENTAL { + global: + + # added in 22.11 + rte_eth_bond_8023ad_dedicated_queues_get; + rte_eth_bond_8023ad_lacp_send_one; +}; From patchwork Wed Mar 1 02:48:26 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 124596 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id BC0D141DA2; Wed, 1 Mar 2023 03:49:13 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 18634427F2; Wed, 1 Mar 2023 03:49:05 +0100 (CET) Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2111.outbound.protection.outlook.com [40.107.243.111]) by mails.dpdk.org (Postfix) with ESMTP id 40511427EE for ; Wed, 1 Mar 2023 03:49:04 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NdHnrkNpaZSlnKeZbehta/PtcybfZjfODQSKFKPdKBJd6WI2YXi8FI79Ty3eEXSddxoiiYAwvqGHKWJIzB0e1wBwlDAUIj5PFHvPHXo5AX2vJR9tR7M8TPIA+/5xSCwmxi4aKqMmNn7fUDWqtI8UBj2LYZactiATLkSZfYOSZgxnf4TCYxuxLqdz41pZOfnZ4TpA8tGEMnz5awCOWiqWP/LSpfxXbVSslXecafSGO3sc0OpOkgA+sCzad+RYmRWr2vO993f6MPeb+YkTv9MmBIo6m1jSw7iZ2kgSEhckLRIDiBoX4rDAp7X6FDhBQu6nMFpySNGf1wSnT6qJ5KOAtA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=+Q4S8LiPVig6EPa+7/SZgCTPt/l5vwNteOaVmZFpiJ8=; b=nD0Sex47WzbSJRBcHL9itTeRiM046w1IWi431SVcNl5QmEx6L5eRhj8bw8xTUeo3kO3Vz/SeA+8REp/V7D3u0Y1uBH1usPS6IgSlHJeO+k5Qoz4GMLySiVw0jvh9VHpwJJsHAODaDC+4mKlc5M8jPD7BquL1mjPUxmNgEVQQhn1fCaetVRY+/lq4QwLOGqNFS0m52zy9m5CMNkwgB4DFxxHG7kKltU8hjw1yzzdcnG35/RlaLISi+crIVGGWLeGI48OX1PG1FM4Jjfr3ZJdEMlYA3tTLGTdHrtLOKVtWcZfvk+m7eAkH/BJV1NqWZ7B0XYJD5HeSM63Z/2pG4BDGtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=+Q4S8LiPVig6EPa+7/SZgCTPt/l5vwNteOaVmZFpiJ8=; b=dc2NvGle7qPFCytBuY7L2VjlAxGVpHyV3dk8C7H9+538oYgITKbexAMFyUL5z5fNwX0tIR/vZbiv0qu9HxeYfg+z3vSVTSEArkheB+8Y0mtZSJbbONePQ8m+NyGoE+i+xmdsS9bKzqvYUFLUofsRFOFZj0TNi4WRGLBdccNkTh0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) by CH0PR13MB4585.namprd13.prod.outlook.com (2603:10b6:610:cb::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6134.29; Wed, 1 Mar 2023 02:49:02 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7ea4:e421:5dd5:9f4d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::7ea4:e421:5dd5:9f4d%7]) with mapi id 15.20.6134.030; Wed, 1 Mar 2023 02:49:02 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, niklas.soderlund@corigine.com, Long Wu , Chaoyong He Subject: [PATCH v3 2/2] app/testpmd: add support for bonding port's LACP negotiation Date: Wed, 1 Mar 2023 10:48:26 +0800 Message-Id: <20230301024826.885727-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20230301024826.885727-1-chaoyong.he@corigine.com> References: <20230216083231.4721-1-chaoyong.he@corigine.com> <20230301024826.885727-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2P153CA0008.APCP153.PROD.OUTLOOK.COM (2603:1096:4:140::19) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB4585:EE_ X-MS-Office365-Filtering-Correlation-Id: 542f0a4f-fcb0-4d5e-511c-08db19ff8386 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: M7rZ8xOE2zLZIcSrjw9Ch/y4pv6m+JBis1LdnqVV5X+H7RtIQ+qXwYYbUd+++Xlr+afcCLpNAKRHhzY9x/bpRFsM95XzfzqUnG3Zd+oby6X+lb1EAAbbyLNRvSMawXIl+vyiIFzlob9YCccVtjjfrsJhwgHkQTDe1eF+3REJHEt5UCHhuvV6i1MN7i8f5KokhIMbbZBtuYEXQI/008qdsDRR0nDzJ1tPy81WvulIwsW2cGD4H5rZuOHWeSNB38z6uGdNr0R6jjPEZcI0H5QpR2BKPIzPqh6G4TL1/hDITu+FvjxEwI4txCbCXMvY2jsPqV+krb3NHTAA0uaxRb2XX+QiXPbfxsoGTizaNaznETpSAL1sT+tFkU+L8J+uECqihTYCeelfiN7W6BKZtyAymLuLiknlIDjE91NR+th6TrjMxPx28mIXifjyzsYG/9fsGgn8tSbkEIMu51bv3kIwDdOpM3fTlRdQRcxcfmIk2lopnTI55KqGmOJBAPNVPmZr/S2utuew0Kx2vDkAtag2OTBKQ9o111FjediCqRvXjEpmvCVxnLqRsIr84qoeIGkHqslmPIyTE0JPlwvpGc1yR3lJpd6K78fmrkZ2Ib1UnYWZ52esFzBg3OPlaJbZRtr84xPpdLd3ZY3zN9e4ReFkVT1dCbcD6HMwyB0dN5g67wUCFHJnqqaEwBJajws02Mz9JQULNwciH08wEi1+abBtnpyODk0vVpxpKQ5rAHabSL2cxRmD/JIyvZHttfXDx8Qk X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230025)(4636009)(346002)(366004)(396003)(136003)(376002)(39840400004)(451199018)(66476007)(6506007)(1076003)(66946007)(66556008)(8676002)(4326008)(6916009)(6486002)(316002)(478600001)(5660300002)(36756003)(44832011)(52116002)(66574015)(86362001)(38100700002)(2906002)(54906003)(38350700002)(6666004)(83380400001)(8936002)(107886003)(2616005)(26005)(186003)(41300700001)(6512007); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?kOXzks/F6XQ8WUBav/VDPnGs+GvJ?= =?utf-8?q?FNoVXrBsQC0TnrUkL4rvRpxp04EL77CqeYHJMLJ7+k1C+aJsH2sZFDl8fWKP1e6fd?= =?utf-8?q?eH+g1E7kobbIhjRHix6tkqAQdAe0YnaOk/C7rlgZbnMuoEr1/2Kn+f3IcsdQ2yIxh?= =?utf-8?q?SuQSP+F5IT8ecrhNFuPWiFmtznYLXA58lRQXjMuoL6iA2e6hbfPKaI4j/JeQ/1jFU?= =?utf-8?q?nB0+DlDZZrU97YVqtYbCMZWuz/JSJn72l6FLJFJtOESFdGEvh16XnvuOFCPY8xSvV?= =?utf-8?q?6KHVATEIZtGlZ9Uvj7Nsa78+EKBpanTJymo/C5yh4ZDKYSXSWUkP7iHRcNnZ0orhD?= =?utf-8?q?6OntKaXpPoyQybTzwuBkffrZYR3qgf3jsOjIpVmI9iaEHcuZGvU6ZpwWjSBxfR6n0?= =?utf-8?q?ikJm6kRo8R59c8NyzoyDlS/NyH3MtayphfPtT6m70lfFgAVeRmSC7yEt7EnkqgH7E?= =?utf-8?q?pQQ2156cvJF1+1YBBd5huFBxniYpdxVtdW9m3je/aTqdN3clxWZL67mR/ECXrf7Vd?= =?utf-8?q?9UkJVS4uKGQUZb7XSoz7CVveHl+1Byd8gDEdbw3+cRSfs/WJ5dFm4Ir08RqNliLyW?= =?utf-8?q?zsvs9f7Y5cSnl2bo+HNQqLw9+W4JaW+o4KOTQmpxe5IAi+nhTKFnQcWKSUYu/bilg?= =?utf-8?q?ZTWtAkH9MuqfMeLZISrGAnBzqLQr6SGW8X+LwWu9XJbv6UrlQLlCRVcCzOq1IG8Hl?= =?utf-8?q?ISDCHwmyscLhXh159e8bK7vzlbxu1LhIdsm0O7AIrxQRR20MBx7bx2jAaVOAmW1mY?= =?utf-8?q?hG0UsGYSU5WbgtprVz08itvxQqmw6AasIeSgGcfw0j7fsKVfbmK/PMC/m6wTDZD3P?= =?utf-8?q?O3MXKVSsYzxz0TeP0j/NMhKYalvZCE/SZd4woa3yHGzyX1EJGlqbUWdu6Y3CwrU+O?= =?utf-8?q?wcuNUUDbv0Te0/+hIJVI+irwIUIHItmzYnuABegqyIWxP7uE/Sn8lptwLX7GgK03z?= =?utf-8?q?THhImbToKbXtNOovEpsq+0nl5ANh0cGDKNtOilibvNeZLfndJBxFxEP+BvfLT8J/Q?= =?utf-8?q?T5sDB6WUsp+frHmUo1UWvFJVeLsXQlBfFTK1LXfbUMSCAb7U/S8Y1jm79gVCEamcu?= =?utf-8?q?Dn25TFHcowCvHLnxnR2RbCsXcWTaEtpo8v2TTmbYr29GW/UEu7rocyfOaK6QW7YLf?= =?utf-8?q?G5ZJuj9qFUN0Ji96nPqIulIHI7ENfVZLcNNqc5XnHp7TFo9xO64Yv/1FTRMDDz34w?= =?utf-8?q?ZSBsvEYZ62nKb7lAMoLEf9B805Z7sH3hGF993V+YBIHZgNVe504WPG3aYfPoJIXK8?= =?utf-8?q?hhhL687mUYGsWb3uc9JkYJ/rAljPKZlxU9+gVcwJODVbwUvYjgs1sw1HEZcg603Xa?= =?utf-8?q?VRvnU7FC+qXFTlEkDyP1dDCei0QsAtztQPHm+9PweKzPNrRv+QN+e32uTXFYFR1Kv?= =?utf-8?q?zHYXgoZ1oiohfm2EqJaQOPa0J4w7XXIfGQ84Rr2tzzD6BywBaVH4U+d57x+HTJRTG?= =?utf-8?q?YO/cMaZLw/u8uP/vofBP4LFOMLwK0uSqh6vcE2KTXUCK7euUAQJEIXQvXrrgdj6Kr?= =?utf-8?q?kchUITD0RBNi5w35waskMrMIrmYAJZSi/g=3D=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 542f0a4f-fcb0-4d5e-511c-08db19ff8386 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2023 02:49:02.0310 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: jzgGCAPOJud5D5g/TtZGegstn9mXV95WItD7CJDh+DrEkUEi0np0mhpJRfUmVs8Es5j7Tt+jGBOwuRhXWuECdzumrtJkVddirUWX+5wf4gU= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB4585 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org From: Long Wu If bonding port is mode4 with disabling dedicated queue and there are no other packets, forward loop will not call port's TX function and bonding port will not send LACP packets. Add sending LACP packets periodically in forward loop to avoid LACP negotiation failed. Signed-off-by: Long Wu Reviewed-by: Niklas Söderlund Reviewed-by: Chaoyong He --- app/test-pmd/config.c | 19 ++++++++++++++ app/test-pmd/parameters.c | 4 +++ app/test-pmd/testpmd.c | 37 +++++++++++++++++++++++++++ app/test-pmd/testpmd.h | 4 +++ doc/guides/testpmd_app_ug/run_app.rst | 4 +++ 5 files changed, 68 insertions(+) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 4121c5c9bb..02757f34de 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -53,6 +53,11 @@ #ifdef RTE_LIB_GRO #include #endif +#ifdef RTE_NET_BOND +#include +#include +#endif + #include #include "testpmd.h" @@ -4439,6 +4444,17 @@ fwd_topology_tx_port_get(portid_t rxp) } } +static inline void +fwd_config_bond4_send_periodical_lacp(struct fwd_stream *fwd_stream) +{ +#ifdef RTE_NET_BOND + if (rte_eth_bond_8023ad_dedicated_queues_get(fwd_stream->tx_port) == 0) + fwd_stream->bond4_send_periodical_lacp = true; +#else + RTE_SET_USED(fwd_stream); +#endif +} + static void simple_fwd_config_setup(void) { @@ -4469,6 +4485,7 @@ simple_fwd_config_setup(void) fwd_streams[i]->tx_queue = 0; fwd_streams[i]->peer_addr = fwd_streams[i]->tx_port; fwd_streams[i]->retry_enabled = retry_enabled; + fwd_config_bond4_send_periodical_lacp(fwd_streams[i]); } } @@ -4530,6 +4547,7 @@ rss_fwd_config_setup(void) fs->tx_queue = rxq; fs->peer_addr = fs->tx_port; fs->retry_enabled = retry_enabled; + fwd_config_bond4_send_periodical_lacp(fs); rxp++; if (rxp < nb_fwd_ports) continue; @@ -4645,6 +4663,7 @@ dcb_fwd_config_setup(void) fs->tx_queue = txq + j % nb_tx_queue; fs->peer_addr = fs->tx_port; fs->retry_enabled = retry_enabled; + fwd_config_bond4_send_periodical_lacp(fs); } fwd_lcores[lc_id]->stream_nb += rxp_dcb_info.tc_queue.tc_rxq[i][tc].nb_queue; diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index e734ad9a02..0fee5c5c94 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -205,6 +205,7 @@ usage(char* progname) printf(" --hairpin-mode=0xXX: bitmask set the hairpin port mode.\n" " 0x10 - explicit Tx rule, 0x02 - hairpin ports paired\n" " 0x01 - hairpin ports loop, 0x00 - hairpin port self\n"); + printf(" --bond4-lacp-fwd: enable LACP update in fwd main loop\n"); } #ifdef RTE_LIB_CMDLINE @@ -705,6 +706,7 @@ launch_args_parse(int argc, char** argv) { "rx-mq-mode", 1, 0, 0 }, { "record-core-cycles", 0, 0, 0 }, { "record-burst-stats", 0, 0, 0 }, + { "bond4-lacp-fwd", 0, 0, 0 }, { PARAM_NUM_PROCS, 1, 0, 0 }, { PARAM_PROC_ID, 1, 0, 0 }, { 0, 0, 0, 0 }, @@ -1462,6 +1464,8 @@ launch_args_parse(int argc, char** argv) num_procs = atoi(optarg); if (!strcmp(lgopts[opt_idx].name, PARAM_PROC_ID)) proc_id = atoi(optarg); + if (!strcmp(lgopts[opt_idx].name, "bond4-lacp-fwd")) + bond4_lacp_fwd = 1; break; case 'h': usage(argv[0]); diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index 0c14325b8d..7755243cd6 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -68,6 +68,7 @@ #endif #ifdef RTE_NET_BOND #include +#include #endif #ifdef RTE_NET_MLX5 #include "mlx5_testpmd.h" @@ -519,6 +520,9 @@ struct gro_status gro_ports[RTE_MAX_ETHPORTS]; uint8_t gro_flush_cycles = GRO_DEFAULT_FLUSH_CYCLES; #endif +uint8_t bond4_lacp_fwd; +#define LACP_UPDATE_PERIOD 10000 + /* * hexadecimal bitmask of RX mq mode can be enabled. */ @@ -2252,6 +2256,28 @@ flush_fwd_rx_queues(void) } } +static inline void +try_lacp_send_in_fwd(struct fwd_stream **fsm, streamid_t nb_fs) +{ +#ifdef RTE_NET_BOND + void *qd; + streamid_t sm_id; + struct rte_eth_fp_ops *p; + + for (sm_id = 0; sm_id < nb_fs; sm_id++) { + /* Update bond4 LACP if dedicated queues disabled. */ + if (fsm[sm_id]->bond4_send_periodical_lacp) { + p = &rte_eth_fp_ops[fsm[sm_id]->tx_port]; + qd = p->txq.data[fsm[sm_id]->tx_queue]; + rte_eth_bond_8023ad_lacp_send_one(qd); + } + } +#else + RTE_SET_USED(fsm); + RTE_SET_USED(nb_fs); +#endif +} + static void run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd) { @@ -2269,6 +2295,9 @@ run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd) tics_datum = rte_rdtsc(); tics_per_1sec = rte_get_timer_hz(); #endif + uint64_t before_tsc = rte_rdtsc(); + const uint64_t bond4_lacp_period = (rte_get_tsc_hz() + US_PER_S - 1) / + US_PER_S * LACP_UPDATE_PERIOD; fsm = &fwd_streams[fc->stream_idx]; nb_fs = fc->stream_nb; prev_tsc = rte_rdtsc(); @@ -2300,6 +2329,13 @@ run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd) fc->total_cycles += tsc - prev_tsc; prev_tsc = tsc; } + if (bond4_lacp_fwd != 0) { + uint64_t current_tsc = rte_rdtsc(); + if (unlikely((current_tsc - before_tsc) > bond4_lacp_period)) { + try_lacp_send_in_fwd(fsm, nb_fs); + before_tsc = current_tsc; + } + } } while (! fc->stopped); } @@ -4462,6 +4498,7 @@ main(int argc, char** argv) #ifdef RTE_LIB_LATENCYSTATS latencystats_enabled = 0; #endif + bond4_lacp_fwd = 0; /* on FreeBSD, mlockall() is disabled by default */ #ifdef RTE_EXEC_ENV_FREEBSD diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index 329a6378a1..8f88223069 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -175,6 +175,8 @@ struct fwd_stream { unsigned int gro_times; /**< GRO operation times */ #endif uint64_t busy_cycles; /**< used with --record-core-cycles */ + bool bond4_send_periodical_lacp; + /**< Send LACP packets periodically in forward loop */ struct pkt_burst_stats rx_burst_stats; struct pkt_burst_stats tx_burst_stats; struct fwd_lcore *lcore; /**< Lcore being scheduled. */ @@ -583,6 +585,8 @@ extern lcoreid_t bitrate_lcore_id; extern uint8_t bitrate_enabled; #endif +extern uint8_t bond4_lacp_fwd; + extern uint32_t max_rx_pkt_len; /* diff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst index f85f323033..8ea8aefde6 100644 --- a/doc/guides/testpmd_app_ug/run_app.rst +++ b/doc/guides/testpmd_app_ug/run_app.rst @@ -538,6 +538,10 @@ The command line options are: Enable display of RX and TX burst stats. +* ``--bond4-lacp-fwd`` + + Enable LACP packets sending in main forward loop to avoid LACP negotiation failed. + * ``--hairpin-mode=0xXXXX`` Set the hairpin port configuration with bitmask, only valid when hairpin queues number is set::