get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 133965,
    "url": "https://patches.dpdk.org/api/patches/133965/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20231108034434.559030-4-haijie1@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": "<20231108034434.559030-4-haijie1@huawei.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20231108034434.559030-4-haijie1@huawei.com",
    "date": "2023-11-08T03:44:32",
    "name": "[3/5] net/hns3: refactor PF mailbox message struct",
    "commit_ref": null,
    "pull_url": null,
    "state": "changes-requested",
    "archived": true,
    "hash": "930fb88e5f02a350890fc4fc2558dd3909fac3f1",
    "submitter": {
        "id": 2935,
        "url": "https://patches.dpdk.org/api/people/2935/?format=api",
        "name": "Jie Hai",
        "email": "haijie1@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/20231108034434.559030-4-haijie1@huawei.com/mbox/",
    "series": [
        {
            "id": 30196,
            "url": "https://patches.dpdk.org/api/series/30196/?format=api",
            "web_url": "https://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": "https://patches.dpdk.org/series/30196/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/133965/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/133965/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 A42D0432CE;\n\tWed,  8 Nov 2023 04:49:10 +0100 (CET)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 0FA7642DF3;\n\tWed,  8 Nov 2023 04:48:56 +0100 (CET)",
            "from szxga01-in.huawei.com (szxga01-in.huawei.com [45.249.212.187])\n by mails.dpdk.org (Postfix) with ESMTP id 5976E42DD6\n for <dev@dpdk.org>; Wed,  8 Nov 2023 04:48:50 +0100 (CET)",
            "from kwepemd100004.china.huawei.com (unknown [172.30.72.53])\n by szxga01-in.huawei.com (SkyGuard) with ESMTP id 4SQ9zq3qx5zfb2w;\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:16 +0800"
        ],
        "From": "Jie Hai <haijie1@huawei.com>",
        "To": "<dev@dpdk.org>, Yisen Zhuang <yisen.zhuang@huawei.com>, \"Min Hu (Connor)\"\n <humin29@huawei.com>, \"Wei Hu (Xavier)\" <xavier.huwei@huawei.com>, Chunsong\n Feng <fengchunsong@huawei.com>, Huisong Li <lihuisong@huawei.com>, Hao Chen\n <chenh@yusur.tech>",
        "Subject": "[PATCH 3/5] net/hns3: refactor PF mailbox message struct",
        "Date": "Wed, 8 Nov 2023 11:44:32 +0800",
        "Message-ID": "<20231108034434.559030-4-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 data region in PF to VF mbx memssage command is used\nto communicate with VF driver. And this data region exists\nas an array. As a result, some complicated feature commands,\nlike mailbox response, link change event, close promisc mode,\nreset request and update pvid state, have to use magic number\nto set them. This isn't good for maintenance of driver. So\nthis patch refactors these messages by extracting an\nhns3_pf_to_vf_msg structure.\n\nFixes: 463e748964f5 (\"net/hns3: support 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_mbx.c | 38 ++++++++++++++++++-------------------\n drivers/net/hns3/hns3_mbx.h | 25 +++++++++++++++++++++++-\n 2 files changed, 43 insertions(+), 20 deletions(-)",
    "diff": "diff --git a/drivers/net/hns3/hns3_mbx.c b/drivers/net/hns3/hns3_mbx.c\nindex ad5ec555b39e..c90f5d59ba21 100644\n--- a/drivers/net/hns3/hns3_mbx.c\n+++ b/drivers/net/hns3/hns3_mbx.c\n@@ -192,17 +192,17 @@ static void\n hns3vf_handle_link_change_event(struct hns3_hw *hw,\n \t\t\t\tstruct hns3_mbx_pf_to_vf_cmd *req)\n {\n+\tstruct hns3_mbx_link_status *link_info =\n+\t\t(struct hns3_mbx_link_status *)req->msg.msg_data;\n \tuint8_t link_status, link_duplex;\n-\tuint16_t *msg_q = req->msg;\n \tuint8_t support_push_lsc;\n \tuint32_t link_speed;\n \n-\tmemcpy(&link_speed, &msg_q[2], sizeof(link_speed));\n-\tlink_status = rte_le_to_cpu_16(msg_q[1]);\n-\tlink_duplex = (uint8_t)rte_le_to_cpu_16(msg_q[4]);\n-\thns3vf_update_link_status(hw, link_status, link_speed,\n-\t\t\t\t  link_duplex);\n-\tsupport_push_lsc = (*(uint8_t *)&msg_q[5]) & 1u;\n+\tlink_status = (uint8_t)rte_le_to_cpu_16(link_info->link_status);\n+\tlink_speed = rte_le_to_cpu_32(link_info->speed);\n+\tlink_duplex = (uint8_t)rte_le_to_cpu_16(link_info->duplex);\n+\thns3vf_update_link_status(hw, link_status, link_speed, link_duplex);\n+\tsupport_push_lsc = (link_info->flag) & 1u;\n \thns3vf_update_push_lsc_cap(hw, support_push_lsc);\n }\n \n@@ -211,7 +211,6 @@ hns3_handle_asserting_reset(struct hns3_hw *hw,\n \t\t\t    struct hns3_mbx_pf_to_vf_cmd *req)\n {\n \tenum hns3_reset_level reset_level;\n-\tuint16_t *msg_q = req->msg;\n \n \t/*\n \t * PF has asserted reset hence VF should go in pending\n@@ -219,7 +218,7 @@ hns3_handle_asserting_reset(struct hns3_hw *hw,\n \t * has been completely reset. After this stack should\n \t * eventually be re-initialized.\n \t */\n-\treset_level = rte_le_to_cpu_16(msg_q[1]);\n+\treset_level = rte_le_to_cpu_16(req->msg.reset_level);\n \thns3_atomic_set_bit(reset_level, &hw->reset.pending);\n \n \thns3_warn(hw, \"PF inform reset level %d\", reset_level);\n@@ -241,8 +240,9 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)\n \t\t * to match the request.\n \t\t */\n \t\tif (req->match_id == resp->match_id) {\n-\t\t\tresp->resp_status = hns3_resp_to_errno(req->msg[3]);\n-\t\t\tmemcpy(resp->additional_info, &req->msg[4],\n+\t\t\tresp->resp_status =\n+\t\t\t\thns3_resp_to_errno(req->msg.resp_status);\n+\t\t\tmemcpy(resp->additional_info, &req->msg.resp_data,\n \t\t\t       HNS3_MBX_MAX_RESP_DATA_SIZE);\n \t\t\trte_io_wmb();\n \t\t\tresp->received_match_resp = true;\n@@ -255,7 +255,8 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)\n \t * support copy request's match_id to its response. So VF follows the\n \t * original scheme to process.\n \t */\n-\tmsg_data = (uint32_t)req->msg[1] << HNS3_MBX_RESP_CODE_OFFSET | req->msg[2];\n+\tmsg_data = (uint32_t)req->msg.vf_mbx_msg_code <<\n+\t\t\tHNS3_MBX_RESP_CODE_OFFSET | req->msg.vf_mbx_msg_subcode;\n \tif (resp->req_msg_data != msg_data) {\n \t\thns3_warn(hw,\n \t\t\t\"received response tag (%u) is mismatched with requested tag (%u)\",\n@@ -263,8 +264,8 @@ hns3_handle_mbx_response(struct hns3_hw *hw, struct hns3_mbx_pf_to_vf_cmd *req)\n \t\treturn;\n \t}\n \n-\tresp->resp_status = hns3_resp_to_errno(req->msg[3]);\n-\tmemcpy(resp->additional_info, &req->msg[4],\n+\tresp->resp_status = hns3_resp_to_errno(req->msg.resp_status);\n+\tmemcpy(resp->additional_info, &req->msg.resp_data,\n \t       HNS3_MBX_MAX_RESP_DATA_SIZE);\n \trte_io_wmb();\n \tresp->received_match_resp = true;\n@@ -305,8 +306,7 @@ static void\n hns3_update_port_base_vlan_info(struct hns3_hw *hw,\n \t\t\t\tstruct hns3_mbx_pf_to_vf_cmd *req)\n {\n-#define PVID_STATE_OFFSET\t1\n-\tuint16_t new_pvid_state = req->msg[PVID_STATE_OFFSET] ?\n+\tuint16_t new_pvid_state = req->msg.pvid_state ?\n \t\tHNS3_PORT_BASE_VLAN_ENABLE : HNS3_PORT_BASE_VLAN_DISABLE;\n \t/*\n \t * Currently, hardware doesn't support more than two layers VLAN offload\n@@ -355,7 +355,7 @@ hns3_handle_mbx_msg_out_intr(struct hns3_hw *hw)\n \twhile (next_to_use != tail) {\n \t\tdesc = &crq->desc[next_to_use];\n \t\treq = (struct hns3_mbx_pf_to_vf_cmd *)desc->data;\n-\t\topcode = req->msg[0] & 0xff;\n+\t\topcode = req->msg.code & 0xff;\n \n \t\tflag = rte_le_to_cpu_16(crq->desc[next_to_use].flag);\n \t\tif (!hns3_get_bit(flag, HNS3_CMDQ_RX_OUTVLD_B))\n@@ -428,7 +428,7 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)\n \n \t\tdesc = &crq->desc[crq->next_to_use];\n \t\treq = (struct hns3_mbx_pf_to_vf_cmd *)desc->data;\n-\t\topcode = req->msg[0] & 0xff;\n+\t\topcode = req->msg.code & 0xff;\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@@ -484,7 +484,7 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)\n \t\t\t * hns3 PF kernel driver, VF driver will receive this\n \t\t\t * mailbox message from PF driver.\n \t\t\t */\n-\t\t\thns3_handle_promisc_info(hw, req->msg[1]);\n+\t\t\thns3_handle_promisc_info(hw, req->msg.promisc_en);\n \t\t\tbreak;\n \t\tdefault:\n \t\t\thns3_err(hw, \"received unsupported(%u) mbx msg\",\ndiff --git a/drivers/net/hns3/hns3_mbx.h b/drivers/net/hns3/hns3_mbx.h\nindex 3f623ba64ca4..64f30d2923ea 100644\n--- a/drivers/net/hns3/hns3_mbx.h\n+++ b/drivers/net/hns3/hns3_mbx.h\n@@ -118,6 +118,13 @@ struct hns3_mbx_vlan_filter {\n \tuint16_t vlan_id;\n \tuint16_t proto;\n };\n+\n+struct hns3_mbx_link_status {\n+\tuint16_t link_status;\n+\tuint32_t speed;\n+\tuint16_t duplex;\n+\tuint8_t flag;\n+};\n #pragma pack()\n \n #define HNS3_MBX_MSG_MAX_DATA_SIZE\t14\n@@ -148,6 +155,22 @@ struct hns3_vf_to_pf_msg {\n \t};\n };\n \n+struct hns3_pf_to_vf_msg {\n+\tuint16_t code;\n+\tunion {\n+\t\tstruct {\n+\t\t\tuint16_t vf_mbx_msg_code;\n+\t\t\tuint16_t vf_mbx_msg_subcode;\n+\t\t\tuint16_t resp_status;\n+\t\t\tuint8_t resp_data[HNS3_MBX_MAX_RESP_DATA_SIZE];\n+\t\t};\n+\t\tuint16_t promisc_en;\n+\t\tuint16_t reset_level;\n+\t\tuint16_t pvid_state;\n+\t\tuint8_t msg_data[HNS3_MBX_MSG_MAX_DATA_SIZE];\n+\t};\n+};\n+\n struct errno_respcode_map {\n \tuint16_t resp_code;\n \tint err_no;\n@@ -172,7 +195,7 @@ struct hns3_mbx_pf_to_vf_cmd {\n \tuint8_t msg_len;\n \tuint8_t rsv1;\n \tuint16_t match_id;\n-\tuint16_t msg[8];\n+\tstruct hns3_pf_to_vf_msg msg;\n };\n \n struct hns3_pf_rst_done_cmd {\n",
    "prefixes": [
        "3/5"
    ]
}