Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/135578/?format=api
http://patches.dpdk.org/api/patches/135578/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231226072824.3163121-10-chaoyong.he@corigine.com/", "project": { "id": 1, "url": "http://patches.dpdk.org/api/projects/1/?format=api", "name": "DPDK", "link_name": "dpdk", "list_id": "dev.dpdk.org", "list_email": "dev@dpdk.org", "web_url": "http://core.dpdk.org", "scm_url": "git://dpdk.org/dpdk", "webscm_url": "http://git.dpdk.org/dpdk", "list_archive_url": "https://inbox.dpdk.org/dev", "list_archive_url_format": "https://inbox.dpdk.org/dev/{}", "commit_url_format": "" }, "msgid": "<20231226072824.3163121-10-chaoyong.he@corigine.com>", "list_archive_url": "https://inbox.dpdk.org/dev/20231226072824.3163121-10-chaoyong.he@corigine.com", "date": "2023-12-26T07:28:19", "name": "[v6,09/14] net/nfp: reset bond configuration of firmware", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "c5b3a3df4b6dec4b85e9c6bf25b6636c2b25878f", "submitter": { "id": 2554, "url": "http://patches.dpdk.org/api/people/2554/?format=api", "name": "Chaoyong He", "email": "chaoyong.he@corigine.com" }, "delegate": { "id": 319, "url": "http://patches.dpdk.org/api/users/319/?format=api", "username": "fyigit", "first_name": "Ferruh", "last_name": "Yigit", "email": "ferruh.yigit@amd.com" }, "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231226072824.3163121-10-chaoyong.he@corigine.com/mbox/", "series": [ { "id": 30668, "url": "http://patches.dpdk.org/api/series/30668/?format=api", "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30668", "date": "2023-12-26T07:28:10", "name": "Enhance the bond framework to support offload", "version": 6, "mbox": "http://patches.dpdk.org/series/30668/mbox/" } ], "comments": "http://patches.dpdk.org/api/patches/135578/comments/", "check": "success", "checks": "http://patches.dpdk.org/api/patches/135578/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<dev-bounces@dpdk.org>", "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id E8A9843795;\n\tTue, 26 Dec 2023 08:29:56 +0100 (CET)", "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 2E3FC406BA;\n\tTue, 26 Dec 2023 08:29:05 +0100 (CET)", "from NAM02-BN1-obe.outbound.protection.outlook.com\n (mail-bn1nam02on2096.outbound.protection.outlook.com [40.107.212.96])\n by mails.dpdk.org (Postfix) with ESMTP id 3A622402D8\n for <dev@dpdk.org>; Tue, 26 Dec 2023 08:29:03 +0100 (CET)", "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by CH3PR13MB6506.namprd13.prod.outlook.com (2603:10b6:610:1a3::20)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7113.27; Tue, 26 Dec\n 2023 07:29:01 +0000", "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::45b3:d83c:cff2:4a1b]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::45b3:d83c:cff2:4a1b%6]) with mapi id 15.20.7113.027; Tue, 26 Dec 2023\n 07:29:01 +0000" ], "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Mcn/aAFgRHRcMo+arqOwqi0Ua8MTcQySOmzsMCbDjyY4pwu+Tsz2r4OxU5xvOB/XE8Q/B+SVrHJ9QAW8/cr/mEhNpttLqGf444pCwWXzgsxYUcxjUnBSUEbstf1sTjer6N+mv0fHKLZ9/U2Xocaz+7II5BVXfwMttDH8dreyVQG4p5S/bgyBBhAh6bNUtXho9bc+VpAiji0164d1KjGhCC7e+cq0hHeoEeZ/kjqGLDY+WT6CfJ9K3A+uk/AMlrdCreMNSyX5M2b3fXcr6URYNHubueXF9hZfgMJsfZaKy5Mg7Q/ERaiSQUeSJovwzYat85LKIqp6pmgy2LsJ9ugCtA==", "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n 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;\n bh=GsQm6C8L2kSY1k5odiGIKzT3UhOuRLGhZUYRJmXtpE4=;\n b=V7WQCHHqHUt5UxQXxVOvmnXEvPXusOCsP4Z9LMu8C9mGUsuqXGHnU26/YbGcLi0lDaIviRtXqM5zGZkz0BFNU/BOzgggGVNTtQeSQBpSY0aUa9+RW4HOY7/8Z5PFHU6BToM0X2Sampqu8oQbDUZW5eh3cG81Qy+nfgp/6VMWPYx49Ec2wJHWZYZY41GiO2qFHdJFco97cxT4yijvhurNvDJxXWkOrTHU2Q0IrED6dkLgl0THfP6ZZ54weUJQmm0okh55I6YuL2R8Xnw+dCDu7pIc3cBqpUgkAJVjn2T/MkyseRQcFsN7PLDNHRC4qRcZuvFL/RAB/UywJFESSZulTA==", "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com;\n dkim=pass header.d=corigine.com; arc=none", "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=GsQm6C8L2kSY1k5odiGIKzT3UhOuRLGhZUYRJmXtpE4=;\n b=lJAp9Jsrb+Wz2F6k8fyBrd+I4XyBz6aAE/baE7PWpFvn8c8e5GhIyXZrDpKs/t1J8glLLBS7lSehpMbKDFShL1PF5FRrHbTDnV1oAWgFhs6yJWIuKHGvOh3PZkMZeRp1hqaMwLhn0nOQ0lSs7Lc4aa+qRfeyiCWYu5WceUlKK2I=", "Authentication-Results": "dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=corigine.com;", "From": "Chaoyong He <chaoyong.he@corigine.com>", "To": "dev@dpdk.org", "Cc": "oss-drivers@corigine.com, Long Wu <long.wu@corigine.com>,\n Peng Zhang <peng.zhang@corigine.com>,\n Chaoyong He <chaoyong.he@corigine.com>", "Subject": "[PATCH v6 09/14] net/nfp: reset bond configuration of firmware", "Date": "Tue, 26 Dec 2023 15:28:19 +0800", "Message-Id": "<20231226072824.3163121-10-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>\n <20231226072824.3163121-1-chaoyong.he@corigine.com>", "Content-Transfer-Encoding": "8bit", "Content-Type": "text/plain", "X-ClientProxiedBy": "SJ0PR03CA0239.namprd03.prod.outlook.com\n (2603:10b6:a03:39f::34) To SJ0PR13MB5545.namprd13.prod.outlook.com\n (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": "112b8d1e-45cf-420c-dbd4-08dc05e454bd", "X-MS-Exchange-SenderADCheck": "1", "X-MS-Exchange-AntiSpam-Relay": "0", "X-Microsoft-Antispam": "BCL:0;", "X-Microsoft-Antispam-Message-Info": "\n rR4Mbtcye1PX8JZJn/KYuwp/zC9/daq0Xv2jJKR5fboCgsVk1NFR5D6EE4lsfvTqEqSuM2igUMLwGwY5A+C0GO3Ait2NctizjLy7W6kqBbrqVUQLxhckBPB2BJ5/wjtAP6tEVL0ZvNHmDnaux5Uv2t1qT1LQSkzE3MPIGa/wx1TBxEyDmthYSEvPvNPoidNOwJLBKixxw4Af6S+EuUTGeij85pzXPInMS5eKV/dO0MWZeWq8wJZ78u1z0dolYasKpKpD5Mn+PkjCpF1qY3RzE0hotQOT8cQSfAf3y6HQPAQkS8OuatRrWaxE2UvyjWM2GPaha0HR8aEZIzupiXf7JAZfs8P83cuQHjlzgfAmIeDSFTzFI7ipFMTNRgBdxCDQdBcdYf+ln1lZGxniKmNzJM5UjjHlDw1eX/t+Re1zEGwW0OJ4n8ZLIPXbCTBtvsGF+sCGZaeEJXUgrlV2sPFIbR+BoMKe9gkmYZgX3rLJEMgtuiOoguup6Pn+WhagVbeeBCQ5SPxIB+DuE5tbMB/ScX6DdufmrZuDs+UUPCEZwmiFMnq3HiugesPzSX5K+v7+QbSb8lUZI6JC0fi/Gf+87uKqynnIC0ethr8XJQrhGUmlxbQNApeMkTfFt4lIBExSNslWLvF0IAPfL52rZOnY4SiYJvU4BO9VgvFs9+8Eh3c=", "X-Forefront-Antispam-Report": "CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:SJ0PR13MB5545.namprd13.prod.outlook.com; PTR:; CAT:NONE;\n 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);\n DIR:OUT; SFP:1102;", "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1", "X-MS-Exchange-AntiSpam-MessageData-0": "\n LE+tiUIjHYNvY4mKGCwac1f/NS0vnVn9GOx4QmEDogVPM29Vvsunub74ep++UIuAgmt74lI8b19wSF9tEnhWFiGwp1vgI1+sQ54Nw/xBrvRS1sU2ncIXUhzhBFL6/mspfbFzzy3S9JdZotspSlo1vZhUhiSDzfKTJ+SYLJy8qBVGr0kkHoD36K4C5wmWtCHTYYUDHRJcpLNufZeEtBl2b8IUWgCX1BM0VZmF90DBBiWbNZbYPnOHKwutmOWa8q8zrJfQ1+sHOTS83FVjvQXKTjOCN0YYqD3xiJxJmC3CNDIA74y+Bs7xqvMPIebrVBiXwGPd6oJa+aAH6OK5/lpbZqxShgY6UEOIjC0HjrjPyclmv6ANQhcSJC0D1zrZKrxTP3x4Y9lxdtDwOObfo50MTuZ+HQZX4Huo8ML2uaWUw3CWxWHNcsRhbvqjv5USpIwgn1+P1VzJkiRN5hR/bxPAAv61o4TJVdCNDDuj4MsltYNdv5UD4R2A02BqHseg9MJZArmV6N1pjc6cz4HoEjCajsziJkMxrQz8Czm7xIupi7g2gcK2l5BIqeZs3dXJ1kgmhh9zpE9T7OalAEF2NNQhj37IuYeHUHrqAkROHXk7OgZhdhKwZpgJYvw2juz2YaPpYnqEqbYPHhq+5F3ok0WmTqrB/iQT7SoJPDAUyjjETO7jM80zS3eJ8WIqSQEhD4tcmMHx2mYHPwbZVZ0Cki46xHCOhJD1YUl6Ym/zJFxIcLaEpd29vnbLEDWZa9wOrqk68uZR6i7XDR7gJSacMvixjssuMWLdf+Two9p/gT6bqkuXA6ED+w0URtNXK4e/jvqbiAq2/LjKjOBxyk9VJlc/XPPLXBwIUC46HhrhxHX1MNX0PAAgzkl3Cn4Kkdhwot6djiBkoZ5hEmCvidslUMtUeEH+6g4qqO8roZLuIx8nwff2xF5/EwVyowsYMWlff37p/qhRepbWAgga+zDmVmqTdUGM2vqHRIfQ1sPSyEx883SNBXBGf0JS65g885dzRGsZpyRQOc3CombGHKe8+2E1JH/+WKX+H3CJ0pF8i9Td48efmwGF7Mv0a+8ourfAJ4tO0yR/eYuN/Uvr5elqzftDpd0aGEOwpmBuu2L7xoRfYbc3aYPsdM/me9ulpvASVp5ObiK7GemVIdiVC5sJPJ9KIZqlfNOu7c5U5bhf8qHdkHhLNV852ScWLW526iDtYfTxOf69MA8ltO4v7PSh1fz+kz0s1NtyFCUbCx0K+3+l0a5/wI2/apNHAovK5XFfsJnFN7CziWS30z0hmQyYpZPL0p9Z3ZJg+fweiMkMpwgzI6D2Nd1JJdKVES6ZPBwOZOmdRnOR150+7C7hscXRlouM/tbnXA7ewQFSfTv8ZXyhSNeT4OfGGfiGLnT8KrzFfRboCojkwOnqnmpTSeKYDhXsxv9ht/MRKh0drXJvi7e8z3fSYZe8ECEENN79L5bqSsRvJNBYyP2z9orQc/8L0Ex/WRUjPc8kCBYLapShgv/OpJj3O6OPZj0lJ2onO+ixFYLUAgNlLYrdO3D32gxMYJYFVaBrvGf3/tUshzS/zurt8inxmsleEkFtla/pU/qdEq1Eh34Y/9J1FhwNc6wPLrxNww==", "X-OriginatorOrg": "corigine.com", "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 112b8d1e-45cf-420c-dbd4-08dc05e454bd", "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:29:01.5088 (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": "\n qzYMZziWW7VHuxJsAZH/VpHPbBAJP5fX8Y7NIUezzyJFSOBHACDj55nqUkY8isdG01k6zQqj+0IpUwvD/RO8XCC/oj/SLXO2jDJRY3rEz/k=", "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 <dev.dpdk.org>", "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>", "List-Archive": "<http://mails.dpdk.org/archives/dev/>", "List-Post": "<mailto:dev@dpdk.org>", "List-Help": "<mailto:dev-request@dpdk.org?subject=help>", "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>", "Errors-To": "dev-bounces@dpdk.org" }, "content": "From: Long Wu <long.wu@corigine.com>\n\nDriver sends control message to reset the bond firmware\nconfiguration in flower NIC initialization. Firmware should\nreset bond configuration to avoid strange problems caused\nby residues.\n\nSigned-off-by: Long Wu <long.wu@corigine.com>\nReviewed-by: Peng Zhang <peng.zhang@corigine.com>\nReviewed-by: Chaoyong He <chaoyong.he@corigine.com>\n---\n drivers/net/nfp/flower/nfp_flower.c | 23 ++++++\n drivers/net/nfp/flower/nfp_flower_bond.c | 90 ++++++++++++++++++++++++\n drivers/net/nfp/flower/nfp_flower_bond.h | 54 ++++++++++++++\n drivers/net/nfp/flower/nfp_flower_cmsg.c | 35 +++++++++\n drivers/net/nfp/flower/nfp_flower_cmsg.h | 3 +\n 5 files changed, 205 insertions(+)", "diff": "diff --git a/drivers/net/nfp/flower/nfp_flower.c b/drivers/net/nfp/flower/nfp_flower.c\nindex 195960e00d..fc3ea84828 100644\n--- a/drivers/net/nfp/flower/nfp_flower.c\n+++ b/drivers/net/nfp/flower/nfp_flower.c\n@@ -589,6 +589,22 @@ nfp_flower_sync_feature_cleanup(struct nfp_app_fw_flower *app_fw_flower)\n \t\tnfp_flower_bond_feature_cleanup(app_fw_flower);\n }\n \n+static int\n+nfp_flower_start_features(struct nfp_app_fw_flower *app_flower)\n+{\n+\tint ret;\n+\n+\tif (nfp_flower_support_bond_offload(app_flower)) {\n+\t\tret = nfp_flower_bond_reset(app_flower->nfp_bond);\n+\t\tif (ret != 0) {\n+\t\t\tPMD_INIT_LOG(ERR, \"Reset bond feature failed\");\n+\t\t\treturn ret;\n+\t\t}\n+\t}\n+\n+\treturn 0;\n+}\n+\n static int\n nfp_flower_start_ctrl_vnic(struct nfp_net_hw *net_hw)\n {\n@@ -826,6 +842,13 @@ nfp_init_app_fw_flower(struct nfp_pf_dev *pf_dev,\n \t\tgoto ctrl_vnic_cleanup;\n \t}\n \n+\t/* Start up some features */\n+\tret = nfp_flower_start_features(app_fw_flower);\n+\tif (ret != 0) {\n+\t\tPMD_INIT_LOG(ERR, \"Failed to start features\");\n+\t\tgoto sync_feature_cleanup;\n+\t}\n+\n \t/* Start up flower services */\n \tret = nfp_flower_enable_services(app_fw_flower);\n \tif (ret != 0) {\ndiff --git a/drivers/net/nfp/flower/nfp_flower_bond.c b/drivers/net/nfp/flower/nfp_flower_bond.c\nindex bbd2818e68..4ac27f117c 100644\n--- a/drivers/net/nfp/flower/nfp_flower_bond.c\n+++ b/drivers/net/nfp/flower/nfp_flower_bond.c\n@@ -6,8 +6,31 @@\n \n #include <rte_malloc.h>\n \n+#include \"nfp_flower_cmsg.h\"\n #include \"nfp_flower_representor.h\"\n \n+static void\n+nfp_fl_bond_cmsg_args_init(struct nfp_flower_bond_cmsg_args *cmsg_args,\n+\t\tstruct nfp_bond_group *group,\n+\t\tstruct rte_eth_dev **active_members,\n+\t\tuint32_t member_cnt,\n+\t\tenum nfp_flower_bond_batch batch)\n+{\n+\tcmsg_args->group = group;\n+\tcmsg_args->active_members = active_members;\n+\tcmsg_args->member_cnt = member_cnt;\n+\tcmsg_args->batch = batch;\n+}\n+\n+static uint32_t\n+nfp_fl_get_next_pkt_number(struct nfp_flower_bond *nfp_bond)\n+{\n+\tnfp_bond->pkt_num++;\n+\tnfp_bond->pkt_num &= NFP_FL_BOND_PKT_NUMBER_MASK;\n+\n+\treturn nfp_bond->pkt_num;\n+}\n+\n static void\n nfp_flower_bond_increment_version(struct nfp_flower_bond *nfp_bond)\n {\n@@ -57,3 +80,70 @@ nfp_flower_bond_cleanup(struct nfp_app_fw_flower *app_fw_flower)\n \trte_free(nfp_bond);\n \tapp_fw_flower->nfp_bond = NULL;\n }\n+\n+int\n+nfp_flower_bond_reset(struct nfp_flower_bond *nfp_bond)\n+{\n+\tstruct nfp_app_fw_flower *app_flower;\n+\tenum nfp_flower_bond_batch batch = NFP_FLOWER_BOND_BATCH_FIRST;\n+\tstruct nfp_flower_bond_cmsg_args init_args;\n+\n+\tapp_flower = nfp_bond->app_fw_flower;\n+\tapp_flower->nfp_bond->rst_cfg = true;\n+\n+\tnfp_fl_bond_cmsg_args_init(&init_args, NULL, NULL, 0, batch);\n+\n+\treturn nfp_flower_cmsg_bond_config_group(app_flower, &init_args, &batch);\n+}\n+\n+enum nfp_flower_bond_batch\n+nfp_flower_bond_cmsg_payload(struct nfp_flower_bond *nfp_bond,\n+\t\tstruct nfp_flower_cmsg_bond_config *msg,\n+\t\tstruct nfp_flower_bond_cmsg_args *init_args)\n+{\n+\tuint32_t i;\n+\tuint8_t flags = 0;\n+\tstruct nfp_flower_representor *repr;\n+\tenum nfp_flower_bond_batch batch = init_args->batch;\n+\n+\t/* Increment batch version for each new batch of config messages. */\n+\tif (batch == NFP_FLOWER_BOND_BATCH_FIRST) {\n+\t\tflags |= NFP_FL_BOND_FIRST;\n+\t\tnfp_flower_bond_increment_version(nfp_bond);\n+\t\tbatch = NFP_FLOWER_BOND_BATCH_MEMBER;\n+\t}\n+\n+\t/* If it is a reset msg then it is also the end of the batch. */\n+\tif (nfp_bond->rst_cfg) {\n+\t\tflags |= NFP_FL_BOND_RESET;\n+\t\tbatch = NFP_FLOWER_BOND_BATCH_FINISHED;\n+\t}\n+\n+\t/*\n+\t * To signal the end of a batch, both the switch and last flags are set\n+\t * and the reserved SYNC group ID is used.\n+\t */\n+\tif (batch == NFP_FLOWER_BOND_BATCH_FINISHED) {\n+\t\tflags |= NFP_FL_BOND_SWITCH | NFP_FL_BOND_LAST;\n+\t\tnfp_bond->rst_cfg = false;\n+\t\tmsg->group_id = rte_cpu_to_be_32(NFP_FL_BOND_SYNC_ID);\n+\t\tmsg->group_inst = 0;\n+\t} else {\n+\t\tmsg->group_id = rte_cpu_to_be_32(init_args->group->group_id);\n+\t\tmsg->group_inst = rte_cpu_to_be_32(init_args->group->group_inst);\n+\t}\n+\n+\tmsg->reserved[0] = 0;\n+\tmsg->reserved[1] = 0;\n+\tmsg->ttl = NFP_FL_BOND_HOST_TTL;\n+\tmsg->ctrl_flags = flags;\n+\tmsg->batch_ver = rte_cpu_to_be_32(nfp_bond->batch_ver);\n+\tmsg->pkt_number = rte_cpu_to_be_32(nfp_fl_get_next_pkt_number(nfp_bond));\n+\n+\tfor (i = 0; i < init_args->member_cnt; i++) {\n+\t\trepr = init_args->active_members[i]->data->dev_private;\n+\t\tmsg->members[i] = rte_cpu_to_be_32(repr->port_id);\n+\t}\n+\n+\treturn batch;\n+}\ndiff --git a/drivers/net/nfp/flower/nfp_flower_bond.h b/drivers/net/nfp/flower/nfp_flower_bond.h\nindex be79764a23..e15d9e09d5 100644\n--- a/drivers/net/nfp/flower/nfp_flower_bond.h\n+++ b/drivers/net/nfp/flower/nfp_flower_bond.h\n@@ -7,18 +7,61 @@\n #define __NFP_FLOWER_BOND_H__\n \n #include <pthread.h>\n+#include <rte_byteorder.h>\n #include <stdbool.h>\n #include <sys/queue.h>\n \n /* The batch version of bond offload packets between firmware and driver */\n #define NFP_FL_BOND_VERSION_MASK 0x007fffff /* [0, 22] */\n \n+#define NFP_FL_BOND_PKT_NUMBER_MASK 0x7fffffff /* [0, 30] */\n+\n #define NFP_FL_ENABLE_BOND RTE_BIT32(1)\n \n /* ID 0 reserved and IDs 1 to 31 are valid */\n #define NFP_FL_BOND_GROUP_MIN 1\n #define NFP_FL_BOND_GROUP_MAX 32\n \n+#define NFP_FL_BOND_HOST_TTL 0xff\n+\n+/* Use this ID with zero members to ack a batch config */\n+#define NFP_FL_BOND_SYNC_ID 0\n+\n+/* BOND group config flags */\n+#define NFP_FL_BOND_LAST RTE_BIT32(1)\n+#define NFP_FL_BOND_FIRST RTE_BIT32(2)\n+#define NFP_FL_BOND_DATA RTE_BIT32(3)\n+#define NFP_FL_BOND_XON RTE_BIT32(4)\n+#define NFP_FL_BOND_SYNC RTE_BIT32(5)\n+#define NFP_FL_BOND_SWITCH RTE_BIT32(6)\n+#define NFP_FL_BOND_RESET RTE_BIT32(7)\n+\n+enum nfp_flower_bond_batch {\n+\tNFP_FLOWER_BOND_BATCH_FIRST,\n+\tNFP_FLOWER_BOND_BATCH_MEMBER,\n+\tNFP_FLOWER_BOND_BATCH_FINISHED\n+};\n+\n+/* Control message payload for bond config */\n+struct nfp_flower_cmsg_bond_config {\n+\t/** Configuration flags */\n+\tuint8_t ctrl_flags;\n+\t/** Reserved for future use */\n+\tuint8_t reserved[2];\n+\t/** Time to live of packet - host always sets to 0xff */\n+\tuint8_t ttl;\n+\t/** Config message packet number - increment for each message */\n+\trte_be32_t pkt_number;\n+\t/** Batch version of messages - increment for each batch of messages */\n+\trte_be32_t batch_ver;\n+\t/** Group ID applicable */\n+\trte_be32_t group_id;\n+\t/** Group instance number - increment when group is reused */\n+\trte_be32_t group_inst;\n+\t/** Array of 32-bit words listing all active group members */\n+\trte_be32_t members[];\n+};\n+\n /* List entry for each bond group */\n struct nfp_bond_group {\n \t/** List entry */\n@@ -59,7 +102,18 @@ struct nfp_flower_bond {\n \tstruct nfp_app_fw_flower *app_fw_flower;\n };\n \n+struct nfp_flower_bond_cmsg_args {\n+\tstruct nfp_bond_group *group;\n+\tstruct rte_eth_dev **active_members;\n+\tuint32_t member_cnt;\n+\tenum nfp_flower_bond_batch batch;\n+};\n+\n int nfp_flower_bond_init(struct nfp_app_fw_flower *app_fw_flower);\n void nfp_flower_bond_cleanup(struct nfp_app_fw_flower *app_fw_flower);\n+int nfp_flower_bond_reset(struct nfp_flower_bond *nfp_bond);\n+enum nfp_flower_bond_batch nfp_flower_bond_cmsg_payload(struct nfp_flower_bond *nfp_bond,\n+\t\tstruct nfp_flower_cmsg_bond_config *msg,\n+\t\tstruct nfp_flower_bond_cmsg_args *init_args);\n \n #endif /* __NFP_FLOWER_BOND_H__ */\ndiff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.c b/drivers/net/nfp/flower/nfp_flower_cmsg.c\nindex 8effe9474d..0cf1bf2281 100644\n--- a/drivers/net/nfp/flower/nfp_flower_cmsg.c\n+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.c\n@@ -567,3 +567,38 @@ nfp_flower_cmsg_qos_stats(struct nfp_app_fw_flower *app_fw_flower,\n \n \treturn 0;\n }\n+\n+int\n+nfp_flower_cmsg_bond_config_group(struct nfp_app_fw_flower *app_flower,\n+\t\tstruct nfp_flower_bond_cmsg_args *init_args,\n+\t\tenum nfp_flower_bond_batch *batch_out)\n+{\n+\tuint16_t cnt;\n+\tuint32_t size;\n+\tstruct rte_mbuf *mbuf;\n+\tstruct nfp_flower_bond *nfp_bond;\n+\tstruct nfp_flower_cmsg_bond_config *msg;\n+\n+\tmbuf = rte_pktmbuf_alloc(app_flower->ctrl_pktmbuf_pool);\n+\tif (mbuf == NULL) {\n+\t\tPMD_DRV_LOG(DEBUG, \"Alloc mbuf for bond config failed\");\n+\t\treturn -ENOMEM;\n+\t}\n+\n+\tsize = sizeof(*msg) + sizeof(rte_be32_t) * init_args->member_cnt;\n+\tmsg = nfp_flower_cmsg_init(app_flower, mbuf,\n+\t\t\tNFP_FLOWER_CMSG_TYPE_LAG_CONFIG, size);\n+\n+\tnfp_bond = app_flower->nfp_bond;\n+\n+\t*batch_out = nfp_flower_bond_cmsg_payload(nfp_bond, msg, init_args);\n+\n+\tcnt = nfp_flower_ctrl_vnic_xmit(app_flower, mbuf);\n+\tif (cnt == 0) {\n+\t\tPMD_DRV_LOG(ERR, \"Send cmsg through ctrl vnic failed.\");\n+\t\trte_pktmbuf_free(mbuf);\n+\t\treturn -EIO;\n+\t}\n+\n+\treturn 0;\n+}\ndiff --git a/drivers/net/nfp/flower/nfp_flower_cmsg.h b/drivers/net/nfp/flower/nfp_flower_cmsg.h\nindex 45543816ae..60ab58a3b1 100644\n--- a/drivers/net/nfp/flower/nfp_flower_cmsg.h\n+++ b/drivers/net/nfp/flower/nfp_flower_cmsg.h\n@@ -988,5 +988,8 @@ int nfp_flower_cmsg_qos_delete(struct nfp_app_fw_flower *app_fw_flower,\n \t\tstruct nfp_profile_conf *conf);\n int nfp_flower_cmsg_qos_stats(struct nfp_app_fw_flower *app_fw_flower,\n \t\tstruct nfp_cfg_head *head);\n+int nfp_flower_cmsg_bond_config_group(struct nfp_app_fw_flower *app_flower,\n+\t\tstruct nfp_flower_bond_cmsg_args *init_args,\n+\t\tenum nfp_flower_bond_batch *batch_out);\n \n #endif /* __NFP_CMSG_H__ */\n", "prefixes": [ "v6", "09/14" ] }{ "id": 135578, "url": "