get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 896854,
    "url": "http://patchwork.ozlabs.org/api/patches/896854/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180410174959.18757-7-vinicius.gomes@intel.com/",
    "project": {
        "id": 46,
        "url": "http://patchwork.ozlabs.org/api/projects/46/?format=api",
        "name": "Intel Wired Ethernet development",
        "link_name": "intel-wired-lan",
        "list_id": "intel-wired-lan.osuosl.org",
        "list_email": "intel-wired-lan@osuosl.org",
        "web_url": "",
        "scm_url": "",
        "webscm_url": "",
        "list_archive_url": "",
        "list_archive_url_format": "",
        "commit_url_format": ""
    },
    "msgid": "<20180410174959.18757-7-vinicius.gomes@intel.com>",
    "list_archive_url": null,
    "date": "2018-04-10T17:49:55",
    "name": "[next-queue,v7,06/10] igb: Allow filters to be added for the local MAC address",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "c7e85a9839184e9f67376e80f54fa81601eae1e9",
    "submitter": {
        "id": 72272,
        "url": "http://patchwork.ozlabs.org/api/people/72272/?format=api",
        "name": "Vinicius Costa Gomes",
        "email": "vinicius.gomes@intel.com"
    },
    "delegate": {
        "id": 68,
        "url": "http://patchwork.ozlabs.org/api/users/68/?format=api",
        "username": "jtkirshe",
        "first_name": "Jeff",
        "last_name": "Kirsher",
        "email": "jeffrey.t.kirsher@intel.com"
    },
    "mbox": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20180410174959.18757-7-vinicius.gomes@intel.com/mbox/",
    "series": [
        {
            "id": 38278,
            "url": "http://patchwork.ozlabs.org/api/series/38278/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=38278",
            "date": "2018-04-10T17:49:50",
            "name": "igb: offloading of receive filters",
            "version": 7,
            "mbox": "http://patchwork.ozlabs.org/series/38278/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/896854/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/896854/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<intel-wired-lan-bounces@osuosl.org>",
        "X-Original-To": [
            "incoming@patchwork.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Delivered-To": [
            "patchwork-incoming@bilbo.ozlabs.org",
            "intel-wired-lan@lists.osuosl.org"
        ],
        "Authentication-Results": [
            "ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=osuosl.org\n\t(client-ip=140.211.166.133; helo=hemlock.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=none (p=none dis=none) header.from=intel.com"
        ],
        "Received": [
            "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 40LF7r1bjzz9s3B\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed, 11 Apr 2018 03:50:32 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id CBFE187A57;\n\tTue, 10 Apr 2018 17:50:30 +0000 (UTC)",
            "from hemlock.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id AnFyYKplKa5d; Tue, 10 Apr 2018 17:50:28 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 791CE87B3C;\n\tTue, 10 Apr 2018 17:50:28 +0000 (UTC)",
            "from fraxinus.osuosl.org (smtp4.osuosl.org [140.211.166.137])\n\tby ash.osuosl.org (Postfix) with ESMTP id D076C1C11AD\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 10 Apr 2018 17:50:26 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby fraxinus.osuosl.org (Postfix) with ESMTP id CDF3485142\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 10 Apr 2018 17:50:26 +0000 (UTC)",
            "from fraxinus.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id dZxrzWt6hXU6 for <intel-wired-lan@lists.osuosl.org>;\n\tTue, 10 Apr 2018 17:50:26 +0000 (UTC)",
            "from mga03.intel.com (mga03.intel.com [134.134.136.65])\n\tby fraxinus.osuosl.org (Postfix) with ESMTPS id 52E1D84FCA\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue, 10 Apr 2018 17:50:26 +0000 (UTC)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n\tby orsmga103.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t10 Apr 2018 10:50:26 -0700",
            "from kjnewhou-mobl1.amr.corp.intel.com (HELO localhost.localdomain)\n\t([10.254.183.149])\n\tby orsmga005.jf.intel.com with ESMTP; 10 Apr 2018 10:50:25 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.48,433,1517904000\"; d=\"scan'208\";a=\"215551512\"",
        "From": "Vinicius Costa Gomes <vinicius.gomes@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Tue, 10 Apr 2018 10:49:55 -0700",
        "Message-Id": "<20180410174959.18757-7-vinicius.gomes@intel.com>",
        "X-Mailer": "git-send-email 2.17.0",
        "In-Reply-To": "<20180410174959.18757-1-vinicius.gomes@intel.com>",
        "References": "<20180410174959.18757-1-vinicius.gomes@intel.com>",
        "Subject": "[Intel-wired-lan] [next-queue PATCH v7 06/10] igb: Allow filters to\n\tbe added for the local MAC address",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.24",
        "Precedence": "list",
        "List-Id": "Intel Wired Ethernet Linux Kernel Driver Development\n\t<intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=unsubscribe>",
        "List-Archive": "<http://lists.osuosl.org/pipermail/intel-wired-lan/>",
        "List-Post": "<mailto:intel-wired-lan@osuosl.org>",
        "List-Help": "<mailto:intel-wired-lan-request@osuosl.org?subject=help>",
        "List-Subscribe": "<https://lists.osuosl.org/mailman/listinfo/intel-wired-lan>, \n\t<mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "Cc": "netdev@vger.kernel.org, jesus.sanchez-palencia@intel.com",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "7bit",
        "Errors-To": "intel-wired-lan-bounces@osuosl.org",
        "Sender": "\"Intel-wired-lan\" <intel-wired-lan-bounces@osuosl.org>"
    },
    "content": "Users expect that when adding a steering filter for the local MAC\naddress, that all the traffic directed to that address will go to some\nqueue.\n\nCurrently, it's not possible to configure entries in the \"in use\"\nstate, which is the normal state of the local MAC address entry (it is\nthe default), this patch allows to override the steering configuration\nof \"in use\" entries, if the filter to be added match the address and\naddress type (source or destination) of an existing entry.\n\nThere is a bit of a special handling for entries referring to the\nlocal MAC address, when they are removed, only the steering\nconfiguration is reset.\n\nSigned-off-by: Vinicius Costa Gomes <vinicius.gomes@intel.com>\n---\n drivers/net/ethernet/intel/igb/igb_main.c | 40 ++++++++++++++++++++---\n 1 file changed, 36 insertions(+), 4 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/igb/igb_main.c b/drivers/net/ethernet/intel/igb/igb_main.c\nindex e3da35cab786..1b6fad88107a 100644\n--- a/drivers/net/ethernet/intel/igb/igb_main.c\n+++ b/drivers/net/ethernet/intel/igb/igb_main.c\n@@ -6844,6 +6844,27 @@ static void igb_set_default_mac_filter(struct igb_adapter *adapter)\n \tigb_rar_set_index(adapter, 0);\n }\n \n+/* If the filter to be added and an already existing filter express\n+ * the same address and address type, it should be possible to only\n+ * override the other configurations, for example the queue to steer\n+ * traffic.\n+ */\n+static bool igb_mac_entry_can_be_used(const struct igb_mac_addr *entry,\n+\t\t\t\t      const u8 *addr, const u8 flags)\n+{\n+\tif (!(entry->state & IGB_MAC_STATE_IN_USE))\n+\t\treturn true;\n+\n+\tif ((entry->state & IGB_MAC_STATE_SRC_ADDR) !=\n+\t    (flags & IGB_MAC_STATE_SRC_ADDR))\n+\t\treturn false;\n+\n+\tif (!ether_addr_equal(addr, entry->addr))\n+\t\treturn false;\n+\n+\treturn true;\n+}\n+\n /* Add a MAC filter for 'addr' directing matching traffic to 'queue',\n  * 'flags' is used to indicate what kind of match is made, match is by\n  * default for the destination address, if matching by source address\n@@ -6866,7 +6887,8 @@ static int igb_add_mac_filter_flags(struct igb_adapter *adapter,\n \t * addresses.\n \t */\n \tfor (i = 0; i < rar_entries; i++) {\n-\t\tif (adapter->mac_table[i].state & IGB_MAC_STATE_IN_USE)\n+\t\tif (!igb_mac_entry_can_be_used(&adapter->mac_table[i],\n+\t\t\t\t\t       addr, flags))\n \t\t\tcontinue;\n \n \t\tether_addr_copy(adapter->mac_table[i].addr, addr);\n@@ -6918,9 +6940,19 @@ static int igb_del_mac_filter_flags(struct igb_adapter *adapter,\n \t\tif (!ether_addr_equal(adapter->mac_table[i].addr, addr))\n \t\t\tcontinue;\n \n-\t\tadapter->mac_table[i].state = 0;\n-\t\tmemset(adapter->mac_table[i].addr, 0, ETH_ALEN);\n-\t\tadapter->mac_table[i].queue = 0;\n+\t\t/* When a filter for the default address is \"deleted\",\n+\t\t * we return it to its initial configuration\n+\t\t */\n+\t\tif (adapter->mac_table[i].state & IGB_MAC_STATE_DEFAULT) {\n+\t\t\tadapter->mac_table[i].state =\n+\t\t\t\tIGB_MAC_STATE_DEFAULT | IGB_MAC_STATE_IN_USE;\n+\t\t\tadapter->mac_table[i].queue =\n+\t\t\t\tadapter->vfs_allocated_count;\n+\t\t} else {\n+\t\t\tadapter->mac_table[i].state = 0;\n+\t\t\tadapter->mac_table[i].queue = 0;\n+\t\t\tmemset(adapter->mac_table[i].addr, 0, ETH_ALEN);\n+\t\t}\n \n \t\tigb_rar_set_index(adapter, i);\n \t\treturn 0;\n",
    "prefixes": [
        "next-queue",
        "v7",
        "06/10"
    ]
}