Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/125314/?format=api
http://patchwork.dpdk.org/api/patches/125314/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/1CCF1B14C9842CED+002501d95b20$272f1b60$758d5220$@netitest.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": "<1CCF1B14C9842CED+002501d95b20$272f1b60$758d5220$@netitest.com>", "list_archive_url": "https://inbox.dpdk.org/dev/1CCF1B14C9842CED+002501d95b20$272f1b60$758d5220$@netitest.com", "date": "2023-03-20T11:36:02", "name": "回复: af_packet can't send packet more than framecnt", "commit_ref": null, "pull_url": null, "state": "not-applicable", "archived": true, "hash": "2bf410361b7885de2f7dade3a879e345c81c32eb", "submitter": { "id": 3007, "url": "http://patchwork.dpdk.org/api/people/3007/?format=api", "name": "", "email": "hfli@netitest.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/1CCF1B14C9842CED+002501d95b20$272f1b60$758d5220$@netitest.com/mbox/", "series": [ { "id": 27462, "url": "http://patchwork.dpdk.org/api/series/27462/?format=api", "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=27462", "date": "2023-03-20T11:36:02", "name": "回复: af_packet can't send packet more than framecnt", "version": 1, "mbox": "http://patchwork.dpdk.org/series/27462/mbox/" } ], "comments": "http://patchwork.dpdk.org/api/patches/125314/comments/", "check": "warning", "checks": "http://patchwork.dpdk.org/api/patches/125314/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 EEE01427E1;\n\tMon, 20 Mar 2023 12:36:10 +0100 (CET)", "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 867C340A7F;\n\tMon, 20 Mar 2023 12:36:10 +0100 (CET)", "from smtpbgjp3.qq.com (smtpbgjp3.qq.com [54.92.39.34])\n by mails.dpdk.org (Postfix) with ESMTP id 02E94406BC\n for <dev@dpdk.org>; Mon, 20 Mar 2023 12:36:07 +0100 (CET)", "from DESKTOPGF9TM7H ( [125.42.32.4])\n by bizesmtp.qq.com (ESMTP) with SMTP id 0\n for <dev@dpdk.org>; Mon, 20 Mar 2023 19:36:02 +0800 (CST)" ], "X-QQ-mid": "bizesmtp78t1679312163tlmnv8yq", "X-QQ-SSF": "00000000000000C0H000000A0000000", "X-QQ-FEAT": "90EFqYDyPxBOaoNZFIixbrf4LnH06SjvpSnxykWfdVKyo5Gygv2DQxpvk/xjm\n t4lolN/fyHfaP0JQVNfQCyH/PYksEsegxqnG7bC0QwHxY8dOXH/4Kpobjba89Y7GEzWrzI+\n h4Vme51XXcLyIzogYZbHqwbRvHHrBUNSSMBBynHKv9OiDBqL0s32LwZbv1lsgQNHrwYNor5\n 5LPcFXazgwDByj5AmZuvBsRngvwA+s1ipgBFsDrADIdpceuXLpBLU+cUfbQL3DXgzKEzby6\n hndGxB2Cu0pk12RqgJyo9wL3y1GEqTw4/z3WSOuoVr8Q6VfAjQTbtyobyyGAniyKvlE4ILy\n XQY7xrUP0GXaAOv8MW7RyZJqDvoc5t5/nA54X5+/I7lv+LqUuRYc8Wc1+IK+Q==", "X-QQ-GoodBg": "0", "From": "<hfli@netitest.com>", "To": "<dev@dpdk.org>", "References": "", "In-Reply-To": "", "Subject": "\n =?eucgb2312_cn?b?u9i4tDogYWZfcGFja2V0IGNhbid0IHNlbmQgcGFja2V0IG1vcmUgdGhh?=\n\t=?eucgb2312_cn?b?biBmcmFtZWNudA==?=", "Date": "Mon, 20 Mar 2023 19:36:02 +0800", "Message-ID": "<1CCF1B14C9842CED+002501d95b20$272f1b60$758d5220$@netitest.com>", "MIME-Version": "1.0", "Content-Type": "text/plain;\n\tcharset=\"gb2312\"", "Content-Transfer-Encoding": "quoted-printable", "X-Mailer": "Microsoft Outlook 16.0", "Thread-Index": "Adla2/m2oFOUykYESnWhnhHdvVELggAQ+sAw", "Content-Language": "zh-cn", "X-QQ-SENDSIZE": "520", "Feedback-ID": "bizesmtp:netitest.com:qybglogicsvr:qybglogicsvr5", "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": "Hi,\n\nThe issue has been resolved when I patched new code from dpdk 22.12, my dpdk\nversion is 19.11\n\n static uint16_t\n@@ -213,7 +236,7 @@\n }\n \n /* point at the next incoming frame */\n- if (ppd->tp_status != TP_STATUS_AVAILABLE) {\n+ if (!tx_ring_status_available(ppd->tp_status)) {\n if (poll(&pfd, 1, -1) < 0)\n break;\n \n@@ -236,7 +259,7 @@\n *\n * This results in poll() returning POLLOUT.\n */\n- if (ppd->tp_status != TP_STATUS_AVAILABLE)\n+ if (!tx_ring_status_available(ppd->tp_status))\n break;\n \n /* copy the tx frame data */\n\n\nThanks,\nHaifeng\n\n-----邮件原件-----\n发件人: hfli@netitest.com <hfli@netitest.com> \n发送时间: 2023年3月20日 11:32\n收件人: 'dev@dpdk.org' <dev@dpdk.org>\n主题: af_packet can't send packet more than framecnt\n\nHi,\n\nI used af_packet interface, but found only can send packets successfully\nless than framecnt argument. \n\nE.g. if I pass “--vdev=eth_af_packet0,iface=tap0,blocksz=4096,framesz=2048,\nframecnt=512,qpairs=1,qdisc_bypass=0” to DPDK, the rte_eth_tx_burst only\nreturn 1 for 512 times, after that it always return 0.\nIf I pass\n“--vdev=eth_af_packet0,iface=tap0,blocksz=4096,framesz=2048,framecnt=1024,q\npairs=1,qdisc_bypass=0” to DPDK, the rte_eth_tx_burst only return 1 for\n1024 times, after that it always return 0.\n\nBTW, I use busy loop mode in project, Is there any help for this?\n\n\n\nThanks so much\nHaifeng", "diff": "Index: rte_eth_af_packet.c\n===================================================================\n--- rte_eth_af_packet.c (版本 44115)\n+++ rte_eth_af_packet.c (版本 44128)\n@@ -169,6 +169,29 @@\n }\n \n /*\n+ * Check if there is an available frame in the ring\n+ */\n+static inline int\n+tx_ring_status_available(uint32_t tp_status)\n+{\n+ /*\n+ * We eliminate the timestamp status from the packet status.\n+ * This should only matter if timestamping is enabled on the socket,\n+ * but there is a bug in the kernel which is fixed in newer\nreleases.\n+ *\n+ * See the following kernel commit for reference:\n+ * commit 171c3b151118a2fe0fc1e2a9d1b5a1570cfe82d2\n+ * net: packetmmap: fix only tx timestamp on request\n+ */\n+ tp_status &= ~(TP_STATUS_TS_SOFTWARE | TP_STATUS_TS_RAW_HARDWARE);\n+\n+ if (tp_status == TP_STATUS_AVAILABLE)\n+ return 1;\n+\n+ return 0;\n+}\n+\n+/*\n * Callback to handle sending packets through a real NIC.\n */\n", "prefixes": [] }{ "id": 125314, "url": "