Show a cover letter.

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

{
    "id": 115463,
    "url": "http://patchwork.dpdk.org/api/covers/115463/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20220826103605.1579589-1-cristian.dumitrescu@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": "<20220826103605.1579589-1-cristian.dumitrescu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220826103605.1579589-1-cristian.dumitrescu@intel.com",
    "date": "2022-08-26T10:35:58",
    "name": "[0/7] pipeline: support direct registers and meters",
    "submitter": {
        "id": 19,
        "url": "http://patchwork.dpdk.org/api/people/19/?format=api",
        "name": "Cristian Dumitrescu",
        "email": "cristian.dumitrescu@intel.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/cover/20220826103605.1579589-1-cristian.dumitrescu@intel.com/mbox/",
    "series": [
        {
            "id": 24426,
            "url": "http://patchwork.dpdk.org/api/series/24426/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=24426",
            "date": "2022-08-26T10:35:58",
            "name": "pipeline: support direct registers and meters",
            "version": 1,
            "mbox": "http://patchwork.dpdk.org/series/24426/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/115463/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 D0DC1A0554;\n\tFri, 26 Aug 2022 12:36:11 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 832CC40696;\n\tFri, 26 Aug 2022 12:36:11 +0200 (CEST)",
            "from mga06.intel.com (mga06b.intel.com [134.134.136.31])\n by mails.dpdk.org (Postfix) with ESMTP id 8168E40143\n for <dev@dpdk.org>; Fri, 26 Aug 2022 12:36:08 +0200 (CEST)",
            "from fmsmga008.fm.intel.com ([10.253.24.58])\n by orsmga104.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 26 Aug 2022 03:36:07 -0700",
            "from silpixa00400573.ir.intel.com (HELO\n silpixa00400573.ger.corp.intel.com.) ([10.237.223.157])\n by fmsmga008.fm.intel.com with ESMTP; 26 Aug 2022 03:36:06 -0700"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple;\n d=intel.com; i=@intel.com; q=dns/txt; s=Intel;\n t=1661510169; x=1693046169;\n h=from:to:subject:date:message-id:mime-version:\n content-transfer-encoding;\n bh=ZTQhDSoI6LmQhd6B+QghTw2zqDyutyrEgMUoMrLqIAg=;\n b=IFsGt86avPtGvgtn7ahIfLIRFHz5rUSjUjIxDbv2TKXejoxpKLBifisK\n 22I/ZP35fF8/BR9mddZk0hiqIOVHaX8izAukJWGGQtkLXEa7+BwliU/TX\n CHSigkyK4xzESSgGMSAZVlfp7MvOIQzSGfjOiAChyuyDnBioqDjW1M7lq\n dN52elzSaZtVWV9XNKtcHRSDMyqrwSEdkJnvYHj2C4Z9pUPUviwhA4OuE\n AKVOqfifyHd3ApBkjnOnpK/Ra5EFQ8U/PySkJqqr3zRuv+uWxAYKts9US\n Vfr4NSDKfGrur6QspaLwuIlfoW98q+IRtIsVbD88LP8oacJzCBy2eeCKo Q==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6500,9779,10450\"; a=\"356194319\"",
            "E=Sophos;i=\"5.93,265,1654585200\"; d=\"scan'208\";a=\"356194319\"",
            "E=Sophos;i=\"5.93,265,1654585200\"; d=\"scan'208\";a=\"671414275\""
        ],
        "X-ExtLoop1": "1",
        "From": "Cristian Dumitrescu <cristian.dumitrescu@intel.com>",
        "To": "dev@dpdk.org",
        "Subject": "[PATCH 0/7] pipeline: support direct registers and meters",
        "Date": "Fri, 26 Aug 2022 10:35:58 +0000",
        "Message-Id": "<20220826103605.1579589-1-cristian.dumitrescu@intel.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "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": "This patch introduces support for direct registers and meters. The\ndifference between indirect (indexed) and direct registers and meters\nis explained below [1][2][3].\n\n1. Indirect (indexed) registers and meters.\n\nThe index into an array of registers or meters used on the data path\nis typically read from the action data identified by a table lookup\noperation.\n\nThis means that the control plane manages the mapping of the mapping\nof array entries to table entries and sets up this index explicitly\ninto the table entry action data.\n\nThese are called indirect or indexed registers and meters, and they\nallow multiple table entries to share the same register/meter, as well\nas a 1:1 mapping of table entries to register/meter array entries.\n\n2. Direct registers and meters.\nIn the case of 1:1 mapping of table entries to register/meter array\nelements, it is sometimes desired to avoid the explicit allocation of\nregister/meter array index to each table entry by the control plane.\n\nOne way this can be done is by implementing a mechanism to associate\na unique ID to each table entry, including the default table entry as\nwell; once the entry ID is retrieved as result of the table lookup\noperation, it is saved by the pipeline and used later on as the\nindex into the register/meter array.\n\nThese are called direct registers and meters, and have the advantage\nthat the index is auto-generated, which simplifies the controller\nimplementation; the disadvantage is that they do not allow multiple\ntable entries to share the same register or meter.\n\nReferences:\n\n[1] Indirect and direct counters:\nhttps://p4.org/p4-spec/docs/PSA.html#sec-counters\n\n[2] Indirect and direct registers:\nhttps://p4.org/p4-spec/docs/PSA.html#sec-registers\n\n[3] Indirect and direct meters:\nhttps://p4.org/p4-spec/docs/PSA.html#sec-meters\n\nCristian Dumitrescu (7):\n  table: add entry ID for regular tables\n  table: add entry ID for learner tables\n  pipeline: add table entry ID read instruction\n  pipeline: support direct registers on the control path\n  pipeline: support direct meters on the control path\n  examples/pipeline: add CLI commands for direct registers\n  examples/pipeline: add CLI commands for direct meters\n\n examples/pipeline/cli.c                  | 642 ++++++++++++++++++-----\n examples/pipeline/examples/meter.cli     |   2 +-\n lib/pipeline/rte_swx_ctl.h               | 133 +++++\n lib/pipeline/rte_swx_pipeline.c          | 349 ++++++++++++\n lib/pipeline/rte_swx_pipeline_internal.h |  21 +\n lib/pipeline/version.map                 |   5 +\n lib/table/rte_swx_table.h                |  13 +\n lib/table/rte_swx_table_em.c             |   5 +\n lib/table/rte_swx_table_learner.c        |  13 +-\n lib/table/rte_swx_table_learner.h        |  12 +\n lib/table/rte_swx_table_wm.c             |   2 +\n 11 files changed, 1053 insertions(+), 144 deletions(-)"
}