get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 1126498,
    "url": "http://patchwork.ozlabs.org/api/patches/1126498/?format=api",
    "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/patch/20190702122259.79070-4-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": "<20190702122259.79070-4-alice.michael@intel.com>",
    "list_archive_url": null,
    "date": "2019-07-02T12:22:54",
    "name": "[next,S7,4/9] i40e: don't report link up for a VF who hasn't enabled queues",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "3346b8ca567599a16a6b3183282bcffdd2c11508",
    "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/20190702122259.79070-4-alice.michael@intel.com/mbox/",
    "series": [
        {
            "id": 117390,
            "url": "http://patchwork.ozlabs.org/api/series/117390/?format=api",
            "web_url": "http://patchwork.ozlabs.org/project/intel-wired-lan/list/?series=117390",
            "date": "2019-07-02T12:22:53",
            "name": "[next,S7,1/9] i40e: fix incorrect ethtool statistics veb and veb.tc_",
            "version": 1,
            "mbox": "http://patchwork.ozlabs.org/series/117390/mbox/"
        }
    ],
    "comments": "http://patchwork.ozlabs.org/api/patches/1126498/comments/",
    "check": "pending",
    "checks": "http://patchwork.ozlabs.org/api/patches/1126498/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 45dbmn3dtrz9s4Y\n\tfor <incoming@patchwork.ozlabs.org>;\n\tWed,  3 Jul 2019 06:43:37 +1000 (AEST)",
            "from localhost (localhost [127.0.0.1])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id E42948672C;\n\tTue,  2 Jul 2019 20:43:35 +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 V0gLMjP+7Km2; Tue,  2 Jul 2019 20:43:32 +0000 (UTC)",
            "from ash.osuosl.org (ash.osuosl.org [140.211.166.34])\n\tby whitealder.osuosl.org (Postfix) with ESMTP id 4C3D086E6E;\n\tTue,  2 Jul 2019 20:43:32 +0000 (UTC)",
            "from hemlock.osuosl.org (smtp2.osuosl.org [140.211.166.133])\n\tby ash.osuosl.org (Postfix) with ESMTP id 8702B1BF589\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue,  2 Jul 2019 20:43:31 +0000 (UTC)",
            "from localhost (localhost [127.0.0.1])\n\tby hemlock.osuosl.org (Postfix) with ESMTP id 80C91879FD\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue,  2 Jul 2019 20:43:31 +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 1VLzzQIhOxqH for <intel-wired-lan@lists.osuosl.org>;\n\tTue,  2 Jul 2019 20:43:22 +0000 (UTC)",
            "from mga01.intel.com (mga01.intel.com [192.55.52.88])\n\tby hemlock.osuosl.org (Postfix) with ESMTPS id D964D87AEE\n\tfor <intel-wired-lan@lists.osuosl.org>;\n\tTue,  2 Jul 2019 20:43:21 +0000 (UTC)",
            "from fmsmga002.fm.intel.com ([10.253.24.26])\n\tby fmsmga101.fm.intel.com with ESMTP; 02 Jul 2019 13:43:20 -0700",
            "from alicemic-1.jf.intel.com ([10.166.17.62])\n\tby fmsmga002.fm.intel.com with ESMTP; 02 Jul 2019 13:43:20 -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.63,444,1557212400\"; d=\"scan'208\";a=\"190805457\"",
        "From": "Alice Michael <alice.michael@intel.com>",
        "To": "alice.michael@intel.com,\n\tintel-wired-lan@lists.osuosl.org",
        "Date": "Tue,  2 Jul 2019 08:22:54 -0400",
        "Message-Id": "<20190702122259.79070-4-alice.michael@intel.com>",
        "X-Mailer": "git-send-email 2.21.0",
        "In-Reply-To": "<20190702122259.79070-1-alice.michael@intel.com>",
        "References": "<20190702122259.79070-1-alice.michael@intel.com>",
        "MIME-Version": "1.0",
        "Subject": "[Intel-wired-lan] [next PATCH S7 4/9] i40e: don't report link up\n\tfor a VF who hasn't enabled queues",
        "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>",
        "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\nCommit d3d657a90850 (\"i40e: update VFs of link state after\nGET_VF_RESOURCES\") modified the PF driver to notify a VF of\nits link status immediately after it requests resources.\n\nThis was intended to fix reporting on VF drivers, so that they would\nproperly report link status.\n\nHowever, some older VF drivers do not respond well to receiving a link\nup notification before queues are enabled. This can cause their state\nmachine to think that it is safe to send traffic. This results in a Tx\nhang on the VF.\n\nMore recent versions of the old i40evf and all versions of iavf are\nresilient to these early link status messages. However, if a VM happens\nto run an older version of the VF driver, this can be problematic.\n\nRecord whether the PF has actually enabled queues for the VF. When\nreporting link status, always report link down if the queues aren't\nenabled. In this way, the VF driver will never receive a link up\nnotification until after its queues are enabled.\n\nSigned-off-by: Jacob Keller <jacob.e.keller@intel.com>\n---\n drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 13 ++++++++++++-\n drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h |  1 +\n 2 files changed, 13 insertions(+), 1 deletion(-)",
    "diff": "diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\nindex 21f7ac514d1f..bffdea629982 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c\n@@ -55,7 +55,12 @@ static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)\n \n \tpfe.event = VIRTCHNL_EVENT_LINK_CHANGE;\n \tpfe.severity = PF_EVENT_SEVERITY_INFO;\n-\tif (vf->link_forced) {\n+\n+\t/* Always report link is down if the VF queues aren't enabled */\n+\tif (!vf->queues_enabled) {\n+\t\tpfe.event_data.link_event.link_status = false;\n+\t\tpfe.event_data.link_event.link_speed = 0;\n+\t} else if (vf->link_forced) {\n \t\tpfe.event_data.link_event.link_status = vf->link_up;\n \t\tpfe.event_data.link_event.link_speed =\n \t\t\t(vf->link_up ? VIRTCHNL_LINK_SPEED_40GB : 0);\n@@ -65,6 +70,7 @@ static void i40e_vc_notify_vf_link_state(struct i40e_vf *vf)\n \t\tpfe.event_data.link_event.link_speed =\n \t\t\ti40e_virtchnl_link_speed(ls->link_speed);\n \t}\n+\n \ti40e_aq_send_msg_to_vf(hw, abs_vf_id, VIRTCHNL_OP_EVENT,\n \t\t\t       0, (u8 *)&pfe, sizeof(pfe), NULL);\n }\n@@ -2364,6 +2370,8 @@ static int i40e_vc_enable_queues_msg(struct i40e_vf *vf, u8 *msg)\n \t\t}\n \t}\n \n+\tvf->queues_enabled = true;\n+\n error_param:\n \t/* send the response to the VF */\n \treturn i40e_vc_send_resp_to_vf(vf, VIRTCHNL_OP_ENABLE_QUEUES,\n@@ -2385,6 +2393,9 @@ static int i40e_vc_disable_queues_msg(struct i40e_vf *vf, u8 *msg)\n \tstruct i40e_pf *pf = vf->pf;\n \ti40e_status aq_ret = 0;\n \n+\t/* Immediately mark queues as disabled */\n+\tvf->queues_enabled = false;\n+\n \tif (!test_bit(I40E_VF_STATE_ACTIVE, &vf->vf_states)) {\n \t\taq_ret = I40E_ERR_PARAM;\n \t\tgoto error_param;\ndiff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h\nindex f65cc0c16550..7164b9bb294f 100644\n--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h\n+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.h\n@@ -99,6 +99,7 @@ struct i40e_vf {\n \tunsigned int tx_rate;\t/* Tx bandwidth limit in Mbps */\n \tbool link_forced;\n \tbool link_up;\t\t/* only valid if VF link is forced */\n+\tbool queues_enabled;\t/* true if the VF queues are enabled */\n \tbool spoofchk;\n \tu16 num_mac;\n \tu16 num_vlan;\n",
    "prefixes": [
        "next",
        "S7",
        "4/9"
    ]
}