From patchwork Tue Dec 26 07:28: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: 135577 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 2DF3B43795; Tue, 26 Dec 2023 08:29:50 +0100 (CET) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E751E40A6C; Tue, 26 Dec 2023 08:29:02 +0100 (CET) Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2138.outbound.protection.outlook.com [40.107.212.138]) by mails.dpdk.org (Postfix) with ESMTP id 67AAF406B4 for ; Tue, 26 Dec 2023 08:29:01 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=NfybTaySFqDWxKsb9XLqfNLiZVxc2uuxBvNZ4RmEA/3sD1ZZ1JC9Uq8pn0AIwVHhQDXJCyEl6zpdCMjz4hDBrDCzlaVsGH1RQxTsfbzOn62JDZ4McbJQGm5wCyPceO3YuQZF/cdXvBeG40sLI4QrUKxs7krZpPv9rzkl6t8IOgc6tuSuFGYh6EJjOs2pYMQfbWNUaejQDFlO/yUh5IAUY/kmdnmQ8l8bohAkjCaH1c567HKHgwl9jYJO4A4ZrhTDL16XaYfETi74P3EEoKPWj/82Le0Gx5IZzMfoeQQxVG4pfbMGQZb3M/JoW0lkhhIysfxzMHRQOCc4N6Bj8R/oKA== 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=Thevn4fm02KKH852VJyuieaWeZ8q+NjXqUTDBJjmcwY=; b=VPNxcFKRVEnvPDpR5A61f5tZfbVj8J24gowfW5nyBwBWoORci/3jH6ceguQsbIWmr2C1+tXrnNmqvqN/dNnhkERaG3l74KipfE1QXg4MkDYZsfI+nKeDMFMBgDthKyOKs1yUiOKaTA7dPzMm0Z9DYDrx8m/K1kDU6TjTyVgavHru+lOMvCINaAa2lcaxmoUn9xfun6SeVoPwzEYbJeJqjfXNnRofWBYsUX04aXZwF7Cg5Ge88xahUH0RpBePMf+qw6axAZt5J0Ou46z7AGA7nb3mAs891iaEuHW5GSDP/YsrobkeyKurwGr2DV7jY0oaOtttDBtNtR/d778dTmagGQ== 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=Thevn4fm02KKH852VJyuieaWeZ8q+NjXqUTDBJjmcwY=; b=SgCZoD6TwrKdu37hikYBZq7q/ABIIXcX7J5PHXQQcix9NYZ7etwrGbSkIAU5L1TO0L0ETxkxLeaTJz3nVJEtA3YOn4sRSfNcPXZX4/qJWXWh2ofgYiSJub2m6sZPyUrL6lktXysDmlEITAy/rd5qa8VKZLovETXwbEwXWlwqik8= 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 CH3PR13MB6506.namprd13.prod.outlook.com (2603:10b6:610:1a3::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.27; Tue, 26 Dec 2023 07:28:59 +0000 Received: from SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.7113.027; Tue, 26 Dec 2023 07:28:59 +0000 From: Chaoyong He To: dev@dpdk.org Cc: oss-drivers@corigine.com, Long Wu , Peng Zhang , Chaoyong He Subject: [PATCH v6 08/14] net/nfp: add bond firmware creation initialization Date: Tue, 26 Dec 2023 15:28:18 +0800 Message-Id: <20231226072824.3163121-9-chaoyong.he@corigine.com> X-Mailer: git-send-email 2.39.1 In-Reply-To: <20231226072824.3163121-1-chaoyong.he@corigine.com> References: <20231226023745.3144143-1-chaoyong.he@corigine.com> <20231226072824.3163121-1-chaoyong.he@corigine.com> X-ClientProxiedBy: SJ0PR03CA0239.namprd03.prod.outlook.com (2603:10b6:a03:39f::34) To SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SJ0PR13MB5545:EE_|CH3PR13MB6506:EE_ X-MS-Office365-Filtering-Correlation-Id: 1c6172ad-ec77-4567-fbe7-08dc05e4539a X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 3bAToVgQw6yh/BTBctIkyz8S7P49xWwcI+yQiLF0HGm4EqOYIz20fybjPq/4pcgfTs+j5eLp2MSnbJTeTGJQSJq5SqUDarKSnAAOkbRLudiGhWACsqC5u7WuC92krC1GAThMltMvLxUIEjcgZNG2rKKIIzDhy6EBCY2coHykU2N4+2Kt1Q2eym2tk1thZYVwB4EvKCdHOvlLNb5WuWRMZRirAcFfUJf4MUkTPxJj8vVmcsrVXOvdnbOxVWo1Pmsz9Y4OiHAToFBoo4w0su0G/LfUtQiZ9lBPx+WsfJtk8gagW6NWvs2dWfas3p994ZCcgKvGj8wcQwNlXmem1I95PcyWyLjhDiROh3taaScPRopwTDYl0BmpZMF5OjXpLUQmbSkY15MnhY9e/k1eURuJKPSBwTA1orDCtqsdPOK35ZhylXRw2CXr/eli/DOLqLGatqeXM4Oo+ImZBC7qKKHPQaMaDCemd6UQV1EiMfs6uVmeIESXx14aqpgSyRjl8dUJFrKCueV49DkJopsSW/pI3TpOFfJtZqHuWPNeF7CCf/VYZ144UukGxH6fjqrEAUjldZXdbZTNMWyWil95js6BpJObGbz2/FLdSl/IghlW2cL/tQsENFZTjHi5Pz9Ge7kUn6+fYM5AAATEwnTcrLxZ2jsKd+XdI29D1pO2X+r+Sqc= 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)(376002)(346002)(136003)(396003)(366004)(39840400004)(230922051799003)(451199024)(186009)(64100799003)(1800799012)(107886003)(26005)(1076003)(52116002)(6666004)(2616005)(6512007)(83380400001)(5660300002)(44832011)(4326008)(8676002)(41300700001)(2906002)(8936002)(6486002)(478600001)(316002)(6916009)(54906003)(66476007)(66556008)(66946007)(6506007)(86362001)(36756003)(38100700002)(38350700005); DIR:OUT; SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: bToiGxX8e2UArg8MS1+bmwenJrgKeCDxAEMoC6K4uWF9EBU6nRrBuVHtX3PJlar1CoaWlVNI5jr2EarSH21Qs5XLajPZicQZXxURR0Fb8/m7Y2bcRwAPQ05mcTTmz64wmJKQgNT2SVeEFnKvBxarNfJ8e9UeSE8ihHeFqE1ONemUtqNAPMIWGR8K1xDyrNnn39xfObW0i5n2L550WYI69FiuU2dWPRLbHxYsP9h103nqf7Z/PK4yhpkIEKdBoReTB/nfCh89+A/HwiDxH7zYz5LEf+evZ7/o32TZ/O1H74n6U8LFyrUSiHOk3ZuIxg1J7subsLuBjseg/OtiEBf6TUT13E3/Tz8Wlh973iIyLEv4JpimCJTf+x1ErWZtKdgr3nciQ/eVT5ApeIyAt4z1TNCi6NOxc8W8rIRu1ZqdxtUeyP41qe7LYEOd8XrtUsB1ew9bjWrpKOKqKJBx76h1bo2+zLQLsv/xNA/DVaCBxbrIJ0puMNerPr9pvczS4qoj+cC+hWPLAkJZ+EQSRJCHMWnnJlgiJFieUPNvbR3zE1rjoQlTC++1KQ9PP553OsNmbf+J+Lt2sr5Qexuv44839YZpox5chixt6lCtrCybErfO+GlAgs7pglIDJZQTNktNAfuKQw9FU58L3SUzoopTLOeVapKs1jemxzif0Ub8Z4tVv50hxbpMYJnUIq8LT+wMFncPEXdRlTTl+dZo3I9jPD7nXmgvnI77cyOpNAcktfzpibDay9NoIxq1XBxCBMA0+AlnGn64uLVf2W1IXH9p3wo1lJ9cSJxo/hzBagtx/RJEAQgDVFAlRhND0n42xyZQ6G0Ggwb+yNmmjP0dIOmwRud7XkQ8BxPnM3XlcBFYhKbbJLvKmLH+JvVg47zNYqF+FF2FGCLqTQHC+d6rO3126hIqG8P9R43Jq9zrdxyY6K34VDioHc3HK4vsIXgIoJO8ewPRPkjYC7WO3JP3iXUadoVSTZQetnGgfdSjMl5GQZZkmrTZB7hfH1Nye2ZXrwj8A3YACkc5JWvpzQPayp4xxFKfkMiLfvKZHxmnMopn3LoXyExhN7lYLx8Cu6AZX2kyVl1DssOv0t1+enenlmfANrz7XHwq5/a7KEx+L8YzfDLkFsNU7ufy3h9swMPn/TZ2ra7JijSFpZtj0xucQ9KnC5TSHRRhTLSOdD8+CX50xQ+Np5/kAygU8LazbHuCWWZStHGU45NMDV1hZveod5C4ziuxapJ1CQvcOWPQXD2DmY7UGrEHdY1Gifkmp77Gs2cLFbYVrLVkm7f+U69XUw0VP2lPW3JC5RMzY3AqwqBxCBAL8EhZI7L8hwxHSvkltAb0528kn+GW7jjaDMBDZxnldwaliy6+DARnzInMtCu6pCk7Pn0YFK/LJhLUZwYF+e7yQXgHe8KtTLO+gjEP+HSo9hyk3jRY5Rld8AFoKjKZAL+BRcCt5wnWss3cwCzC2e6A4OS3/LSFKKe7b5SO1b7fe3gNjDYiRHnbnyoq/K4ZE601eWua0eAuv97Va6gJvWJw2fGhTyI6OX/oSAEkCbGP7+NvwaUieIjJLAuptNw1c+IGk/9Q3kYZdikIIiOcjzkk0ZbK+rbboMASBp0akaYq8Q== X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1c6172ad-ec77-4567-fbe7-08dc05e4539a X-MS-Exchange-CrossTenant-AuthSource: SJ0PR13MB5545.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Dec 2023 07:28:59.5763 (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: z1sVZdpl8YenSvlKVuFG145MM2ocCIAuraogBQygPC1Lp7Eg46zQnWCoT/RFWSaus108+yLNYwr7cDHjcR+oSzxA2dU8qQDK4T7WLL58UU4= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH3PR13MB6506 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 Firmware supports several features and bond firmware creation is one of the features. Driver notifies firmware that driver supports bond firmware creation feature by CPP bus write. If write successfully, initialize driver configuration. Signed-off-by: Long Wu Reviewed-by: Peng Zhang Reviewed-by: Chaoyong He --- drivers/net/nfp/flower/nfp_flower.c | 64 ++++++++++++++++++++++- drivers/net/nfp/flower/nfp_flower.h | 13 +++++ drivers/net/nfp/flower/nfp_flower_bond.c | 59 +++++++++++++++++++++ drivers/net/nfp/flower/nfp_flower_bond.h | 65 ++++++++++++++++++++++++ drivers/net/nfp/meson.build | 1 + 5 files changed, 200 insertions(+), 2 deletions(-) create mode 100644 drivers/net/nfp/flower/nfp_flower_bond.c create mode 100644 drivers/net/nfp/flower/nfp_flower_bond.h diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c index 94b50611f0..195960e00d 100644 --- a/drivers/net/nfp/flower/nfp_flower.c +++ b/drivers/net/nfp/flower/nfp_flower.c @@ -16,6 +16,7 @@ #include "../nfp_cpp_bridge.h" #include "../nfp_logs.h" #include "../nfp_mtr.h" +#include "nfp_flower_bond.h" #include "nfp_flower_ctrl.h" #include "nfp_flower_representor.h" @@ -228,6 +229,42 @@ nfp_flower_init_vnic_common(struct nfp_net_hw *hw, return 0; } +static int +nfp_flower_bond_feature_init(struct nfp_app_fw_flower *app_fw_flower) +{ + int ret; + + /* Notify hardware that driver supports hardware creation of bonding port */ + ret = nfp_rtsym_write_le(app_fw_flower->pf_hw->pf_dev->sym_tbl, + "_abi_flower_balance_sync_enable", 1); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Enable bonding port hardware creation failed."); + return ret; + } + + ret = nfp_flower_bond_init(app_fw_flower); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Initialize bonding structure failed."); + return ret; + } + + app_fw_flower->flower_en_feats |= NFP_FL_ENABLE_BOND; + + return 0; +} + +static int +nfp_flower_sync_feature_bits(struct nfp_app_fw_flower *app_fw_flower) +{ + int ret; + + ret = nfp_flower_bond_feature_init(app_fw_flower); + if (ret != 0) + return ret; + + return 0; +} + static int nfp_flower_init_ctrl_vnic(struct nfp_net_hw *hw) { @@ -538,6 +575,20 @@ nfp_flower_cleanup_ctrl_vnic(struct nfp_net_hw *hw) rte_free(eth_dev); } +static void +nfp_flower_bond_feature_cleanup(struct nfp_app_fw_flower *app_fw_flower) +{ + nfp_flower_bond_cleanup(app_fw_flower); + app_fw_flower->flower_en_feats &= ~NFP_FL_ENABLE_BOND; +} + +static void +nfp_flower_sync_feature_cleanup(struct nfp_app_fw_flower *app_fw_flower) +{ + if (nfp_flower_support_bond_offload(app_fw_flower)) + nfp_flower_bond_feature_cleanup(app_fw_flower); +} + static int nfp_flower_start_ctrl_vnic(struct nfp_net_hw *net_hw) { @@ -768,22 +819,31 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev, goto ctrl_vnic_cleanup; } + /* Synchronize the features of driver and hardware */ + ret = nfp_flower_sync_feature_bits(app_fw_flower); + if (ret != 0) { + PMD_INIT_LOG(ERR, "Sync feature bits failed"); + goto ctrl_vnic_cleanup; + } + /* Start up flower services */ ret = nfp_flower_enable_services(app_fw_flower); if (ret != 0) { PMD_INIT_LOG(ERR, "Could not enable flower services"); ret = -ESRCH; - goto ctrl_vnic_cleanup; + goto sync_feature_cleanup; } ret = nfp_flower_repr_create(app_fw_flower); if (ret != 0) { PMD_INIT_LOG(ERR, "Could not create representor ports"); - goto ctrl_vnic_cleanup; + goto sync_feature_cleanup; } return 0; +sync_feature_cleanup: + nfp_flower_sync_feature_cleanup(app_fw_flower); ctrl_vnic_cleanup: nfp_flower_cleanup_ctrl_vnic(app_fw_flower->ctrl_hw); ctrl_cpp_area_cleanup: diff --git a/drivers/net/nfp/flower/nfp_flower.h b/drivers/net/nfp/flower/nfp_flower.h index 8393de66c5..30443cd568 100644 --- a/drivers/net/nfp/flower/nfp_flower.h +++ b/drivers/net/nfp/flower/nfp_flower.h @@ -7,6 +7,7 @@ #define __NFP_FLOWER_H__ #include "../nfp_net_common.h" +#include "nfp_flower_bond.h" /* Extra features bitmap. */ #define NFP_FL_FEATS_GENEVE RTE_BIT64(0) @@ -61,6 +62,9 @@ struct nfp_app_fw_flower { /** Number of phyport representors */ uint8_t num_phyport_reprs; + /** Bitmap of features enabled by HW */ + uint8_t flower_en_feats; + /** Pointer to the PF vNIC */ struct nfp_net_hw *pf_hw; @@ -96,6 +100,9 @@ struct nfp_app_fw_flower { /** Function pointers for different NFD version */ struct nfp_flower_nfd_func nfd_func; + + /** Link bond data block */ + struct nfp_flower_bond *nfp_bond; }; static inline bool @@ -104,6 +111,12 @@ nfp_flower_support_decap_v2(const struct nfp_app_fw_flower *app_fw_flower) return app_fw_flower->ext_features & NFP_FL_FEATS_DECAP_V2; } +static inline bool +nfp_flower_support_bond_offload(const struct nfp_app_fw_flower *app_fw_flower) +{ + return app_fw_flower->flower_en_feats & NFP_FL_ENABLE_BOND; +} + int nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev, const struct nfp_dev_info *dev_info); void nfp_uninit_app_fw_flower(struct nfp_pf_dev *pf_dev); diff --git a/drivers/net/nfp/flower/nfp_flower_bond.c b/drivers/net/nfp/flower/nfp_flower_bond.c new file mode 100644 index 0000000000..bbd2818e68 --- /dev/null +++ b/drivers/net/nfp/flower/nfp_flower_bond.c @@ -0,0 +1,59 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright (c) 2023 Corigine, Inc. + * All rights reserved. + */ +#include "nfp_flower_bond.h" + +#include + +#include "nfp_flower_representor.h" + +static void +nfp_flower_bond_increment_version(struct nfp_flower_bond *nfp_bond) +{ + /* LSB is not considered by firmware so add 2 for each increment. */ + nfp_bond->batch_ver += 2; + nfp_bond->batch_ver &= NFP_FL_BOND_VERSION_MASK; + + /* Zero is reserved by firmware. */ + if (nfp_bond->batch_ver == 0) + nfp_bond->batch_ver += 2; +} + +int +nfp_flower_bond_init(struct nfp_app_fw_flower *app_fw_flower) +{ + struct nfp_flower_bond *nfp_bond; + + app_fw_flower->nfp_bond = rte_zmalloc("nfp_bond", + sizeof(struct nfp_flower_bond), RTE_CACHE_LINE_SIZE); + if (app_fw_flower->nfp_bond == NULL) + return -ENOMEM; + + nfp_bond = app_fw_flower->nfp_bond; + pthread_mutex_init(&nfp_bond->mutex, NULL); + LIST_INIT(&nfp_bond->group_list); + nfp_flower_bond_increment_version(nfp_bond); + nfp_bond->app_fw_flower = app_fw_flower; + + return 0; +} + +void +nfp_flower_bond_cleanup(struct nfp_app_fw_flower *app_fw_flower) +{ + struct nfp_bond_group *entry; + struct nfp_flower_bond *nfp_bond = app_fw_flower->nfp_bond; + + pthread_mutex_lock(&nfp_bond->mutex); + LIST_FOREACH(entry, &nfp_bond->group_list, next) { + LIST_REMOVE(entry, next); + rte_free(entry); + } + pthread_mutex_unlock(&nfp_bond->mutex); + + pthread_mutex_destroy(&nfp_bond->mutex); + + rte_free(nfp_bond); + app_fw_flower->nfp_bond = NULL; +} diff --git a/drivers/net/nfp/flower/nfp_flower_bond.h b/drivers/net/nfp/flower/nfp_flower_bond.h new file mode 100644 index 0000000000..be79764a23 --- /dev/null +++ b/drivers/net/nfp/flower/nfp_flower_bond.h @@ -0,0 +1,65 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2023 Corigine, Inc. + * All rights reserved. + */ + +#ifndef __NFP_FLOWER_BOND_H__ +#define __NFP_FLOWER_BOND_H__ + +#include +#include +#include + +/* The batch version of bond offload packets between firmware and driver */ +#define NFP_FL_BOND_VERSION_MASK 0x007fffff /* [0, 22] */ + +#define NFP_FL_ENABLE_BOND RTE_BIT32(1) + +/* ID 0 reserved and IDs 1 to 31 are valid */ +#define NFP_FL_BOND_GROUP_MIN 1 +#define NFP_FL_BOND_GROUP_MAX 32 + +/* List entry for each bond group */ +struct nfp_bond_group { + /** List entry */ + LIST_ENTRY(nfp_bond_group) next; + /** Marked if the group needs synced to HW */ + bool dirty; + /** Marked if the group is currently offloaded to NIC */ + bool offloaded; + /** Marked if the group should be removed from NIC */ + bool to_remove; + /** Marked if the group should be removed from driver */ + bool to_destroy; + /** Assigned group ID for host/kernel sync */ + uint32_t group_id; + /** Number of members in group */ + uint32_t member_cnt; + /** Group instance in case of ID reuse */ + uint32_t group_inst; + /** Group main Netdev */ + struct rte_eth_dev *main_dev; +}; + +/* Flower APP priv data for bond offload */ +struct nfp_flower_bond { + /** Marker to reset firmware bond config */ + bool rst_cfg; + /** List of all main/member groups offloaded */ + LIST_HEAD(, nfp_bond_group) group_list; + /** Lock to protect bond group_list */ + pthread_mutex_t mutex; + /** Incremented for each batch of config packets */ + uint32_t batch_ver; + /** Instance allocator for groups */ + uint32_t global_inst; + /** Incremented for each config packet sent */ + uint32_t pkt_num; + /** Pointer to the flower app */ + struct nfp_app_fw_flower *app_fw_flower; +}; + +int nfp_flower_bond_init(struct nfp_app_fw_flower *app_fw_flower); +void nfp_flower_bond_cleanup(struct nfp_app_fw_flower *app_fw_flower); + +#endif /* __NFP_FLOWER_BOND_H__ */ diff --git a/drivers/net/nfp/meson.build b/drivers/net/nfp/meson.build index 46be6f60cd..f0d4bbcecb 100644 --- a/drivers/net/nfp/meson.build +++ b/drivers/net/nfp/meson.build @@ -13,6 +13,7 @@ sources = files( 'flower/nfp_flower_ctrl.c', 'flower/nfp_flower_flow.c', 'flower/nfp_flower_representor.c', + 'flower/nfp_flower_bond.c', 'nfd3/nfp_nfd3_dp.c', 'nfdk/nfp_nfdk_dp.c', 'nfpcore/nfp_cppcore.c',