Show a cover letter.

GET /api/covers/126470/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 126470,
    "url": "http://patches.dpdk.org/api/covers/126470/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20230424130208.9517-1-fengchengwen@huawei.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": "<20230424130208.9517-1-fengchengwen@huawei.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20230424130208.9517-1-fengchengwen@huawei.com",
    "date": "2023-04-24T13:02:05",
    "name": "[RFC,0/3] introduce coroutine library",
    "submitter": {
        "id": 2146,
        "url": "http://patches.dpdk.org/api/people/2146/?format=api",
        "name": "fengchengwen",
        "email": "fengchengwen@huawei.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20230424130208.9517-1-fengchengwen@huawei.com/mbox/",
    "series": [
        {
            "id": 27847,
            "url": "http://patches.dpdk.org/api/series/27847/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=27847",
            "date": "2023-04-24T13:02:05",
            "name": "introduce coroutine library",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/27847/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/126470/comments/",
    "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 E3360429DB;\n\tMon, 24 Apr 2023 15:09:14 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id D32C6410D0;\n\tMon, 24 Apr 2023 15:09:14 +0200 (CEST)",
            "from szxga02-in.huawei.com (szxga02-in.huawei.com [45.249.212.188])\n by mails.dpdk.org (Postfix) with ESMTP id A22DE40FAE\n for <dev@dpdk.org>; Mon, 24 Apr 2023 15:09:13 +0200 (CEST)",
            "from dggpeml500024.china.huawei.com (unknown [172.30.72.56])\n by szxga02-in.huawei.com (SkyGuard) with ESMTP id 4Q4lj52RmJzSv6C;\n Mon, 24 Apr 2023 21:04:57 +0800 (CST)",
            "from localhost.localdomain (10.50.163.32) by\n dggpeml500024.china.huawei.com (7.185.36.10) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.1.2507.23; Mon, 24 Apr 2023 21:09:11 +0800"
        ],
        "From": "Chengwen Feng <fengchengwen@huawei.com>",
        "To": "<thomas@monjalon.net>, <ferruh.yigit@amd.com>",
        "CC": "<dev@dpdk.org>",
        "Subject": "[RFC 0/3] introduce coroutine library",
        "Date": "Mon, 24 Apr 2023 13:02:05 +0000",
        "Message-ID": "<20230424130208.9517-1-fengchengwen@huawei.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.50.163.32]",
        "X-ClientProxiedBy": "dggems706-chm.china.huawei.com (10.3.19.183) To\n dggpeml500024.china.huawei.com (7.185.36.10)",
        "X-CFilter-Loop": "Reflected",
        "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": "This patchset introduces the coroutine library which will help refactor\nthe hns3 PMD's reset process.\n\nThe hns3 single function reset process consists of the following steps:\n    1.stop_service();\n    2.prepare_reset();\n    3.delay(100ms);\n    4.notify_hw();\n    5.wait_hw_reset_done(); // multiple sleep waits are involved.\n    6.reinit();\n    7.restore_conf();\n\nIf the DPDK process take over multiple hns3 functions (e.g. 100),\nit's impractical to reset and restore functions in sequence:\n    1.proc_func(001); // will completed in 100+ms range.\n    2.proc_func(002); // will completed in 100~200+ms range.\n    ...\n    x.proc_func(100); // will completed in 9900~10000+ms range.\nThe later functions will process fail because it's too late to deal with.\n\nOne solution is that create a reset thread for each function, and it\nwill lead to large number of threads if the DPDK process take over\nmultiple hns3 functions.\n\nSo the current hns3 driver uses asynchronous mechanism, for examples, it\nuse rte_eal_alarm_set() when process delay(100ms), it splits a serial\nprocess into multiple asynchronous processes, and the code is complex\nand difficult to understand.\n\nThe coroutine is a good mechanism to provide programmers with the \nsimplicity of keeping serial processes within a limited number of\nthreads.\n\nThis patchset use <ucontext.h> to build the coroutine framework, and it\njust provides a demo. More APIs maybe added in the future.\n\nIn addition, we would like to ask the community whether it it possible\nto accept the library. If not, whether it is allowed to provide the\nlibrary in hns3 PMD.\n\nChengwen Feng (3):\n  lib/coroutine: add coroutine library\n  examples/coroutine: support coroutine examples\n  net/hns3: refactor reset process with coroutine\n\n drivers/net/hns3/hns3_ethdev.c    | 217 ++++++++++++++++++++++++++++++\n drivers/net/hns3/hns3_ethdev.h    |   3 +\n drivers/net/hns3/hns3_intr.c      |  38 ++++++\n drivers/net/hns3/meson.build      |   2 +-\n examples/coroutine/main.c         | 153 +++++++++++++++++++++\n examples/coroutine/meson.build    |  10 ++\n examples/meson.build              |   1 +\n lib/coroutine/meson.build         |   8 ++\n lib/coroutine/rte_coroutine.c     | 190 ++++++++++++++++++++++++++\n lib/coroutine/rte_coroutine.h     | 110 +++++++++++++++\n lib/coroutine/rte_coroutine_imp.h |  46 +++++++\n lib/coroutine/version.map         |  11 ++\n lib/meson.build                   |   1 +\n 13 files changed, 789 insertions(+), 1 deletion(-)\n create mode 100644 examples/coroutine/main.c\n create mode 100644 examples/coroutine/meson.build\n create mode 100644 lib/coroutine/meson.build\n create mode 100644 lib/coroutine/rte_coroutine.c\n create mode 100644 lib/coroutine/rte_coroutine.h\n create mode 100644 lib/coroutine/rte_coroutine_imp.h\n create mode 100644 lib/coroutine/version.map"
}