get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 135835,
    "url": "http://patchwork.dpdk.org/api/patches/135835/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20240111052555.35930-1-kaiwenx.deng@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.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": "<20240111052555.35930-1-kaiwenx.deng@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20240111052555.35930-1-kaiwenx.deng@intel.com",
    "date": "2024-01-11T05:25:55",
    "name": "[v2] app/testpmd: use Tx preparation in txonly engine",
    "commit_ref": null,
    "pull_url": null,
    "state": "new",
    "archived": false,
    "hash": "92ecc491ee920b51592a13cae6077bc2a9308e91",
    "submitter": {
        "id": 2886,
        "url": "http://patchwork.dpdk.org/api/people/2886/?format=api",
        "name": "Kaiwen Deng",
        "email": "kaiwenx.deng@intel.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20240111052555.35930-1-kaiwenx.deng@intel.com/mbox/",
    "series": [
        {
            "id": 30780,
            "url": "http://patchwork.dpdk.org/api/series/30780/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=30780",
            "date": "2024-01-11T05:25:55",
            "name": "[v2] app/testpmd: use Tx preparation in txonly engine",
            "version": 2,
            "mbox": "http://patchwork.dpdk.org/series/30780/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/135835/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/135835/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 D2D6A4388D;\n\tThu, 11 Jan 2024 07:06:07 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 9CE8740266;\n\tThu, 11 Jan 2024 07:06:07 +0100 (CET)",
            "from mgamail.intel.com (mgamail.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id 04E0240042;\n Thu, 11 Jan 2024 07:06:04 +0100 (CET)",
            "from orsmga004.jf.intel.com ([10.7.209.38])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 10 Jan 2024 22:06:02 -0800",
            "from shwdenpg561.ccr.corp.intel.com (HELO dpdk..) ([10.239.252.3])\n by orsmga004-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 10 Jan 2024 22:06:00 -0800"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1704953165; x=1736489165;\n h=from:to:cc:subject:date:message-id:in-reply-to:\n references:mime-version:content-transfer-encoding;\n bh=6aOeNqv8ERFT+i5TKzt/Did5WDOajblaDGaqJJoqWj0=;\n b=Ydeot6ecJqoUCfGGgAqXjHJhz3B/TJann08DGjWYbohBp7eLboAc4Dg0\n vFY+rY9+3rMT0G9rXjmA71qPAxsie2YHglV2nP2l8BtaHNmRUMA87WkRk\n +PFAm3GJmpiy/ZE/8S31FP3HXhjah+U4efhOhsRZ02q7VA7o8aNFrowYo\n HgesHcimjsKUfVIWi4ApRvX+Md16tlhZUyF4+TB6vmq1YI38hM6UJ902c\n XcSkjQyO1fRuGQjZ6eAlFWRSU7Ni3/DU/87S2+4No7JRLQjp9toTH0W/7\n +afGFUyK3uHJHxgbgPEuv1SQinTv445VDD7Q62eLN/2m5XXw7/l7dgdlR A==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6600,9927,10949\"; a=\"463038882\"",
            "E=Sophos;i=\"6.04,185,1695711600\"; d=\"scan'208\";a=\"463038882\"",
            "E=McAfee;i=\"6600,9927,10949\"; a=\"905829625\"",
            "E=Sophos;i=\"6.04,185,1695711600\"; d=\"scan'208\";a=\"905829625\""
        ],
        "X-ExtLoop1": "1",
        "From": "Kaiwen Deng <kaiwenx.deng@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "stable@dpdk.org, qiming.yang@intel.com, yidingx.zhou@intel.com,\n Kaiwen Deng <kaiwenx.deng@intel.com>,\n Aman Singh <aman.deep.singh@intel.com>,\n Yuying Zhang <yuying.zhang@intel.com>, Ferruh Yigit <ferruh.yigit@amd.com>,\n David Marchand <david.marchand@redhat.com>",
        "Subject": "[PATCH v2] app/testpmd: use Tx preparation in txonly engine",
        "Date": "Thu, 11 Jan 2024 13:25:55 +0800",
        "Message-Id": "<20240111052555.35930-1-kaiwenx.deng@intel.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20240103012912.4334-1-kaiwenx.deng@intel.com>",
        "References": "<20240103012912.4334-1-kaiwenx.deng@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "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": "Txonly forwarding engine does not call the Tx preparation API\nbefore transmitting packets. This may cause some problems.\n\nTSO breaks when MSS spans more than 8 data fragments. Those\npackets will be dropped by Tx preparation API, but it will cause\nMDD event if txonly forwarding engine does not call the Tx preparation\nAPI before transmitting packets.\n\nWe can reproduce this issue by these steps list blow on ICE and I40e.\n\n./x86_64-native-linuxapp-gcc/app/dpdk-testpmd -c 0xf -n 4 -- -i\n--tx-offloads=0x00008000\n\ntestpmd>set txpkts 64,128,256,512,64,128,256,512,512\ntestpmd>set burst 1\ntestpmd>start tx_first 1\n\nThis commit will use Tx preparation API in txonly forwarding engine.\n\nFixes: 655131ccf727 (\"app/testpmd: factorize fwd engines Tx\")\nCc: stable@dpdk.org\n\nSigned-off-by: Kaiwen Deng <kaiwenx.deng@intel.com>\n---\n app/test-pmd/txonly.c | 17 ++++++++++++++++-\n 1 file changed, 16 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/app/test-pmd/txonly.c b/app/test-pmd/txonly.c\nindex c2b88764be..9dc53553a7 100644\n--- a/app/test-pmd/txonly.c\n+++ b/app/test-pmd/txonly.c\n@@ -335,13 +335,16 @@ pkt_burst_transmit(struct fwd_stream *fs)\n \tstruct rte_mbuf *pkts_burst[MAX_PKT_BURST];\n \tstruct rte_port *txp;\n \tstruct rte_mbuf *pkt;\n+\tstruct rte_mbuf *mb;\n \tstruct rte_mempool *mbp;\n \tstruct rte_ether_hdr eth_hdr;\n \tuint16_t nb_tx;\n \tuint16_t nb_pkt;\n+\tuint16_t nb_prep;\n \tuint16_t vlan_tci, vlan_tci_outer;\n \tuint64_t ol_flags = 0;\n \tuint64_t tx_offloads;\n+\tchar buf[256];\n \n \tmbp = current_fwd_lcore()->mbp;\n \ttxp = &ports[fs->tx_port];\n@@ -396,7 +399,19 @@ pkt_burst_transmit(struct fwd_stream *fs)\n \tif (nb_pkt == 0)\n \t\treturn false;\n \n-\tnb_tx = common_fwd_stream_transmit(fs, pkts_burst, nb_pkt);\n+\tnb_prep = rte_eth_tx_prepare(fs->tx_port, fs->tx_queue,\n+\t\tpkts_burst, nb_pkt);\n+\tif (unlikely(nb_prep != nb_pkt)) {\n+\t\tmb = pkts_burst[nb_prep];\n+\t\trte_get_tx_ol_flag_list(mb->ol_flags, buf, sizeof(buf));\n+\t\tfprintf(stderr,\n+\t\t\t\"Preparing packet burst to transmit failed: %s ol_flags: %s\\n\",\n+\t\t\trte_strerror(rte_errno), buf);\n+\t\tfs->fwd_dropped += nb_pkt - nb_prep;\n+\t\trte_pktmbuf_free_bulk(&pkts_burst[nb_prep], nb_pkt - nb_prep);\n+\t}\n+\n+\tnb_tx = common_fwd_stream_transmit(fs, pkts_burst, nb_prep);\n \n \tif (txonly_multi_flow)\n \t\tRTE_PER_LCORE(_src_port_var) -= nb_pkt - nb_tx;\n",
    "prefixes": [
        "v2"
    ]
}