get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 132587,
    "url": "http://patches.dpdk.org/api/patches/132587/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231013032730.426691-3-taozj888@163.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": "<20231013032730.426691-3-taozj888@163.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231013032730.426691-3-taozj888@163.com",
    "date": "2023-10-13T03:27:29",
    "name": "[v2,2/3] examples/l3fwd: relax the Offload requirement",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "cf1a281489ccb2514a9a111a122f0649a1fb0185",
    "submitter": {
        "id": 3044,
        "url": "http://patches.dpdk.org/api/people/3044/?format=api",
        "name": "Trevor Tao",
        "email": "taozj888@163.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231013032730.426691-3-taozj888@163.com/mbox/",
    "series": [
        {
            "id": 29829,
            "url": "http://patches.dpdk.org/api/series/29829/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=29829",
            "date": "2023-10-13T03:27:30",
            "name": "example/l3fwd: relax l3fwd rx RSS/Offload if needed",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/29829/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/132587/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/132587/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 A73DC4233A;\n\tFri, 13 Oct 2023 05:27:53 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 95F52402AE;\n\tFri, 13 Oct 2023 05:27:45 +0200 (CEST)",
            "from m12.mail.163.com (m12.mail.163.com [220.181.12.198])\n by mails.dpdk.org (Postfix) with ESMTP id 8C2DE402DA\n for <dev@dpdk.org>; Fri, 13 Oct 2023 05:27:41 +0200 (CEST)",
            "from u2204.. (unknown [49.76.95.19])\n by zwqz-smtp-mta-g5-1 (Coremail) with SMTP id\n _____wDHh4MjuShlSDqlAQ--.65325S4;\n Fri, 13 Oct 2023 11:27:36 +0800 (CST)"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com;\n s=s110527; h=From:Subject:Date:Message-Id:MIME-Version; bh=/sJQb\n GOrsWT/rMkWVof5MaqxO20nMCiSoHvXIp4ANT8=; b=gKlcUNf63FBramaUb9NvJ\n LQh4Fa/YGg8cuNpcjzVHMXpgDYzLBnEPJIAfR0Z1lRNJY5/AIGvLN59ZhLRNTcoq\n nQRbuKRYp2kh+8dX4Abw71apenXeH14fdCSdPGX5ip0NRrxlX82IcJMT2OoKMpmU\n mrKX+4B/zuOa0OTP4REm1I=",
        "From": "Trevor Tao <taozj888@163.com>",
        "To": "dev@dpdk.org",
        "Cc": "Trevor Tao <taozj888@163.com>",
        "Subject": "[PATCH v2 2/3] examples/l3fwd: relax the Offload requirement",
        "Date": "Fri, 13 Oct 2023 03:27:29 +0000",
        "Message-Id": "<20231013032730.426691-3-taozj888@163.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20231013032730.426691-1-taozj888@163.com>",
        "References": "<20231013032730.426691-1-taozj888@163.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "X-CM-TRANSID": "_____wDHh4MjuShlSDqlAQ--.65325S4",
        "X-Coremail-Antispam": "1Uf129KBjvJXoWxWFy8ZFWxGryfZr4fGr43GFg_yoWrCFy3pa\n nrKrs7Xrn3Zry5XF1fAa1furnIgw18ur1DCrn5Aw17t39rA34kJFWUtFy5uFW2ya4DCrZ3\n ZFWrGrW3KF18A3JanT9S1TB71UUUUU7qnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2\n 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x0pRJCztUUUUU=",
        "X-Originating-IP": "[49.76.95.19]",
        "X-CM-SenderInfo": "hwdr6yqyyyqiywtou0bp/1tbiSAoIx1+FiSj-ugAAsz",
        "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": "Now the port Rx offload mode is set to RTE_ETH_RX_OFFLOAD_CHECKSUM\nby default, but some hw and/or virtual interface does not support\nthe offload mode presupposed, e.g., some virtio interfaces in\nthe cloud may only partly support RTE_ETH_RX_OFFLOAD_UDP_CKSUM/\nRTE_ETH_RX_OFFLOAD_TCP_CKSUM,\nbut not RTE_ETH_RX_OFFLOAD_IPV4_CKSUM, and the error msg here:\n\nEthdev port_id=0 requested Rx offloads 0xe does not match Rx offloads\ncapabilities 0x201d in rte_eth_dev_configure()\n\nSo to enable the l3fwd running in that environment, the Rx mode requirement\ncan be relaxed to reflect the hardware feature reality here, and the l3fwd\ncan run smoothly then.\nA warning msg would be provided to user in case it happens here.\n\nOn the other side, enabling the software cksum check in case missing the\nhw support.\n\nThe relax action for rx cksum offload is just enabled when relax_rx_mode is\ntrue which is false by default.\n\nSigned-off-by: Trevor Tao <taozj888@163.com>\n---\n examples/l3fwd/l3fwd.h     | 12 ++++++++++--\n examples/l3fwd/l3fwd_em.h  |  2 +-\n examples/l3fwd/l3fwd_lpm.h |  2 +-\n examples/l3fwd/main.c      | 14 ++++++++++++++\n 4 files changed, 26 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h\nindex b55855c932..fd98ad3373 100644\n--- a/examples/l3fwd/l3fwd.h\n+++ b/examples/l3fwd/l3fwd.h\n@@ -159,7 +159,7 @@ send_single_packet(struct lcore_conf *qconf,\n \n #ifdef DO_RFC_1812_CHECKS\n static inline int\n-is_valid_ipv4_pkt(struct rte_ipv4_hdr *pkt, uint32_t link_len)\n+is_valid_ipv4_pkt(struct rte_ipv4_hdr *pkt, uint32_t link_len, uint64_t ol_flags)\n {\n \t/* From http://www.rfc-editor.org/rfc/rfc1812.txt section 5.2.2 */\n \t/*\n@@ -170,7 +170,15 @@ is_valid_ipv4_pkt(struct rte_ipv4_hdr *pkt, uint32_t link_len)\n \t\treturn -1;\n \n \t/* 2. The IP checksum must be correct. */\n-\t/* this is checked in H/W */\n+\t/* if this is not checked in H/W, check it. */\n+\tif ((ol_flags & RTE_ETH_RX_OFFLOAD_IPV4_CKSUM) == 0) {\n+\t\tuint16_t actual_cksum, expected_cksum;\n+\t\tactual_cksum = pkt->hdr_checksum;\n+\t\tpkt->hdr_checksum = 0;\n+\t\texpected_cksum = rte_ipv4_cksum(pkt);\n+\t\tif (actual_cksum != expected_cksum)\n+\t\t\treturn -2;\n+\t}\n \n \t/*\n \t * 3. The IP version number must be 4. If the version number is not 4\ndiff --git a/examples/l3fwd/l3fwd_em.h b/examples/l3fwd/l3fwd_em.h\nindex 7d051fc076..1fee2e2e6c 100644\n--- a/examples/l3fwd/l3fwd_em.h\n+++ b/examples/l3fwd/l3fwd_em.h\n@@ -20,7 +20,7 @@ l3fwd_em_handle_ipv4(struct rte_mbuf *m, uint16_t portid,\n \n #ifdef DO_RFC_1812_CHECKS\n \t/* Check to make sure the packet is valid (RFC1812) */\n-\tif (is_valid_ipv4_pkt(ipv4_hdr, m->pkt_len) < 0) {\n+\tif (is_valid_ipv4_pkt(ipv4_hdr, m->pkt_len, m->ol_flags) < 0) {\n \t\trte_pktmbuf_free(m);\n \t\treturn BAD_PORT;\n \t}\ndiff --git a/examples/l3fwd/l3fwd_lpm.h b/examples/l3fwd/l3fwd_lpm.h\nindex c61b969584..4ee61e8d88 100644\n--- a/examples/l3fwd/l3fwd_lpm.h\n+++ b/examples/l3fwd/l3fwd_lpm.h\n@@ -22,7 +22,7 @@ l3fwd_lpm_simple_forward(struct rte_mbuf *m, uint16_t portid,\n \n #ifdef DO_RFC_1812_CHECKS\n \t\t/* Check to make sure the packet is valid (RFC1812) */\n-\t\tif (is_valid_ipv4_pkt(ipv4_hdr, m->pkt_len) < 0) {\n+\t\tif (is_valid_ipv4_pkt(ipv4_hdr, m->pkt_len, m->ol_flags) < 0) {\n \t\t\trte_pktmbuf_free(m);\n \t\t\treturn;\n \t\t}\ndiff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c\nindex 89ad546a5e..2b815375a9 100644\n--- a/examples/l3fwd/main.c\n+++ b/examples/l3fwd/main.c\n@@ -1285,6 +1285,20 @@ l3fwd_poll_resource_setup(void)\n \t\t\t\tlocal_port_conf.rx_adv_conf.rss_conf.rss_hf);\n \t\t}\n \n+\t\t/* relax the rx offload requirement */\n+\t\tif ((local_port_conf.rxmode.offloads & dev_info.rx_offload_capa) !=\n+\t\t\tlocal_port_conf.rxmode.offloads) {\n+\t\t\tprintf(\"Port %u requested Rx offloads 0x%\"PRIx64\" does not\"\n+\t\t\t\t\" match Rx offloads capabilities 0x%\"PRIx64\"\\n\",\n+\t\t\t\tportid, local_port_conf.rxmode.offloads,\n+\t\t\t\tdev_info.rx_offload_capa);\n+\t\t\tif (relax_rx_mode) {\n+\t\t\t\tlocal_port_conf.rxmode.offloads &= dev_info.rx_offload_capa;\n+\t\t\t\tprintf(\"warning: modified the rx offload to 0x%\"PRIx64\" based on device\"\n+\t\t\t\t\" capability\\n\", local_port_conf.rxmode.offloads);\n+\t\t\t}\n+\t\t}\n+\n \t\tret = rte_eth_dev_configure(portid, nb_rx_queue,\n \t\t\t\t\t(uint16_t)n_tx_queue, &local_port_conf);\n \t\tif (ret < 0)\n",
    "prefixes": [
        "v2",
        "2/3"
    ]
}