Show a cover letter.

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

{
    "id": 62247,
    "url": "https://patches.dpdk.org/api/covers/62247/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/1572479604-178752-1-git-send-email-orika@mellanox.com/",
    "project": {
        "id": 1,
        "url": "https://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": "<1572479604-178752-1-git-send-email-orika@mellanox.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1572479604-178752-1-git-send-email-orika@mellanox.com",
    "date": "2019-10-30T23:53:09",
    "name": "[v7,00/14] add hairpin feature",
    "submitter": {
        "id": 795,
        "url": "https://patches.dpdk.org/api/people/795/?format=api",
        "name": "Ori Kam",
        "email": "orika@mellanox.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/cover/1572479604-178752-1-git-send-email-orika@mellanox.com/mbox/",
    "series": [
        {
            "id": 7165,
            "url": "https://patches.dpdk.org/api/series/7165/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=7165",
            "date": "2019-10-30T23:53:09",
            "name": "add hairpin feature",
            "version": 7,
            "mbox": "https://patches.dpdk.org/series/7165/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/62247/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 2907AA00BE;\n\tThu, 31 Oct 2019 00:53:34 +0100 (CET)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 4326B1C0DB;\n\tThu, 31 Oct 2019 00:53:33 +0100 (CET)",
            "from mellanox.co.il (mail-il-dmz.mellanox.com [193.47.165.129])\n by dpdk.org (Postfix) with ESMTP id 927FA1BF95\n for <dev@dpdk.org>; Thu, 31 Oct 2019 00:53:31 +0100 (CET)",
            "from Internal Mail-Server by MTLPINE1 (envelope-from\n orika@mellanox.com)\n with ESMTPS (AES256-SHA encrypted); 31 Oct 2019 01:53:26 +0200",
            "from pegasus04.mtr.labs.mlnx. (pegasus04.mtr.labs.mlnx\n [10.210.16.126])\n by labmailer.mlnx (8.13.8/8.13.8) with ESMTP id x9UNrQvO007114;\n Thu, 31 Oct 2019 01:53:26 +0200"
        ],
        "From": "Ori Kam <orika@mellanox.com>",
        "To": "",
        "Cc": "dev@dpdk.org, orika@mellanox.com, jingjing.wu@intel.com,\n stephen@networkplumber.org, wenzhuo.lu@intel.com,\n bernard.iremonger@intel.com, thomas@monjalon.net,\n ferruh.yigit@intel.com, arybchenko@solarflare.com, viacheslavo@mellanox.com",
        "Date": "Wed, 30 Oct 2019 23:53:09 +0000",
        "Message-Id": "<1572479604-178752-1-git-send-email-orika@mellanox.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1569479349-36962-1-git-send-email-orika@mellanox.com>",
        "References": "<1569479349-36962-1-git-send-email-orika@mellanox.com>",
        "Subject": "[dpdk-dev] [PATCH v7 00/14] 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 <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": "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\n\n[1] https://inbox.dpdk.org/dev/1565703468-55617-1-git-send-email-orika@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------\nV7:\n - all changes are in patch 2: ethdev: add support for hairpin queue\n   - Move is_rx/tx_hairpin_queue to ethdev.c and ethdev.h also remove the inline.\n   - change checks for max number of hairpin queues.\n   - modify log messages.\n\nV6:\n - add missing include in nfb driver.\n - change comparing of rte_eth_dev_is_tx_hairpin_queue /\n   rte_eth_dev_is_rx_hairpin_queue to boolean operator.\n - split the doc patch to the relevant patches.\n\nV5:\n - modify log messages to be more distinct.\n - set that log message will be in the same line even if > 80.\n - change peer_n to peer_count.\n - add functions to get if queue is hairpin queue.\n\nV4:\n - update according to comments from ML.\n\nV3:\n - update according to comments from ML.\n\nV2:\n - update according to comments from ML.\n\n\n\n\nOri Kam (14):\n  ethdev: move queue state defines to private file\n  ethdev: add support 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  net/mlx5: add get hairpin capabilities\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\n app/test-pmd/parameters.c                |  28 +++\n app/test-pmd/testpmd.c                   | 109 ++++++++-\n app/test-pmd/testpmd.h                   |   3 +\n doc/guides/rel_notes/release_19_11.rst   |   6 +\n drivers/net/mlx5/mlx5.c                  | 170 ++++++++++++-\n drivers/net/mlx5/mlx5.h                  |  69 +++++-\n drivers/net/mlx5/mlx5_devx_cmds.c        | 194 +++++++++++++++\n drivers/net/mlx5/mlx5_ethdev.c           | 129 ++++++++--\n drivers/net/mlx5/mlx5_flow.c             | 393 ++++++++++++++++++++++++++++++-\n drivers/net/mlx5/mlx5_flow.h             |  67 +++++-\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_rss.c              |   1 +\n drivers/net/mlx5/mlx5_rxq.c              | 318 ++++++++++++++++++++++---\n drivers/net/mlx5/mlx5_rxtx.c             |   2 +-\n drivers/net/mlx5/mlx5_rxtx.h             |  68 +++++-\n drivers/net/mlx5/mlx5_trigger.c          | 140 ++++++++++-\n drivers/net/mlx5/mlx5_txq.c              | 294 +++++++++++++++++++----\n drivers/net/nfb/nfb_tx.h                 |   1 +\n lib/librte_ethdev/rte_ethdev.c           | 232 ++++++++++++++++++\n lib/librte_ethdev/rte_ethdev.h           | 177 +++++++++++++-\n lib/librte_ethdev/rte_ethdev_core.h      |  91 ++++++-\n lib/librte_ethdev/rte_ethdev_driver.h    |   7 +\n lib/librte_ethdev/rte_ethdev_version.map |   3 +\n 25 files changed, 2704 insertions(+), 167 deletions(-)"
}