get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 133967,
    "url": "http://patches.dpdk.org/api/patches/133967/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20231108034434.559030-6-haijie1@huawei.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20231108034434.559030-6-haijie1@huawei.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231108034434.559030-6-haijie1@huawei.com",
    "date": "2023-11-08T03:44:34",
    "name": "[5/5] net/hns3: refactor handle mailbox function",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "4482a75a3ade12a54e5518e2010f15d8d5d25133",
    "submitter": {
        "id": 2935,
        "url": "http://patches.dpdk.org/api/people/2935/?format=api",
        "name": "Jie Hai",
        "email": "haijie1@huawei.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20231108034434.559030-6-haijie1@huawei.com/mbox/",
    "series": [
        {
            "id": 30196,
            "url": "http://patches.dpdk.org/api/series/30196/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=30196",
            "date": "2023-11-08T03:44:29",
            "name": "net/hns3: fix and refactor mailbox code",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/30196/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/133967/comments/",
    "check": "warning",
    "checks": "http://patches.dpdk.org/api/patches/133967/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 7D394432CE;\n\tWed,  8 Nov 2023 04:49:26 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 8865642E09;\n\tWed,  8 Nov 2023 04:48:58 +0100 (CET)",
            "from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187])\n by mails.dpdk.org (Postfix) with ESMTP id 984F440279\n for <dev@dpdk.org>; Wed,  8 Nov 2023 04:48:51 +0100 (CET)",
            "from kwepemd100004.china.huawei.com (unknown [172.30.72.53])\n by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4SQ9zq5f0szfb3G;\n Wed,  8 Nov 2023 11:48:39 +0800 (CST)",
            "from localhost.localdomain (10.67.165.2) by\n kwepemd100004.china.huawei.com (7.221.188.31) with Microsoft SMTP Server\n (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id\n 15.2.1258.23; Wed, 8 Nov 2023 11:48:17 +0800"
        ],
        "From": "Jie Hai <haijie1@huawei.com>",
        "To": "<dev@dpdk.org>, Yisen Zhuang <yisen.zhuang@huawei.com>, Huisong Li\n <lihuisong@huawei.com>, Chunsong Feng <fengchunsong@huawei.com>, Hao Chen\n <chenh@yusur.tech>, \"Wei Hu (Xavier)\" <xavier.huwei@huawei.com>, \"Min Hu\n (Connor)\" <humin29@huawei.com>, Hongbo Zheng <zhenghongbo3@huawei.com>",
        "Subject": "[PATCH 5/5] net/hns3: refactor handle mailbox function",
        "Date": "Wed, 8 Nov 2023 11:44:34 +0800",
        "Message-ID": "<20231108034434.559030-6-haijie1@huawei.com>",
        "X-Mailer": "git-send-email 2.30.0",
        "In-Reply-To": "<20231108034434.559030-1-haijie1@huawei.com>",
        "References": "<20231108034434.559030-1-haijie1@huawei.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[10.67.165.2]",
        "X-ClientProxiedBy": "dggems702-chm.china.huawei.com (10.3.19.179) To\n kwepemd100004.china.huawei.com (7.221.188.31)",
        "X-CFilter-Loop": "Reflected",
        "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"
    },
    "content": "From: Dengdui Huang <huangdengdui@huawei.com>\n\nThe mailbox messages of the PF and VF are processed in\nthe same function. The PF and VF call the same function\nto process the messages. This code is excessive coupling\nand isn't good for maintenance. Therefore, this patch\nseparates the interfaces that handle PF mailbox message\nand handle VF mailbox message.\n\nFixes: 463e748964f5 (\"net/hns3: support mailbox\")\nFixes: 109e4dd1bd7a (\"net/hns3: get link state change through mailbox\")\nCc: stable@dpdk.org\n\nSigned-off-by: Dengdui Huang <huangdengdui@huawei.com>\nSigned-off-by: Jie Hai <haijie1@huawei.com>\n---\n drivers/net/hns3/hns3_ethdev.c    |  2 +-\n drivers/net/hns3/hns3_ethdev_vf.c |  4 +-\n drivers/net/hns3/hns3_mbx.c       | 69 ++++++++++++++++++++++++-------\n drivers/net/hns3/hns3_mbx.h       |  3 +-\n 4 files changed, 58 insertions(+), 20 deletions(-)",
    "diff": "diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c\nindex 941d047bf1bd..18543e88edc7 100644\n--- a/drivers/net/hns3/hns3_ethdev.c\n+++ b/drivers/net/hns3/hns3_ethdev.c\n@@ -380,7 +380,7 @@ hns3_interrupt_handler(void *param)\n \t\thns3_warn(hw, \"received reset interrupt\");\n \t\thns3_schedule_reset(hns);\n \t} else if (event_cause == HNS3_VECTOR0_EVENT_MBX) {\n-\t\thns3_dev_handle_mbx_msg(hw);\n+\t\thns3pf_handle_mbx_msg(hw);\n \t} else if (event_cause != HNS3_VECTOR0_EVENT_PTP) {\n \t\thns3_warn(hw, \"received unknown event: vector0_int_stat:0x%x \"\n \t\t\t  \"ras_int_stat:0x%x cmdq_int_stat:0x%x\",\ndiff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c\nindex 2da73857ac56..3ae4f965bb0b 100644\n--- a/drivers/net/hns3/hns3_ethdev_vf.c\n+++ b/drivers/net/hns3/hns3_ethdev_vf.c\n@@ -605,7 +605,7 @@ hns3vf_interrupt_handler(void *param)\n \t\thns3_schedule_reset(hns);\n \t\tbreak;\n \tcase HNS3VF_VECTOR0_EVENT_MBX:\n-\t\thns3_dev_handle_mbx_msg(hw);\n+\t\thns3vf_handle_mbx_msg(hw);\n \t\tbreak;\n \tdefault:\n \t\tbreak;\n@@ -655,7 +655,7 @@ hns3vf_get_push_lsc_cap(struct hns3_hw *hw)\n \t\t * driver has to actively handle the HNS3_MBX_LINK_STAT_CHANGE\n \t\t * mailbox from PF driver to get this capability.\n \t\t */\n-\t\thns3_dev_handle_mbx_msg(hw);\n+\t\thns3vf_handle_mbx_msg(hw);\n \t\tif (__atomic_load_n(&vf->pf_push_lsc_cap, __ATOMIC_ACQUIRE) !=\n \t\t\tHNS3_PF_PUSH_LSC_CAP_UNKNOWN)\n \t\t\tbreak;\ndiff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c\nindex 43195ff184b1..9cdbc1668a17 100644\n--- a/drivers/net/hns3/hns3_mbx.c\n+++ b/drivers/net/hns3/hns3_mbx.c\n@@ -78,7 +78,7 @@ hns3_get_mbx_resp(struct hns3_hw *hw, uint16_t code, uint16_t subcode,\n \t\t\treturn -EIO;\n \t\t}\n \n-\t\thns3_dev_handle_mbx_msg(hw);\n+\t\thns3vf_handle_mbx_msg(hw);\n \t\trte_delay_us(HNS3_WAIT_RESP_US);\n \n \t\tif (hw->mbx_resp.received_match_resp)\n@@ -372,9 +372,57 @@ hns3_handle_mbx_msg_out_intr(struct hns3_hw *hw)\n }\n \n void\n-hns3_dev_handle_mbx_msg(struct hns3_hw *hw)\n+hns3pf_handle_mbx_msg(struct hns3_hw *hw)\n+{\n+\tstruct hns3_cmq_ring *crq = &hw->cmq.crq;\n+\tstruct hns3_mbx_vf_to_pf_cmd *req;\n+\tstruct hns3_cmd_desc *desc;\n+\tuint16_t flag;\n+\n+\trte_spinlock_lock(&hw->cmq.crq.lock);\n+\n+\twhile (!hns3_cmd_crq_empty(hw)) {\n+\t\tif (__atomic_load_n(&hw->reset.disable_cmd, __ATOMIC_RELAXED)) {\n+\t\t\trte_spinlock_unlock(&hw->cmq.crq.lock);\n+\t\t\treturn;\n+\t\t}\n+\t\tdesc = &crq->desc[crq->next_to_use];\n+\t\treq = (struct hns3_mbx_vf_to_pf_cmd *)desc->data;\n+\n+\t\tflag = rte_le_to_cpu_16(crq->desc[crq->next_to_use].flag);\n+\t\tif (unlikely(!hns3_get_bit(flag, HNS3_CMDQ_RX_OUTVLD_B))) {\n+\t\t\thns3_warn(hw,\n+\t\t\t\t  \"dropped invalid mailbox message, code = %u\",\n+\t\t\t\t  req->msg.code);\n+\n+\t\t\t/* dropping/not processing this invalid message */\n+\t\t\tcrq->desc[crq->next_to_use].flag = 0;\n+\t\t\thns3_mbx_ring_ptr_move_crq(crq);\n+\t\t\tcontinue;\n+\t\t}\n+\n+\t\tswitch (req->msg.code) {\n+\t\tcase HNS3_MBX_PUSH_LINK_STATUS:\n+\t\t\thns3pf_handle_link_change_event(hw, req);\n+\t\t\tbreak;\n+\t\tdefault:\n+\t\t\thns3_err(hw, \"received unsupported(%u) mbx msg\",\n+\t\t\t\t req->msg.code);\n+\t\t\tbreak;\n+\t\t}\n+\t\tcrq->desc[crq->next_to_use].flag = 0;\n+\t\thns3_mbx_ring_ptr_move_crq(crq);\n+\t}\n+\n+\t/* Write back CMDQ_RQ header pointer, IMP need this pointer */\n+\thns3_write_dev(hw, HNS3_CMDQ_RX_HEAD_REG, crq->next_to_use);\n+\n+\trte_spinlock_unlock(&hw->cmq.crq.lock);\n+}\n+\n+void\n+hns3vf_handle_mbx_msg(struct hns3_hw *hw)\n {\n-\tstruct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);\n \tstruct hns3_cmq_ring *crq = &hw->cmq.crq;\n \tstruct hns3_mbx_pf_to_vf_cmd *req;\n \tstruct hns3_cmd_desc *desc;\n@@ -385,7 +433,7 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)\n \trte_spinlock_lock(&hw->cmq.crq.lock);\n \n \thandle_out = (rte_eal_process_type() != RTE_PROC_PRIMARY ||\n-\t\t      !rte_thread_is_intr()) && hns->is_vf;\n+\t\t      !rte_thread_is_intr());\n \tif (handle_out) {\n \t\t/*\n \t\t * Currently, any threads in the primary and secondary processes\n@@ -430,8 +478,7 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)\n \t\t\tcontinue;\n \t\t}\n \n-\t\thandle_out = hns->is_vf && desc->opcode == 0;\n-\t\tif (handle_out) {\n+\t\tif (desc->opcode == 0) {\n \t\t\t/* Message already processed by other thread */\n \t\t\tcrq->desc[crq->next_to_use].flag = 0;\n \t\t\thns3_mbx_ring_ptr_move_crq(crq);\n@@ -448,16 +495,6 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)\n \t\tcase HNS3_MBX_ASSERTING_RESET:\n \t\t\thns3_handle_asserting_reset(hw, req);\n \t\t\tbreak;\n-\t\tcase HNS3_MBX_PUSH_LINK_STATUS:\n-\t\t\t/*\n-\t\t\t * This message is reported by the firmware and is\n-\t\t\t * reported in 'struct hns3_mbx_vf_to_pf_cmd' format.\n-\t\t\t * Therefore, we should cast the req variable to\n-\t\t\t * 'struct hns3_mbx_vf_to_pf_cmd' and then process it.\n-\t\t\t */\n-\t\t\thns3pf_handle_link_change_event(hw,\n-\t\t\t\t(struct hns3_mbx_vf_to_pf_cmd *)req);\n-\t\t\tbreak;\n \t\tcase HNS3_MBX_PUSH_VLAN_INFO:\n \t\t\t/*\n \t\t\t * When the PVID configuration status of VF device is\ndiff --git a/drivers/net/hns3/hns3_mbx.h b/drivers/net/hns3/hns3_mbx.h\nindex 360e91c30eb9..967d9df3bcac 100644\n--- a/drivers/net/hns3/hns3_mbx.h\n+++ b/drivers/net/hns3/hns3_mbx.h\n@@ -209,7 +209,8 @@ struct hns3_pf_rst_done_cmd {\n \t((crq)->next_to_use = ((crq)->next_to_use + 1) % (crq)->desc_num)\n \n struct hns3_hw;\n-void hns3_dev_handle_mbx_msg(struct hns3_hw *hw);\n+void hns3pf_handle_mbx_msg(struct hns3_hw *hw);\n+void hns3vf_handle_mbx_msg(struct hns3_hw *hw);\n void hns3vf_mbx_setup(struct hns3_vf_to_pf_msg *req,\n \t\t      uint8_t code, uint8_t subcode);\n int hns3vf_mbx_send(struct hns3_hw *hw,\n",
    "prefixes": [
        "5/5"
    ]
}