get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 93277,
    "url": "https://patches.dpdk.org/api/patches/93277/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/1621039958-34847-5-git-send-email-humin29@huawei.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": "<1621039958-34847-5-git-send-email-humin29@huawei.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1621039958-34847-5-git-send-email-humin29@huawei.com",
    "date": "2021-05-15T00:52:36",
    "name": "[4/6] net/hns3: fix DCB configuration",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "af05ace486ad81794e014dd261f897dc8a765c67",
    "submitter": {
        "id": 1944,
        "url": "https://patches.dpdk.org/api/people/1944/?format=api",
        "name": "humin (Q)",
        "email": "humin29@huawei.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/1621039958-34847-5-git-send-email-humin29@huawei.com/mbox/",
    "series": [
        {
            "id": 16997,
            "url": "https://patches.dpdk.org/api/series/16997/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=16997",
            "date": "2021-05-15T00:52:35",
            "name": "bugfix for hns3 PMD",
            "version": 1,
            "mbox": "https://patches.dpdk.org/series/16997/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/93277/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/93277/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 mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 2DD1BA034F;\n\tSat, 15 May 2021 02:53:32 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 046FE4111D;\n\tSat, 15 May 2021 02:53:02 +0200 (CEST)",
            "from szxga06-in.huawei.com (szxga06-in.huawei.com [45.249.212.32])\n by mails.dpdk.org (Postfix) with ESMTP id 04E2D4068A\n for <dev@dpdk.org>; Sat, 15 May 2021 02:52:54 +0200 (CEST)",
            "from dggems705-chm.china.huawei.com (unknown [172.30.72.58])\n by szxga06-in.huawei.com (SkyGuard) with ESMTP id 4Fhmz15hf3zldg9\n for <dev@dpdk.org>; Sat, 15 May 2021 08:50:37 +0800 (CST)",
            "from dggeme756-chm.china.huawei.com (10.3.19.102) by\n dggems705-chm.china.huawei.com (10.3.19.182) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id\n 15.1.2176.2; Sat, 15 May 2021 08:52:50 +0800",
            "from localhost.localdomain (10.69.192.56) by\n dggeme756-chm.china.huawei.com (10.3.19.102) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id\n 15.1.2176.2; Sat, 15 May 2021 08:52:50 +0800"
        ],
        "From": "\"Min Hu (Connor)\" <humin29@huawei.com>",
        "To": "<dev@dpdk.org>",
        "CC": "<ferruh.yigit@intel.com>",
        "Date": "Sat, 15 May 2021 08:52:36 +0800",
        "Message-ID": "<1621039958-34847-5-git-send-email-humin29@huawei.com>",
        "X-Mailer": "git-send-email 2.7.4",
        "In-Reply-To": "<1621039958-34847-1-git-send-email-humin29@huawei.com>",
        "References": "<1621039958-34847-1-git-send-email-humin29@huawei.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.69.192.56]",
        "X-ClientProxiedBy": "dggems702-chm.china.huawei.com (10.3.19.179) To\n dggeme756-chm.china.huawei.com (10.3.19.102)",
        "X-CFilter-Loop": "Reflected",
        "Subject": "[dpdk-dev] [PATCH 4/6] net/hns3: fix DCB configuration",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "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: Huisong Li <lihuisong@huawei.com>\n\nCurrently, the DCB configuration takes effect in the dev_start stage, and\nthe mapping between TCs and queues are also updated in this stage.\nHowever, the DCB configuration is delivered in the dev_configure stage.\nIf the configuration fails, it should be intercepted in this stage. If the\nconfiguration succeeds, the user should be able to obtain the\ncorresponding updated information, such as the mapping between TCs and\nqueues. So this patch moves DCB configuration to dev_configure.\n\nFixes: 62e3ccc2b94c (\"net/hns3: support flow control\")\nCc: stable@dpdk.org\n\nSigned-off-by: Huisong Li <lihuisong@huawei.com>\nSigned-off-by: Min Hu (Connor) <humin29@huawei.com>\n---\n drivers/net/hns3/hns3_dcb.c    | 35 +++++---------------------\n drivers/net/hns3/hns3_dcb.h    |  2 +-\n drivers/net/hns3/hns3_ethdev.c | 56 +++++++++++++++++++++++-------------------\n 3 files changed, 38 insertions(+), 55 deletions(-)",
    "diff": "diff --git a/drivers/net/hns3/hns3_dcb.c b/drivers/net/hns3/hns3_dcb.c\nindex 8fcb284..1cb6adb 100644\n--- a/drivers/net/hns3/hns3_dcb.c\n+++ b/drivers/net/hns3/hns3_dcb.c\n@@ -1615,8 +1615,7 @@ hns3_dcb_configure(struct hns3_adapter *hns)\n \tint ret;\n \n \thns3_dcb_cfg_validate(hns, &num_tc, &map_changed);\n-\tif (map_changed ||\n-\t    __atomic_load_n(&hw->reset.resetting,  __ATOMIC_RELAXED)) {\n+\tif (map_changed) {\n \t\tret = hns3_dcb_info_update(hns, num_tc);\n \t\tif (ret) {\n \t\t\thns3_err(hw, \"dcb info update failed: %d\", ret);\n@@ -1712,14 +1711,18 @@ hns3_dcb_init(struct hns3_hw *hw)\n \treturn 0;\n }\n \n-static int\n+int\n hns3_update_queue_map_configure(struct hns3_adapter *hns)\n {\n \tstruct hns3_hw *hw = &hns->hw;\n+\tenum rte_eth_rx_mq_mode mq_mode = hw->data->dev_conf.rxmode.mq_mode;\n \tuint16_t nb_rx_q = hw->data->nb_rx_queues;\n \tuint16_t nb_tx_q = hw->data->nb_tx_queues;\n \tint ret;\n \n+\tif ((uint32_t)mq_mode & ETH_MQ_RX_DCB_FLAG)\n+\t\treturn 0;\n+\n \tret = hns3_dcb_update_tc_queue_mapping(hw, nb_rx_q, nb_tx_q);\n \tif (ret) {\n \t\thns3_err(hw, \"failed to update tc queue mapping, ret = %d.\",\n@@ -1733,32 +1736,6 @@ hns3_update_queue_map_configure(struct hns3_adapter *hns)\n \treturn ret;\n }\n \n-int\n-hns3_dcb_cfg_update(struct hns3_adapter *hns)\n-{\n-\tstruct hns3_hw *hw = &hns->hw;\n-\tenum rte_eth_rx_mq_mode mq_mode = hw->data->dev_conf.rxmode.mq_mode;\n-\tint ret;\n-\n-\tif ((uint32_t)mq_mode & ETH_MQ_RX_DCB_FLAG) {\n-\t\tret = hns3_dcb_configure(hns);\n-\t\tif (ret)\n-\t\t\thns3_err(hw, \"Failed to config dcb: %d\", ret);\n-\t} else {\n-\t\t/*\n-\t\t * Update queue map without PFC configuration,\n-\t\t * due to queues reconfigured by user.\n-\t\t */\n-\t\tret = hns3_update_queue_map_configure(hns);\n-\t\tif (ret)\n-\t\t\thns3_err(hw,\n-\t\t\t\t \"Failed to update queue mapping configure: %d\",\n-\t\t\t\t ret);\n-\t}\n-\n-\treturn ret;\n-}\n-\n static void\n hns3_get_fc_mode(struct hns3_hw *hw, enum rte_eth_fc_mode mode)\n {\ndiff --git a/drivers/net/hns3/hns3_dcb.h b/drivers/net/hns3/hns3_dcb.h\nindex cd8d0b7..f378bd4 100644\n--- a/drivers/net/hns3/hns3_dcb.h\n+++ b/drivers/net/hns3/hns3_dcb.h\n@@ -207,7 +207,7 @@ int hns3_dcb_pfc_enable(struct rte_eth_dev *dev,\n int hns3_queue_to_tc_mapping(struct hns3_hw *hw, uint16_t nb_rx_q,\n \t\t\t     uint16_t nb_tx_q);\n \n-int hns3_dcb_cfg_update(struct hns3_adapter *hns);\n+int hns3_update_queue_map_configure(struct hns3_adapter *hns);\n int hns3_port_shaper_update(struct hns3_hw *hw, uint32_t speed);\n int hns3_pg_shaper_rate_cfg(struct hns3_hw *hw, uint8_t pg_id, uint32_t rate);\n int hns3_pri_shaper_rate_cfg(struct hns3_hw *hw, uint8_t tc_no, uint32_t rate);\ndiff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c\nindex f49f220..2049130 100644\n--- a/drivers/net/hns3/hns3_ethdev.c\n+++ b/drivers/net/hns3/hns3_ethdev.c\n@@ -2274,24 +2274,6 @@ hns3_check_mq_mode(struct rte_eth_dev *dev)\n }\n \n static int\n-hns3_check_dcb_cfg(struct rte_eth_dev *dev)\n-{\n-\tstruct hns3_hw *hw = HNS3_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n-\n-\tif (!hns3_dev_dcb_supported(hw)) {\n-\t\thns3_err(hw, \"this port does not support dcb configurations.\");\n-\t\treturn -EOPNOTSUPP;\n-\t}\n-\n-\tif (hw->current_fc_status == HNS3_FC_STATUS_MAC_PAUSE) {\n-\t\thns3_err(hw, \"MAC pause enabled, cannot config dcb info.\");\n-\t\treturn -EOPNOTSUPP;\n-\t}\n-\n-\treturn 0;\n-}\n-\n-static int\n hns3_bind_ring_with_vector(struct hns3_hw *hw, uint16_t vector_id, bool en,\n \t\t\t   enum hns3_ring_type queue_type, uint16_t queue_id)\n {\n@@ -2427,6 +2409,30 @@ hns3_refresh_mtu(struct rte_eth_dev *dev, struct rte_eth_conf *conf)\n }\n \n static int\n+hns3_setup_dcb(struct rte_eth_dev *dev)\n+{\n+\tstruct hns3_adapter *hns = dev->data->dev_private;\n+\tstruct hns3_hw *hw = &hns->hw;\n+\tint ret;\n+\n+\tif (!hns3_dev_dcb_supported(hw)) {\n+\t\thns3_err(hw, \"this port does not support dcb configurations.\");\n+\t\treturn -EOPNOTSUPP;\n+\t}\n+\n+\tif (hw->current_fc_status == HNS3_FC_STATUS_MAC_PAUSE) {\n+\t\thns3_err(hw, \"MAC pause enabled, cannot config dcb info.\");\n+\t\treturn -EOPNOTSUPP;\n+\t}\n+\n+\tret = hns3_dcb_configure(hns);\n+\tif (ret)\n+\t\thns3_err(hw, \"failed to config dcb: %d\", ret);\n+\n+\treturn ret;\n+}\n+\n+static int\n hns3_check_link_speed(struct hns3_hw *hw, uint32_t link_speeds)\n {\n \tint ret;\n@@ -2506,7 +2512,7 @@ hns3_dev_configure(struct rte_eth_dev *dev)\n \t\tgoto cfg_err;\n \n \tif ((uint32_t)mq_mode & ETH_MQ_RX_DCB_FLAG) {\n-\t\tret = hns3_check_dcb_cfg(dev);\n+\t\tret = hns3_setup_dcb(dev);\n \t\tif (ret)\n \t\t\tgoto cfg_err;\n \t}\n@@ -5574,14 +5580,14 @@ hns3_do_start(struct hns3_adapter *hns, bool reset_queue)\n \tstruct hns3_hw *hw = &hns->hw;\n \tint ret;\n \n-\tret = hns3_dcb_cfg_update(hns);\n-\tif (ret)\n+\tret = hns3_update_queue_map_configure(hns);\n+\tif (ret) {\n+\t\thns3_err(hw, \"failed to update queue mapping configuration, ret = %d\",\n+\t\t\t ret);\n \t\treturn ret;\n+\t}\n \n-\t/*\n-\t * The hns3_dcb_cfg_update may configure TM module, so\n-\t * hns3_tm_conf_update must called later.\n-\t */\n+\t/* Note: hns3_tm_conf_update must be called after configuring DCB. */\n \tret = hns3_tm_conf_update(hw);\n \tif (ret) {\n \t\tPMD_INIT_LOG(ERR, \"failed to update tm conf, ret = %d.\", ret);\n",
    "prefixes": [
        "4/6"
    ]
}