get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1038973,
    "url": "http://patchwork.ozlabs.org/api/patches/1038973/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190208205043.11975-7-anirudh.venkataramanan@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": "<20190208205043.11975-7-anirudh.venkataramanan@intel.com>",
    "list_archive_url": null,
    "date": "2019-02-08T20:50:33",
    "name": "[S11,06/16] ice: fix ice_remove_rule_internal vsi_list handling",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "f141bd88a42ae286cba7f10ea622d48feaf33e9d",
    "submitter": {
        "id": 73601,
        "url": "http://patchwork.ozlabs.org/api/people/73601/?format=api",
        "name": "Anirudh Venkataramanan",
        "email": "anirudh.venkataramanan@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/20190208205043.11975-7-anirudh.venkataramanan@intel.com/mbox/",
    "series": [
        {
            "id": 90915,
            "url": "http://patchwork.ozlabs.org/api/series/90915/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=90915",
            "date": "2019-02-08T20:50:37",
            "name": "Bug fixes for ice",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/90915/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1038973/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1038973/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.138; helo=whitealder.osuosl.org;\n\tenvelope-from=intel-wired-lan-bounces@osuosl.org;\n\treceiver=<UNKNOWN>)",
            "ozlabs.org;\n\tdmarc=fail (p=none dis=none) header.from=intel.com"
        ],
        "Received": [
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n\t(using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256\n\tbits)) (No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 43x6qR2qxRz9sMp\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat,  9 Feb 2019 07:54:11 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id F138086B0E;\n\tFri,  8 Feb 2019 20:54:09 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id VK1r4a07Guxg; Fri,  8 Feb 2019 20:54:09 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 10BBA86BDB;\n\tFri,  8 Feb 2019 20:54:09 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id 5DD0F1BF977\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri,  8 Feb 2019 20:52:28 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id 5B4412408D\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri,  8 Feb 2019 20:52:28 +0000 (UTC)",
            "from silver.osuosl.org ([127.0.0.1])\n\tby localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n\twith ESMTP id 5YyHZBFmF5-X for <intel-wired-lan@lists.osuosl.org>;\n\tFri,  8 Feb 2019 20:52:27 +0000 (UTC)",
            "from mga02.intel.com (mga02.intel.com [134.134.136.20])\n\tby silver.osuosl.org (Postfix) with ESMTPS id CB75B2343B\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri,  8 Feb 2019 20:52:27 +0000 (UTC)",
            "from orsmga008.jf.intel.com ([10.7.209.65])\n\tby orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t08 Feb 2019 12:50:43 -0800",
            "from shasta.jf.intel.com ([10.166.241.11])\n\tby orsmga008.jf.intel.com with ESMTP; 08 Feb 2019 12:50:43 -0800"
        ],
        "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.58,348,1544515200\"; d=\"scan'208\";a=\"116332335\"",
        "From": "Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Fri,  8 Feb 2019 12:50:33 -0800",
        "Message-Id": "<20190208205043.11975-7-anirudh.venkataramanan@intel.com>",
        "X-Mailer": "git-send-email 2.14.5",
        "In-Reply-To": "<20190208205043.11975-1-anirudh.venkataramanan@intel.com>",
        "References": "<20190208205043.11975-1-anirudh.venkataramanan@intel.com>",
        "Subject": "[Intel-wired-lan] [PATCH S11 06/16] ice: fix\n\tice_remove_rule_internal vsi_list handling",
        "X-BeenThere": "intel-wired-lan@osuosl.org",
        "X-Mailman-Version": "2.1.29",
        "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>",
        "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": "From: Jacob Keller <jacob.e.keller@intel.com>\n\nWhen adding multiple VLANs to the same VSI, the ice_add_vlan code will\nshare the VSI list, so as not to create multiple unnecessary VSI lists.\n\nConsider the following flow\n\n  ice_add_vlan(hw, <VSI 0 VID 7, VSI 0 VID 8, VSI 0 VID 9>)\n\nWhere we add three VLAN filters for VIDs 7, 8, and 9, all for VSI 0.\n\nThe ice_add_vlan will create a single vsi_list and share it among all\nthe filters.\n\nLater, if we try to remove a VLAN,\n\n  ice_remove_vlan(hw, <VSI 0 VID 7>)\n\nThen the removal code will update the vsi_list and remove VSI 0 from it.\nBut, since the vsi_list is shared, this breaks the list for the other\nusers who reference it. We actually even free the VSI list memory, and\nmay result in segmentation faults.\n\nThis is due to the way that VLAN rule share VSI lists with reference\ncounts, and is caused because we call ice_rem_update_vsi_list even when\nthe ref_cnt is greater than one.\n\nTo fix this, handle the case where ref_cnt is greater than one\nseparately. In this case, we need to remove the associated rule without\nmodifying the vsi_list, since it is currently being referenced by\nanother rule. Instead, we just need to decrement the VSI list ref_cnt.\n\nThe case for handling sharing of VSI lists with multiple VSIs is not\ncurrently supported by this code. No such rules will be created today,\nand this code will require changes if/when such code is added.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\nReviewed-by: Bruce Allan <bruce.w.allan@intel.com>\nSigned-off-by: Anirudh Venkataramanan <anirudh.venkataramanan@intel.com>\n---\n[Anirudh Venkataramanan <anirudh.venkataramanan@intel.com> cleaned up commit message]\n---\n drivers/net/ethernet/intel/ice/ice_switch.c | 15 +++++++++++++--\n 1 file changed, 13 insertions(+), 2 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/ice/ice_switch.c b/drivers/net/ethernet/intel/ice/ice_switch.c\nindex 528b90cdd9da..bee08d1a44e0 100644\n--- a/drivers/net/ethernet/intel/ice/ice_switch.c\n+++ b/drivers/net/ethernet/intel/ice/ice_switch.c\n@@ -1538,9 +1538,20 @@ ice_remove_rule_internal(struct ice_hw *hw, u8 recp_id,\n \t} else if (!list_elem->vsi_list_info) {\n \t\tstatus = ICE_ERR_DOES_NOT_EXIST;\n \t\tgoto exit;\n+\t} else if (list_elem->vsi_list_info->ref_cnt > 1) {\n+\t\t/* a ref_cnt > 1 indicates that the vsi_list is being\n+\t\t * shared by multiple rules. Decrement the ref_cnt and\n+\t\t * remove this rule, but do not modify the list, as it\n+\t\t * is in-use by other rules.\n+\t\t */\n+\t\tlist_elem->vsi_list_info->ref_cnt--;\n+\t\tremove_rule = true;\n \t} else {\n-\t\tif (list_elem->vsi_list_info->ref_cnt > 1)\n-\t\t\tlist_elem->vsi_list_info->ref_cnt--;\n+\t\t/* a ref_cnt of 1 indicates the vsi_list is only used\n+\t\t * by one rule. However, the original removal request is only\n+\t\t * for a single VSI. Update the vsi_list first, and only\n+\t\t * remove the rule if there are no further VSIs in this list.\n+\t\t */\n \t\tvsi_handle = f_entry->fltr_info.vsi_handle;\n \t\tstatus = ice_rem_update_vsi_list(hw, vsi_handle, list_elem);\n \t\tif (status)\n",
    "prefixes": [
        "S11",
        "06/16"
    ]
}