get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/44504/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 44504,
    "url": "http://patches.dpdk.org/api/patches/44504/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1536572016-18134-35-git-send-email-arybchenko@solarflare.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": "<1536572016-18134-35-git-send-email-arybchenko@solarflare.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1536572016-18134-35-git-send-email-arybchenko@solarflare.com",
    "date": "2018-09-10T09:33:33",
    "name": "[34/37] net/sfc/base: improve handling of legacy RSS hash flags",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "fc3ccbedd522462a32403ed68395c8f6cacb64f1",
    "submitter": {
        "id": 607,
        "url": "http://patches.dpdk.org/api/people/607/?format=api",
        "name": "Andrew Rybchenko",
        "email": "arybchenko@solarflare.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1536572016-18134-35-git-send-email-arybchenko@solarflare.com/mbox/",
    "series": [
        {
            "id": 1244,
            "url": "http://patches.dpdk.org/api/series/1244/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=1244",
            "date": "2018-09-10T09:33:01",
            "name": "net/sfc: update base driver",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/1244/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/44504/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/44504/checks/",
    "tags": {},
    "related": [],
    "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 00D5958EC;\n\tMon, 10 Sep 2018 11:34:49 +0200 (CEST)",
            "from dispatch1-us1.ppe-hosted.com (dispatch1-us1.ppe-hosted.com\n\t[67.231.154.164]) by dpdk.org (Postfix) with ESMTP id CC1354C93\n\tfor <dev@dpdk.org>; Mon, 10 Sep 2018 11:33:55 +0200 (CEST)",
            "from webmail.solarflare.com (webmail.solarflare.com\n\t[12.187.104.26])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits))\n\t(No client certificate requested)\n\tby mx1-us1.ppe-hosted.com (Proofpoint Essentials ESMTP Server) with\n\tESMTPS id BAF41780055; Mon, 10 Sep 2018 09:33:54 +0000 (UTC)",
            "from ocex03.SolarFlarecom.com (10.20.40.36) by\n\tocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server\n\t(TLS) id 15.0.1395.4; Mon, 10 Sep 2018 02:33:49 -0700",
            "from opal.uk.solarflarecom.com (10.17.10.1) by\n\tocex03.SolarFlarecom.com (10.20.40.36) with Microsoft SMTP Server\n\t(TLS) id\n\t15.0.1395.4 via Frontend Transport; Mon, 10 Sep 2018 02:33:48 -0700",
            "from ukv-loginhost.uk.solarflarecom.com\n\t(ukv-loginhost.uk.solarflarecom.com [10.17.10.39])\n\tby opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id\n\tw8A9XlLU023888; Mon, 10 Sep 2018 10:33:47 +0100",
            "from ukv-loginhost.uk.solarflarecom.com (localhost [127.0.0.1])\n\tby ukv-loginhost.uk.solarflarecom.com (Postfix) with ESMTP id\n\t32F5D1626D1; Mon, 10 Sep 2018 10:33:47 +0100 (BST)"
        ],
        "X-Virus-Scanned": "Proofpoint Essentials engine",
        "From": "Andrew Rybchenko <arybchenko@solarflare.com>",
        "To": "<dev@dpdk.org>",
        "CC": "Ivan Malov <Ivan.Malov@oktetlabs.ru>",
        "Date": "Mon, 10 Sep 2018 10:33:33 +0100",
        "Message-ID": "<1536572016-18134-35-git-send-email-arybchenko@solarflare.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1536572016-18134-1-git-send-email-arybchenko@solarflare.com>",
        "References": "<1536572016-18134-1-git-send-email-arybchenko@solarflare.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-TM-AS-Product-Ver": "SMEX-12.5.0.1300-8.5.1010-24084.005",
        "X-TM-AS-Result": "No-8.007000-4.000000-10",
        "X-TMASE-MatchedRID": "iQrkRPi2z4Oij3mVveD3jkf49ONH0RaScbniFtnyrsgcZFsYO/SuCItG\n\tOKQ7HhnlwQTsYEGvCCFK6v/k7v1MvX45uBZmw2094Tzr6T25NkcWTveLitVUgX5ydmNMNXqDzEV\n\tDGnc+EfJ58+KA2Q9fh7eZ8aseN9WR4Yh4UkkUHv4mZusHWPhfCiseSAhqf1rRh8BhJvgqWBmUfD\n\tH3TE2AyKhWUh6TDC8ZlVYqtnwyOe0yRohotsnq5x+WEMjoO9WWI9yVcHNDU7a5ZjHyzYrpGvpjH\n\tY4YxLsFFpeo9dvWKT4sEvH5fPCQRce4Woyb+kVFV6iWWmDPLEAEa8g1x8eqF5kAaRmG5uDt7kOM\n\trBz6LknBfckTvtJ5PBbvx69eBi51yO17Z2gPUCsHwuCWPSIIAFPgO2JKQydYBqAOEFOvViSjxYy\n\tRBa/qJcFwgTvxipFajoczmuoPCq0tQ2+F5ZLu4w5Byn4a83A79JO4dXxmj4XrVsWEA4hPh7HcdP\n\t+wtRZZ",
        "X-TM-AS-User-Approved-Sender": "No",
        "X-TM-AS-User-Blocked-Sender": "No",
        "X-TMASE-Result": "10--8.007000-4.000000",
        "X-TMASE-Version": "SMEX-12.5.0.1300-8.5.1010-24084.005",
        "X-MDID": "1536572035-K8WctJd5l-TM",
        "Subject": "[dpdk-dev] [PATCH 34/37] net/sfc/base: improve handling of legacy\n\tRSS hash flags",
        "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": "From: Ivan Malov <Ivan.Malov@oktetlabs.ru>\n\nClient drivers may use either legacy flags, for example,\nEFX_RX_HASH_TCPIPV4, or generalised flags, for example,\nEFX_RX_HASH(IPV4_TCP, 4TUPLE), to configure RSS hash.\nThe libefx is able to recognise what scheme is used.\n\nLegacy flags may be consumed directly by a chip-specific handler to\nconfigure the NIC, that is, on EF10, these flags can be used to fill\nin legacy RSS mode field in MCDI request. Generalised flags can also\nbe directly used in EF10-specific handler as they are fully compatible\nwith additional fields of the same MCDI request.\n\nLegacy flags undergo conversion to generalised flags before they\nare consumed by a chip-specific handler. This conversion is used to\nmake sure that chip-specific handlers expect only generalised flags\nin the input for the sake of clarity of the code.\n\nDepending on firmware capabilities, a chip-specififc handler either\nsupplies the input to the NIC directly, for example,\nEFX_RX_HASH(IPV4_TCP, 4TUPLE) flag will enable 4 bits in\nRSS_CONTEXT_SET_FLAGS_IN_TCP_IPV4_RSS_MODE field on EF10, or takes\nthe opportunity to translate the input to enable bits which don't map\nto the generic flag, like setting\nRSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN on EF10 when the firmware\nclaims no support for additional modes.\n\nHowever, this approach has introduced a severe problem which can be\nreproduced with ultra-low-latency firmware variant. In order to enable\nIP hash, EF10-specific handler requires the user to request 2-tuple\nhash for IP-other, TCP and UDP traffic classes, unconditionally.\nIn example, IPv4 hash can be enabled using the following input:\nEFX_RX_HASH(IPV4_TCP, 2TUPLE) | EFX_RX_HASH(IPV4_UDP, 2TUPLE) |\nEFX_RX_HASH(IPV4, 2TUPLE).\nAt the same time, on ultra-low-latency firmware, the common code will\nnever report support for any UDP tuple to the client driver. That is,\nin the same example, the driver will use EFX_RX_HASH(IPV4_TCP, 2TUPLE) |\nEFX_RX_HASH(IPV4, 2TUPLE). This input will not be recognised by\nEF10-specific handler, and RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN\nbit will not be set in the MCDI request.\n\nIn order to solve the problem, the patch removes conversion code\nfrom chip-specific handlers and adds appropriate code to convert\nEFX_RX_HASH() flags to their legacy counterparts to the common scale\nmode set function. If the firmware does not support additional modes,\nthe function will convert generalised flags to legacy flags correctly\nwithout any demand for UDP flags and pass the result to a chip-specific\nhandler.\n\nSigned-off-by: Ivan Malov <Ivan.Malov@oktetlabs.ru>\nSigned-off-by: Andrew Rybchenko <arybchenko@solarflare.com>\n---\n drivers/net/sfc/base/ef10_rx.c | 42 ++++-----------\n drivers/net/sfc/base/efx_rx.c  | 94 ++++++++++++++++++----------------\n 2 files changed, 62 insertions(+), 74 deletions(-)",
    "diff": "diff --git a/drivers/net/sfc/base/ef10_rx.c b/drivers/net/sfc/base/ef10_rx.c\nindex 1444eca81..3c8f4f3b9 100644\n--- a/drivers/net/sfc/base/ef10_rx.c\n+++ b/drivers/net/sfc/base/ef10_rx.c\n@@ -314,11 +314,6 @@ efx_mcdi_rss_context_set_flags(\n \t__in\t\tefx_rx_hash_type_t type)\n {\n \tefx_nic_cfg_t *encp = &enp->en_nic_cfg;\n-\tefx_rx_hash_type_t type_ipv4;\n-\tefx_rx_hash_type_t type_ipv4_tcp;\n-\tefx_rx_hash_type_t type_ipv6;\n-\tefx_rx_hash_type_t type_ipv6_tcp;\n-\tefx_rx_hash_type_t modes;\n \tefx_mcdi_req_t req;\n \tEFX_MCDI_DECLARE_BUF(payload, MC_CMD_RSS_CONTEXT_SET_FLAGS_IN_LEN,\n \t\tMC_CMD_RSS_CONTEXT_SET_FLAGS_OUT_LEN);\n@@ -355,53 +350,38 @@ efx_mcdi_rss_context_set_flags(\n \tMCDI_IN_SET_DWORD(req, RSS_CONTEXT_SET_FLAGS_IN_RSS_CONTEXT_ID,\n \t    rss_context);\n \n-\ttype_ipv4 = EFX_RX_HASH(IPV4, 2TUPLE) | EFX_RX_HASH(IPV4_TCP, 2TUPLE) |\n-\t\t    EFX_RX_HASH(IPV4_UDP, 2TUPLE);\n-\ttype_ipv4_tcp = EFX_RX_HASH(IPV4_TCP, 4TUPLE);\n-\ttype_ipv6 = EFX_RX_HASH(IPV6, 2TUPLE) | EFX_RX_HASH(IPV6_TCP, 2TUPLE) |\n-\t\t    EFX_RX_HASH(IPV6_UDP, 2TUPLE);\n-\ttype_ipv6_tcp = EFX_RX_HASH(IPV6_TCP, 4TUPLE);\n-\n-\t/*\n-\t * Create a copy of the original hash type.\n-\t * The copy will be used to fill in RSS_MODE bits and\n-\t * may be cleared beforehand. The original variable\n-\t * and, thus, EN bits will remain unaffected.\n-\t */\n-\tmodes = type;\n-\n \t/*\n \t * If the firmware lacks support for additional modes, RSS_MODE\n \t * fields must contain zeros, otherwise the operation will fail.\n \t */\n \tif (encp->enc_rx_scale_additional_modes_supported == B_FALSE)\n-\t\tmodes = 0;\n+\t\ttype &= EFX_RX_HASH_LEGACY_MASK;\n \n \tMCDI_IN_POPULATE_DWORD_10(req, RSS_CONTEXT_SET_FLAGS_IN_FLAGS,\n \t    RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV4_EN,\n-\t    ((type & type_ipv4) == type_ipv4) ? 1 : 0,\n+\t    (type & EFX_RX_HASH_IPV4) ? 1 : 0,\n \t    RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV4_EN,\n-\t    ((type & type_ipv4_tcp) == type_ipv4_tcp) ? 1 : 0,\n+\t    (type & EFX_RX_HASH_TCPIPV4) ? 1 : 0,\n \t    RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_IPV6_EN,\n-\t    ((type & type_ipv6) == type_ipv6) ? 1 : 0,\n+\t    (type & EFX_RX_HASH_IPV6) ? 1 : 0,\n \t    RSS_CONTEXT_SET_FLAGS_IN_TOEPLITZ_TCPV6_EN,\n-\t    ((type & type_ipv6_tcp) == type_ipv6_tcp) ? 1 : 0,\n+\t    (type & EFX_RX_HASH_TCPIPV6) ? 1 : 0,\n \t    RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV4_RSS_MODE,\n-\t    (modes >> EFX_RX_CLASS_IPV4_TCP_LBN) &\n+\t    (type >> EFX_RX_CLASS_IPV4_TCP_LBN) &\n \t    EFX_MASK32(EFX_RX_CLASS_IPV4_TCP),\n \t    RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV4_RSS_MODE,\n-\t    (modes >> EFX_RX_CLASS_IPV4_UDP_LBN) &\n+\t    (type >> EFX_RX_CLASS_IPV4_UDP_LBN) &\n \t    EFX_MASK32(EFX_RX_CLASS_IPV4_UDP),\n \t    RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV4_RSS_MODE,\n-\t    (modes >> EFX_RX_CLASS_IPV4_LBN) & EFX_MASK32(EFX_RX_CLASS_IPV4),\n+\t    (type >> EFX_RX_CLASS_IPV4_LBN) & EFX_MASK32(EFX_RX_CLASS_IPV4),\n \t    RSS_CONTEXT_SET_FLAGS_IN_TCP_IPV6_RSS_MODE,\n-\t    (modes >> EFX_RX_CLASS_IPV6_TCP_LBN) &\n+\t    (type >> EFX_RX_CLASS_IPV6_TCP_LBN) &\n \t    EFX_MASK32(EFX_RX_CLASS_IPV6_TCP),\n \t    RSS_CONTEXT_SET_FLAGS_IN_UDP_IPV6_RSS_MODE,\n-\t    (modes >> EFX_RX_CLASS_IPV6_UDP_LBN) &\n+\t    (type >> EFX_RX_CLASS_IPV6_UDP_LBN) &\n \t    EFX_MASK32(EFX_RX_CLASS_IPV6_UDP),\n \t    RSS_CONTEXT_SET_FLAGS_IN_OTHER_IPV6_RSS_MODE,\n-\t    (modes >> EFX_RX_CLASS_IPV6_LBN) & EFX_MASK32(EFX_RX_CLASS_IPV6));\n+\t    (type >> EFX_RX_CLASS_IPV6_LBN) & EFX_MASK32(EFX_RX_CLASS_IPV6));\n \n \tefx_mcdi_execute(enp, &req);\n \ndiff --git a/drivers/net/sfc/base/efx_rx.c b/drivers/net/sfc/base/efx_rx.c\nindex bb0c144d7..04bc7aed8 100644\n--- a/drivers/net/sfc/base/efx_rx.c\n+++ b/drivers/net/sfc/base/efx_rx.c\n@@ -532,9 +532,8 @@ efx_rx_scale_mode_set(\n \t__in\t\tefx_rx_hash_type_t type,\n \t__in\t\tboolean_t insert)\n {\n+\tefx_nic_cfg_t *encp = &enp->en_nic_cfg;\n \tconst efx_rx_ops_t *erxop = enp->en_erxop;\n-\tunsigned int type_flags[EFX_RX_HASH_NFLAGS];\n-\tunsigned int type_nflags;\n \tefx_rx_hash_type_t type_check;\n \tunsigned int i;\n \tefx_rc_t rc;\n@@ -553,47 +552,60 @@ efx_rx_scale_mode_set(\n \t}\n \n \t/*\n-\t * Translate legacy flags to the new representation\n-\t * so that chip-specific handlers will consider the\n-\t * new flags only.\n+\t * If RSS hash type is represented by additional bits\n+\t * in the value, the latter need to be verified since\n+\t * not all bit combinations are valid RSS modes. Also,\n+\t * depending on the firmware, some valid combinations\n+\t * may be unsupported. Discern additional bits in the\n+\t * type value and try to recognise valid combinations.\n+\t * If some bits remain unrecognised, report the error.\n \t */\n-\tif (type & EFX_RX_HASH_IPV4) {\n-\t\ttype |= EFX_RX_HASH(IPV4, 2TUPLE);\n-\t\ttype |= EFX_RX_HASH(IPV4_TCP, 2TUPLE);\n-\t\ttype |= EFX_RX_HASH(IPV4_UDP, 2TUPLE);\n-\t}\n-\n-\tif (type & EFX_RX_HASH_TCPIPV4)\n-\t\ttype |= EFX_RX_HASH(IPV4_TCP, 4TUPLE);\n+\ttype_check = type & ~EFX_RX_HASH_LEGACY_MASK;\n+\tif (type_check != 0) {\n+\t\tunsigned int type_flags[EFX_RX_HASH_NFLAGS];\n+\t\tunsigned int type_nflags;\n \n-\tif (type & EFX_RX_HASH_IPV6) {\n-\t\ttype |= EFX_RX_HASH(IPV6, 2TUPLE);\n-\t\ttype |= EFX_RX_HASH(IPV6_TCP, 2TUPLE);\n-\t\ttype |= EFX_RX_HASH(IPV6_UDP, 2TUPLE);\n-\t}\n+\t\trc = efx_rx_scale_hash_flags_get(enp, alg, type_flags,\n+\t\t\t\t    EFX_ARRAY_SIZE(type_flags), &type_nflags);\n+\t\tif (rc != 0)\n+\t\t\tgoto fail2;\n \n-\tif (type & EFX_RX_HASH_TCPIPV6)\n-\t\ttype |= EFX_RX_HASH(IPV6_TCP, 4TUPLE);\n+\t\tfor (i = 0; i < type_nflags; ++i) {\n+\t\t\tif ((type_check & type_flags[i]) == type_flags[i])\n+\t\t\t\ttype_check &= ~(type_flags[i]);\n+\t\t}\n \n-\ttype &= ~EFX_RX_HASH_LEGACY_MASK;\n-\ttype_check = type;\n+\t\tif (type_check != 0) {\n+\t\t\trc = EINVAL;\n+\t\t\tgoto fail3;\n+\t\t}\n+\t}\n \n \t/*\n-\t * Get the list of supported hash flags and sanitise the input.\n+\t * Translate EFX_RX_HASH() flags to their legacy counterparts\n+\t * provided that the FW claims no support for additional modes.\n \t */\n-\trc = efx_rx_scale_hash_flags_get(enp, alg, type_flags,\n-\t\t\t\t    EFX_ARRAY_SIZE(type_flags), &type_nflags);\n-\tif (rc != 0)\n-\t\tgoto fail2;\n-\n-\tfor (i = 0; i < type_nflags; ++i) {\n-\t\tif ((type_check & type_flags[i]) == type_flags[i])\n-\t\t\ttype_check &= ~(type_flags[i]);\n-\t}\n+\tif (encp->enc_rx_scale_additional_modes_supported == B_FALSE) {\n+\t\tefx_rx_hash_type_t t_ipv4 = EFX_RX_HASH(IPV4, 2TUPLE) |\n+\t\t\t\t\t    EFX_RX_HASH(IPV4_TCP, 2TUPLE);\n+\t\tefx_rx_hash_type_t t_ipv6 = EFX_RX_HASH(IPV6, 2TUPLE) |\n+\t\t\t\t\t    EFX_RX_HASH(IPV6_TCP, 2TUPLE);\n+\t\tefx_rx_hash_type_t t_ipv4_tcp = EFX_RX_HASH(IPV4_TCP, 4TUPLE);\n+\t\tefx_rx_hash_type_t t_ipv6_tcp = EFX_RX_HASH(IPV6_TCP, 4TUPLE);\n+\n+\t\tif ((type & t_ipv4) == t_ipv4)\n+\t\t\ttype |= EFX_RX_HASH_IPV4;\n+\t\tif ((type & t_ipv6) == t_ipv6)\n+\t\t\ttype |= EFX_RX_HASH_IPV6;\n+\n+\t\tif (encp->enc_rx_scale_l4_hash_supported == B_TRUE) {\n+\t\t\tif ((type & t_ipv4_tcp) == t_ipv4_tcp)\n+\t\t\t\ttype |= EFX_RX_HASH_TCPIPV4;\n+\t\t\tif ((type & t_ipv6_tcp) == t_ipv6_tcp)\n+\t\t\t\ttype |= EFX_RX_HASH_TCPIPV6;\n+\t\t}\n \n-\tif (type_check != 0) {\n-\t\trc = EINVAL;\n-\t\tgoto fail3;\n+\t\ttype &= EFX_RX_HASH_LEGACY_MASK;\n \t}\n \n \tif (erxop->erxo_scale_mode_set != NULL) {\n@@ -1111,10 +1123,6 @@ siena_rx_scale_mode_set(\n \t__in\t\tefx_rx_hash_type_t type,\n \t__in\t\tboolean_t insert)\n {\n-\tefx_rx_hash_type_t type_ipv4 = EFX_RX_HASH(IPV4, 2TUPLE);\n-\tefx_rx_hash_type_t type_ipv4_tcp = EFX_RX_HASH(IPV4_TCP, 4TUPLE);\n-\tefx_rx_hash_type_t type_ipv6 = EFX_RX_HASH(IPV6, 2TUPLE);\n-\tefx_rx_hash_type_t type_ipv6_tcp = EFX_RX_HASH(IPV6_TCP, 4TUPLE);\n \tefx_rc_t rc;\n \n \tif (rss_context != EFX_RSS_CONTEXT_DEFAULT) {\n@@ -1129,12 +1137,12 @@ siena_rx_scale_mode_set(\n \n \tcase EFX_RX_HASHALG_TOEPLITZ:\n \t\tEFX_RX_TOEPLITZ_IPV4_HASH(enp, insert,\n-\t\t    (type & type_ipv4) == type_ipv4,\n-\t\t    (type & type_ipv4_tcp) == type_ipv4_tcp);\n+\t\t    (type & EFX_RX_HASH_IPV4) ? B_TRUE : B_FALSE,\n+\t\t    (type & EFX_RX_HASH_TCPIPV4) ? B_TRUE : B_FALSE);\n \n \t\tEFX_RX_TOEPLITZ_IPV6_HASH(enp,\n-\t\t    (type & type_ipv6) == type_ipv6,\n-\t\t    (type & type_ipv6_tcp) == type_ipv6_tcp,\n+\t\t    (type & EFX_RX_HASH_IPV6) ? B_TRUE : B_FALSE,\n+\t\t    (type & EFX_RX_HASH_TCPIPV6) ? B_TRUE : B_FALSE,\n \t\t    rc);\n \t\tif (rc != 0)\n \t\t\tgoto fail2;\n",
    "prefixes": [
        "34/37"
    ]
}