get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 854008,
    "url": "http://patchwork.ozlabs.org/api/patches/854008/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20171229135034.14504-1-alice.michael@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": "<20171229135034.14504-1-alice.michael@intel.com>",
    "list_archive_url": null,
    "date": "2017-12-29T13:50:34",
    "name": "[next,S85-V1,08/14] i40e: use changed_flags to check I40E_FLAG_DISABLE_FW_LLDP",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "28a494447c3bfe404ae3c56f29be2fc07f6685a1",
    "submitter": {
        "id": 71123,
        "url": "http://patchwork.ozlabs.org/api/people/71123/?format=api",
        "name": "Michael, Alice",
        "email": "alice.michael@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/20171229135034.14504-1-alice.michael@intel.com/mbox/",
    "series": [
        {
            "id": 20665,
            "url": "http://patchwork.ozlabs.org/api/series/20665/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=20665",
            "date": "2017-12-29T13:48:33",
            "name": "[next,S85-V1,01/14] i40e: fix typo in function description",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/20665/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/854008/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/854008/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>)",
        "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 3z7gRz0qWnz9s7G\n\tfor <incoming@patchwork.ozlabs.org>;\n\tSat, 30 Dec 2017 08:57:35 +1100 (AEDT)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id A3729876C5;\n\tFri, 29 Dec 2017 21:57:33 +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 21aecx041Txw; Fri, 29 Dec 2017 21:57:32 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id A542A8769B;\n\tFri, 29 Dec 2017 21:57:32 +0000 (UTC)",
            "from silver.osuosl.org (smtp3.osuosl.org [140.211.166.136])\n\tby ash.osuosl.org (Postfix) with ESMTP id EA2441C0180\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:57:31 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby silver.osuosl.org (Postfix) with ESMTP id E6A66292AA\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:57:31 +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 X7yZeh1BZuiX for <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:57:31 +0000 (UTC)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n\tby silver.osuosl.org (Postfix) with ESMTPS id 48377253F9\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tFri, 29 Dec 2017 21:57:31 +0000 (UTC)",
            "from fmsmga005.fm.intel.com ([10.253.24.32])\n\tby orsmga102.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t29 Dec 2017 13:57:29 -0800",
            "from alicemic-2.jf.intel.com ([10.166.16.121])\n\tby fmsmga005.fm.intel.com with ESMTP; 29 Dec 2017 13:57:30 -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.45,478,1508828400\"; d=\"scan'208\";a=\"190738098\"",
        "From": "Alice Michael <alice.michael@intel.com>",
        "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org",
        "Date": "Fri, 29 Dec 2017 08:50:34 -0500",
        "Message-Id": "<20171229135034.14504-1-alice.michael@intel.com>",
        "X-Mailer": "git-send-email 2.9.5",
        "Subject": "[Intel-wired-lan] [next PATCH S85-V1 08/14] i40e: use changed_flags\n\tto check I40E_FLAG_DISABLE_FW_LLDP",
        "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>",
        "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: Alan Brady <alan.brady@intel.com>\n\nCurrently in i40e_set_priv_flags we use new_flags to check for the\nI40E_FLAG_DISABLE_FW_LLDP flag.  This is an issue for a few a reasons.\nDISABLE_FW_LLDP is persistent across reboots/driver reloads.  This means\nwe need some way to detect if FW LLDP is enabled on init.  We do this by\ntrying to init_dcb and if it fails with EPERM we know LLDP is disabled\nin FW.\n\nThis could be a problem on older FW versions or NPAR enabled PFs because\nthere are situations where the FW could disable LLDP, but they do _not_\nsupport using this flag to change it.  If we do end up in this\nsituation, the flag will be set, then when the user tries to change any\npriv flags, the driver thinks the user is trying to disable FW LLDP on a\nFW that doesn't support it and essentially forbids any priv flag\nchanges.\n\nThe fix is simple, instead of checking if this flag is set, we should be\nchecking if the user is trying to _change_ the flag on unsupported FW\nversions.\n\nThis patch also adds a comment explaining that the cmpxchg is the point\nof no return.  Once we put the new flags into pf->flags we can't back\nout.\n\nSigned-off-by: Alan Brady <alan.brady@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_ethtool.c | 22 +++++++++++++++-------\n 1 file changed, 15 insertions(+), 7 deletions(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\nindex 7267a93..5b18e20 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_ethtool.c\n@@ -4406,6 +4406,8 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \t}\n \n flags_complete:\n+\tchanged_flags = orig_flags ^ new_flags;\n+\n \t/* Before we finalize any flag changes, we need to perform some\n \t * checks to ensure that the changes are supported and safe.\n \t */\n@@ -4415,13 +4417,17 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \t    !(pf->hw_features & I40E_HW_ATR_EVICT_CAPABLE))\n \t\treturn -EOPNOTSUPP;\n \n-\t/* Disable FW LLDP not supported if NPAR active or if FW\n-\t * API version < 1.7\n+\t/* If the driver detected FW LLDP was disabled on init, this flag could\n+\t * be set, however we do not support _changing_ the flag if NPAR is\n+\t * enabled or FW API version < 1.7.  There are situations where older\n+\t * FW versions/NPAR enabled PFs could disable LLDP, however we _must_\n+\t * not allow the user to enable/disable LLDP with this flag on\n+\t * unsupported FW verions.\n \t */\n-\tif (new_flags & I40E_FLAG_DISABLE_FW_LLDP) {\n+\tif (changed_flags & I40E_FLAG_DISABLE_FW_LLDP) {\n \t\tif (pf->hw.func_caps.npar_enable) {\n \t\t\tdev_warn(&pf->pdev->dev,\n-\t\t\t\t \"Unable to stop FW LLDP if NPAR active\\n\");\n+\t\t\t\t \"Unable to change FW LLDP if NPAR active\\n\");\n \t\t\treturn -EOPNOTSUPP;\n \t\t}\n \n@@ -4429,7 +4435,7 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \t\t    (pf->hw.aq.api_maj_ver == 1 &&\n \t\t     pf->hw.aq.api_min_ver < 7)) {\n \t\t\tdev_warn(&pf->pdev->dev,\n-\t\t\t\t \"FW ver does not support stopping FW LLDP\\n\");\n+\t\t\t\t \"FW ver does not support changing FW LLDP\\n\");\n \t\t\treturn -EOPNOTSUPP;\n \t\t}\n \t}\n@@ -4439,6 +4445,10 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \t * something else has modified the flags variable since we copied it\n \t * originally. We'll just punt with an error and log something in the\n \t * message buffer.\n+\t *\n+\t * This is the point of no return for this function.  We need to have\n+\t * checked any discrepencies or misconfigurations and returned\n+\t * EOPNOTSUPP before updating pf->flags here.\n \t */\n \tif (cmpxchg64(&pf->flags, orig_flags, new_flags) != orig_flags) {\n \t\tdev_warn(&pf->pdev->dev,\n@@ -4446,8 +4456,6 @@ static int i40e_set_priv_flags(struct net_device *dev, u32 flags)\n \t\treturn -EAGAIN;\n \t}\n \n-\tchanged_flags = orig_flags ^ new_flags;\n-\n \t/* Process any additional changes needed as a result of flag changes.\n \t * The changed_flags value reflects the list of bits that were\n \t * changed in the code above.\n",
    "prefixes": [
        "next",
        "S85-V1",
        "08/14"
    ]
}