Show a cover letter.

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

{
    "id": 59780,
    "url": "http://patches.dpdk.org/api/covers/59780/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/1569479349-36962-1-git-send-email-orika@mellanox.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": "<1569479349-36962-1-git-send-email-orika@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1569479349-36962-1-git-send-email-orika@mellanox.com",
    "date": "2019-09-26T06:28:56",
    "name": "[00/13] add hairpin feature",
    "submitter": {
        "id": 795,
        "url": "http://patches.dpdk.org/api/people/795/?format=api",
        "name": "Ori Kam",
        "email": "orika@mellanox.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/1569479349-36962-1-git-send-email-orika@mellanox.com/mbox/",
    "series": [
        {
            "id": 6536,
            "url": "http://patches.dpdk.org/api/series/6536/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=6536",
            "date": "2019-09-26T06:28:56",
            "name": "add hairpin feature",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/6536/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/59780/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id D4C9A2C5E;\n\tThu, 26 Sep 2019 08:29:51 +0200 (CEST)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n\tby dpdk.org (Postfix) with ESMTP id 5014F2C57\n\tfor <dev@dpdk.org>; Thu, 26 Sep 2019 08:29:50 +0200 (CEST)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n\torika@mellanox.com)\n\twith ESMTPS (AES256-SHA encrypted); 26 Sep 2019 09:29:48 +0300",
            "from pegasus04.mtr.labs.mlnx. (pegasus04.mtr.labs.mlnx\n\t[10.210.16.126])\n\tby labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x8Q6TmlF012493;\n\tThu, 26 Sep 2019 09:29:48 +0300"
        ],
        "From": "Ori Kam <orika@mellanox.com>",
        "To": "",
        "Cc": "dev@dpdk.org, orika@mellanox.com, jingjing.wu@intel.com,\n\tstephen@networkplumber.org, wenzhuo.lu@intel.com,\n\tbernard.iremonger@intel.com, thomas@monjalon.net,\n\tferruh.yigit@intel.com, arybchenko@solarflare.com,\n\tviacheslavo@mellanox.com",
        "Date": "Thu, 26 Sep 2019 06:28:56 +0000",
        "Message-Id": "<1569479349-36962-1-git-send-email-orika@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "Subject": "[dpdk-dev] [PATCH 00/13] add hairpin feature",
        "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\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch set implements the hairpin feature.\nThe hairpin feature was introduced in RFC[1]\n\nThe hairpin feature (different name can be forward) acts as \"bump on the wire\",\nmeaning that a packet that is received from the wire can be modified using\noffloaded action and then sent back to the wire without application intervention\nwhich save CPU cycles.\n\nThe hairpin is the inverse function of loopback in which application\nsends a packet then it is received again by the\napplication without being sent to the wire.\n\nThe hairpin can be used by a number of different NVF, for example load\nbalancer, gateway and so on.\n\nAs can be seen from the hairpin description, hairpin is basically RX queue\nconnected to TX queue.\n\nDuring the design phase I was thinking of two ways to implement this\nfeature the first one is adding a new rte flow action. and the second\none is create a special kind of queue.\n\nThe advantages of using the queue approch:\n1. More control for the application. queue depth (the memory size that\nshould be used).\n2. Enable QoS. QoS is normaly a parametr of queue, so in this approch it\nwill be easy to integrate with such system.\n3. Native integression with the rte flow API. Just setting the target\nqueue/rss to hairpin queue, will result that the traffic will be routed\nto the hairpin queue.\n4. Enable queue offloading.\n\nEach hairpin Rxq can be connected Txq / number of Txqs which can belong to a\ndifferent ports assuming the PMD supports it. The same goes the other\nway each hairpin Txq can be connected to one or more Rxqs.\nThis is the reason that both the Txq setup and Rxq setup are getting the\nhairpin configuration structure.\n\nFrom PMD prespctive the number of Rxq/Txq is the total of standard\nqueues + hairpin queues.\n\nTo configure hairpin queue the user should call\nrte_eth_rx_hairpin_queue_setup / rte_eth_tx_hairpin_queue_setup insteed\nof the normal queue setup functions.\n\nThe hairpin queues are not part of the normal RSS functiosn.\n\nTo use the queues the user simply create a flow that points to RSS/queue\nactions that are hairpin queues.\nThe reason for selecting 2 new functions for hairpin queue setup are:\n1. avoid API break.\n2. avoid extra and unused parameters.\n\n\nThis series must be applied after series[2]\n\n[1] https://inbox.dpdk.org/dev/1565703468-55617-1-git-send-email-orika@mellanox.com/\n[2] https://inbox.dpdk.org/dev/1569398015-6027-1-git-send-email-viacheslavo@mellanox.com/\n\nCc: wenzhuo.lu@intel.com\nCc: bernard.iremonger@intel.com\nCc: thomas@monjalon.net\nCc: ferruh.yigit@intel.com\nCc: arybchenko@solarflare.com\nCc: viacheslavo@mellanox.com\n\n\nOri Kam (13):\n  ethdev: support setup function for hairpin queue\n  net/mlx5: query hca hairpin capabilities\n  net/mlx5: support Rx hairpin queues\n  net/mlx5: prepare txq to work with different types\n  net/mlx5: support Tx hairpin queues\n  app/testpmd: add hairpin support\n  net/mlx5: add hairpin binding function\n  net/mlx5: add support for hairpin hrxq\n  net/mlx5: add internal tag item and action\n  net/mlx5: add id generation function\n  net/mlx5: add default flows for hairpin\n  net/mlx5: split hairpin flows\n  doc: add hairpin feature\n\n app/test-pmd/parameters.c                |  12 +\n app/test-pmd/testpmd.c                   |  59 ++++-\n app/test-pmd/testpmd.h                   |   1 +\n doc/guides/rel_notes/release_19_11.rst   |   5 +\n drivers/net/mlx5/mlx5.c                  | 160 ++++++++++++-\n drivers/net/mlx5/mlx5.h                  |  65 ++++-\n drivers/net/mlx5/mlx5_devx_cmds.c        | 194 +++++++++++++++\n drivers/net/mlx5/mlx5_flow.c             | 393 ++++++++++++++++++++++++++++++-\n drivers/net/mlx5/mlx5_flow.h             |  73 +++++-\n drivers/net/mlx5/mlx5_flow_dv.c          | 231 +++++++++++++++++-\n drivers/net/mlx5/mlx5_flow_verbs.c       |  11 +-\n drivers/net/mlx5/mlx5_prm.h              | 127 +++++++++-\n drivers/net/mlx5/mlx5_rxq.c              | 323 ++++++++++++++++++++++---\n drivers/net/mlx5/mlx5_rxtx.c             |   2 +-\n drivers/net/mlx5/mlx5_rxtx.h             |  72 +++++-\n drivers/net/mlx5/mlx5_trigger.c          | 134 ++++++++++-\n drivers/net/mlx5/mlx5_txq.c              | 309 ++++++++++++++++++++----\n lib/librte_ethdev/rte_ethdev.c           | 213 +++++++++++++++++\n lib/librte_ethdev/rte_ethdev.h           | 145 ++++++++++++\n lib/librte_ethdev/rte_ethdev_core.h      |  18 ++\n lib/librte_ethdev/rte_ethdev_version.map |   4 +\n 21 files changed, 2424 insertions(+), 127 deletions(-)"
}