Show a cover letter.

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

{
    "id": 66020,
    "url": "http://patches.dpdk.org/api/covers/66020/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20200224203931.21256-1-honnappa.nagarahalli@arm.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": "<20200224203931.21256-1-honnappa.nagarahalli@arm.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200224203931.21256-1-honnappa.nagarahalli@arm.com",
    "date": "2020-02-24T20:39:30",
    "name": "[RFC,0/1] lib/ring: add scatter gather and serial dequeue APIs",
    "submitter": {
        "id": 1045,
        "url": "http://patches.dpdk.org/api/people/1045/?format=api",
        "name": "Honnappa Nagarahalli",
        "email": "honnappa.nagarahalli@arm.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20200224203931.21256-1-honnappa.nagarahalli@arm.com/mbox/",
    "series": [
        {
            "id": 8671,
            "url": "http://patches.dpdk.org/api/series/8671/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=8671",
            "date": "2020-02-24T20:39:30",
            "name": "lib/ring: add scatter gather and serial dequeue APIs",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/8671/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/66020/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 7DF82A0524;\n\tMon, 24 Feb 2020 21:39:49 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 65C012C39;\n\tMon, 24 Feb 2020 21:39:48 +0100 (CET)",
            "from foss.arm.com (foss.arm.com [217.140.110.172])\n by dpdk.org (Postfix) with ESMTP id 62A031F1C\n for <dev@dpdk.org>; Mon, 24 Feb 2020 21:39:47 +0100 (CET)",
            "from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14])\n by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BA6D230E;\n Mon, 24 Feb 2020 12:39:46 -0800 (PST)",
            "from qc2400f-1.austin.arm.com (qc2400f-1.austin.arm.com\n [10.118.14.48])\n by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id A86523F534;\n Mon, 24 Feb 2020 12:39:46 -0800 (PST)"
        ],
        "From": "Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>",
        "To": "olivier.matz@6wind.com,\n\tkonstantin.ananyev@intel.com",
        "Cc": "honnappa.nagarahalli@arm.com, gavin.hu@arm.com, dev@dpdk.org, nd@arm.com",
        "Date": "Mon, 24 Feb 2020 14:39:30 -0600",
        "Message-Id": "<20200224203931.21256-1-honnappa.nagarahalli@arm.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "Subject": "[dpdk-dev] [RFC 0/1] lib/ring: add scatter gather and serial\n\tdequeue APIs",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Cover-letter:\nRCU defer queue (DQ) APIs place 3 requirements on rte_ring library.\n1) Multiple entities are responsible for providing/consuming the\n   data in a single element of the DQ. Existing rte_ring APIs\n   require an intermediate memcpy in such cases.\n\n   RCU DQ API, rte_rcu_qsbr_dq_enqueue, has to store the token\n   (generated by the RCU DQ APIs) and the application data\n   (provided by the application) in each element of the DQ.\n\n2) Dequeue the data from DQ only if it meets certain criteria.\n   i.e. data needs to be accessed before it can be dequeued.\n\n   RCU DQ API, rte_rcu_qsbr_dq_reclaim, can dequeue the\n   element from DQ, only if the token at the head of\n   the DQ can be reclaimed. If the token cannot be reclaimed\n   the reserved elements need to be discarded.\n\n3) While dequeuing from DQ, only one thread should be allowed\n   to reserve elements.\n\n   In order to make rte_rcu_qsbr_dq_reclaim API lock free, the\n   'reserve elements in DQ, reclaim the token and revert/commit\n   elements in DQ' process needs to be atomic.\n\nThe first requirement is satisfied by providing scatter-gather APIs\nin rte_ring library. The enqueue/dequeue operations are split\ninto 3 parts:\na) Move produer's/consumer's head index. i.e. reserve elements in\n   the ring and return the pointer in the ring to where the data\n   needs to be copied to/from.\nb) The application copies the data to/from the pointer.\nc) Move producer's/consumer's tail index. i.e. indicate that\n   the reserved elements are successfully consumed.\nRCU DQ APIs require single element, multiple producer enqueue\noperations. 'rte_ring_mp_enqueue_elem_reserve' and\n'rte_ring_mp_enqueue_elem_commit' APIs are provided to address\nthese requirements.\n\nThe second and third requirements are satisfied by providing\nrte_ring APIs for:\na) Move consumer's head index only if there are no elements\n   reserved on the ring.\nb) Reset the consumer's head index to its original value.\n   i.e. discard the reserved elements.\n\nIn this case, RCU DQ APIs require single element, single consumer\ndequeue operations. 'rte_ring_dequeue_elem_reserve_serial',\n'rte_ring_dequeue_elem_commit' and\n'rte_ring_dequeue_elem_revert_serial' APIs are provided to address\nthese requirements.\n\nHonnappa Nagarahalli (1):\n  lib/ring: add scatter gather and serial dequeue APIs\n\n lib/librte_ring/Makefile           |   1 +\n lib/librte_ring/meson.build        |   1 +\n lib/librte_ring/rte_ring_c11_mem.h |  98 +++++++\n lib/librte_ring/rte_ring_elem_sg.h | 417 +++++++++++++++++++++++++++++\n lib/librte_ring/rte_ring_generic.h |  93 +++++++\n 5 files changed, 610 insertions(+)\n create mode 100644 lib/librte_ring/rte_ring_elem_sg.h"
}