Show a cover letter.

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

{
    "id": 91768,
    "url": "https://patches.dpdk.org/api/covers/91768/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/cover/1618847995-91229-1-git-send-email-vladimir.medvedkin@intel.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": "<1618847995-91229-1-git-send-email-vladimir.medvedkin@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1618847995-91229-1-git-send-email-vladimir.medvedkin@intel.com",
    "date": "2021-04-19T15:59:50",
    "name": "[v5,0/5] Predictable RSS feature",
    "submitter": {
        "id": 1216,
        "url": "https://patches.dpdk.org/api/people/1216/?format=api",
        "name": "Vladimir Medvedkin",
        "email": "vladimir.medvedkin@intel.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/cover/1618847995-91229-1-git-send-email-vladimir.medvedkin@intel.com/mbox/",
    "series": [
        {
            "id": 16495,
            "url": "https://patches.dpdk.org/api/series/16495/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=16495",
            "date": "2021-04-19T15:59:50",
            "name": "Predictable RSS feature",
            "version": 5,
            "mbox": "https://patches.dpdk.org/series/16495/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/covers/91768/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 483BEA0524;\n\tMon, 19 Apr 2021 18:00:04 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 27ECD4138A;\n\tMon, 19 Apr 2021 18:00:04 +0200 (CEST)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by mails.dpdk.org (Postfix) with ESMTP id BE339412E6\n for <dev@dpdk.org>; Mon, 19 Apr 2021 18:00:02 +0200 (CEST)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 19 Apr 2021 09:00:00 -0700",
            "from silpixa00400072.ir.intel.com ([10.237.222.213])\n by orsmga001.jf.intel.com with ESMTP; 19 Apr 2021 08:59:57 -0700"
        ],
        "IronPort-SDR": [
            "\n Eh/U7lY0rvSATp64aTf7SgEyoNY+i5j3H0O5x/EnDyTI6mbHf7CEvkscJqJ48s3u7ZZO7s1qbh\n elXsUzlM4pvg==",
            "\n Vy3DJC2Ep/rCLeil8Mgu/i70UzX8tqM9bs+f0/FgNHaBGlTMZY4GPp+To9cPfPctqN0ETyIvEI\n gSDUR5a3ap5Q=="
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,9959\"; a=\"193228596\"",
            "E=Sophos;i=\"5.82,234,1613462400\"; d=\"scan'208\";a=\"193228596\"",
            "E=Sophos;i=\"5.82,234,1613462400\"; d=\"scan'208\";a=\"462785365\""
        ],
        "X-ExtLoop1": "1",
        "From": "Vladimir Medvedkin <vladimir.medvedkin@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "konstantin.ananyev@intel.com, andrey.chilikin@intel.com,\n ray.kinsella@intel.com, yipeng1.wang@intel.com, sameh.gobriel@intel.com,\n bruce.richardson@intel.com",
        "Date": "Mon, 19 Apr 2021 16:59:50 +0100",
        "Message-Id": "<1618847995-91229-1-git-send-email-vladimir.medvedkin@intel.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1618319973-391016-1-git-send-email-vladimir.medvedkin@intel.com>",
        "References": "<1618319973-391016-1-git-send-email-vladimir.medvedkin@intel.com>",
        "Subject": "[dpdk-dev] [PATCH v5 0/5] Predictable RSS feature",
        "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",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "This patch series introduces predictable RSS feature.\nIt is based on the idea of searching for partial hash collisions\nwithin Toeplitz hash.\n\nThe Toeplitz hash function is a homomorphism between (G, ^) and (H, ^),\nwhere (G, ^) - is a group of tuples and (H, ^) is a group of hashes\nwith respect to XOR operation. So tuples and hashes could be treated as\nn-dimension and 32-dimension vector spaces over GF(2).\nSo, f(x ^ y) == f(x) ^ f(y)\nwhere f - is the toeplitz hash function and x, y are tuples.\n\nThe ability to predict partial collisions allows user to compute\ninput hash value with desired LSB values.\nUsually number of LSB's are defined by the size of RSS Redirection Table.\n\nThere could be number of use cases, for example:\n1) NAT. Using this library it is possible to select a new port number\non a translation in the way that rss hash for original tuple will have\nthe same LSB's as rss hash for reverse tuple.\n2) IPSec/MPLS/Vxlan. It is possible to choose tunnel id to be pinned to\na desired queue.\n3) TCP stack. It is possible to choose a source port number for outgoing\nconnections in the way that received replies will be assigned to\ndesired queue.\n4) RSS hash key generation. Hash key initialization with random values\ndoes not guarantee an uniform distribution amongst queues. This library\nuses mathematically proved algorithm to complete the rss hash key to\nprovide the best distribution.\n\nv5:\n- added documentation\n- added release notes\n- added logging\n\nv4:\n- RETA_SZ macros were moved to .h\n- fixed typos\n\nv3:\n- reworked rte_thash_adjust_tuple()\n- added extra comments\n- fixed typos\n- rte_thash_adjust_tuple() API was putted into the first commit\n\nv2:\n- added extra API rte_thash_adjust_tuple()\n- added extra tests for rte_thash_adjust_tuple()\n- added extra fields to rte_thash_subtuple_helper struct\n- fixed typos\n\nVladimir Medvedkin (5):\n  hash: add predictable RSS API\n  hash: add predictable RSS implementation\n  test/hash: add additional thash tests\n  doc: add thash documentation\n  maintainers: claim maintainership of the hash library\n\n MAINTAINERS                                      |    2 +\n app/test/test_thash.c                            |  469 ++++++-\n doc/guides/prog_guide/img/predictable_snat_1.svg | 1444 +++++++++++++++++++++\n doc/guides/prog_guide/img/predictable_snat_2.svg | 1444 +++++++++++++++++++++\n doc/guides/prog_guide/img/rss_queue_assign.svg   | 1454 ++++++++++++++++++++++\n doc/guides/prog_guide/index.rst                  |    1 +\n doc/guides/prog_guide/toeplitz_hash_lib.rst      |  289 +++++\n doc/guides/rel_notes/release_21_05.rst           |    6 +\n lib/librte_hash/meson.build                      |    3 +-\n lib/librte_hash/rte_thash.c                      |  682 ++++++++++\n lib/librte_hash/rte_thash.h                      |  199 +++\n lib/librte_hash/version.map                      |    8 +\n 12 files changed, 5994 insertions(+), 7 deletions(-)\n create mode 100644 doc/guides/prog_guide/img/predictable_snat_1.svg\n create mode 100644 doc/guides/prog_guide/img/predictable_snat_2.svg\n create mode 100644 doc/guides/prog_guide/img/rss_queue_assign.svg\n create mode 100644 doc/guides/prog_guide/toeplitz_hash_lib.rst\n create mode 100644 lib/librte_hash/rte_thash.c"
}