get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1276676,
    "url": "http://patchwork.ozlabs.org/api/patches/1276676/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20200424201623.10971-19-andre.guedes@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": "<20200424201623.10971-19-andre.guedes@intel.com>",
    "list_archive_url": null,
    "date": "2020-04-24T20:16:22",
    "name": "[18/19] igc: Change adapter->nfc_rule_lock to mutex",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "37b73f1686d03461e65f95e464fd68dd0d9212e4",
    "submitter": {
        "id": 72323,
        "url": "http://patchwork.ozlabs.org/api/people/72323/?format=api",
        "name": "Andre Guedes",
        "email": "andre.guedes@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/20200424201623.10971-19-andre.guedes@intel.com/mbox/",
    "series": [
        {
            "id": 172579,
            "url": "http://patchwork.ozlabs.org/api/series/172579/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=172579",
            "date": "2020-04-24T20:16:07",
            "name": "igc: Fixes to NFC support code",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/172579/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1276676/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1276676/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 spf=pass (sender SPF authorized) smtp.mailfrom=osuosl.org\n (client-ip=140.211.166.138; helo=whitealder.osuosl.org;\n envelope-from=intel-wired-lan-bounces@osuosl.org; receiver=<UNKNOWN>)",
            "ozlabs.org;\n dmarc=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 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 49857v3dtVz9sSJ\n\tfor <incoming@patchwork.ozlabs.org>; Sat, 25 Apr 2020 06:17:47 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 119308756D;\n\tFri, 24 Apr 2020 20:17:46 +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 COnXWHYpWAyI; Fri, 24 Apr 2020 20:17:44 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 6461D88005;\n\tFri, 24 Apr 2020 20:17:42 +0000 (UTC)",
            "from whitealder.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by ash.osuosl.org (Postfix) with ESMTP id 3C4671BF83C\n for <intel-wired-lan@lists.osuosl.org>; Fri, 24 Apr 2020 20:17:34 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n by whitealder.osuosl.org (Postfix) with ESMTP id 392F787FEF\n for <intel-wired-lan@lists.osuosl.org>; Fri, 24 Apr 2020 20:17:34 +0000 (UTC)",
            "from whitealder.osuosl.org ([127.0.0.1])\n by localhost (.osuosl.org [127.0.0.1]) (amavisd-new, port 10024)\n with ESMTP id yc7gu90QfhrG for <intel-wired-lan@lists.osuosl.org>;\n Fri, 24 Apr 2020 20:17:30 +0000 (UTC)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by whitealder.osuosl.org (Postfix) with ESMTPS id 1FD7E87F94\n for <intel-wired-lan@lists.osuosl.org>; Fri, 24 Apr 2020 20:17:30 +0000 (UTC)",
            "from orsmga001.jf.intel.com ([10.7.209.18])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 24 Apr 2020 13:17:30 -0700",
            "from kleandre-mobl.amr.corp.intel.com ([10.213.164.39])\n by orsmga001.jf.intel.com with ESMTP; 24 Apr 2020 13:17:29 -0700"
        ],
        "X-Virus-Scanned": [
            "amavisd-new at osuosl.org",
            "amavisd-new at osuosl.org"
        ],
        "X-Greylist": "domain auto-whitelisted by SQLgrey-1.7.6",
        "IronPort-SDR": [
            "\n wsgiBNqVvQ8Y6sJHcj/LpIBORVgOSWryOo5AI9Hg6m551oCLp1sKGbbDGF0NmfwmbM5LpULYBq\n nKgIhBJn5pCA==",
            "\n x0ERnLCgk6e9CB0KzLzXfMvAz6xN9at2mYRjE2htCRen+HWH96W8RWJxH/7vaJ2ERpa050GWal\n XdYDmouYfR5w=="
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.73,313,1583222400\"; d=\"scan'208\";a=\"335474527\"",
        "From": "Andre Guedes <andre.guedes@intel.com>",
        "To": "intel-wired-lan@lists.osuosl.org",
        "Date": "Fri, 24 Apr 2020 13:16:22 -0700",
        "Message-Id": "<20200424201623.10971-19-andre.guedes@intel.com>",
        "X-Mailer": "git-send-email 2.26.0",
        "In-Reply-To": "<20200424201623.10971-1-andre.guedes@intel.com>",
        "References": "<20200424201623.10971-1-andre.guedes@intel.com>",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [PATCH 18/19] igc: Change adapter->nfc_rule_lock\n to mutex",
        "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 <intel-wired-lan.osuosl.org>",
        "List-Unsubscribe": "<https://lists.osuosl.org/mailman/options/intel-wired-lan>,\n <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 <mailto:intel-wired-lan-request@osuosl.org?subject=subscribe>",
        "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": "This patch changes adapter->nfc_rule_lock type from spin_lock to mutex\nso we avoid unnecessary busy waiting on lock contention.\n\nA closer look at the execution context of NFC rule API users shows that\nall of them run in process context. The API users are: ethtool ops,\nigc_configure(), called when interface is brought up by user or reset\nworkequeue thread, igc_down(), called when interface is brought down,\nand igc_remove(), called when driver is unloaded.\n\nSigned-off-by: Andre Guedes <andre.guedes@intel.com>\n---\nNote that checkpatch.pl reports an issue with this patch. The issue is a false\npositive. There is a comment right above that line referring to the lock.\n\nHere is the report:\n\nCHECK: struct mutex definition without comment\n#31: FILE: drivers/net/ethernet/intel/igc/igc.h:193:\n+       struct mutex nfc_rule_lock;\n---\n drivers/net/ethernet/intel/igc/igc.h         |  2 +-\n drivers/net/ethernet/intel/igc/igc_ethtool.c | 24 ++++++++++----------\n drivers/net/ethernet/intel/igc/igc_main.c    | 14 ++++++------\n 3 files changed, 20 insertions(+), 20 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/igc/igc.h b/drivers/net/ethernet/intel/igc/igc.h\nindex a484b328268b..14f9edaaaf83 100644\n--- a/drivers/net/ethernet/intel/igc/igc.h\n+++ b/drivers/net/ethernet/intel/igc/igc.h\n@@ -190,7 +190,7 @@ struct igc_adapter {\n \t/* Any access to elements in nfc_rule_list is protected by the\n \t * nfc_rule_lock.\n \t */\n-\tspinlock_t nfc_rule_lock;\n+\tstruct mutex nfc_rule_lock;\n \tstruct list_head nfc_rule_list;\n \tunsigned int nfc_rule_count;\n \ndiff --git a/drivers/net/ethernet/intel/igc/igc_ethtool.c b/drivers/net/ethernet/intel/igc/igc_ethtool.c\nindex 32bc77af71dd..db42dc046403 100644\n--- a/drivers/net/ethernet/intel/igc/igc_ethtool.c\n+++ b/drivers/net/ethernet/intel/igc/igc_ethtool.c\n@@ -939,7 +939,7 @@ static int igc_ethtool_get_nfc_rule(struct igc_adapter *adapter,\n \n \tcmd->data = IGC_MAX_RXNFC_RULES;\n \n-\tspin_lock(&adapter->nfc_rule_lock);\n+\tmutex_lock(&adapter->nfc_rule_lock);\n \n \trule = igc_get_nfc_rule(adapter, fsp->location);\n \tif (!rule)\n@@ -971,11 +971,11 @@ static int igc_ethtool_get_nfc_rule(struct igc_adapter *adapter,\n \t\teth_broadcast_addr(fsp->m_u.ether_spec.h_source);\n \t}\n \n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n \treturn 0;\n \n out:\n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n \treturn -EINVAL;\n }\n \n@@ -988,18 +988,18 @@ static int igc_ethtool_get_nfc_rules(struct igc_adapter *adapter,\n \n \tcmd->data = IGC_MAX_RXNFC_RULES;\n \n-\tspin_lock(&adapter->nfc_rule_lock);\n+\tmutex_lock(&adapter->nfc_rule_lock);\n \n \tlist_for_each_entry(rule, &adapter->nfc_rule_list, list) {\n \t\tif (cnt == cmd->rule_cnt) {\n-\t\t\tspin_unlock(&adapter->nfc_rule_lock);\n+\t\t\tmutex_unlock(&adapter->nfc_rule_lock);\n \t\t\treturn -EMSGSIZE;\n \t\t}\n \t\trule_locs[cnt] = rule->location;\n \t\tcnt++;\n \t}\n \n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n \n \tcmd->rule_cnt = cnt;\n \n@@ -1303,7 +1303,7 @@ static int igc_ethtool_add_nfc_rule(struct igc_adapter *adapter,\n \n \tigc_ethtool_init_nfc_rule(rule, fsp);\n \n-\tspin_lock(&adapter->nfc_rule_lock);\n+\tmutex_lock(&adapter->nfc_rule_lock);\n \n \terr = igc_ethtool_check_nfc_rule(adapter, rule);\n \tif (err)\n@@ -1317,11 +1317,11 @@ static int igc_ethtool_add_nfc_rule(struct igc_adapter *adapter,\n \tif (err)\n \t\tgoto err;\n \n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n \treturn 0;\n \n err:\n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n \tkfree(rule);\n \treturn err;\n }\n@@ -1333,17 +1333,17 @@ static int igc_ethtool_del_nfc_rule(struct igc_adapter *adapter,\n \t\t(struct ethtool_rx_flow_spec *)&cmd->fs;\n \tstruct igc_nfc_rule *rule;\n \n-\tspin_lock(&adapter->nfc_rule_lock);\n+\tmutex_lock(&adapter->nfc_rule_lock);\n \n \trule = igc_get_nfc_rule(adapter, fsp->location);\n \tif (!rule) {\n-\t\tspin_unlock(&adapter->nfc_rule_lock);\n+\t\tmutex_unlock(&adapter->nfc_rule_lock);\n \t\treturn -EINVAL;\n \t}\n \n \tigc_del_nfc_rule(adapter, rule);\n \n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n \treturn 0;\n }\n \ndiff --git a/drivers/net/ethernet/intel/igc/igc_main.c b/drivers/net/ethernet/intel/igc/igc_main.c\nindex 134523064fe9..38327d9ec385 100644\n--- a/drivers/net/ethernet/intel/igc/igc_main.c\n+++ b/drivers/net/ethernet/intel/igc/igc_main.c\n@@ -2540,12 +2540,12 @@ static void igc_flush_nfc_rules(struct igc_adapter *adapter)\n {\n \tstruct igc_nfc_rule *rule, *tmp;\n \n-\tspin_lock(&adapter->nfc_rule_lock);\n+\tmutex_lock(&adapter->nfc_rule_lock);\n \n \tlist_for_each_entry_safe(rule, tmp, &adapter->nfc_rule_list, list)\n \t\tigc_del_nfc_rule(adapter, rule);\n \n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n }\n \n /**\n@@ -2584,24 +2584,24 @@ static void igc_restore_nfc_rules(struct igc_adapter *adapter)\n {\n \tstruct igc_nfc_rule *rule;\n \n-\tspin_lock(&adapter->nfc_rule_lock);\n+\tmutex_lock(&adapter->nfc_rule_lock);\n \n \tlist_for_each_entry_reverse(rule, &adapter->nfc_rule_list, list)\n \t\tigc_enable_nfc_rule(adapter, rule);\n \n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n }\n \n static void igc_nfc_rule_exit(struct igc_adapter *adapter)\n {\n \tstruct igc_nfc_rule *rule;\n \n-\tspin_lock(&adapter->nfc_rule_lock);\n+\tmutex_lock(&adapter->nfc_rule_lock);\n \n \tlist_for_each_entry(rule, &adapter->nfc_rule_list, list)\n \t\tigc_disable_nfc_rule(adapter, rule);\n \n-\tspin_unlock(&adapter->nfc_rule_lock);\n+\tmutex_unlock(&adapter->nfc_rule_lock);\n }\n \n static int igc_uc_sync(struct net_device *netdev, const unsigned char *addr)\n@@ -3574,7 +3574,7 @@ static int igc_sw_init(struct igc_adapter *adapter)\n \t\t\t\tVLAN_HLEN;\n \tadapter->min_frame_size = ETH_ZLEN + ETH_FCS_LEN;\n \n-\tspin_lock_init(&adapter->nfc_rule_lock);\n+\tmutex_init(&adapter->nfc_rule_lock);\n \tINIT_LIST_HEAD(&adapter->nfc_rule_list);\n \tadapter->nfc_rule_count = 0;\n \n",
    "prefixes": [
        "18/19"
    ]
}