get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/124049/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 124049,
    "url": "https://patches.dpdk.org/api/patches/124049/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20230216083231.4721-3-chaoyong.he@corigine.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<20230216083231.4721-3-chaoyong.he@corigine.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230216083231.4721-3-chaoyong.he@corigine.com",
    "date": "2023-02-16T08:32:31",
    "name": "[v2,2/2] app/testpmd: add support for bonding port's LACP negotiation",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "d5f64a85f49cd8db8806175e6911b175c371cca9",
    "submitter": {
        "id": 2554,
        "url": "https://patches.dpdk.org/api/people/2554/?format=api",
        "name": "Chaoyong He",
        "email": "chaoyong.he@corigine.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20230216083231.4721-3-chaoyong.he@corigine.com/mbox/",
    "series": [
        {
            "id": 27039,
            "url": "https://patches.dpdk.org/api/series/27039/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=27039",
            "date": "2023-02-16T08:32:29",
            "name": "enhance bonding PMD to support the LACP negotiation",
            "version": 2,
            "mbox": "https://patches.dpdk.org/series/27039/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/124049/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/124049/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 F2D7141CAE;\n\tThu, 16 Feb 2023 09:33:13 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 3567742BD9;\n\tThu, 16 Feb 2023 09:33:04 +0100 (CET)",
            "from NAM11-BN8-obe.outbound.protection.outlook.com\n (mail-bn8nam11on2100.outbound.protection.outlook.com [40.107.236.100])\n by mails.dpdk.org (Postfix) with ESMTP id 236BD4161A\n for <dev@dpdk.org>; Thu, 16 Feb 2023 09:33:03 +0100 (CET)",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com (2603:10b6:a03:424::5)\n by SJ2PR13MB6144.namprd13.prod.outlook.com (2603:10b6:a03:4fc::11)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6086.26; Thu, 16 Feb\n 2023 08:33:01 +0000",
            "from SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::7ea4:e421:5dd5:9f4d]) by SJ0PR13MB5545.namprd13.prod.outlook.com\n ([fe80::7ea4:e421:5dd5:9f4d%5]) with mapi id 15.20.6086.026; Thu, 16 Feb 2023\n 08:33:01 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=Y05vVqnP9T64NJ1nq+DL+hq2ZMmLDbPw9n4LeWZFWgZKbKTbbW8RyHKWlQrfgvP8MtxNZ3k0nJwRP65w46FwCCZ2FgcaxtVDeHIhnjh3Cx/YtcrNpOTwxv0I3xpKAoiuLs9pK/O2QwH1UF2xBHkG8itPYWolMxo33xBAq18AtNsrbH7o963gCR2Ucjtec2HLWpCOJLhmOY+CeBP6PGiw/UTHahI2Tjqwy6rzyD/7PSc0zuxt5Olsn6Ma8rNZk+57K0brWlbFIVY1MZwVatu03d+u3P9b3NBdJCzZZ1fDKhuLrHHZtl09f4bwVYMzFRtd3ikasWBhPd33jiJlimLkQA==",
        "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=fh6wSya944pNjcL2MQUN1K7dlUo2quT9QyRHpjbMaoY=;\n b=dtEgVKVJpGaX6NSPcZKckTovfrPyWFtXX5/Tj+pXUC/hlYMQV5IDd+Qnq0HEFpaXtRLXUNzXio/kIsucjOSGX/I7aWzGNsf67/+aJ/LJeSGJ4nhdNz0yH6C1nb1fhW04NHo4Ju4JdxmYXy9CgZMxN+g9h7W59hzzdnI9/DB+dkanDf4SjKjQmC9+ul9SZeZNyt2ntWElqXV5LaIG7WMU86Fpr0ZQ+CHq0NHBt54AJwSOMWAQdU94y5x/44jo+/EcqSNu3CuH6HXA2Z8b6ETH9jkiRu0hWGowefprVf/zrLNvMMg+85q+LzjOuIuJrh7hYNGQ/HC2XDq4EuktKKZ56w==",
        "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=fh6wSya944pNjcL2MQUN1K7dlUo2quT9QyRHpjbMaoY=;\n b=X1ruaYp/EiJJyxLwUZp+i6lgWro1esB0egLFtTyl31gnrlP8P1laAooi2U8vIGWbwckrCyBOG9YmCtLPS9bshQeiwb/yddIUohOfKcsLrlT+Nxz3rgGLK7bn2pX4PZvyvTJMLV6p2qPPPlaEV3/uoy19D9LhbJaoHrF2tVpjaok=",
        "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, niklas.soderlund@corigine.com,\n Long Wu <long.wu@corigine.com>, Chaoyong He <chaoyong.he@corigine.com>",
        "Subject": "[PATCH v2 2/2] app/testpmd: add support for bonding port's LACP\n negotiation",
        "Date": "Thu, 16 Feb 2023 16:32:31 +0800",
        "Message-Id": "<20230216083231.4721-3-chaoyong.he@corigine.com>",
        "X-Mailer": "git-send-email 2.29.3",
        "In-Reply-To": "<20230216083231.4721-1-chaoyong.he@corigine.com>",
        "References": "<20230216071514.29418-1-chaoyong.he@corigine.com>\n <20230216083231.4721-1-chaoyong.he@corigine.com>",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-ClientProxiedBy": "SG2P153CA0053.APCP153.PROD.OUTLOOK.COM (2603:1096:4:c6::22)\n 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_|SJ2PR13MB6144:EE_",
        "X-MS-Office365-Filtering-Correlation-Id": "4aa04e90-0b0e-40d0-7f0f-08db0ff86a36",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n u5GYCBfWIQSaJy+UV4kcpCXLVUKarZng62VlYzwQivTjHynyp8KpmM9F2IlUAKadGb16vdCwuge55dpoEEHcYcllifXyscnLOVrhEG9/pwuF11CbiwzJQHYh3ivKzvV+66Kf2eIGWxlL/wg071diVzBWLs5slbACpKr6o+K6Elv3YDEkGE3BQI18gdRaN1lGuaRNC20G2b6caxI5oOB8AC5jZnTdlKg1bkTeeV+gnrEWVref3DZY3dep4tA7+5aJwFEzaRZZg8kmEoT0KFlLHUaTHwbwDhNZ3WPEDbnQMSPWew+3jfhP6axT2vKK91uw7UvG92LW3jCGsftzIpT6retzS0eo6B18hv2c2p79515Uk3NSmjD7FS+tVtOvmxnBLFgioGqhXqeXeTsYf8bBMfXMFO0NV6R0h5HYD5pStZkNMOjVD+mmoPARb8/gbc9QTQWVb8IsjVgCMT4fCKUJfU2EVMVYua58Vh7fOTF4MUZZHIwKRo84s8TIssxHHMORKNJIKS9IubHJm3PZLoYVvZP8zR3Fey+/Ej5yF/mEfitP7JvqVjX7dfbVcJQOwrH3nY3rrjZA+gutqp9U8xCohk24AUXRzX3ypzn5nrKRYLky7PeO+bZQUNYrV5KgnLG/WG32A2xM7BIBAu+ZSKtvUgvj+x+HNCmXSzMkBLVdce0+Ejtcyr6/yJ6i0DumVnTDmhoFPCgEaroPAzO1UZ1Ygg==",
        "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:(13230025)(4636009)(346002)(376002)(136003)(366004)(39840400004)(396003)(451199018)(38100700002)(26005)(1076003)(107886003)(6666004)(6506007)(186003)(38350700002)(6512007)(36756003)(2906002)(83380400001)(86362001)(52116002)(54906003)(6916009)(66946007)(8676002)(66556008)(66476007)(66574015)(8936002)(2616005)(6486002)(41300700001)(478600001)(44832011)(316002)(4326008)(5660300002);\n DIR:OUT; SFP:1102;",
        "X-MS-Exchange-AntiSpam-MessageData-ChunkCount": "1",
        "X-MS-Exchange-AntiSpam-MessageData-0": "=?utf-8?q?S+qKD5JdMxEPglhi8Hqo8AgYEpSU?=\n\t=?utf-8?q?0bwb/v4cUlwFoeCjgyLCPoO2oBs75huINkWzXSyw76eKhTkwLwOHfYhsHE4Ndn1hk?=\n\t=?utf-8?q?8LZdooiAcWR7UW5Vie0F6Ch5HYIwyCjyI7URuWtVyBif+iQBIsNwE7Nm2qqJgbLva?=\n\t=?utf-8?q?Du4X6H1Sr+bILAlB0GEW83HUsxiyBAoM8/3K2qVVI6om/Dj+aJQdJyrzcUg9pQHUX?=\n\t=?utf-8?q?Ixal9ZveQ41WmmgwS4lc2Vpi1kOZvcwlR7drjqP4TXdmZRkromPBobpdqSRN6Wkci?=\n\t=?utf-8?q?nte/lskvuqNSzU2qG3NoHKbtJrFiqKpK10i2urRKoYARmKv5HEUzwM/Dgj/9Kx0BS?=\n\t=?utf-8?q?+Px4FIyCZ/MXdDEfFBG9rbafwz+fOh8H1xsxhM6ctzbQIUlJ/772VKy0o9CcZabIc?=\n\t=?utf-8?q?vTLBSSgm42h1xHv4wQoOtWK90BQUVkx3Y7L+Liqehv4XOG+oSMf+Sc8RHeqdkvBm3?=\n\t=?utf-8?q?AynbOfULylMPLnCsjsROP/XHbFqxZfjK8OgApGWYhbg/XhMyhLfWULJvCRGPNdvOV?=\n\t=?utf-8?q?aDPxJV4RcoteeROM7jGDAn/ciFPOD5Ji+k1IetqBq48NzH5vxHUveAzAcOpXemAZz?=\n\t=?utf-8?q?+QwJRaEj7CxxtDFso1oDjrcxtZncLp8Kcj5FVkIRvuUNM0688oozzjGV0zSUTK51k?=\n\t=?utf-8?q?d2CrR3ZZl3cpItORn2y+8nLWW8gkh/2MHmEbSwep+Cvj1Yw/g1ToIIOdDwP4iZJa0?=\n\t=?utf-8?q?5BDGymuGRljZeOIj+PjCDcbapo8r1CaZPg/lluOYsV1doZlrW0BpYlEIECRAMU+LS?=\n\t=?utf-8?q?0ElDPVwet6hCm7gq384i5Yze7QlFrYXpuNKlUccahM4iCU64zrf01Os467+9Bc16H?=\n\t=?utf-8?q?VCXDswNBpFV4U3g+SGxN5nHztu2bWerPhkajqgRisrejHhIMJYavONvA2CwSEwKav?=\n\t=?utf-8?q?gVaJMFbmfa4KC4oFf0Ti62Z1oHwykX5ug6B+zymmMoQuXhPVxQU5INH85SABajxLu?=\n\t=?utf-8?q?aRueXYTgZF0Qp6tA+0McJBkix9o+M9VYGSob+k+KAxp4TnMFJ1C2Ze98m+f9Uev4J?=\n\t=?utf-8?q?Dzdn2TzHReb2cCI3vxa96NfkVA23sFYZCLkKQFCXLUtJZ/pIQfGg5OnVOCZ78UQ/h?=\n\t=?utf-8?q?pTjZC75EzBLOjnyE7OIotNhebiKTiPxbDZA0O1f8G2sjPkDb54SZJxhJPophBhWuA?=\n\t=?utf-8?q?VpI1gd3LNQ25RyDMc1nESxVm5KBMYZD55jYFfSlPEI8IsgqTFMMn5C0R6MQOY6jJ7?=\n\t=?utf-8?q?JLlkpXHFPe6wveWMMRNsppVQnMHI9LTM1rBF3q8NkmejsLG5CnxsIg+vrGQxPhs3T?=\n\t=?utf-8?q?/p9JGoOmJYrnnjL2k1I/dKLJGB9K9Q7LeTSbrtOCqrPdaEsqgnNDyyTVIddBGW/3K?=\n\t=?utf-8?q?sBktb/EEpbGIjRVoMp+Ry5KBLvTsJAtPjvGZmR7lGRgVw6aeaJl1SpSZDWMPui218?=\n\t=?utf-8?q?5ra4ztibpVNl1ylAsmuc44yF+kTQisHdAh6iYpgN21RFnZjCpft0Aib7CXRgxDjCG?=\n\t=?utf-8?q?elu3C8SGRd/0xHtXzX1hHZojWOFdjeK+s8C/CpUkyPOZ6ELu5JI4qiXHm68CLlLOj?=\n\t=?utf-8?q?kPVFVHH3jw8dqaqkYitd7p+m7xIN/auKvg=3D=3D?=",
        "X-OriginatorOrg": "corigine.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 4aa04e90-0b0e-40d0-7f0f-08db0ff86a36",
        "X-MS-Exchange-CrossTenant-AuthSource": "SJ0PR13MB5545.namprd13.prod.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Internal",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "16 Feb 2023 08:33:01.4288 (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 R7JHL2rFk/cJMnjoj55VrtvOub6Gv4X/5+ZGNpQvmLj0R1eCtzi4GuY3h7+dKtYOTCsCA1PZfBm/Wyd2DZBufJ8aLWFcMvHs8sIYtepi6Bo=",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "SJ2PR13MB6144",
        "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\nIf bonding port is mode4 with disabling dedicated queue and there\nare no other packets, forward loop will not call port's TX function\nand bonding port will not send LACP packets.\n\nAdd sending LACP packets periodically in forward loop to avoid\nLACP negotiation failed.\n\nSigned-off-by: Long Wu <long.wu@corigine.com>\nReviewed-by: Niklas Söderlund <niklas.soderlund@corigine.com>\nReviewed-by: Chaoyong He <chaoyong.he@corigine.com>\n---\n app/test-pmd/config.c                 | 23 ++++++++++++++\n app/test-pmd/parameters.c             | 10 +++++++\n app/test-pmd/testpmd.c                | 43 ++++++++++++++++++++++++++-\n app/test-pmd/testpmd.h                |  9 ++++++\n doc/guides/testpmd_app_ug/run_app.rst |  4 +++\n 5 files changed, 88 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c\nindex 41484c3dde..4b7be9cc25 100644\n--- a/app/test-pmd/config.c\n+++ b/app/test-pmd/config.c\n@@ -53,6 +53,11 @@\n #ifdef RTE_LIB_GRO\n #include <rte_gro.h>\n #endif\n+#ifdef RTE_NET_BOND\n+#include <rte_eth_bond.h>\n+#include <rte_eth_bond_8023ad.h>\n+#endif\n+\n #include <rte_hexdump.h>\n \n #include \"testpmd.h\"\n@@ -4401,6 +4406,12 @@ simple_fwd_config_setup(void)\n \t\tfwd_streams[i]->tx_queue  = 0;\n \t\tfwd_streams[i]->peer_addr = fwd_streams[i]->tx_port;\n \t\tfwd_streams[i]->retry_enabled = retry_enabled;\n+#ifdef RTE_NET_BOND\n+\t\tif (rte_eth_bond_8023ad_dedicated_queues_get(fwd_streams[i]->tx_port) == 0)\n+\t\t\tfwd_streams[i]->bond4_send_periodical_lacp = true;\n+\t\telse\n+\t\t\tfwd_streams[i]->bond4_send_periodical_lacp = false;\n+#endif\n \t}\n }\n \n@@ -4462,6 +4473,12 @@ rss_fwd_config_setup(void)\n \t\tfs->tx_queue = rxq;\n \t\tfs->peer_addr = fs->tx_port;\n \t\tfs->retry_enabled = retry_enabled;\n+#ifdef RTE_NET_BOND\n+\t\tif (rte_eth_bond_8023ad_dedicated_queues_get(fs->tx_port) == 0)\n+\t\t\tfs->bond4_send_periodical_lacp = true;\n+\t\telse\n+\t\t\tfs->bond4_send_periodical_lacp = false;\n+#endif\n \t\trxp++;\n \t\tif (rxp < nb_fwd_ports)\n \t\t\tcontinue;\n@@ -4577,6 +4594,12 @@ dcb_fwd_config_setup(void)\n \t\t\t\tfs->tx_queue = txq + j % nb_tx_queue;\n \t\t\t\tfs->peer_addr = fs->tx_port;\n \t\t\t\tfs->retry_enabled = retry_enabled;\n+#ifdef RTE_NET_BOND\n+\t\t\t\tif (rte_eth_bond_8023ad_dedicated_queues_get(fs->tx_port) == 0)\n+\t\t\t\t\tfs->bond4_send_periodical_lacp = true;\n+\t\t\t\telse\n+\t\t\t\t\tfs->bond4_send_periodical_lacp = false;\n+#endif\n \t\t\t}\n \t\t\tfwd_lcores[lc_id]->stream_nb +=\n \t\t\t\trxp_dcb_info.tc_queue.tc_rxq[i][tc].nb_queue;\ndiff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c\nindex e734ad9a02..5952b05b57 100644\n--- a/app/test-pmd/parameters.c\n+++ b/app/test-pmd/parameters.c\n@@ -205,6 +205,9 @@ usage(char* progname)\n \tprintf(\"  --hairpin-mode=0xXX: bitmask set the hairpin port mode.\\n\"\n \t       \"    0x10 - explicit Tx rule, 0x02 - hairpin ports paired\\n\"\n \t       \"    0x01 - hairpin ports loop, 0x00 - hairpin port self\\n\");\n+#ifdef RTE_NET_BOND\n+\tprintf(\"  --bond4-lacp-fwd: enable lacp update in fwd main loop\\n\");\n+#endif\n }\n \n #ifdef RTE_LIB_CMDLINE\n@@ -705,6 +708,9 @@ launch_args_parse(int argc, char** argv)\n \t\t{ \"rx-mq-mode\",                 1, 0, 0 },\n \t\t{ \"record-core-cycles\",         0, 0, 0 },\n \t\t{ \"record-burst-stats\",         0, 0, 0 },\n+#ifdef RTE_NET_BOND\n+\t\t{ \"bond4-lacp-fwd\",             0, 0, 0 },\n+#endif\n \t\t{ PARAM_NUM_PROCS,              1, 0, 0 },\n \t\t{ PARAM_PROC_ID,                1, 0, 0 },\n \t\t{ 0, 0, 0, 0 },\n@@ -1462,6 +1468,10 @@ launch_args_parse(int argc, char** argv)\n \t\t\t\tnum_procs = atoi(optarg);\n \t\t\tif (!strcmp(lgopts[opt_idx].name, PARAM_PROC_ID))\n \t\t\t\tproc_id = atoi(optarg);\n+#ifdef RTE_NET_BOND\n+\t\t\tif (!strcmp(lgopts[opt_idx].name, \"bond4-lacp-fwd\"))\n+\t\t\t\tbond4_lacp_fwd = 1;\n+#endif\n \t\t\tbreak;\n \t\tcase 'h':\n \t\t\tusage(argv[0]);\ndiff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c\nindex a6c5dec4c0..732137d5ce 100644\n--- a/app/test-pmd/testpmd.c\n+++ b/app/test-pmd/testpmd.c\n@@ -68,6 +68,7 @@\n #endif\n #ifdef RTE_NET_BOND\n #include <rte_eth_bond.h>\n+#include <rte_eth_bond_8023ad.h>\n #endif\n #ifdef RTE_NET_MLX5\n #include \"mlx5_testpmd.h\"\n@@ -519,6 +520,11 @@ struct gro_status gro_ports[RTE_MAX_ETHPORTS];\n uint8_t gro_flush_cycles = GRO_DEFAULT_FLUSH_CYCLES;\n #endif\n \n+#ifdef RTE_NET_BOND\n+uint8_t bond4_lacp_fwd;\n+#define LACP_UPDATE_PERIOD 10000\n+#endif\n+\n /*\n  * hexadecimal bitmask of RX mq mode can be enabled.\n  */\n@@ -2252,6 +2258,25 @@ flush_fwd_rx_queues(void)\n \t}\n }\n \n+#ifdef RTE_NET_BOND\n+static inline void\n+try_lacp_send_in_fwd(struct fwd_stream **fsm, streamid_t nb_fs)\n+{\n+\tvoid *qd;\n+\tstreamid_t sm_id;\n+\tstruct rte_eth_fp_ops *p;\n+\n+\tfor (sm_id = 0; sm_id < nb_fs; sm_id++) {\n+\t\t/* Update bond4 LACP if dedicated queues disabled. */\n+\t\tif (fsm[sm_id]->bond4_send_periodical_lacp) {\n+\t\t\tp = &rte_eth_fp_ops[fsm[sm_id]->tx_port];\n+\t\t\tqd = p->txq.data[fsm[sm_id]->tx_queue];\n+\t\t\trte_eth_bond_8023ad_lacp_send_one(qd);\n+\t\t}\n+\t}\n+}\n+#endif\n+\n static void\n run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd)\n {\n@@ -2268,6 +2293,11 @@ run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd)\n \tcnt_ports = nb_ports;\n \ttics_datum = rte_rdtsc();\n \ttics_per_1sec = rte_get_timer_hz();\n+#endif\n+#ifdef RTE_NET_BOND\n+\tuint64_t before_tsc = rte_rdtsc();\n+\tconst uint64_t bond4_lacp_period = (rte_get_tsc_hz() + US_PER_S - 1) /\n+\t\t\tUS_PER_S * LACP_UPDATE_PERIOD;\n #endif\n \tfsm = &fwd_streams[fc->stream_idx];\n \tnb_fs = fc->stream_nb;\n@@ -2300,6 +2330,15 @@ run_pkt_fwd_on_lcore(struct fwd_lcore *fc, packet_fwd_t pkt_fwd)\n \t\t\tfc->total_cycles += tsc - prev_tsc;\n \t\t\tprev_tsc = tsc;\n \t\t}\n+#ifdef RTE_NET_BOND\n+\t\tif (bond4_lacp_fwd != 0) {\n+\t\t\tuint64_t current_tsc = rte_rdtsc();\n+\t\t\tif (unlikely((current_tsc - before_tsc) > bond4_lacp_period)) {\n+\t\t\t\ttry_lacp_send_in_fwd(fsm, nb_fs);\n+\t\t\t\tbefore_tsc = current_tsc;\n+\t\t\t}\n+\t\t}\n+#endif\n \t} while (! fc->stopped);\n }\n \n@@ -4462,7 +4501,9 @@ main(int argc, char** argv)\n #ifdef RTE_LIB_LATENCYSTATS\n \tlatencystats_enabled = 0;\n #endif\n-\n+#ifdef RTE_NET_BOND\n+\tbond4_lacp_fwd = 0;\n+#endif\n \t/* on FreeBSD, mlockall() is disabled by default */\n #ifdef RTE_EXEC_ENV_FREEBSD\n \tdo_mlockall = 0;\ndiff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h\nindex b9c77a7a96..5d6673214f 100644\n--- a/app/test-pmd/testpmd.h\n+++ b/app/test-pmd/testpmd.h\n@@ -175,6 +175,11 @@ struct fwd_stream {\n \tunsigned int gro_times;\t/**< GRO operation times */\n #endif\n \tuint64_t busy_cycles; /**< used with --record-core-cycles */\n+\tuint64_t     core_cycles; /**< used for RX and TX processing */\n+#ifdef RTE_NET_BOND\n+\tbool bond4_send_periodical_lacp;\n+\t/**< Send LACP packets periodically in forward loop */\n+#endif\n \tstruct pkt_burst_stats rx_burst_stats;\n \tstruct pkt_burst_stats tx_burst_stats;\n \tstruct fwd_lcore *lcore; /**< Lcore being scheduled. */\n@@ -582,6 +587,10 @@ extern lcoreid_t bitrate_lcore_id;\n extern uint8_t bitrate_enabled;\n #endif\n \n+#ifdef RTE_NET_BOND\n+extern uint8_t bond4_lacp_fwd;\n+#endif\n+\n extern uint32_t max_rx_pkt_len;\n \n /*\ndiff --git a/doc/guides/testpmd_app_ug/run_app.rst b/doc/guides/testpmd_app_ug/run_app.rst\nindex 3ec3d4f5e6..24aaa9d229 100644\n--- a/doc/guides/testpmd_app_ug/run_app.rst\n+++ b/doc/guides/testpmd_app_ug/run_app.rst\n@@ -538,6 +538,10 @@ The command line options are:\n \n     Enable display of RX and TX burst stats.\n \n+*   ``--bond4-lacp-fwd``\n+\n+    Enable LACP packets sending in main forward loop to avoid LACP negotiation failed.\n+\n *   ``--hairpin-mode=0xXXXX``\n \n     Set the hairpin port configuration with bitmask, only valid when hairpin queues number is set::\n",
    "prefixes": [
        "v2",
        "2/2"
    ]
}