get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 21138,
    "url": "https://patches.dpdk.org/api/patches/21138/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1488470591-5853-2-git-send-email-arybchenko@solarflare.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": "<1488470591-5853-2-git-send-email-arybchenko@solarflare.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1488470591-5853-2-git-send-email-arybchenko@solarflare.com",
    "date": "2017-03-02T16:03:01",
    "name": "[dpdk-dev,01/11] net/sfc/base: split local MAC I/G back into separate flags",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "d42a26f4e6fd39da810a7e48a511c9f4dbabb65e",
    "submitter": {
        "id": 607,
        "url": "https://patches.dpdk.org/api/people/607/?format=api",
        "name": "Andrew Rybchenko",
        "email": "arybchenko@solarflare.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1488470591-5853-2-git-send-email-arybchenko@solarflare.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/21138/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/21138/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 [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id C64562C60;\n\tThu,  2 Mar 2017 17:03:47 +0100 (CET)",
            "from nbfkord-smmo01.seg.att.com (nbfkord-smmo01.seg.att.com\n\t[209.65.160.76]) by dpdk.org (Postfix) with ESMTP id 68DC62952\n\tfor <dev@dpdk.org>; Thu,  2 Mar 2017 17:03:45 +0100 (CET)",
            "from unknown [12.187.104.26] (EHLO webmail.solarflare.com)\n\tby nbfkord-smmo01.seg.att.com(mxl_mta-7.2.4-7) over TLS secured\n\tchannel with ESMTP id\n\t06248b85.0.805630.00-2372.2324222.nbfkord-smmo01.seg.att.com\n\t(envelope-from <arybchenko@solarflare.com>); \n\tThu, 02 Mar 2017 16:03:45 +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.1044.25; Thu, 2 Mar 2017 08:03:41 -0800",
            "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.1044.25 via Frontend Transport; Thu, 2 Mar 2017 08:03:40 -0800",
            "from uklogin.uk.solarflarecom.com (uklogin.uk.solarflarecom.com\n\t[10.17.10.10])\n\tby opal.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id\n\tv22G3dWN007946; Thu, 2 Mar 2017 16:03:39 GMT",
            "from uklogin.uk.solarflarecom.com (localhost.localdomain\n\t[127.0.0.1])\n\tby uklogin.uk.solarflarecom.com (8.13.8/8.13.8) with ESMTP id\n\tv22G3dWk005942; Thu, 2 Mar 2017 16:03:39 GMT"
        ],
        "X-MXL-Hash": "58b8426155e42513-0e11450ebaf7ed23849cf619091758f1707c9e6f",
        "From": "Andrew Rybchenko <arybchenko@solarflare.com>",
        "To": "<dev@dpdk.org>",
        "CC": "Mark Spender <mspender@solarflare.com>",
        "Date": "Thu, 2 Mar 2017 16:03:01 +0000",
        "Message-ID": "<1488470591-5853-2-git-send-email-arybchenko@solarflare.com>",
        "X-Mailer": "git-send-email 1.8.2.3",
        "In-Reply-To": "<1488470591-5853-1-git-send-email-arybchenko@solarflare.com>",
        "References": "<1488470591-5853-1-git-send-email-arybchenko@solarflare.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-AnalysisOut": [
            "[v=2.1 cv=LaQ6n2ri c=1 sm=1 tr=0 a=8BlWFWvVlq5taO8ncb8nKg==]",
            "[:17 a=6Iz7jQTuP9IA:10 a=zRKbQ67AAAAA:8 a=Oo8Cj3sj5ln0tqEnm]",
            "[fIA:9 a=Swg-FdDYEx0XZjia:21 a=RdSLI-4324ZbJkTz:21 a=PA03WX]",
            "[8tBzeizutn5_OT:22]"
        ],
        "X-Spam": "[F=0.5147664272; CM=0.500; S=0.514(2015072901)]",
        "X-MAIL-FROM": "<arybchenko@solarflare.com>",
        "X-SOURCE-IP": "[12.187.104.26]",
        "Subject": "[dpdk-dev] [PATCH 01/11] net/sfc/base: split local MAC I/G back\n\tinto separate 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": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/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: Mark Spender <mspender@solarflare.com>\n\nThe flag EFX_FILTER_MATCH_LOC_MAC_IG to represent filtering on the\nindividual/group bit of the MAC address (with the two cases being\ndistingusished by the MAC address in the filter specification) was\nintroduced to mirror the Linux driver filtering code, but the\nimplementations are different enough anyway that it isn't of much\nvalue.\n\nHaving separate flags for unknown unicast and multicast simplifies\nthe code and allows the set of flags to match those used by MCDI.\n\nIt will also makes it easier to report whether these filters are\nsupported.\n\nIn the MCDI definitions, the unknown multicast and unicast flags\nhave the values 0x40000000 and 0x80000000 respectively, and so using\nthe same values for simplicity requires 32 bits in the filter\nspecification to store the flags. This means the structure is now\na little bigger than 64 bytes, but filters are not often used on\ncritical paths so this shouldn't have much impact - on Linux they\nare also bigger than they used to be.\n\nSigned-off-by: Mark Spender <mspender@solarflare.com>\nSigned-off-by: Andrew Rybchenko <arybchenko@solarflare.com>\n---\n drivers/net/sfc/base/ef10_filter.c | 48 ++++----------------------------------\n drivers/net/sfc/base/efx.h         | 10 ++++----\n drivers/net/sfc/base/efx_filter.c  |  8 ++-----\n 3 files changed, 12 insertions(+), 54 deletions(-)",
    "diff": "diff --git a/drivers/net/sfc/base/ef10_filter.c b/drivers/net/sfc/base/ef10_filter.c\nindex c161977..f520147 100644\n--- a/drivers/net/sfc/base/ef10_filter.c\n+++ b/drivers/net/sfc/base/ef10_filter.c\n@@ -142,6 +142,10 @@ ef10_filter_init(\n \t    MATCH_MASK(MC_CMD_FILTER_OP_IN_MATCH_OUTER_VLAN));\n \tEFX_STATIC_ASSERT(EFX_FILTER_MATCH_IP_PROTO ==\n \t    MATCH_MASK(MC_CMD_FILTER_OP_IN_MATCH_IP_PROTO));\n+\tEFX_STATIC_ASSERT(EFX_FILTER_MATCH_UNKNOWN_MCAST_DST ==\n+\t    MATCH_MASK(MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST));\n+\tEFX_STATIC_ASSERT((uint32_t)EFX_FILTER_MATCH_UNKNOWN_UCAST_DST ==\n+\t    MATCH_MASK(MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST));\n #undef MATCH_MASK\n \n \tEFSYS_KMEM_ALLOC(enp->en_esip, sizeof (ef10_filter_table_t), eftp);\n@@ -184,7 +188,6 @@ efx_mcdi_filter_op_add(\n \tefx_mcdi_req_t req;\n \tuint8_t payload[MAX(MC_CMD_FILTER_OP_IN_LEN,\n \t\t\t    MC_CMD_FILTER_OP_OUT_LEN)];\n-\tuint32_t match_fields = 0;\n \tefx_rc_t rc;\n \n \tmemset(payload, 0, sizeof (payload));\n@@ -211,26 +214,10 @@ efx_mcdi_filter_op_add(\n \t\tgoto fail1;\n \t}\n \n-\tif (spec->efs_match_flags & EFX_FILTER_MATCH_LOC_MAC_IG) {\n-\t\t/*\n-\t\t * The LOC_MAC_IG match flag can represent unknown unicast\n-\t\t *  or multicast filters - use the MAC address to distinguish\n-\t\t *  them.\n-\t\t */\n-\t\tif (EFX_MAC_ADDR_IS_MULTICAST(spec->efs_loc_mac))\n-\t\t\tmatch_fields |= 1U <<\n-\t\t\t\tMC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_LBN;\n-\t\telse\n-\t\t\tmatch_fields |= 1U <<\n-\t\t\t\tMC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_LBN;\n-\t}\n-\n-\tmatch_fields |= spec->efs_match_flags & (~EFX_FILTER_MATCH_LOC_MAC_IG);\n-\n \tMCDI_IN_SET_DWORD(req, FILTER_OP_IN_PORT_ID,\n \t    EVB_PORT_ID_ASSIGNED);\n \tMCDI_IN_SET_DWORD(req, FILTER_OP_IN_MATCH_FIELDS,\n-\t    match_fields);\n+\t    spec->efs_match_flags);\n \tMCDI_IN_SET_DWORD(req, FILTER_OP_IN_RX_DEST,\n \t    MC_CMD_FILTER_OP_IN_RX_DEST_HOST);\n \tMCDI_IN_SET_DWORD(req, FILTER_OP_IN_RX_QUEUE,\n@@ -889,9 +876,6 @@ efx_mcdi_get_parser_disp_info(\n \tuint8_t payload[MAX(MC_CMD_GET_PARSER_DISP_INFO_IN_LEN,\n \t\t\t    MC_CMD_GET_PARSER_DISP_INFO_OUT_LENMAX)];\n \tefx_rc_t rc;\n-\tuint32_t i;\n-\tboolean_t support_unknown_ucast = B_FALSE;\n-\tboolean_t support_unknown_mcast = B_FALSE;\n \n \t(void) memset(payload, 0, sizeof (payload));\n \treq.emr_cmd = MC_CMD_GET_PARSER_DISP_INFO;\n@@ -927,28 +911,6 @@ efx_mcdi_get_parser_disp_info(\n \tEFX_STATIC_ASSERT(sizeof (uint32_t) ==\n \t    MC_CMD_GET_PARSER_DISP_INFO_OUT_SUPPORTED_MATCHES_LEN);\n \n-\t/*\n-\t * Remove UNKNOWN UCAST and MCAST flags, and if both are present, change\n-\t * the lower priority one to LOC_MAC_IG.\n-\t */\n-\tfor (i = 0; i < *length; i++) {\n-\t\tif (list[i] & MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_LBN) {\n-\t\t\tlist[i] &=\n-\t\t\t(~MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_UCAST_DST_LBN);\n-\t\t\tsupport_unknown_ucast = B_TRUE;\n-\t\t}\n-\t\tif (list[i] & MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_LBN) {\n-\t\t\tlist[i] &=\n-\t\t\t(~MC_CMD_FILTER_OP_IN_MATCH_UNKNOWN_MCAST_DST_LBN);\n-\t\t\tsupport_unknown_mcast = B_TRUE;\n-\t\t}\n-\n-\t\tif (support_unknown_ucast && support_unknown_mcast) {\n-\t\t\tlist[i] &= EFX_FILTER_MATCH_LOC_MAC_IG;\n-\t\t\tbreak;\n-\t\t}\n-\t}\n-\n \treturn (0);\n \n fail2:\ndiff --git a/drivers/net/sfc/base/efx.h b/drivers/net/sfc/base/efx.h\nindex 0815d7a..3c26f70 100644\n--- a/drivers/net/sfc/base/efx.h\n+++ b/drivers/net/sfc/base/efx.h\n@@ -2217,10 +2217,10 @@ typedef enum efx_filter_match_flags_e {\n \tEFX_FILTER_MATCH_OUTER_VID = 0x0100,\t/* Match by outer VLAN ID */\n \tEFX_FILTER_MATCH_IP_PROTO = 0x0200,\t/* Match by IP transport\n \t\t\t\t\t\t * protocol */\n-\tEFX_FILTER_MATCH_LOC_MAC_IG = 0x0400,\t/* Match by local MAC address\n-\t\t\t\t\t\t * I/G bit. Used for RX default\n-\t\t\t\t\t\t * unicast and multicast/\n-\t\t\t\t\t\t * broadcast filters. */\n+\t/* Match otherwise-unmatched multicast and broadcast packets */\n+\tEFX_FILTER_MATCH_UNKNOWN_MCAST_DST = 0x40000000,\n+\t/* Match otherwise-unmatched unicast packets */\n+\tEFX_FILTER_MATCH_UNKNOWN_UCAST_DST = 0x80000000,\n } efx_filter_match_flags_t;\n \n typedef enum efx_filter_priority_s {\n@@ -2242,7 +2242,7 @@ typedef enum efx_filter_priority_s {\n  */\n \n typedef struct efx_filter_spec_s {\n-\tuint32_t\tefs_match_flags:12;\n+\tuint32_t\tefs_match_flags;\n \tuint32_t\tefs_priority:2;\n \tuint32_t\tefs_flags:6;\n \tuint32_t\tefs_dmaq_id:12;\ndiff --git a/drivers/net/sfc/base/efx_filter.c b/drivers/net/sfc/base/efx_filter.c\nindex a20efaf..4f58a7d 100644\n--- a/drivers/net/sfc/base/efx_filter.c\n+++ b/drivers/net/sfc/base/efx_filter.c\n@@ -149,9 +149,6 @@ efx_filter_init(\n \tconst efx_filter_ops_t *efop;\n \tefx_rc_t rc;\n \n-\t/* Check that efx_filter_spec_t is 64 bytes. */\n-\tEFX_STATIC_ASSERT(sizeof (efx_filter_spec_t) == 64);\n-\n \tEFSYS_ASSERT3U(enp->en_magic, ==, EFX_NIC_MAGIC);\n \tEFSYS_ASSERT3U(enp->en_mod_flags, &, EFX_MOD_PROBE);\n \tEFSYS_ASSERT(!(enp->en_mod_flags & EFX_MOD_FILTER));\n@@ -387,7 +384,7 @@ efx_filter_spec_set_uc_def(\n {\n \tEFSYS_ASSERT3P(spec, !=, NULL);\n \n-\tspec->efs_match_flags |= EFX_FILTER_MATCH_LOC_MAC_IG;\n+\tspec->efs_match_flags |= EFX_FILTER_MATCH_UNKNOWN_UCAST_DST;\n \treturn (0);\n }\n \n@@ -400,8 +397,7 @@ efx_filter_spec_set_mc_def(\n {\n \tEFSYS_ASSERT3P(spec, !=, NULL);\n \n-\tspec->efs_match_flags |= EFX_FILTER_MATCH_LOC_MAC_IG;\n-\tspec->efs_loc_mac[0] = 1;\n+\tspec->efs_match_flags |= EFX_FILTER_MATCH_UNKNOWN_MCAST_DST;\n \treturn (0);\n }\n \n",
    "prefixes": [
        "dpdk-dev",
        "01/11"
    ]
}