From patchwork Wed Oct 18 07:48:16 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132877 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 B503343196; Wed, 18 Oct 2023 09:48:52 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6D62C41109; Wed, 18 Oct 2023 09:48:50 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2112.outbound.protection.outlook.com [40.107.223.112]) by mails.dpdk.org (Postfix) with ESMTP id 1FA5B41109 for ; Wed, 18 Oct 2023 09:48:48 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dEAtYm7zByeoI1VadbvuRi4agfC7dfKJfXjtSx9ny0b7cK/24Nnf6Sfr56OuTZGUFNKr9BhP1FymsG/Wa+m/sTRz5yj0YdmT7qQehM0FDEJia2fuHAXV4/6U7OHzEgkRsYQ7TWRgeGvKUnqbBnb9P+8x8mUc35Wl4n1ptQKOlQfI93fKPg9YKhqMmIobf8Dk8vyZ6mvUbGDL1mYgORvBQ+M5n2ceGw8YAa5uZ2B0KhhU5U3Dtp+2n/1Z0ajllygbAUpW41STmZhecTrHgPYzK1P9rgHQQdtUZgh4ZxrlnhIblEkfEZR2w57k5MCZGu8AcWENdd6JO07esLm1SlzoPg== 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=7WA+STwj+IrBQqz0knWeru5fR7yPSRJ01qSWgwFo4f8=; b=UoHbZKMPLp9JLa5RQaAHTlgaX2bl+1WxjPmuKoMOaIxgGQaizvqWC/YZCmkyNF14rd/jobaMw1hBC4N4nYbFI1buCPV2sBWGYkwl9IaJxooRPIuvJbFRu6fnPNcN+WZajP0DM7cp+hmILSyn3LM31fneUEkBrPeOXsgl5HHm5cUOTZfAWqyXUXsVeoStWAI5OKQ1Fwnos1GCvFNthyrQM14HQ3cXUcas9fNekGUP1JDUr9iCZ5xdOxzyI9SnSCcaWBlZjvmcsAtuLU1Fg1HLrzn2s/wfH0I8K2AAijncQqYN82R/IdM9r1oPhA17I/4Gv3WrNZCw5S3UHOlWHZBgVg== 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=7WA+STwj+IrBQqz0knWeru5fR7yPSRJ01qSWgwFo4f8=; b=jbUpi9igtvI+DfDWpb9moaBoDxpoChsAT/r3yh/OmAM9AyYd4hkjtiQ2exgaLpglRtZJRcgh+lLd2TFa7KArNhVuAY5WSW9PwA4HoRzeDClMJ5b05PoEzYsaIlIUn7ufwf9whSsKV6Nm9jrgRJrwQVcvU3qVMAmAM4jdN86lCHc= 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 CH0PR13MB5188.namprd13.prod.outlook.com (2603:10b6:610:fd::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.23; Wed, 18 Oct 2023 07:48:44 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Wed, 18 Oct 2023 07:48:44 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , James Hershaw , Chaoyong He Subject: [PATCH v4 1/6] ethdev: add member notification for bonding port Date: Wed, 18 Oct 2023 15:48:16 +0800 Message-Id: <20231018074821.1908906-2-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231018074821.1908906-1-chaoyong.he@corigine.com> References: <20231008015041.1551165-1-chaoyong.he@corigine.com> <20231018074821.1908906-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2PR02CA0019.apcprd02.prod.outlook.com (2603:1096:4:195::13) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB5188:EE_ X-MS-Office365-Filtering-Correlation-Id: 52221c10-6ce2-4795-3647-08dbcfaea786 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: z/UatLynzOvWaZ2z8XpOaU+vgOYaZa0XV3O268i+6w57Pq4y58BdemZW5izWp7tCuSYtqVXX2Fy/ToYICK4Ma3uuLXIeKhlTfePk/F04hI4AejLVlADE7YL3MHDuNWlqkH48TSY89lgzDjrZf+BV7eUFQRNpJWI9GIibjTc7DGqpzCxbE8hy+k3PCqQ4KzxpDw+k5hydFyqhaXX7HKvHP1NZNHIhfqkbEE665T5QSAreh4IElxPYImMEfgwAKcydyqOewCxpTUjABHpSQAHYVdbT4vZzCPKLa6WzwZ8GVlJ2pAyo/dKbK+3rML/Xfm/UPohLgA41k1Ea9d48mwuM6z42bBOmPpI6ngHE/PyO5e6/L0Fyuu1rFUUlppJtXs2Euv8RHxeWKIkkr+Gw1HHEA16+M94mcIwQhHjvyxoscIWyv8V/57kxsHCR7JL7JSgPnjXc2kLIdByzWbYQA3bGRc8yoSxWP6c7jxabbZSgGuUhFKCGGkVueQcdOafGyDYoaoTP4dG4koZr+dj5eGbBwz/+a/awamgqJVbVpDXM8pjRQoH/86L9H97HeRv+5j0NLWughEACXi5xBTJgPxzUb85HT7qlytNo2s/oA2lViRVoiQNsSeWuhwHU08y2He0jnLDwSbPfXdgCf92wry6x6idVRPpEe+v6LXQjYEpGh1c= 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:(13230031)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(86362001)(41300700001)(5660300002)(8936002)(4326008)(8676002)(15650500001)(2906002)(44832011)(30864003)(36756003)(6486002)(478600001)(107886003)(2616005)(1076003)(26005)(52116002)(6512007)(6666004)(83380400001)(6506007)(38350700005)(54906003)(66476007)(66556008)(66946007)(316002)(6916009)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zizx3Elsu72GVuYf4zYl82mB5qfgSgL7j272AM4IaMHiEfgeSP0C7e8zQPGunRaikdZneT1X/G4NuMRvAYPSAjvAkMMYFbbLmGC0BncpHz5np4+oApVDdtLL3lAyJoHbEotA6dYWQ4wj+Wfli7HtdLgmt5CSZKd3EjiG/d2uQnbXV8Q1C8iCMJtV+3saE6YMjAymJ/g04d46nZ84NwDIClYCOHyzD82d1bq9eCkgmXlx3D0vJf8yRe3AzHDu6/t4TrSEaHPl1wEUc/XtL8d0iePQW8SVbFmeB5LsBCp5wwZkKce1F8SBSf+QB5Y+7LMjBFC6cQ29HO43kbSI/QExQbnv8S5wYbo2Y/07rZ5/ImKZwf1bRIYB7YphE5vxcA0IAo0M2iDdkxEWuRE1Bnrt3n8FelHCyLl4Gs5zeBe4CzBYOcsftvAD86nnAd4U5w7MREIVasmX9V/29lPtD90AimUbUJnQxS+pdw2ajbIAPTRu7VfX5hyqxvDvgoElIkQtS1J0LauWiFZ6ezY1bO6Qkuf83Q6h8CnJL6EfF23LyXEWGf5m4BiKVBjxcPvcoJw6qqlxmz+9qiCLLQVPFHVCosHyoSl7eeZX1S4ZhxBRGFK56VJH6KOs33zGf1+KuZdWGj9uIc7iLI8st08h8XFhKp1eOexKboidT9mi8XsoEwhd1sY4aqBmQmAqGMAN4rPf81FzqMSgHksDj43j/2hY9p/zglsDbwYO/ayHrj2vljiyxDuKmmaNV0ZQutL4cy6m/HoC6sKydYp0zcEmaME2mot0GTkdE7sIHHm0HAxDQJyJZzYWjTuwAjc0L7/1FksmOlcCUa8KrmzQV43ZZK3/90eTWeZN5nCEiJkSrdYqfbw15RpdV0o6sH0kEmNMhkmA+cFM+YMFuMr22e6+ncyMJcNpoMsU22czSgxd33ub4LqQcsWWmscSzwX8IMrv7KXWF8WKurwAYaIQfkryceItiZCG8hz9x46j42iUFYyLQ9QlrxSys4AAuDnktLVU6ALZzs+FrMClRclsnw6UeJHzrQrf/jCGPsQEeVlnDCeqi/zU4qXXbYe7ldg5g614JF/a7ME86IbtEG+qx6rvcKVlC9yeoWpy52CaGXsGFAb0YXcn5NMVbGQCWxCL2l9txfBJGE65GkSkXUbj7yRhEf6NYhHoxYRYX/KSGo1n0Fu3Oeh5HC/uLey9MzCO5Z66uO1bu/oBksjVXvNwl2OkAbfi0FjoRyaXCkxTZREwZGyMQcFR2gmlE7taxm0V95tjaxjT3BhPEYwHrGEewe4mcX28WuegPRWBjQ+gOgN88SnHswF/+S5SK+ZJcWAdGhYqvCOYO6nTPURU4DyuntfKEC6X5PvLzYZHsMQl8ghCls+dzmu/SfzBiTswSLhtlYqeNPwaNLYsDlOyVoWHOzhxL1dvtN5Um85CbZoIYLKcDdkxw3da7Kjyy7PphFele01jdBs5Oc+TQV5aj60MHa7gIaqhZOIvOz7y8vNPaWO77NiOs5eWJUy5NL5M83m4HYYUSTR3aITgtfuBDS74zNlIJeXzt1rZ57N7UQc7P2mA6FzBClhS2ogFqb0VVpW4YXy8TVOtd1kdnzkuOYDzyta+/bqJyA== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 52221c10-6ce2-4795-3647-08dbcfaea786 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2023 07:48:44.7859 (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: JXAbfnJ1tGf9/Igeu4IiAkCMuZOXniZJXfR1yzuyPc3phd7V4oZVZ0cmFj6o6fm5lCZXgppRCw+VYfJe4g0LG4QYIf4AP4LpsdZQyEipzr8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB5188 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 Bonding PMD does not let member ports know the bonding port's information, like how many member ports the bonding port has, what mode the bonding port is in and so on. Add the notification interface for bonding port to let member port know it is added to a bonding port and what the bonding port's configuration is. If so the member ports have chance to achieve its bond-flow-offlod or other private bonding functions. Signed-off-by: Long Wu Reviewed-by: James Hershaw Reviewed-by: Chaoyong He --- drivers/net/bonding/eth_bond_private.h | 1 + drivers/net/bonding/rte_eth_bond.h | 46 ++++++++++++++++ drivers/net/bonding/rte_eth_bond_api.c | 72 ++++++++++++++++++++++++++ drivers/net/bonding/rte_eth_bond_pmd.c | 32 ++++++++++-- drivers/net/bonding/version.map | 3 ++ lib/ethdev/ethdev_driver.h | 18 +++++++ 6 files changed, 169 insertions(+), 3 deletions(-) diff --git a/drivers/net/bonding/eth_bond_private.h b/drivers/net/bonding/eth_bond_private.h index e688894210..f69e85c199 100644 --- a/drivers/net/bonding/eth_bond_private.h +++ b/drivers/net/bonding/eth_bond_private.h @@ -180,6 +180,7 @@ struct bond_dev_private { uint8_t member_update_idx; bool kvargs_processing_is_done; + bool notify_member; /**< Enable member notification of bonding port. */ uint32_t candidate_max_rx_pktlen; uint32_t max_rx_pktlen; diff --git a/drivers/net/bonding/rte_eth_bond.h b/drivers/net/bonding/rte_eth_bond.h index f10165f2c6..f6c773615c 100644 --- a/drivers/net/bonding/rte_eth_bond.h +++ b/drivers/net/bonding/rte_eth_bond.h @@ -351,6 +351,52 @@ rte_eth_bond_link_up_prop_delay_set(uint16_t bonding_port_id, int rte_eth_bond_link_up_prop_delay_get(uint16_t bonding_port_id); +/** + * Set the flag of whether bonding port notifies member ports. + * + * @param bonding_port_id + * Port ID of bonding device. + * @param notify + * Flag of whether bonding port notifies member ports. + * + * @return + * 0 on success, negative value otherwise. + */ +__rte_experimental +int +rte_eth_bond_notify_member_flag_set(uint16_t bonding_port_id, bool notify); + +/** + * Get the flag of whether bonding port notifies member ports. + * + * @param bonding_port_id + * Port ID of bonding device. + * @param notify + * Flag of whether bonding port notifies member ports. + * + * @return + * 0 on success, negative value otherwise. + */ +__rte_experimental +int +rte_eth_bond_notify_member_flag_get(uint16_t bonding_port_id, bool *notify); + +/** + * Notify the member ports of bonding port's information. + * + * This interface is called in the following functions: + * - bond_ethdev_lsc_event_callback() + * - bond_ethdev_configure() + * + * @param bonding_port_id + * Port ID of bonding device. + * + * @return + * 0 on success, negative value otherwise. + */ +__rte_experimental +int +rte_eth_bond_notify_members(uint16_t bonding_port_id); #ifdef __cplusplus } diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c index 99e496556a..239f86ee92 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -627,6 +627,17 @@ __eth_bond_member_add_lock_free(uint16_t bonding_port_id, uint16_t member_port_i member_vlan_filter_set(bonding_port_id, member_port_id); + if (internals->notify_member && + *member_eth_dev->dev_ops->bond_notify_member != NULL) { + ret = member_eth_dev->dev_ops->bond_notify_member(member_eth_dev, + bonding_eth_dev); + if (ret < 0) { + RTE_BOND_LOG(ERR, "Add member (port %u) notify failed!", + member_port_id); + return -1; + } + } + return 0; } @@ -733,6 +744,10 @@ __eth_bond_member_remove_lock_free(uint16_t bonding_port_id, member_eth_dev = &rte_eth_devices[member_port_id]; member_remove(internals, member_eth_dev); member_eth_dev->data->dev_flags &= (~RTE_ETH_DEV_BONDING_MEMBER); + if (internals->notify_member && + *member_eth_dev->dev_ops->bond_notify_member != NULL) + member_eth_dev->dev_ops->bond_notify_member(member_eth_dev, + bonding_eth_dev); /* first member in the active list will be the primary by default, * otherwise use first device in list */ @@ -1098,3 +1113,60 @@ rte_eth_bond_link_up_prop_delay_get(uint16_t bonding_port_id) return internals->link_up_delay_ms; } + +int +rte_eth_bond_notify_member_flag_set(uint16_t bonding_port_id, bool notify) +{ + struct bond_dev_private *internals; + + if (valid_bonding_port_id(bonding_port_id) != 0) + return -EINVAL; + + internals = rte_eth_devices[bonding_port_id].data->dev_private; + + internals->notify_member = notify; + + return 0; +} + +int +rte_eth_bond_notify_member_flag_get(uint16_t bonding_port_id, bool *notify) +{ + struct bond_dev_private *internals; + + if (valid_bonding_port_id(bonding_port_id) != 0) + return -EINVAL; + + internals = rte_eth_devices[bonding_port_id].data->dev_private; + + *notify = internals->notify_member; + + return 0; +} + +int +rte_eth_bond_notify_members(uint16_t bonding_port_id) +{ + uint32_t i; + uint16_t member_port_id; + struct rte_eth_dev *bond_dev; + struct rte_eth_dev *member_dev; + struct bond_dev_private *internals; + + if (valid_bonding_port_id(bonding_port_id) != 0) + return -EINVAL; + + bond_dev = &rte_eth_devices[bonding_port_id]; + internals = bond_dev->data->dev_private; + + for (i = 0; i < internals->member_count; i++) { + member_port_id = internals->members[i].port_id; + member_dev = &rte_eth_devices[member_port_id]; + /* Notify member port if it supports. */ + if (*member_dev->dev_ops->bond_notify_member != NULL) + member_dev->dev_ops->bond_notify_member(member_dev, + bond_dev); + } + + return 0; +} diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 122b1187fd..fc7f0f364f 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -2968,11 +2968,13 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type, int valid_member = 0; uint16_t active_pos, member_idx; uint16_t i; + uint16_t bonding_port_id; if (type != RTE_ETH_EVENT_INTR_LSC || param == NULL) return rc; - bonding_eth_dev = &rte_eth_devices[*(uint16_t *)param]; + bonding_port_id = *(uint16_t *)param; + bonding_eth_dev = &rte_eth_devices[bonding_port_id]; if (check_for_bonding_ethdev(bonding_eth_dev)) return rc; @@ -3044,8 +3046,12 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type, * using it. */ if (internals->user_defined_primary_port && - internals->primary_port == port_id) + internals->primary_port == port_id) { bond_ethdev_primary_set(internals, port_id); + + if (internals->notify_member) + rte_eth_bond_notify_members(bonding_port_id); + } } else { if (active_pos == internals->active_member_count) goto link_update; @@ -3064,6 +3070,10 @@ bond_ethdev_lsc_event_callback(uint16_t port_id, enum rte_eth_event_type type, internals->active_members[0]); else internals->current_primary_port = internals->primary_port; + + if (internals->notify_member) + rte_eth_bond_notify_members(bonding_port_id); + mac_address_members_update(bonding_eth_dev); bond_ethdev_promiscuous_update(bonding_eth_dev); bond_ethdev_allmulticast_update(bonding_eth_dev); @@ -3362,6 +3372,7 @@ dump_basic(const struct rte_eth_dev *dev, FILE *f) struct bond_dev_private instant_priv; const struct bond_dev_private *internals = &instant_priv; int mode, i; + bool notify_member; /* Obtain a instance of dev_private to prevent data from being modified. */ memcpy(&instant_priv, dev->data->dev_private, sizeof(struct bond_dev_private)); @@ -3431,6 +3442,13 @@ dump_basic(const struct rte_eth_dev *dev, FILE *f) fprintf(f, "\tUser Defined Primary: [%u]\n", internals->primary_port); if (internals->member_count > 0) fprintf(f, "\tCurrent Primary: [%u]\n", internals->current_primary_port); + + if (rte_eth_bond_notify_member_flag_get(internals->port_id, ¬ify_member) == 0) + fprintf(f, "\tNotify Member Ports Flag: %s\n", + notify_member ? "enable" : "disable"); + else + fprintf(f, "\tFailed to get notify member ports flag for bonding port %d\n", + internals->port_id); } static void @@ -3983,8 +4001,12 @@ bond_ethdev_configure(struct rte_eth_dev *dev) * if no kvlist, it means that this bonding device has been created * through the bonding api. */ - if (!kvlist || internals->kvargs_processing_is_done) + if (!kvlist || internals->kvargs_processing_is_done) { + if (internals->notify_member && rte_eth_bond_notify_members(port_id) != 0) + RTE_BOND_LOG(ERR, "Notify member ports failed"); + return 0; + } internals->kvargs_processing_is_done = true; @@ -4222,6 +4244,10 @@ bond_ethdev_configure(struct rte_eth_dev *dev) return -1; } } + + if (internals->notify_member && rte_eth_bond_notify_members(port_id) != 0) + RTE_BOND_LOG(ERR, "Notify member ports failed"); + return 0; } diff --git a/drivers/net/bonding/version.map b/drivers/net/bonding/version.map index 09ee21c55f..3bd5e8ad11 100644 --- a/drivers/net/bonding/version.map +++ b/drivers/net/bonding/version.map @@ -35,4 +35,7 @@ EXPERIMENTAL { rte_eth_bond_member_add; rte_eth_bond_member_remove; rte_eth_bond_members_get; + rte_eth_bond_notify_member_flag_get; + rte_eth_bond_notify_member_flag_set; + rte_eth_bond_notify_members; }; diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h index deb23ada18..f626f971e5 100644 --- a/lib/ethdev/ethdev_driver.h +++ b/lib/ethdev/ethdev_driver.h @@ -1216,6 +1216,21 @@ typedef int (*eth_count_aggr_ports_t)(struct rte_eth_dev *dev); typedef int (*eth_map_aggr_tx_affinity_t)(struct rte_eth_dev *dev, uint16_t tx_queue_id, uint8_t affinity); +/** + * @internal + * Bonding port notifies the member ports. + * + * @param dev + * Member port (ethdev) handle. + * @param bonding_dev + * Bonding port (ethdev) handle. + * + * @return + * Negative on error, 0 on success. + */ +typedef int (*eth_bond_notify_member)(struct rte_eth_dev *dev, + struct rte_eth_dev *bonding_dev); + /** * @internal A structure containing the functions exported by an Ethernet driver. */ @@ -1455,6 +1470,9 @@ struct eth_dev_ops { eth_count_aggr_ports_t count_aggr_ports; /** Map a Tx queue with an aggregated port of the DPDK port */ eth_map_aggr_tx_affinity_t map_aggr_tx_affinity; + + /** Notify the member port of bonding port information */ + eth_bond_notify_member bond_notify_member; }; /** From patchwork Wed Oct 18 07:48:17 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132878 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 0658643196; Wed, 18 Oct 2023 09:49:00 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id A383942830; Wed, 18 Oct 2023 09:48:51 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2112.outbound.protection.outlook.com [40.107.223.112]) by mails.dpdk.org (Postfix) with ESMTP id 7BA6E42670 for ; Wed, 18 Oct 2023 09:48:48 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=j+rrf8UJ10iJ0EHCo4Qx3e+vEvmK1Pvg4K5D6Jt9nJzSXR6yb3JYlpfBqKg3JCBkEBBUJ0mAK8PwMTokkvVqjnyw20E5R8NIHm9/mcRRuo2pHnjKSYUjWrev8G4jLtLQBpjlRjld+e03p1bAbNsu7B4s5KxzpT5v5rclQcnPONL/P7RB2rp/g9Qc9B6MDPgaXsG2HYKFXyG9wGcQZg4UReU1hVmLGCRgfRq97DHn3U0URRGQ0lVibj9uDKlzrw20ZjQ02QUrppltuXDqO9W3aU/PyXcIPSGnWFjibHpaG4uDZNolw3ia51jQtZetMjiuX8k7ODtbAxzeS2/AlhLzJw== 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=KdUzl5APdT/oYZJAr5+Has4n+jB0yperDhMfNkwDqKo=; b=iwZE4Z5APY4WlxUma3np6R4leo02NfKV66jndee3e/6fnKqv1K+bABfPHRKMBe49Xlfls3cmLJZmTKcw+fsA1YaBWwyhCkoU0F77XKWvMBvdt3iD2O1Le/efydI68qHZqK3WV8duAbwA6OW/g8JjDqcPnsgIe4jA9sMkhThz5FwkdyqjhSfxm2CN3vkyNJCUGaps+Ijz0TR/GGa/nZc/Kh5CXjrLsQY1wS25AtFwe4uYBmllxzDPbc8FywO9E4ageHFSF5rFVryOwnjvq/MyiF0R8YrPa0CoPBRjLI1xHReZfVizVdFi2niKqVIalu0mP6X5tsM0bPqDzvXUFRogxg== 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=KdUzl5APdT/oYZJAr5+Has4n+jB0yperDhMfNkwDqKo=; b=sm40Vclp7DSN51W+wumegA3c8x3eYwauVSLUHyxcpM2cn84Vp6WCkcfJzQ4VOEeZFw+NpXvGa1H/G1Ch3lpS26EW4hBKNWKPNPug5IvAR4GAmM9IvGljggnK8jCpuHaRWaT/8SN/LlRTDiK1YOvvkldCXzhkhbpogVmVpHVvOVA= 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 CH0PR13MB5188.namprd13.prod.outlook.com (2603:10b6:610:fd::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.23; Wed, 18 Oct 2023 07:48:47 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Wed, 18 Oct 2023 07:48:46 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , James Hershaw , Chaoyong He Subject: [PATCH v4 2/6] ethdev: add API to get hardware creation of bonding port Date: Wed, 18 Oct 2023 15:48:17 +0800 Message-Id: <20231018074821.1908906-3-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231018074821.1908906-1-chaoyong.he@corigine.com> References: <20231008015041.1551165-1-chaoyong.he@corigine.com> <20231018074821.1908906-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2PR02CA0019.apcprd02.prod.outlook.com (2603:1096:4:195::13) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB5188:EE_ X-MS-Office365-Filtering-Correlation-Id: 8fe0030e-8a0a-4dd7-c4c6-08dbcfaea8d8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: f2HawK3NUU1z7+RUEpU/Sp6hnt9Pji3e7S3Yao762Dje5r0JuRkWETXHx/peFZMynXKbnMFe0JnfJ+r0/XrEKEnWxD1mJ/Jg7onrexztn6RZfXcwYx6jbW8XmH51wDkTsScl1+jwyctRfH+VgdVEU+Y8GBIYRUjWX6tsqj1QYbhdo0UFf0PwMAPOs0idYMl7u/M4ZZKn5K5NuC2r1aG2Gqu3oYop7FU/gSZRaiynlCyUNzOpACR6dsZ/INGWgQswgVmGcO8YS9Spu2hno0kcg4tKztY/rT7oZSkXlnClkOe+AhvjgAPv4GJ0raFqfomznmR3RA8Wg69dTMaTDsultrGZaLTWMTI0oD3mlbG7nCNeczD8lXIKsbnw0zIiVlaoMPYp8QzPhiUBeDre5lWR7K81H7UG4sYXGVPkbz81RVIDqNf23UT6fwtXox8cgMCK14jKhO2/eTqKT4oNiGJlE6E/M4HJmAin5y/m5zmcMl3CI3wGyTJPJfYSf+QLZJsEYHzxEKiHUnfUxGvWlfshULSpN8Es7L/+Oh/R3xXG3hYhfyiY+6i0QYsDVhKQ4VM4naPRt6+a8ZQ6ti/9nU+bF/Za9Ijk4gpHG1imKZ0kj4m5SFIt93niYlhNZndmL7KRPXUTCD4T0YdXRi7JtnoX6pcGf0dnA4hZ4FOvAgUht1M= 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:(13230031)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(86362001)(41300700001)(5660300002)(8936002)(4326008)(8676002)(2906002)(44832011)(36756003)(6486002)(478600001)(107886003)(2616005)(1076003)(26005)(52116002)(6512007)(6666004)(83380400001)(6506007)(38350700005)(54906003)(66476007)(66556008)(66946007)(316002)(6916009)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ah+/NoJAri6EMUkddrMhIOaKP3cpXlGcgfXY2e7WEw+RZIthsLjMbFGvDVUITO9yXLDNsNaimXRYQ31+o4LmUmj/X4iW1WfUm37gbfSQXxy7h8Ra8goTiwr3MAra0ItntBy3Cc0RIeDXKz0jplksg8XcSMXIVO2mPfzvj9y9m3vyzSeons1wgFkT59cDZbHhvzqwjmUBHw7yITaAtsJ7gWHXShxN7/iq2l5A9jnokHnMu4JNGaKzf/57zB6mySI53znTRR2A4Kb8Yb5eHoqTniqF2GXY/MCzBCkMQSkbPh1NoMUnwSgzYBnDA3fsscZjbHoP8X7Nypos7WtSx2blqm4WUp+SciZOiQbjG7HiJksHkGRxStfUf0MYvgqVBVIA7pyvFqdEGJ90sGjzyMk36qYLM4yOEdoVFidqW1ZtGDDj2ssFPLCj4ml3qgh/VD7BqWEOh6j4NjTAo1M01TLMvcdkPjW6mvEWOoklmiT+jx0ojPod2QwWFMDcIo3JT7yM/6jrPW2I1pt4v/0icMSzSkAjzAItzu3w7GJMZT9Xoms3b2zvXZDFWHg0TsiT00BhJ9IIHFm4JZ7sA5oC9tgnqxUlb4Uavmgg5brMTMKqp1tDPjCHZ++P7nVUAERCbdpWRx0+RkhMLDX/IfpKqg3tF0zJyXpqNzMdmChYN250G/KlYaWtyo+dvDxYlz4wZ9ye90pb62Daoi0B34GSTt2BVYc6WHeHl1yiqT+LjxmxHybaBX8F2MIV3wTDBoBz1ecDuwn1cypePNRqOV6m9leq6mJTSq4VmCXRo1eFmTGgdbaR/0DrphvLC8zpOYixV8K1ffVLKVyfO7W14LuDgV7MMNSAoB3IN/kOH7sisCPYNChv20KmZuUi6usQ8U2Ktl4fNPY7Mi3ni27gaFdH/b7CevtN+c6RPP/DcOLICWqc6kAB6tMt4Wlqiiiyu6kVq8kO03wc6a4Idxs+gUJPbHr1wZhQRlzUbuccDBlMdRjLCMz//QCoggQ1nI2d5emgh791RxWL6fhArH5++MjNTu+xuw/cYtPhW6lZkZC9CdMAk6vIaNEIc7UJXYk3oTB0wDtO0xG12LAs/nDJuHlUhpGhzwfIu+A+QoFzF74YRghIUApGRaA0Pqx5AuLovmPaTYZ3sOQGs+rO64vguDiyQXevUV/vaSsYwsifvN1lWSw1AdcdJgXW4+044Sf8iP6yu3lENHmOV2y1aA3RR4YStRgOTdZy9Yu9jdbPrpqG/3LoSHUObzyQiSBw0yUY6Hof+YgDSXQe1uA6i3ilrQSo3irNiOp3zaeTPq3MovT14s0tfjT4JVjqdoslSBrh3lhowr3Q2TPkUbPF3SJG9t7YhqQqAXRyg4Vm10Df7LWu3U+9x3EJSc6PoTWI+jgvBg0kzAFkPwJzruOR+CUtMZqnlHJoMh6lyYRRugjzZyY+JkZZ7XxHjVLK/lFbTeYJEQ/HrIV1A8Vdw626ASJPAnrrpoFe97t4yW9ZSS/OPp+Lojfuqo00FtLR+Q/2Z4CaaZ/TjJf0O/6aUx8QfzTG9xs/RQF0tVUrwRL4HDEYKRmhxzu7Od+GZEOEohJuAggZUMvusXdoz2k5QmCmZ/r+lWr1LaASEw== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8fe0030e-8a0a-4dd7-c4c6-08dbcfaea8d8 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2023 07:48:46.8873 (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: Okhj0MP7uzC1VJDMmNQLe/EBY5HlaLcqIVasWJGWr5IDC1AYZx51NniDBMJUX6iKL9Uk5hQP7oOxOu1vk+aWl9iocLGJv9g2gYuIyd2djQ0= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB5188 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 After bonding port notification, member port hardware may create the bonding port. We want to get the result of creatition, so we add this API to do the getting action. Signed-off-by: Long Wu Reviewed-by: James Hershaw Reviewed-by: Chaoyong He --- drivers/net/bonding/rte_eth_bond.h | 15 ++++++++++++++ drivers/net/bonding/rte_eth_bond_api.c | 28 ++++++++++++++++++++++++++ drivers/net/bonding/version.map | 1 + lib/ethdev/ethdev_driver.h | 20 ++++++++++++++++++ 4 files changed, 64 insertions(+) diff --git a/drivers/net/bonding/rte_eth_bond.h b/drivers/net/bonding/rte_eth_bond.h index f6c773615c..987269b323 100644 --- a/drivers/net/bonding/rte_eth_bond.h +++ b/drivers/net/bonding/rte_eth_bond.h @@ -398,6 +398,21 @@ __rte_experimental int rte_eth_bond_notify_members(uint16_t bonding_port_id); +/** + * Get the status of specified bonding port created by member port hardware. + * + * @param bonding_port_id + * Port ID of bonding device. + * @param member_port_id + * Port ID of member device. + * + * @return + * 0 on success, negative value otherwise. + */ +__rte_experimental +int +rte_eth_bond_hw_create_get(uint16_t bonding_port_id, uint16_t member_port_id); + #ifdef __cplusplus } #endif diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c index 239f86ee92..317c3c1542 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -1170,3 +1170,31 @@ rte_eth_bond_notify_members(uint16_t bonding_port_id) return 0; } + +int +rte_eth_bond_hw_create_get(uint16_t bonding_port_id, uint16_t member_port_id) +{ + uint32_t i; + struct rte_eth_dev *bonding_dev; + struct rte_eth_dev *member_dev; + struct bond_dev_private *internals; + + if (valid_bonding_port_id(bonding_port_id) != 0) + return -EINVAL; + + bonding_dev = &rte_eth_devices[bonding_port_id]; + internals = bonding_dev->data->dev_private; + for (i = 0; i < internals->member_count; i++) { + if (internals->members[i].port_id == member_port_id) + break; + } + + if (i == internals->member_count) + return -EINVAL; + + member_dev = &rte_eth_devices[member_port_id]; + if (*member_dev->dev_ops->bond_hw_create_get == NULL) + return -ENOTSUP; + + return member_dev->dev_ops->bond_hw_create_get(member_dev, bonding_dev); +} diff --git a/drivers/net/bonding/version.map b/drivers/net/bonding/version.map index 3bd5e8ad11..3cfff51269 100644 --- a/drivers/net/bonding/version.map +++ b/drivers/net/bonding/version.map @@ -32,6 +32,7 @@ EXPERIMENTAL { global: rte_eth_bond_8023ad_member_info; rte_eth_bond_active_members_get; + rte_eth_bond_hw_create_get; rte_eth_bond_member_add; rte_eth_bond_member_remove; rte_eth_bond_members_get; diff --git a/lib/ethdev/ethdev_driver.h b/lib/ethdev/ethdev_driver.h index f626f971e5..18ff5db969 100644 --- a/lib/ethdev/ethdev_driver.h +++ b/lib/ethdev/ethdev_driver.h @@ -1231,6 +1231,21 @@ typedef int (*eth_map_aggr_tx_affinity_t)(struct rte_eth_dev *dev, uint16_t tx_q typedef int (*eth_bond_notify_member)(struct rte_eth_dev *dev, struct rte_eth_dev *bonding_dev); +/** + * @internal + * Get the status of specified bonding port created by member port hardware. + * + * @param dev + * Member port (ethdev) handle. + * @param bonding_dev + * Bonding port (ethdev) handle. + * + * @return + * Negative on error, 0 on success. + */ +typedef int (*eth_bond_hw_create_get)(struct rte_eth_dev *dev, + struct rte_eth_dev *bonding_dev); + /** * @internal A structure containing the functions exported by an Ethernet driver. */ @@ -1473,6 +1488,11 @@ struct eth_dev_ops { /** Notify the member port of bonding port information */ eth_bond_notify_member bond_notify_member; + /** + * Get the status of whether bonding port is successfully created by + * the member port hardware. + */ + eth_bond_hw_create_get bond_hw_create_get; }; /** From patchwork Wed Oct 18 07:48:18 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132879 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 312D643196; Wed, 18 Oct 2023 09:49:08 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 452F742DD5; Wed, 18 Oct 2023 09:48:54 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2138.outbound.protection.outlook.com [40.107.223.138]) by mails.dpdk.org (Postfix) with ESMTP id CB454427D7 for ; Wed, 18 Oct 2023 09:48:50 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k4MuCJFjJRTX84y8KuTan+xDgAHxnxviBldjmvKvowBO4cjOCyFOf/DCOKr9gdk2bhUAgQk2eliyRo/xzHSL3XJ0haqXKt90mxhAdNEYtOYVV51oeRKa2kRcBkomaQ7J5RKUOLKguAe2xS2z7i1d2bZbJptn3wMU4qTG7tLyhScmrWN3iQw24/Ifo5/OFwUoaGnvsy48huS7wvTyCVU+ZJylh5G/5wJEsjifx5LLot1EipR90NtRgSZP9hhpeW9GvgWhsuz/V6mPnjo10KcgBAO6reg02RrgO76ozNb0JUglH7EiwDyhyD2sVRomrtGTh1G+SJ3QcpMIYjFvH5Qbow== 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=AR5VQq8aPNf5cG2iOYZG3RLU4ntcserrzy1cYyEeFv4=; b=D00FDP/xvnTnxUz8r5NR6pD6/d7h6s9ipNiR+UXUxjCJvRCaS9fqYyh4cv4oQPZczj/2JYiDhk+16FB8v+AQb0D/d48THdjmW3iScl2euLj3DaCkZ5LkMHnzj5xoPtOxdXX7vrOBy/gsb84+qBcf2fIR3wZONtrsUn3ZZHmXtuK5AlO8dm5EleJRdbFt75bpV0XwyY0RDl5QZXy9O0s6VhcqRmR/oPHAZfe8kqhKLBy7+luUgXWSTmlbz66qKq+E58RYJkEekoQ0bNsRxXB8C7ioCPy/7xMvuf9/z9dBumIcJf90StZ2LJCZ3PHaMsRF4EojeSfQvwyp7dhPZLqvBg== 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=AR5VQq8aPNf5cG2iOYZG3RLU4ntcserrzy1cYyEeFv4=; b=PLwRpd20PzS2zwZMbm8KLpGNZ+KUL+p80bvyDrEVe5qr32/SctqHiJmMGMQSnBYAIglO8UcApsO4mnUGdfZbmV5cP5qU0wF9/aq1SK5t+38T2a/IFonH9IlcO/hQGnV3GaXPdbO0D/OQgNb40OSvJufLvBGlOig/2LEyQd08iGQ= 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 CH0PR13MB5188.namprd13.prod.outlook.com (2603:10b6:610:fd::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.23; Wed, 18 Oct 2023 07:48:49 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Wed, 18 Oct 2023 07:48:48 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , James Hershaw , Chaoyong He Subject: [PATCH v4 3/6] net/bonding: add bonding port arguments Date: Wed, 18 Oct 2023 15:48:18 +0800 Message-Id: <20231018074821.1908906-4-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231018074821.1908906-1-chaoyong.he@corigine.com> References: <20231008015041.1551165-1-chaoyong.he@corigine.com> <20231018074821.1908906-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2PR02CA0019.apcprd02.prod.outlook.com (2603:1096:4:195::13) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB5188:EE_ X-MS-Office365-Filtering-Correlation-Id: d3cc9902-ccea-4a3e-a231-08dbcfaeaa1a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 7UfBVW8bwlRrr/iIKWO8nO64AVLY1O1WZvRKEtom6Njtx13OQsma9RsrV484PE6Mv7KHxvy+2y8vHAgwy2OsiSAKqZ5zqFJEq3EDEBMMQsF1dyJDCMRiOBfw+z/m22CA9yNgnG+bXxtTYmtp71hiQRp6Z4kRXoQh81RYkUag4ZZZkCGOhJYCv8ascrvzC/AeJ5Av3IdfngtNzkKv91mkqF99yPeQWQhDDVMIlFxYu+WzwOVxCAR+IsiZbb9mL0Ava+XoK1TP7kr+907gELm7S7U0UiL3FLYJ8USRCx9xAOs1saFolefdjrFgRhbGqF3eRvdzmim5o0pfjy9fmdceQfAVYxTsPJH7Ol1Kvu5m9J64RcnP9RuuF/aWeODMbU1xTYx1hCdHruNNTWFIlim1V8dF4Q0fSkVj2phV2Ytcv6m3GS1vlv6KT3lTOnL0bd5UorpyQafaBEs806mBjkxH+kvj0nlnk2KP8gpNjheouzRLxvaKy4ORgdcz2ELkTTqMWFo+i66INfcW3wwk8/BG3YKRTQhYRepP6gvFRZ6Zu010+kjnqyRyk1gb8AV3VL82i0b7JW9hRf+ixxCiKVTAAbHdXVEytDpUJ7KX+Xizwvui3gYuVEIxGaXkaDO5mw6za3zKQIw5+bZvSoDnrbk4vAptVFxdV65EatFr5tjHDTw= 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:(13230031)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(86362001)(41300700001)(5660300002)(8936002)(4326008)(8676002)(2906002)(44832011)(36756003)(6486002)(478600001)(107886003)(2616005)(1076003)(26005)(52116002)(6512007)(6666004)(83380400001)(6506007)(38350700005)(54906003)(66476007)(66556008)(66946007)(316002)(6916009)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: EV/JJqy4FCXPSaFTBx/Ng4Bdlg0qqENfDDV+LgXWG4lYej+NdG+JImfFTd7SFku3kY7xztv3HYi2gf5UAJ9XXlBAcZeuHPenQHiXeDXXOoBJ37LQ7f6lpcItvzogiFVxlykP5NErE7TPdZ0WJ9xiRCXK2EuWwxHivtWDHFGjBFHV0QrBiTMVESzMfY9sSV9H7BbcXss8InGKiw9Ne3QcQDLWPwQEtz1u0n6hZbAVxP0N60/Qig3BEI0Tqfd50AYyoaGllTuq9idJSGS7rW3XVFR41lhDLXM5HbdWQLoJWKAnutaZsM6hkOWRguDJKHAojDh8VpfxSQYJIIfQRoDFtCzEZH/Av/A3DTnPtEiqpxFgGVfDAkAJCyDUItFyMNJ28WDfRwc9w3QEmXNyBq20rNsQKSW1quY3zbUI6H4lVIEANoNTrIxLp3Ljq28BA34dGRThuoyWfgMnvxj3AQVN3tL6KBuXPt3N8//mp2xzCFEVGaz3ArVBd4J7oHFFxvpaU+HW10oG/b4w30gSh1qofm/hkzYpsSj7sD07IViODETEe+xvNRSRbytg/PtkMmil6EQ0/chr0CDH9Z+vFwaptgK0cVW7Q0jaW4pmX8B8M86VaF4CcL4PD5YaQUotsubOYAis7m461UmbBanIsEESjggPemakeLyVPCqWuP37ZxocIsa0zTqiW2aPWNJy85UURwY9l9ulcb++sC46QHOpfDsEIHKYEsIwDaktAxOxBcmg4HXnl8tiGAhsSQJgLvQk/3h/MwsqvLIVDy3m2c0ly/3dsV6G19I2pMtaMFM/eiKWX5de6ZKIY0Sd5bp6o5tqTQ/oX/WU/Kd4X45jqcJFNxAyOE/c7nxqm5wXGly97pcqBOPVcz9xiKRmCmu6jV2RhIJ+mG2pZpDUciwrUfu26n8e3teMrwEYgx0I2nR0tTuzdb4GZfHcKW77nGRKwfmxiP0QB26OJVg8fV9P7rNeqizVYUnJAd0MX8Tw8DkqbthUQ6thNiEKH7kqj92YFLUZ1esFgc4yntyknae5Elt4hJtz4Bhz1khMKbHF5P8fTdFT8WrDhrm6Hqhzj5wg73hDX8pC42YeRUmVyUhE2HbT5UMHoPu0FP4SdCrQaxXi4ihviGbB/bDU4CVrEOwMhb42DxTMCK4KsqRQv6dYFUO0efnyy5soZej5i+3CWG5/a6vk6C8XShJliRL2xayZZIKSXoxooDzLV8CyZldhwL9Ep144VhvJUhh37+GivJtY9ZyuSfvfNGlGM10dNCAYkg/7/iuVRFboTIojQfZkMQtLUW4XzgWbWM9M8kRHwnmpgaGSIURvqNXNtWlZbcom9AFk29c1W+SctF8phSko9lLpbESvXuAcfb5vqKttW9laxBevYc6th395TC0trFU700k6E1T0vBQ5Ns4tuGrB0NCggxgg+kwlyiVIRDpw5c/QWtiC2a29qJJkRoC3WTMkBjwf4JV09EllucrpOpek2vfSmwIkeW8QDW2KMVA5nd1Q28663mdT/gsf68lZbil2tTzJBuwRWHX9k3wuz1ypjh4I1pNMP1yxKQDhvXaSi1b3hs0VheGjQfD/V3ASGsB67EaxZD2zwtXLZF1GCc8EWmyCXg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: d3cc9902-ccea-4a3e-a231-08dbcfaeaa1a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2023 07:48:48.9699 (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: 1agvIpQHYFQBxnZ6rx2f0Db69FKSFtRVQFLkSa1J/y+uQQ4lsG1dyEYb/TgkbJYwo6svNVbebvJhapLC7id86LiZsHLGYCK4jQz+5KIaLq4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB5188 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 Include the following new arguments for bonding ports: - "notify_member" to enable/disable member notification. - "dedicated_queue" to enable/disable dedicated queue. Add these two arguments in initial argument. Signed-off-by: Long Wu Reviewed-by: James Hershaw Reviewed-by: Chaoyong He --- drivers/net/bonding/eth_bond_private.h | 10 ++++ drivers/net/bonding/rte_eth_bond.h | 14 ++++++ drivers/net/bonding/rte_eth_bond_api.c | 14 ++++++ drivers/net/bonding/rte_eth_bond_args.c | 44 ++++++++++++++++++ drivers/net/bonding/rte_eth_bond_pmd.c | 61 ++++++++++++++++++++++++- 5 files changed, 142 insertions(+), 1 deletion(-) diff --git a/drivers/net/bonding/eth_bond_private.h b/drivers/net/bonding/eth_bond_private.h index f69e85c199..f9603a0f6b 100644 --- a/drivers/net/bonding/eth_bond_private.h +++ b/drivers/net/bonding/eth_bond_private.h @@ -28,6 +28,8 @@ #define PMD_BOND_LSC_POLL_PERIOD_KVARG ("lsc_poll_period_ms") #define PMD_BOND_LINK_UP_PROP_DELAY_KVARG ("up_delay") #define PMD_BOND_LINK_DOWN_PROP_DELAY_KVARG ("down_delay") +#define PMD_BOND_NOTIFY_MEMBER_KVARG ("notify_member") +#define PMD_BOND_DEDICATED_QUEUE_KVARG ("dedicated_queue") #define PMD_BOND_XMIT_POLICY_LAYER2_KVARG ("l2") #define PMD_BOND_XMIT_POLICY_LAYER23_KVARG ("l23") @@ -319,6 +321,14 @@ int bond_ethdev_parse_time_ms_kvarg(const char *key, const char *value, void *extra_args); +int +bond_ethdev_parse_notify_member_kvarg(const char *key __rte_unused, + const char *value, void *extra_args); + +int +bond_ethdev_parse_dedicated_queue_kvarg(const char *key __rte_unused, + const char *value, void *extra_args); + void bond_tlb_disable(struct bond_dev_private *internals); diff --git a/drivers/net/bonding/rte_eth_bond.h b/drivers/net/bonding/rte_eth_bond.h index 987269b323..936ab8c3a0 100644 --- a/drivers/net/bonding/rte_eth_bond.h +++ b/drivers/net/bonding/rte_eth_bond.h @@ -351,6 +351,20 @@ rte_eth_bond_link_up_prop_delay_set(uint16_t bonding_port_id, int rte_eth_bond_link_up_prop_delay_get(uint16_t bonding_port_id); +/** + * Set the flag that whether bonding device enable dedicated queue. + * + * @param bonding_port_id + * Port ID of bonding device. + * @param queue_flag + * The flag of enable bond dedicated queue + * + * @return + * 0 on success, negative value otherwise. + */ +int +rte_eth_bond_dedicated_queue_flag_set(uint16_t bonding_port_id, bool queue_flag); + /** * Set the flag of whether bonding port notifies member ports. * diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c index 317c3c1542..656ddd35a7 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -1114,6 +1114,20 @@ rte_eth_bond_link_up_prop_delay_get(uint16_t bonding_port_id) return internals->link_up_delay_ms; } +int +rte_eth_bond_dedicated_queue_flag_set(uint16_t bonding_port_id, bool queue_flag) +{ + struct bond_dev_private *internals; + + if (valid_bonding_port_id(bonding_port_id) != 0) + return -1; + + internals = rte_eth_devices[bonding_port_id].data->dev_private; + internals->mode4.dedicated_queues.enabled = queue_flag; + + return 0; +} + int rte_eth_bond_notify_member_flag_set(uint16_t bonding_port_id, bool notify) { diff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c index bdec5d61d4..8a3e4656ef 100644 --- a/drivers/net/bonding/rte_eth_bond_args.c +++ b/drivers/net/bonding/rte_eth_bond_args.c @@ -20,6 +20,8 @@ const char *pmd_bond_init_valid_arguments[] = { PMD_BOND_MAC_ADDR_KVARG, PMD_BOND_AGG_MODE_KVARG, RTE_DEVARGS_KEY_DRIVER, + PMD_BOND_NOTIFY_MEMBER_KVARG, + PMD_BOND_DEDICATED_QUEUE_KVARG, NULL }; @@ -297,3 +299,45 @@ bond_ethdev_parse_time_ms_kvarg(const char *key __rte_unused, return 0; } + +int +bond_ethdev_parse_notify_member_kvarg(const char *key __rte_unused, + const char *value, void *extra_args) +{ + bool *notify_member; + + if (value == NULL || extra_args == NULL) + return -1; + + notify_member = extra_args; + + if (strcmp("enable", value) == 0) + *notify_member = true; + else if (strcmp("disable", value) == 0) + *notify_member = false; + else + return -1; + + return 0; +} + +int +bond_ethdev_parse_dedicated_queue_kvarg(const char *key __rte_unused, + const char *value, void *extra_args) +{ + bool *dedicated_queue; + + if (value == NULL || extra_args == NULL) + return -1; + + dedicated_queue = extra_args; + + if (strcmp("enable", value) == 0) + *dedicated_queue = true; + else if (strcmp("disable", value) == 0) + *dedicated_queue = false; + else + return -1; + + return 0; +} diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index fc7f0f364f..4bede0aa71 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -4232,6 +4232,63 @@ bond_ethdev_configure(struct rte_eth_dev *dev) return -1; } + /* Parse/set notify member flag */ + arg_count = rte_kvargs_count(kvlist, PMD_BOND_NOTIFY_MEMBER_KVARG); + if (arg_count == 1) { + bool notify_member; + if (rte_kvargs_process(kvlist, + PMD_BOND_NOTIFY_MEMBER_KVARG, + &bond_ethdev_parse_notify_member_kvarg, + ¬ify_member) < 0) { + RTE_BOND_LOG(ERR, + "Invalid notify member value specified" + " for bonding device %s", name); + return -1; + } + + if (rte_eth_bond_notify_member_flag_set(port_id, notify_member) != 0) { + RTE_BOND_LOG(ERR, + "Failed to set notify member (%u) on" + " bonding device %s", notify_member, name); + return -1; + } + } else if (arg_count > 1) { + RTE_BOND_LOG(ERR, + "notify member flag can be specified only once" + " for bonding device %s", name); + return -1; + } + + /* Parse/set dedicated queue flag */ + arg_count = rte_kvargs_count(kvlist, PMD_BOND_DEDICATED_QUEUE_KVARG); + if (arg_count == 1) { + bool dedicated_queue; + if (rte_kvargs_process(kvlist, + PMD_BOND_DEDICATED_QUEUE_KVARG, + &bond_ethdev_parse_dedicated_queue_kvarg, + &dedicated_queue) < 0) { + RTE_BOND_LOG(ERR, + "Invalid dedicated queue flag specified" + " for bonding device %s", name); + return -1; + } + + if (internals->mode == BONDING_MODE_8023AD) { + if (rte_eth_bond_dedicated_queue_flag_set(port_id, dedicated_queue) != 0) { + RTE_BOND_LOG(ERR, + "Failed to enable/disable dedicated" + " queue flag on bonding device %s", + name); + return -1; + } + } + } else if (arg_count > 1) { + RTE_BOND_LOG(ERR, + "dedicated queue flag can be specified only once" + " for bonding device %s", name); + return -1; + } + /* configure members so we can pass mtu setting */ for (i = 0; i < internals->member_count; i++) { struct rte_eth_dev *member_ethdev = @@ -4269,7 +4326,9 @@ RTE_PMD_REGISTER_PARAM_STRING(net_bonding, "mac= " "lsc_poll_period_ms= " "up_delay= " - "down_delay="); + "down_delay=" + "notify_member=[enable | disable] " + "dedicated_queue=[enable | disable] "); /* We can't use RTE_LOG_REGISTER_DEFAULT because of the forced name for * this library, see meson.build. From patchwork Wed Oct 18 07:48:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132880 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 6171C43196; Wed, 18 Oct 2023 09:49:14 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 83DE142DF4; Wed, 18 Oct 2023 09:48:55 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2115.outbound.protection.outlook.com [40.107.223.115]) by mails.dpdk.org (Postfix) with ESMTP id 8BA2742D78 for ; Wed, 18 Oct 2023 09:48:52 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=iCyCLzYIstD/vJ8ocfIwoG/w3kb0+B4jI/6TDmCBlh4KxIalHQCIz8z0HMp17DgFHvMvdXgyRRcfa3nezl0aPzUH9En/teiC3WSeVQvPXWBUp8Awm1OIG7uUnSUqVuadPVOML3ScEWWbDwyXgQQRXiXqSafnbcDe41SkSOQ1/F/ABtw+7pYLPF1sThU+G3DjCWEiLAAQTO/Jbd+L61fu35EaO2a/dl1f3JAgPx0e3VCXbbinC07LD+H/9h+9SqgI9zFuFLQoIVQIYTzRlycrcn6EP8e9nlXHM5VmkHiVx3ES+Y5tvrgAdqvwSM2W0j/aDOO6VxpgZTGS4zBPYTQhkA== 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=hl1SKumr1OOZk4L8LdQN1aMK7JBu1nskMfmPPhr9NpU=; b=JoIqdu6MeTIlc0TQpferMo1wepHdiAGLeysgfZdi50qi47gmpBVnnsitEMtRBmEsqOA7tRY7fC3604tJVbA6dklKIScfRdYFwyvhdpaTQzBuMdw+rPHTNoboQV2ospNVrApoz6KwQRdEQ7hL4XbZKZMNz8wDf632KPEKE/cup5WVGvq+rA/OyFo85gyu+lBqLPt5a1kU1SACyK0E68AoZfCzzeb/pHjjDolHAPq7O9hykUQJjXtktzK3d5xgaY0I0rC4Se9sdxs3yBcnBJcMkZY4ZHf2Tg1pGKdotcGjwzQMro5oCBmS7SmCUg2c64MZxx5cCyMIBMkPY1UOP/A64w== 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=hl1SKumr1OOZk4L8LdQN1aMK7JBu1nskMfmPPhr9NpU=; b=LYb/J1dYF3b6MDaa4twuSdGWEnQ7B3/BTjjYQiQhO5BOUF8w2B88eCsyVrd3+mE/rFx1OEqLjr72MhVtzkx7JunOIydByRlduRbCzCbsMl/JM+j2aNJh+7RG/LQavIxkZMzL5rwYpxDnRKat4yXdymdk8/n0VsO3IGHpp1TAMxc= 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 CH0PR13MB5188.namprd13.prod.outlook.com (2603:10b6:610:fd::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.23; Wed, 18 Oct 2023 07:48:51 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Wed, 18 Oct 2023 07:48:51 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , James Hershaw , Chaoyong He Subject: [PATCH v4 4/6] net/bonding: support add port by data name Date: Wed, 18 Oct 2023 15:48:19 +0800 Message-Id: <20231018074821.1908906-5-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231018074821.1908906-1-chaoyong.he@corigine.com> References: <20231008015041.1551165-1-chaoyong.he@corigine.com> <20231018074821.1908906-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2PR02CA0019.apcprd02.prod.outlook.com (2603:1096:4:195::13) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB5188:EE_ X-MS-Office365-Filtering-Correlation-Id: 5514ae9d-919b-4cec-4472-08dbcfaeab61 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Q0VUu8P+D3cpWmvyxBM9i3uyWkGVuuxPEGhs6VYGJvfirt6zjCUU4cZHsrPZhvu7Q/VZao5sWDV60yGVa4zzErysXvW19tR46H7og3W0idxRHSRsTOe7XoaTnddh6ZfsDtVacpR95rflN9gsxbxkfqQdJLwDY8kFADgDdl5CZrcymwLD7GnkgmEp2Wo4wziCgRqC0xM2BOV976d1M0diD2g2vDOw4BCMmkx3r88EiJypQl4Wqpoywm5seva9YlrBq4FKT/wnmrP6NgtPX9R6P+5p1xuXbkYQ5CVoH9pxHKb8jaTskOUjFM0AoL4kF7g4D9yy3u3k1+F7zQmVMpUj8BG3FmS5Wm052wvNRgO1qg35iTXZVUl/m+tqHr2vOte1QnxBoord0gHQaQ3aeJQgoIY9JUCccDhvCXbuvxgF6HCCASDai7/vQLRbcGDLbRRIKYmdPrxK3D00XIu9LUZs3bf5Pdma+2RM7zmt9f+EhMsopqR4zaaIq4hPAUw+OsCdSL8irXKjbajOt4lW4E7O3YB0E2ax9GSRNlF3Lmm2P4TdRwd4TMTcsux6LGs/XFdq/m/WS5/+wkrJ8RlKC9H72UtlW6yZsbZ57z36/o/bR500qj/mEDwF0BiBl4pFPvhBJJl6GJx1O2yDTG5Yp8jVoUjkwMYFqCPgZKhVirVWUC0= 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:(13230031)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(86362001)(41300700001)(5660300002)(8936002)(4326008)(8676002)(2906002)(44832011)(36756003)(6486002)(478600001)(107886003)(2616005)(1076003)(26005)(52116002)(6512007)(6666004)(6506007)(38350700005)(54906003)(66476007)(66556008)(66946007)(316002)(6916009)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: MM4Md3C/WMuU8Gc+IcD1tYvRK9CIEahRYX6qPiv103XyB6SLVl2Zd1aO639TgVyWkqsxXdSwT+GMZZ/oUNiUyfsEvnoZ7I1H//vNJsRIF3ib5ZhU2uILK2U9+uaCHQynTjbeQbInKM+Qn5mXa5xlYbqcbXNdT4W+1msbZHAAN1BdggRIraYaQjAhfnZqPIEv2UDsvBgFQFVbHp3KHFmRdA/QX83Zqnj+eIweEMN6OXBbJ2ySwakvrlNb4ojuWG0+OCNesDRIv7GE31JSNi370kddVyxZLci0Zi4rSvmgk2ycDpSVpocxaBo8S98G5qa8Jvs0xfLBddD48PCKuny2UIxcBWAyggTJsdqv9Xgp/LchUOeryUXtwS0p2TwfFa0ol33YU4qhCf/fSqNk0J312OAJME3vc6qMwnvZodm7NVJ6aJb1QsBgICHQZiWxsavkPYpWHLGc7vENz5tG1wEJaR/aRET6DWV09U+Qguv4T/YAT2Hz4tqntV2xRcnGYXbI4fNSsLPlOpzHn0cizkFLGpiOmSgTUq8rZghRzIpUW4oSRZ6iXqMXwujbhHXghx1353oGEUHVighlQqwvg4vd2Sn15Fy6eHMGNUFuSGD5ekreJfHzWdz9ynfS/9ZVCtUvWiwUMY0GOqtQUBNkRJ7WBUdIIn7ZeTKxRqJmnzyzRx572HoX7+2scDhMmpWUDv1XQDyOy2Wbqcko5fgoJ77LPKWj2BmqKSo8touzkL+iqjSxMu2mhio7yiAt3ZZL7kPMcovCeR41kr1es+o4ZRVnx6dRB8GoDsrGc/S25B+UcmUhwwaEqBlhMKD1MlkupL+2S8dNUR9sH8FR8LwIQe13D6FZg5GetlLFiizVasC0bgBax44ZKqf2S3yyUBaHQuB3JHibpS3cpLI9YYvHixpzBgcdZhyZG/NxqJFzw8jd3/cxywM7cvv7aYEYDsDkUFmeUK4kJOm/lsRSAcz6aR1vFRRX473i/5aRL0CkqXJ/6s9iruMWiH2DY7ikLLabNc4waZrcixhIWg+bQak50tpgaIRCppsmCqrzEwMmpWL379KtcMgkEF9+2LHEBticbiOl4rHu7FlVj5mHyrM/Y8PODNJqRRGRapZIMqgjfG/21dEnjk+umz3rWn+DGP5JC8atmAS4LdKMVEhW6IbfphAzyZdUCr3dOBB0LReGE90UrxjGEoItfztue00DrXvI8+Akmf7xhFfZLlA+/GFHczWgU/6yPuWCnkIB/Zc5wit2jPwFbY+f2NHMoZ/kqpZs1T7tp4oZmKN8GuQ+wkXtOZteeQD3Tmyqafi848OhkWhVe1QfFRJcSQDxg1+CvfUZ3wq8i0dg3HRCpTVgg+Ytb2unJLBKLUVmuJxtWaiPc8qE8xCy6+1bYU8vSPrjbV10hnUTtcAoMzymDez0HqbyYTvnk+oUELT2NSgR9UAOlrVnJ5FPm1Ty+p2W6js8qtUheTwn6WkF3ttovSp0k1IkC1PIVoQO48U117LEq7jZ/JYSRW8bUEakcf9N/tKzRyGLAhYdm8tyw/JS7eU28erjMdO91spGhGdOUFl788cewnCTnmVHNFx8ay4EjLJRuCEzeoqgX8L0ll488sOLShByuKUsZg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5514ae9d-919b-4cec-4472-08dbcfaeab61 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2023 07:48:51.1269 (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: MMsI3Z4jpKaYnqJ29V29koVshHBaD0DYORpXfL6OkbHsR2Q2CgcSKnuUsAB+72eZNhG89yGgDBVTHClzkiYGqEd3NWjLeScCpahoPgVVnCg= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB5188 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 Several ports may share the same PCI address, like nfp representor. So we cannot add this type of ports to bonding port by "--vdev" argument in dpdk-testpmd. But the port's data name is unique between them, we include an option to add such ports to the bonding port. After adding this feature, we can create a bonding port that member port is this type of port by "--vdev" in dpdk-testpmd start command. For example: dpdk-testpmd -l 2-10 -s 0x8 -a ca:00.0,representor=[0-2] --vdev 'net_bonding0,member=flower_repr_p0,member=flower_repr_p1, mode=4,socket_id=1,xmit_policy=l34' -- -i Note: 1. "ca:00.0" is nfp 4000 card. 2. "flower_repr_p0" and "flower_repr_p1" are nfp phy representor's data name. Signed-off-by: Long Wu Reviewed-by: James Hershaw Reviewed-by: Chaoyong He --- drivers/net/bonding/rte_eth_bond_args.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/drivers/net/bonding/rte_eth_bond_args.c b/drivers/net/bonding/rte_eth_bond_args.c index 8a3e4656ef..b320eb3038 100644 --- a/drivers/net/bonding/rte_eth_bond_args.c +++ b/drivers/net/bonding/rte_eth_bond_args.c @@ -70,6 +70,9 @@ find_port_id_by_dev_name(const char *name) if (strcmp(rte_eth_devices[i].device->name, name) == 0) return i; + + if (strcmp(rte_eth_devices[i].data->name, name) == 0) + return i; } return -1; } From patchwork Wed Oct 18 07:48:20 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132881 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 61F3B43196; Wed, 18 Oct 2023 09:49:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B4C6842E00; Wed, 18 Oct 2023 09:48:57 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2090.outbound.protection.outlook.com [40.107.223.90]) by mails.dpdk.org (Postfix) with ESMTP id B7F2442DE6 for ; Wed, 18 Oct 2023 09:48:54 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nIDYQ7jAOqReJrdhgYA72g4hnbO1MR7jiF686RboEJRs7/YHTFncH2WyAmKhlfnTxQa1fTyY/lzBjeK3CHgSJkClSDciMMuWqvHgBgo26tr6wWlG+fUPxKRuHi03P4OYgt9tngmOdOJWC+1J0s68VHooDTkzbvl51c0/P0Dqj8MD+2jfaevynIDaA9ry/AQfpRHuPH91EBudnkZVRsxn1vOG4jwmyKXcHDAPZTn430QTOY926pgSuFEkQM6gaSfucKrJqLx4MVkAVPDnpb/SvlCzZYAWXUIlDx1ijJzOf8uoNkUnyJ4g3mjKBgF8F0EmPjo4rNvOtIrETqEZhelBnA== 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=kl7IBavRVOOizwMDh7/5SsOjC/MAMrIdu9lzdcBCFOE=; b=K4LybPPAPYFQX6fHWgUpvV3EmNiYfm0SLDvvUYGkVw449yLypD2AF50b2Xys413l2q2TWFQbX00eF+D2cjZK04RH6Migxg0qdb92kP1evPF+bwnNFx/7r4il9dF3aQCwaeAr0cX65+OvavM6OB37iPki/v00lxydSxhtQoKkPSawNNmI7a2W1H5JnqVbcVIL8IPUuQNt9ss231bAMHsoNGHjf+am6RM/keLppYndCePjuYxf01FOqwMKb/E96ydx0MI8Tt4O1/9NK4QQSoUSIGeNDe1nKSK4Q41x4Q+J97wZd2fdcq436BL0aUEbhCZtVQboG9261gnQbrEQPhT3dw== 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=kl7IBavRVOOizwMDh7/5SsOjC/MAMrIdu9lzdcBCFOE=; b=LGh43BEe0nEc6LmY7us80gDuvv8ie1ZcsnzIxaARw2SOh1t5opf2reyTx5wiBQkixUZQOhz6I4jooCPgLR4onW729k7cEHeGeNhQ9NUhE641jINa6K98T6q/d2+TP+caOr+adVAjNqO6w+WKb1+qpfjDhpXr08bv/Ys5aPlwGiU= 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 CH0PR13MB5188.namprd13.prod.outlook.com (2603:10b6:610:fd::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.23; Wed, 18 Oct 2023 07:48:53 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Wed, 18 Oct 2023 07:48:53 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , James Hershaw , Chaoyong He Subject: [PATCH v4 5/6] net/bonding: support checking valid bonding port ID Date: Wed, 18 Oct 2023 15:48:20 +0800 Message-Id: <20231018074821.1908906-6-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231018074821.1908906-1-chaoyong.he@corigine.com> References: <20231008015041.1551165-1-chaoyong.he@corigine.com> <20231018074821.1908906-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2PR02CA0019.apcprd02.prod.outlook.com (2603:1096:4:195::13) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB5188:EE_ X-MS-Office365-Filtering-Correlation-Id: 80c3db7a-84df-48ec-e6eb-08dbcfaeaca7 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: GkCC68gwHRgHn2Zj3nNsVP/CHs2GC5zOxilaSy7jNhAeLII0NSbw9tcClpoKtlqJQD73zCMHM1/lXRukKJD0IVL87J47u2Ymw2DFLkm3lGr2KnNmcwi9GcMLel/YScgeSPUBQdQKD2MZBb8I3wcDtp8PnVv1JMQBjCbTBlzLmRiF8PvUp5Z4AcVRhnZY13dJXiBeEp60JtGBh1HqIb/GOiXS9AWowJ9JNK+pbftYiKloi6DGiFFBMx+Qsp6w4/BXNmfN1QrlKauTTcMn4T62htT1qppn45u8MJqXFTaJaFZRGCKRTKHew7HP6b+TS8wIPR/yUACUTCoSPLmwQmM1T+H92g99JAZ6HNPlBLelytqLbMHNS3MYNRXN+iXbWroSmzTujOSogFk+au/hrQVyCVBMsB8Hg54x5QM3EgrORRnXJEZLLhyAdIEj1gsVYhVQKJBI4vxJ/aC6T+jiUV3VLy6JnA4rYgivEpO/Krb5h9bhQ7d8dWsRMuP8Wq1YnQqdZVGqbc57tqygEw6SZvXZPfHVs1CyGNkxJTEZOqqvnU6yb0Tj6QTOTkKYeLiXI5I8jX4OrHO56z4obsvjZTNe3UEUUWsrlYKNDZCncnb7hi5MRGp4eG+Ig9ufzlTpajitlW98ve6NaMmPF3Dovdk9J8nIuBJdFs8+HBCjtptQAU0= 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:(13230031)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(86362001)(41300700001)(5660300002)(8936002)(4326008)(8676002)(2906002)(44832011)(36756003)(6486002)(478600001)(107886003)(2616005)(1076003)(26005)(52116002)(6512007)(6666004)(6506007)(38350700005)(54906003)(66476007)(66556008)(66946007)(316002)(6916009)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: N0c3+Lmw0UeStk6pHqPiaPE2/Y8eOC2BkPk+ok+cNUd9+QuzVLbjmzp7pZ9h51vByW2IWkxiPfq2ZxMsqesFpmBiFLtFK5YldVVC/1sAVCGOysuwLovu6k1ySKz7dZ0Ulk3WtMDsMJ56bwpnb97mAbbLybCZKBGVe2b8XS4luyvxOfm9Lqs2bb+VHPdAxkIwbsnTiakuQiqC4K5ve3qSQ430vFX1zDRm0cCg2bOqSKJD+OietnBcjX3WX9uTUlAr4FBXlQH6AtR2NeI1lut1APT393KfaWTochlfAaiE22v/OueSP33QxIyJLZPIIQBRiNp7vOedakN+FFWHzSFdYHy1dTQM6MEeeF7fWaQtOxW+YQP/MIrO30Gj6FSa/WPYlkXgT48Td+E5NdUUH5I3OqxZpKD/cHNt9AuuX/vho7qF0AGwUusLzINcbMNz3d7Zmf2fU5HV/mu3Zkh2XcMkdPJe/MyU+cZ82djsCAG6eHyafC7NQq56Kdme1MlhafPx2YF/piHBkGVhXYJY7oMgyXAxMDIycNwsHRSjubQ4oAEYdwgwDxHG8enmGXAWJfPFbl7k3PL0hg1D27TrYItEVhmqgoxkrgdQidH284VcZcPtu2Clk0WxL+iDb16VButY37zy1ycDSgauj81sXWYLfIm6AuGJGUJhCQmp363f6DrUZiqMHqOlKsxcH0B2rW4aLym3JXG3DsYx95Fi26BSIRlA3R3HmQxe9fR5tNQwpnIgtQgLV2aICioTyaJUjBjrkgNEpAv9DWCFpwGQufKTuP6cfqh/6lVnwy8jMCq63My0DPJoKeIsqA8cPiXVf56PzafDw4l9taDeouLkJ6UWXA5ngow+tXeifIpiIK3Zht/Pd80vGHrQIk73OGLe9BSvj10rcV3MVXPgsIyGCh8uzNngIgNNmm19/419wqfmR6DVjRYksswcwaPQtMhreCAyDAMPNvM6sWxuv8g8sRahBhqcyYzw1xm0DWghE85VH8zP4f3V4dVyLPzg1bjoHzNfroVmKV8jsnxKGnIMngLJ2l2DJrqlTwLM+K7/OeMqm+vWc5w4c29JX4z+dIHSnzg7mfVhc2cA49JnM+r1pBFv6tS8aUm5mQBgxZ8LLELcIW5yoTbxKJzOunnpVQMKl4JZNCXUBiMKsvjyAWwodRr1cm88sG5EdbNLmmxZiRBM/CAOoWGI1B+hXctaBebPX+6mtAkGyTjax+HhdM0Jjf1VYodec1BxBCoLWbkbaSHF1fTDYJ8E54E785nSk6yy0kW7u90wnnSt8eVWs2rxeJE5J2cyMBt1rQR6ThEjHFaPmDarQlO6ccnm/rEelkOqBacUo8vp6fwVu87m3ocLBJhmw0bDyboLQjBdnr/fgO0VZtbN4kJNCJJjzrXuuKgY3tUKuPQuCyCUooxV1fr/eq7rAXQ5wlmNR0pb76lGRCZel7uiDFDHIAbL1EwinCSHAKC0cq4N+KbMTO0scbQC5JBoRXDomlVVXbgkwq/9DbgoNLKm2mN7bqThLFnDunOzmbPHTQW4fUJsdU6jhYoNFDI5Lxxdl03VXVsV6tRNKvgDEHw5aETlaVJaalbvLoUtRQfYp+/1hy5ucVWgJC6LajpoIg== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 80c3db7a-84df-48ec-e6eb-08dbcfaeaca7 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2023 07:48:53.2738 (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: hfLzHHXQq8NfhrhZPyKZiKTAGB9KU3ufROtFkYXrS4XfJdDNl19VggcY02M6vx233oOQfsR3r3GT1au6+WFlZnCDsOe53osC5Q4cFhFm0ZM= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB5188 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 Add API to support checking if the port id is a bonding port id. Signed-off-by: Long Wu Reviewed-by: James Hershaw Reviewed-by: Chaoyong He --- drivers/net/bonding/rte_eth_bond.h | 13 +++++++++++++ drivers/net/bonding/rte_eth_bond_api.c | 7 +++++++ drivers/net/bonding/version.map | 1 + 3 files changed, 21 insertions(+) diff --git a/drivers/net/bonding/rte_eth_bond.h b/drivers/net/bonding/rte_eth_bond.h index 936ab8c3a0..02ddb496bb 100644 --- a/drivers/net/bonding/rte_eth_bond.h +++ b/drivers/net/bonding/rte_eth_bond.h @@ -427,6 +427,19 @@ __rte_experimental int rte_eth_bond_hw_create_get(uint16_t bonding_port_id, uint16_t member_port_id); +/** + * Check whether bonding port id is valid. + * + * @param port_id + * Port ID of bonding device. + * + * @return + * true means the port is a bonding device, false means not. + */ +__rte_experimental +bool +rte_eth_bond_is_valid_port(uint16_t port_id); + #ifdef __cplusplus } #endif diff --git a/drivers/net/bonding/rte_eth_bond_api.c b/drivers/net/bonding/rte_eth_bond_api.c index 656ddd35a7..07efc7a7e5 100644 --- a/drivers/net/bonding/rte_eth_bond_api.c +++ b/drivers/net/bonding/rte_eth_bond_api.c @@ -1212,3 +1212,10 @@ rte_eth_bond_hw_create_get(uint16_t bonding_port_id, uint16_t member_port_id) return member_dev->dev_ops->bond_hw_create_get(member_dev, bonding_dev); } + + +bool +rte_eth_bond_is_valid_port(uint16_t port_id) +{ + return (valid_bonding_port_id(port_id) == 0); +} diff --git a/drivers/net/bonding/version.map b/drivers/net/bonding/version.map index 3cfff51269..97ef24dcdb 100644 --- a/drivers/net/bonding/version.map +++ b/drivers/net/bonding/version.map @@ -33,6 +33,7 @@ EXPERIMENTAL { rte_eth_bond_8023ad_member_info; rte_eth_bond_active_members_get; rte_eth_bond_hw_create_get; + rte_eth_bond_is_valid_port; rte_eth_bond_member_add; rte_eth_bond_member_remove; rte_eth_bond_members_get; From patchwork Wed Oct 18 07:48:21 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Chaoyong He X-Patchwork-Id: 132882 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 3E3E543196; Wed, 18 Oct 2023 09:49:27 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6A0D4427E6; Wed, 18 Oct 2023 09:49:00 +0200 (CEST) Received: from NAM11-DM6-obe.outbound.protection.outlook.com (mail-dm6nam11on2120.outbound.protection.outlook.com [40.107.223.120]) by mails.dpdk.org (Postfix) with ESMTP id 220E742DE8 for ; Wed, 18 Oct 2023 09:48:57 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QcIL0oRA5T1H2q1wsaBZg8S4FZpS2yQQkN4UJA+1KaZNUZGeVXhMKTsQ+11e3zgFODN9hNcZ3EV08PlkVeP+Is6KaDL16ueXiiGUAZHGAMm0ZALLlEerXKcjTSzq3ht8G4tdLXp2dV+m83if+VJr5Vls+vPzz+a5QzlABELuj23F1RFNaQiFWOzbbFBFq2BMh1fSHtVaoN78vIWXGh/A8XLGVt0BmYvCk6AafK9NdwrSx7KulHK8Y1wL7TrM6jEFK48jKZB0Ufx9voywFx040EUNRuB3ynwfiwO4HfkC4KA+t/+B1PTPWTsURA4G8v0nb/aWIdFqO03F4S5zqgqxTg== 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=r2uSKdjD8aUYDsFnQ6gOb3ZDt2NvVI3Te+OojzDVCUo=; b=iqBxqM2makEu+DZ/jOXbNEWCz7JOyHNFPUS5KbRLp6F1G9021Y6YhYX74qo1RC7h4ftqcV6PiDW14C+LxStyqTmRs0tHlpubNsbAdyqLFp3+y3ZVLUJVSlTI3Fb8a2foobpnG6li5oPe7oYovD6rjZyFJeG6JK/o/sydQ0lrSVZtsu5VB59xAdLTvR6PzvOKRylZreRgzF1KzqsxZc+9nWIamMAN7npU8oFGnuZeTmCWRzmfexBvBnVQyeYd8r67PpgrngKIck9omo9Nixy3x7mZbyvXN0aYR3cptYsKVDSidYgbWXo1fRFi3fjDhsNK6lK6grX3I9qBbOW+vBNnOw== 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=r2uSKdjD8aUYDsFnQ6gOb3ZDt2NvVI3Te+OojzDVCUo=; b=pWOVj5gwQMR3Xo0K7VTOvNCvG8lUarCpyNGIfzAYwidt+IQMYMdPgqEezS5bQ1DBGKVUS76F/CjMTM13cx7JEkdfRmH9ttecEHljduIUYFL4Q/wuQYFs1S3zMNTVgUUW7xvzicdgx2scXJLm/ffzxKgly5el6+oJolZ7MAb+ess= 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 CH0PR13MB5188.namprd13.prod.outlook.com (2603:10b6:610:fd::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6907.23; Wed, 18 Oct 2023 07:48:55 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::142e:d47c:7320:8a9d%4]) with mapi id 15.20.6907.021; Wed, 18 Oct 2023 07:48:55 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , James Hershaw , Chaoyong He Subject: [PATCH v4 6/6] net/bonding: add commands for bonding port notification Date: Wed, 18 Oct 2023 15:48:21 +0800 Message-Id: <20231018074821.1908906-7-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231018074821.1908906-1-chaoyong.he@corigine.com> References: <20231008015041.1551165-1-chaoyong.he@corigine.com> <20231018074821.1908906-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SI2PR02CA0019.apcprd02.prod.outlook.com (2603:1096:4:195::13) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH0PR13MB5188:EE_ X-MS-Office365-Filtering-Correlation-Id: 90d08cde-87cd-4ad4-c492-08dbcfaeade9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: T3piG3WHERSLLycAJpaqW/+e6SCN3xsGt/iS9lDvO1j4phfEtZtWwIQj+hI4x9//gxEVX1FKaDL2spAEZA9oXRPR4GvpczrMjb+hpvpt6Z3ilWCBugsJb2AVUGET23NrzUBGhZi9ppkeTq7LSNlAIPHoyma4razZBIZ7fVOURCftKMlNFsbWNEVxlQBY3ws6Uxc6J62zskds62TwberOARs/3pLOe/SOcrAEgiwKZPAfTnGba7U4uMNUACxqDAWtdIhM3OQE0q/sFqdMo1o5nFMKlzmJhycOoI47Yg8sEafPCmbFRPyHbjaparE9ce34yO43i6zBP4Od64iIncHyCAClf4AnKv+oIuYR58kqIcPx0lkon6IVQIsvInX1AQ0sIgjGnRqJM8kyrYxo7zVOu6z8jrgarZcHobCbEyL8+l6jFphCh/uBCcEtNbFmdPYdLJXg9Lnp6UwY+1Aax+YUr/wU0PqLVM+HvdVN/zNjO+3EE9PLc0Iold6sPSeLMAwVj1xniqWpGfEJtCHfe8hYTRZwRan7370Qz8JEc+0kCV74G4CkT841AQG5155PlA+/s4Sh4ivxhtsXoRoc5eXyDOLLf+KU3jpdinHd9BuIdIYygiPDLYxeWGjh7EBhaWP5PFXYcvl12AX16iA3vsDgdF3OfKmtnQkyAP9n5dC/0kk= 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:(13230031)(366004)(136003)(396003)(346002)(376002)(39830400003)(230922051799003)(64100799003)(451199024)(1800799009)(186009)(86362001)(41300700001)(5660300002)(8936002)(4326008)(8676002)(15650500001)(2906002)(44832011)(36756003)(6486002)(478600001)(107886003)(2616005)(1076003)(26005)(52116002)(6512007)(6666004)(83380400001)(6506007)(38350700005)(54906003)(66476007)(66556008)(66946007)(316002)(6916009)(38100700002); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 9st8FIfC2CJg3hxZ84PPxl18MBFZ5218YfEutUPNqja1fsJHtOu1YIRmzIabHEEOVyLs+cHy9sbYugZnUCI30KK0ZTDmdUjpt6tdzVYWB8jot57v5jfoXuvWqVurr5rATNddsrb35nMTPLfaqtiqXzdyTlGys0+USsduPtfOdtUsRhtbWi09UH9Az3KV+MuLHsIO9+V00mQzuKdsf5WOGEgBhTp9m0jOSdGAEJw/N7yvb0epYhiD4D+6Tl1/MOqI2j1rJWg/XC+h8mePW9VpRvztVa4NS9Bhh7HCILAf+Ub60UU8epwevyxwiuiNb4FmXjAiBoKoEkEnlv3EWJuP0ojqjky2gySY2uasWqX+LmEy5GetwAGSNTuEk24Cnlgknh+Lym5qd/lwaFAqZDyocusnL1hdKBAABIMfEHBiZlkOfSnPD2COj6rn/6PhVLJgBBbzh76PFxMMz166WoqPv4UU1FSwqQu45NuegKV4zfwhr7TqByOSvFViApfJ7J26JDSDHTlT9E599FdPOkafP770slPrMb7mXpN0iTPgxSjgAW2TAaAM4OQ024x+Omon5AJavI5dLamYU517+mPqDHQ5AaA6pkIE0pMG4IFLDxSRLOqKgT3N3pnkjJyxwfeIO/0qqGIKHT92os/fz55MX7WOmhS1kxPi+zc4Y+0kkBHeBaSRyeIP6ih1iXk+3WSJc4/iS9h72wAlAztOxo+QwjEF96ycGmou6zk0IY2AmnZjucXAzvCFfTW9gbi1pDrqc2EE3fZb0DCWeFqSl8HfsNJ+sunjQ7ZZ4XSktOldIT5zmiVCpL7I2i/EiF/Ot0C1452ySkVy8wHIpp/W9DItQ934mDFQfH4XfN3W2u/GsNS8vImc8bJKz8jHV8u8WBvxiCLEwccpvSUWhbBsK4COH8y6UPKrwOOzb/g3+F2/MkNecxVZZXDeBW1cWu8ayFAO7cSAjjadZq7N7FTsPCWvVBv9u9CsR5V0Yr9pNiAtd2clApTTHEhuFo9Fmd/xlRZs8g8M/Q+OvxXksjOBUBFb4O1aATSflfPBPzuRe6xQVH/gGIjvAEW/gxwtPK3Rac2bpLAZ7alGPVf13j/K2GiAsf8q3wUXoA4X/nMCwGeKM45MX82Gbz/atC5ABQwaUDkvn2tbMMorviR7dlLHRLC03e590ZVLbdvqNi2lif/Y5KFQELItE6wFZnWHCN+B9/vYRSswubQktxuySy5gkH4o52Eu+vUMD2qtQjDsUsGAmZFE++CzJ19HZJ7pF/GQ0+nRe74OBjOZU1N08vvSUg/gZ5NO3QppK6HjyJrAVJMffX9dkQPDBGm0jaYBsf3foXV8+q9OwYK89GHcHZXBD9kT1zRmfb5Eykmtl+pRozJmvlJ9NatxdiWqhtPrB67mVuYRj9DW89Lb/3dweF+rNjKpYMD3e31JJTuslfJrdPTUOL8fmw19SeXQbjWSj4lQux/DHjVgdf+8GgjpBdRYTP8TPNWsWfEMv6rEwWvdfewnfwXfYlzT8CKTqjrNvYxiSVsZgxMU0qHYl3qyjh80DVTzdSUhQd65QD+nAvat4gKAYQpB73J/LxV4ektOEWdZKcPNSU3R+nEv0nKP1ECwcZbF5w== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 90d08cde-87cd-4ad4-c492-08dbcfaeade9 X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 18 Oct 2023 07:48:55.3616 (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: ze7cvcv4VyOGfjxz9TAWL21aoiS3IBv2b4l1GhjW4kwsKPFT2fXkjfjpe+F6/bAYmyybzfke5r1JCP9EmLGFLeUZjLX+y9WMXL6LCK60pd8= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR13MB5188 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 Add some commands to support bonding port notification in dpdk-testpmd. 1. We can enable the notification by command: "set bonding notify_member (port_id) (enable|disable)" 2. If member port hardware try to create the bonding port after notification we can get the status by command: "get bonding member hardware create (member_port_id) (bonding_port_id)" Signed-off-by: Long Wu Reviewed-by: James Hershaw Reviewed-by: Chaoyong He --- .../link_bonding_poll_mode_drv_lib.rst | 19 +++ drivers/net/bonding/bonding_testpmd.c | 128 ++++++++++++++++++ 2 files changed, 147 insertions(+) diff --git a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst index 60717a3587..9f6443ebd8 100644 --- a/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst +++ b/doc/guides/prog_guide/link_bonding_poll_mode_drv_lib.rst @@ -637,3 +637,22 @@ in balance mode with a transmission policy of layer 2+3:: Members (3): [1 3 4] Active Members (3): [1 3 4] Primary: [3] + +set bonding notify_member +~~~~~~~~~~~~~~~~~~~~~~~~~ + +Set the notify member flag of bonding port:: + + testpmd> set bonding notify_member (port_id) (enable|disable) + +This command just set the flag of notification. +If we enable it, bonding PMD will notify member ports when its some +configurations changed. So member ports can do some private things, maybe hardware +bonding creation and etc. + +get bonding member hardware create +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +Get the status of member port hardware creating the bonding port:: + + testpmd> get bonding member hardware create (member_port_id) (bonding_port_id) diff --git a/drivers/net/bonding/bonding_testpmd.c b/drivers/net/bonding/bonding_testpmd.c index 8fcd6cadd0..da7d9cc58f 100644 --- a/drivers/net/bonding/bonding_testpmd.c +++ b/drivers/net/bonding/bonding_testpmd.c @@ -692,6 +692,124 @@ static cmdline_parse_inst_t cmd_set_bonding_agg_mode_policy = { } }; +struct cmd_set_bonding_notify_member_result { + cmdline_fixed_string_t set; + cmdline_fixed_string_t bonding; + cmdline_fixed_string_t notify_member; + uint16_t port_num; + cmdline_fixed_string_t mode; +}; + +static void +cmd_set_bonding_notify_member_parsed(void *parsed_result, + __rte_unused struct cmdline *cl, __rte_unused void *data) +{ + struct cmd_set_bonding_notify_member_result *res = parsed_result; + bool notify_member = false; + + if (strcmp(res->notify_member, "enable") == 0) + notify_member = true; + else if (strcmp(res->notify_member, "disable") == 0) + notify_member = false; + + rte_eth_bond_notify_member_flag_set(res->port_num, notify_member); +} + +static cmdline_parse_token_string_t cmd_set_bonding_notify_member_set = + TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_notify_member_result, + set, "set"); +static cmdline_parse_token_string_t cmd_set_bonding_notify_member_bonding = + TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_notify_member_result, + bonding, "bonding"); +static cmdline_parse_token_string_t cmd_set_bonding_notify_member = + TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_notify_member_result, + notify_member, "notify_member"); +static cmdline_parse_token_num_t cmd_set_bonding_notify_member_portnum = + TOKEN_NUM_INITIALIZER(struct cmd_set_bonding_notify_member_result, + port_num, RTE_UINT16); +static cmdline_parse_token_string_t cmd_set_bonding_notify_member_mode_string = + TOKEN_STRING_INITIALIZER(struct cmd_set_bonding_notify_member_result, + mode, "enable#disable"); + +static cmdline_parse_inst_t cmd_set_bonding_notify_member_ports = { + .f = cmd_set_bonding_notify_member_parsed, + .data = NULL, + .help_str = "set bonding notify_member (port_id) (enable|disable)", + .tokens = { + (void *)&cmd_set_bonding_notify_member_set, + (void *)&cmd_set_bonding_notify_member_bonding, + (void *)&cmd_set_bonding_notify_member, + (void *)&cmd_set_bonding_notify_member_portnum, + (void *)&cmd_set_bonding_notify_member_mode_string, + NULL + } +}; + +struct cmd_get_bonding_member_hw_create_result { + cmdline_fixed_string_t get; + cmdline_fixed_string_t bonding; + cmdline_fixed_string_t member; + cmdline_fixed_string_t hardware; + cmdline_fixed_string_t create; + uint16_t member_port_id; + uint16_t bonding_port_id; +}; + +static void +cmd_get_bonding_member_hw_create_parsed(void *parsed_result, + __rte_unused struct cmdline *cl, __rte_unused void *data) +{ + struct cmd_get_bonding_member_hw_create_result *res = parsed_result; + int ret; + + ret = rte_eth_bond_hw_create_get(res->bonding_port_id, res->member_port_id); + if (ret == 0) + printf("Member port %u hardware creates bonding port %u successfully\n", + res->member_port_id, res->bonding_port_id); + else + printf("Failed to get status of member port %u hardware creating" + " bonding port %u, %d\n", + res->member_port_id, res->bonding_port_id, ret); +} + +static cmdline_parse_token_string_t cmd_get_bonding_member_hw_create_get = + TOKEN_STRING_INITIALIZER(struct cmd_get_bonding_member_hw_create_result, + get, "get"); +static cmdline_parse_token_string_t cmd_get_bonding_member_hw_create_bonding = + TOKEN_STRING_INITIALIZER(struct cmd_get_bonding_member_hw_create_result, + bonding, "bonding"); +static cmdline_parse_token_string_t cmd_get_bonding_member_hw_create_member = + TOKEN_STRING_INITIALIZER(struct cmd_get_bonding_member_hw_create_result, + member, "member"); +static cmdline_parse_token_string_t cmd_get_bonding_member_hw_create_hardware = + TOKEN_STRING_INITIALIZER(struct cmd_get_bonding_member_hw_create_result, + create, "hardware"); +static cmdline_parse_token_string_t cmd_get_bonding_member_hw_create_create = + TOKEN_STRING_INITIALIZER(struct cmd_get_bonding_member_hw_create_result, + create, "create"); +static cmdline_parse_token_num_t cmd_get_bonding_member_hw_create_memberportid = + TOKEN_NUM_INITIALIZER(struct cmd_get_bonding_member_hw_create_result, + member_port_id, RTE_UINT16); +static cmdline_parse_token_num_t cmd_get_bonding_member_hw_create_bondingportid = + TOKEN_NUM_INITIALIZER(struct cmd_get_bonding_member_hw_create_result, + bonding_port_id, RTE_UINT16); + +static cmdline_parse_inst_t cmd_get_member_hw_create_bonding = { + .f = cmd_get_bonding_member_hw_create_parsed, + .data = NULL, + .help_str = "get bonding member hardware create (member_port_id) (bonding_port_id)", + .tokens = { + (void *)&cmd_get_bonding_member_hw_create_get, + (void *)&cmd_get_bonding_member_hw_create_bonding, + (void *)&cmd_get_bonding_member_hw_create_member, + (void *)&cmd_get_bonding_member_hw_create_hardware, + (void *)&cmd_get_bonding_member_hw_create_create, + (void *)&cmd_get_bonding_member_hw_create_memberportid, + (void *)&cmd_get_bonding_member_hw_create_bondingportid, + NULL + } +}; + static struct testpmd_driver_commands bonding_cmds = { .commands = { { @@ -749,6 +867,16 @@ static struct testpmd_driver_commands bonding_cmds = { "set bonding mode IEEE802.3AD aggregator policy (port_id) (agg_name)\n" " Set Aggregation mode for IEEE802.3AD (mode 4)\n", }, + { + &cmd_set_bonding_notify_member_ports, + "set bonding notify_member (port_id) (enable|disable)\n" + " Enable/disable the notify member flag of bonding port\n", + }, + { + &cmd_get_member_hw_create_bonding, + "get bonding member hardware create (member_port_id) (bonding_port_id)\n" + " Get the status of member port hardware creating the bonding port\n", + }, { NULL, NULL }, }, };