Show a cover letter.

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

{
    "id": 114353,
    "url": "http://patchwork.dpdk.org/api/covers/114353/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/cover/20220728151147.603265-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": "<20220728151147.603265-1-cristian.dumitrescu@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20220728151147.603265-1-cristian.dumitrescu@intel.com",
    "date": "2022-07-28T15:11:30",
    "name": "[V6,00/17] pipeline: pipeline configuration and build improvements",
    "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/20220728151147.603265-1-cristian.dumitrescu@intel.com/mbox/",
    "series": [
        {
            "id": 24117,
            "url": "http://patchwork.dpdk.org/api/series/24117/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=24117",
            "date": "2022-07-28T15:11:30",
            "name": "pipeline: pipeline configuration and build improvements",
            "version": 6,
            "mbox": "http://patchwork.dpdk.org/series/24117/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/covers/114353/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 61F3BA00C5;\n\tThu, 28 Jul 2022 17:11:53 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id F096742BA6;\n\tThu, 28 Jul 2022 17:11:52 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n by mails.dpdk.org (Postfix) with ESMTP id D8D164014F\n for <dev@dpdk.org>; Thu, 28 Jul 2022 17:11:50 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 28 Jul 2022 08:11:49 -0700",
            "from silpixa00400573.ir.intel.com (HELO\n silpixa00400573.ger.corp.intel.com.) ([10.237.223.157])\n by orsmga001.jf.intel.com with ESMTP; 28 Jul 2022 08:11:48 -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=1659021111; x=1690557111;\n h=from:to:subject:date:message-id:in-reply-to:references:\n mime-version:content-transfer-encoding;\n bh=4/9aCdo3lRnWNij6lXocXywN2nFXgusGOl2a2zbTYe0=;\n b=CPPALscq76M2ynzMMdZIPyUw9UOCatIvmiPsOXFRwyR58aqfRsuCLA3f\n Q1Lzwzr7LgVMs+n00YAQDgfLy8nJnrmctfLRu0SxVzcTu5hh3P0i0G5At\n MI54hq8hsxkSa/4vUVRo3BvXDPyYvdPEQmUyCXGnWviPbqj7ORcsoe9fr\n Fj+jeb+XRhfaXeEzXdEF2p7uWQGDrGjKMAvbvAolP7E9E55sSLVPKYNtw\n jqBqfkO/DzzUCvxJDZJtJQusUAHGUqpQHZlRZuMoSFsiX8xUtTWvj0qC5\n PzzImprdex6W66Q9stf0hth36SyV407IE8Gjgb7EkWx9FyGmMEfXOxR0O w==;",
        "X-IronPort-AV": [
            "E=McAfee;i=\"6400,9594,10422\"; a=\"288547343\"",
            "E=Sophos;i=\"5.93,198,1654585200\"; d=\"scan'208\";a=\"288547343\"",
            "E=Sophos;i=\"5.93,198,1654585200\"; d=\"scan'208\";a=\"633727092\""
        ],
        "X-ExtLoop1": "1",
        "From": "Cristian Dumitrescu <cristian.dumitrescu@intel.com>",
        "To": "dev@dpdk.org",
        "Subject": "[PATCH V6 00/17] pipeline: pipeline configuration and build\n improvements",
        "Date": "Thu, 28 Jul 2022 15:11:30 +0000",
        "Message-Id": "<20220728151147.603265-1-cristian.dumitrescu@intel.com>",
        "X-Mailer": "git-send-email 2.34.1",
        "In-Reply-To": "<20220718130713.339003-1-cristian.dumitrescu@intel.com>",
        "References": "<20220718130713.339003-1-cristian.dumitrescu@intel.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "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": "The sequence of steps to build a SWX pipeline object are:\n\n1. Create the specification file (pipeline.p4 -> pipeline.spec): This text file represents the\n   pipeline program that is typically generated by the P4 compiler or sometimes manually created.\n\n2. Generate the C source code file (pipeline.spec -> pipeline.c): The C file contains a C function\n   for every pipeline action and several C functions for the pipeline main program. It allows the C\n   compiler to generate optimized code by having access to the entire pipeline program rather than\n   using the small pre-build functions corresponding to the individual instructions\n\n3. Build the shared object library (pipeline.c -> pipeline.o -> pipeline.so).\n\n4. Load the shared object library (pipeline.so): At initialization, the pipeline object is “patched”\n   with the optimized C functions from the shared object library.\n\nPreviously, steps 2., 3. and 4. were implemented under the hood by the pipeline library at the\ninitialization time in a completely hard-coded and non-customizable way. The user was not able to\nselect the C compiler (GCC was assumed), the compiler version, the build flags, the file locations,\netc. The code generation (step 2.) and library build (step 3.) were done on-the-fly at init and\ncould potentially fail for many setup related reasons.\n\nNow, this process is no longer done under the hood by the pipeline library and the individual steps\nare explicitly supported by the API functions. The code generation (step 2.) is done off-line at any\ntime before the pipeline execution. The library build (step 3.) is also done off-line and is now\nfully customizable by the user, who is able to gracefully access the generated C code and decide on\nthe various build options.\n\nWe also take the opportunity to streamline the pipeline I/O port configuration by introducing an I/O\nspecification file. Essentially, the pipeline is now configured and build based on two files:\n\na) The shared object library file (pipeline.so): It defines how the packets are processed by the\n   program through tables and actions; the same P4 program can be executed by many pipelines.\n\nb) The I/O specification file (pipeline.io): High level text file defining how the packets are\n   received and transmitted by the pipeline; this is not part of the P4 program, which is completely\n   agnostic about the pipeline I/O ports. This is defined differently for each pipeline object when\n   initialized.\n\nChange log:\n\nV6:\n-Added the cover letter. No code changes.\n\nV5:\n-Fixed more style issues reported by the CI/CD.\n\nV4:\n-Fixed style issues reported by the CI/CD.\n\nV3:\n-Added support for the pipeline I/O specification file.\n\nV2:\n-Fixed style issues reported by the CI/CD.\n\nCristian Dumitrescu (17):\n  pipeline: add pipeline name\n  pipeline: move specification data structures to internal header\n  pipeline: add pipeline specification data structure\n  pipeline: rework the specification file-based pipeline build\n  pipeline: generate the code for pipeline specification structure\n  pipeline: add support for pipeline I/O specification\n  pipeline: add API for pipeline code generation\n  pipeline: add API for shared library-based pipeline build\n  examples/pipeline: add CLI command for pipeline code generation\n  examples/pipeline: add CLI command for shared library build\n  examples/pipeline: remove the obsolete pipeline create CLI command\n  examples/pipeline: remove the obsolete port configuration CLI commands\n  examples/pipeline: remove the obsolete mirroring configuration CLI\n    command\n  examples/pipeline: use the pipeline name query API\n  examples/pipeline: rework the link CLI command\n  examples/pipelines: remove obsolete tap CLI command\n  examples/pipeline: call the code generation and build CLI commands\n\n examples/pipeline/cli.c                       | 1133 +++------\n examples/pipeline/examples/ethdev.io          |   27 +\n examples/pipeline/examples/fib.cli            |   44 +-\n examples/pipeline/examples/hash_func.cli      |   41 +-\n examples/pipeline/examples/l2fwd.cli          |   44 +-\n examples/pipeline/examples/l2fwd_macswp.cli   |   44 +-\n .../pipeline/examples/l2fwd_macswp_pcap.cli   |   35 +-\n examples/pipeline/examples/l2fwd_pcap.cli     |   35 +-\n examples/pipeline/examples/learner.cli        |   43 +-\n examples/pipeline/examples/meter.cli          |   58 +-\n examples/pipeline/examples/mirroring.cli      |   46 +-\n examples/pipeline/examples/pcap.io            |   27 +\n examples/pipeline/examples/recirculation.cli  |   41 +-\n examples/pipeline/examples/registers.cli      |   53 +-\n examples/pipeline/examples/selector.cli       |   55 +-\n examples/pipeline/examples/varbit.cli         |   41 +-\n examples/pipeline/examples/vxlan.cli          |   48 +-\n examples/pipeline/examples/vxlan_pcap.cli     |   39 +-\n examples/pipeline/obj.c                       |  172 +-\n examples/pipeline/obj.h                       |   46 -\n examples/pipeline/thread.c                    |   65 +-\n examples/pipeline/thread.h                    |    9 +-\n lib/pipeline/rte_swx_ctl.c                    |   99 +\n lib/pipeline/rte_swx_ctl.h                    |   15 +\n lib/pipeline/rte_swx_pipeline.c               |  464 ++--\n lib/pipeline/rte_swx_pipeline.h               |   71 +-\n lib/pipeline/rte_swx_pipeline_internal.h      |    2 +\n lib/pipeline/rte_swx_pipeline_spec.c          | 2050 +++++++++++++++--\n lib/pipeline/rte_swx_pipeline_spec.h          |  280 +++\n lib/pipeline/version.map                      |    7 +-\n 30 files changed, 3430 insertions(+), 1704 deletions(-)\n create mode 100644 examples/pipeline/examples/ethdev.io\n create mode 100644 examples/pipeline/examples/pcap.io\n create mode 100644 lib/pipeline/rte_swx_pipeline_spec.h"
}