get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 79807,
    "url": "https://patches.dpdk.org/api/patches/79807/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20201006160156.32228-1-kalesh-anakkur.purayil@broadcom.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20201006160156.32228-1-kalesh-anakkur.purayil@broadcom.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20201006160156.32228-1-kalesh-anakkur.purayil@broadcom.com",
    "date": "2020-10-06T16:01:56",
    "name": "net/bnxt: fix link update op",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "bec5f9ee8d89c491f8b86eb50c0ca9ab0b0e916e",
    "submitter": {
        "id": 1479,
        "url": "https://patches.dpdk.org/api/people/1479/?format=api",
        "name": "Kalesh A P",
        "email": "kalesh-anakkur.purayil@broadcom.com"
    },
    "delegate": {
        "id": 1766,
        "url": "https://patches.dpdk.org/api/users/1766/?format=api",
        "username": "ajitkhaparde",
        "first_name": "Ajit",
        "last_name": "Khaparde",
        "email": "ajit.khaparde@broadcom.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20201006160156.32228-1-kalesh-anakkur.purayil@broadcom.com/mbox/",
    "series": [
        {
            "id": 12723,
            "url": "https://patches.dpdk.org/api/series/12723/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=12723",
            "date": "2020-10-06T16:01:56",
            "name": "net/bnxt: fix link update op",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/12723/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/79807/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/79807/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 5A03FA04BB;\n\tTue,  6 Oct 2020 17:47:28 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id C9A081B9E8;\n\tTue,  6 Oct 2020 17:47:26 +0200 (CEST)",
            "from relay.smtp-ext.broadcom.com (saphodev.broadcom.com\n [192.19.232.172]) by dpdk.org (Postfix) with ESMTP id C15771B9E0\n for <dev@dpdk.org>; Tue,  6 Oct 2020 17:47:24 +0200 (CEST)",
            "from dhcp-10-123-153-22.dhcp.broadcom.net\n (bgccx-dev-host-lnx2.bec.broadcom.net [10.123.153.22])\n by relay.smtp-ext.broadcom.com (Postfix) with ESMTP id 5214E827E;\n Tue,  6 Oct 2020 08:47:22 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 relay.smtp-ext.broadcom.com 5214E827E",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/simple; d=broadcom.com;\n s=dkimrelay; t=1601999243;\n bh=K0LNkvSC5TKlsGQ3bHma48VmYRLbQpSHKnb+sla0Tmg=;\n h=From:To:Cc:Subject:Date:From;\n b=VCABFZ0O5Lw6GoldmOXEplDAHFLzUANddFRPG3KmXpoir8+j/j+gGJhJ0SRdlqiWc\n y8M930KZrZYmW58ELF/l6QxNozYBkiSIFHR+SNgYthkhNZCji/bTIm8qXdEq9c8Xpk\n eM6+OBcyCdnIczCD6zdj213QUK19zP+eiwGYPTDc=",
        "From": "Kalesh A P <kalesh-anakkur.purayil@broadcom.com>",
        "To": "dev@dpdk.org",
        "Cc": "ajit.khaparde@broadcom.com",
        "Date": "Tue,  6 Oct 2020 21:31:56 +0530",
        "Message-Id": "<20201006160156.32228-1-kalesh-anakkur.purayil@broadcom.com>",
        "X-Mailer": "git-send-email 2.10.1",
        "Subject": "[dpdk-dev]  [PATCH] net/bnxt: fix link update op",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\n\n1. When port is stopped, we can forcibly set the link status for the\n   device to down.\n2. VFs and MH PFs do not have the privilege to bring the link down.\n   As a result driver prints \"Link Up\" when port is stopped.\n3. When driver receives link status/speed/config async event from fw,\n   driver invokes bnxt_link_update() with exp_link_status as ETH_LINK_UP.\n   This is not logically correct as the async event could be for Link up\n   or link down or for speed change.\n\nFixes: 074cacb9907a (\"net/bnxt: fix link during port toggle\")\nCc: stable@dpdk.org\n\nSigned-off-by: Kalesh AP <kalesh-anakkur.purayil@broadcom.com>\nReviewed-by: Somnath Kotur <somnath.kotur@broadcom.com>\nReviewed-by: Ajit Kumar Khaparde <ajit.khaparde@broadcom.com>\n---\n drivers/net/bnxt/bnxt.h        |  4 ++--\n drivers/net/bnxt/bnxt_cpr.c    |  2 +-\n drivers/net/bnxt/bnxt_ethdev.c | 40 ++++++++++++++++++++--------------------\n 3 files changed, 23 insertions(+), 23 deletions(-)",
    "diff": "diff --git a/drivers/net/bnxt/bnxt.h b/drivers/net/bnxt/bnxt.h\nindex 19d4774..fafd61c 100644\n--- a/drivers/net/bnxt/bnxt.h\n+++ b/drivers/net/bnxt/bnxt.h\n@@ -268,8 +268,8 @@ struct bnxt_pf_info {\n };\n \n /* Max wait time for link up is 10s and link down is 500ms */\n-#define BNXT_LINK_UP_WAIT_CNT\t200\n-#define BNXT_LINK_DOWN_WAIT_CNT\t10\n+#define BNXT_MAX_LINK_WAIT_CNT\t200\n+#define BNXT_MIN_LINK_WAIT_CNT\t10\n #define BNXT_LINK_WAIT_INTERVAL\t50\n struct bnxt_link_info {\n \tuint32_t\t\tphy_flags;\ndiff --git a/drivers/net/bnxt/bnxt_cpr.c b/drivers/net/bnxt/bnxt_cpr.c\nindex 8311e26..a3a7e6a 100644\n--- a/drivers/net/bnxt/bnxt_cpr.c\n+++ b/drivers/net/bnxt/bnxt_cpr.c\n@@ -111,7 +111,7 @@ void bnxt_handle_async_event(struct bnxt *bp,\n \tcase HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CHANGE:\n \tcase HWRM_ASYNC_EVENT_CMPL_EVENT_ID_LINK_SPEED_CFG_CHANGE:\n \t\t/* FALLTHROUGH */\n-\t\tbnxt_link_update(bp->eth_dev, 0, ETH_LINK_UP);\n+\t\tbnxt_link_update_op(bp->eth_dev, 0);\n \t\tbreak;\n \tcase HWRM_ASYNC_EVENT_CMPL_EVENT_ID_PF_DRVR_UNLOAD:\n \t\tPMD_DRV_LOG(INFO, \"Async event: PF driver unloaded\\n\");\ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex b99c712..268b8fe 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -1279,7 +1279,7 @@ static int bnxt_dev_start_op(struct rte_eth_dev *eth_dev)\n \teth_dev->data->scattered_rx = bnxt_scattered_rx(eth_dev);\n \teth_dev->data->dev_started = 1;\n \n-\tbnxt_link_update(eth_dev, 1, ETH_LINK_UP);\n+\tbnxt_link_update_op(eth_dev, 1);\n \n \tif (rx_offloads & DEV_RX_OFFLOAD_VLAN_FILTER)\n \t\tvlan_mask |= ETH_VLAN_FILTER_MASK;\n@@ -1347,6 +1347,7 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)\n \tstruct bnxt *bp = eth_dev->data->dev_private;\n \tstruct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev);\n \tstruct rte_intr_handle *intr_handle = &pci_dev->intr_handle;\n+\tstruct rte_eth_link link;\n \n \teth_dev->data->dev_started = 0;\n \teth_dev->data->scattered_rx = 0;\n@@ -1369,15 +1370,15 @@ static void bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)\n \tbnxt_cancel_fw_health_check(bp);\n \n \t/* Do not bring link down during reset recovery */\n-\tif (!is_bnxt_in_error(bp))\n+\tif (!is_bnxt_in_error(bp)) {\n \t\tbnxt_dev_set_link_down_op(eth_dev);\n-\n-\t/* Wait for link to be reset and the async notification to process.\n-\t * During reset recovery, there is no need to wait and\n-\t * VF/NPAR functions do not have privilege to change PHY config.\n-\t */\n-\tif (!is_bnxt_in_error(bp) && BNXT_SINGLE_PF(bp))\n-\t\tbnxt_link_update(eth_dev, 1, ETH_LINK_DOWN);\n+\t\t/* Wait for link to be reset */\n+\t\tif (BNXT_SINGLE_PF(bp))\n+\t\t\trte_delay_ms(500);\n+\t\t/* clear the recorded link status */\n+\t\tmemset(&link, 0, sizeof(link));\n+\t\trte_eth_linkstatus_set(eth_dev, &link);\n+\t}\n \n \t/* Clean queue intr-vector mapping */\n \trte_intr_efd_disable(intr_handle);\n@@ -1552,14 +1553,13 @@ static int bnxt_mac_addr_add_op(struct rte_eth_dev *eth_dev,\n \treturn rc;\n }\n \n-int bnxt_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete,\n-\t\t     bool exp_link_status)\n+int bnxt_link_update_op(struct rte_eth_dev *eth_dev, int wait_to_complete)\n {\n \tint rc = 0;\n \tstruct bnxt *bp = eth_dev->data->dev_private;\n \tstruct rte_eth_link new;\n-\tint cnt = exp_link_status ? BNXT_LINK_UP_WAIT_CNT :\n-\t\t  BNXT_LINK_DOWN_WAIT_CNT;\n+\tint cnt = wait_to_complete ? BNXT_MAX_LINK_WAIT_CNT :\n+\t\t\tBNXT_MIN_LINK_WAIT_CNT;\n \n \trc = is_bnxt_in_error(bp);\n \tif (rc)\n@@ -1577,12 +1577,18 @@ int bnxt_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete,\n \t\t\tgoto out;\n \t\t}\n \n-\t\tif (!wait_to_complete || new.link_status == exp_link_status)\n+\t\tif (!wait_to_complete || new.link_status)\n \t\t\tbreak;\n \n \t\trte_delay_ms(BNXT_LINK_WAIT_INTERVAL);\n \t} while (cnt--);\n \n+\t/* Only single function PF can bring phy down.\n+\t * When port is stopped, report link down for VF/MH/NPAR functions.\n+\t */\n+\tif (!BNXT_SINGLE_PF(bp) && !eth_dev->data->dev_started)\n+\t\tmemset(&new, 0, sizeof(new));\n+\n out:\n \t/* Timed out or success */\n \tif (new.link_status != eth_dev->data->dev_link.link_status ||\n@@ -1599,12 +1605,6 @@ int bnxt_link_update(struct rte_eth_dev *eth_dev, int wait_to_complete,\n \treturn rc;\n }\n \n-int bnxt_link_update_op(struct rte_eth_dev *eth_dev,\n-\t\t\tint wait_to_complete)\n-{\n-\treturn bnxt_link_update(eth_dev, wait_to_complete, ETH_LINK_UP);\n-}\n-\n static int bnxt_promiscuous_enable_op(struct rte_eth_dev *eth_dev)\n {\n \tstruct bnxt *bp = eth_dev->data->dev_private;\n",
    "prefixes": []
}