]> git.droids-corp.org - dpdk.git/commitdiff
net/hns3: fix ring vector related mailbox command format
authorWei Hu (Xavier) <xavier.huwei@huawei.com>
Thu, 9 Jan 2020 03:15:56 +0000 (11:15 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 17 Jan 2020 18:46:26 +0000 (19:46 +0100)
The format of the ring vector related mailbox commands between driver
and firmware is different from those of other mailbox commands in hns3
network engine.

This patch fixes the error mailbox command format about the vector of
the rings, the related command opcode as below:
HNS3_MBX_MAP_RING_TO_VECTOR
HNS3_MBX_UNMAP_RING_TO_VECTOR
HNS3_MBX_GET_RING_VECTOR_MAP

Fixes: 463e748964f5 ("net/hns3: support mailbox")
Cc: stable@dpdk.org
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
drivers/net/hns3/hns3_mbx.c
drivers/net/hns3/hns3_mbx.h

index 26807bc4b0f4b6c8be19a170abfae5a7fb87c830..0d03f50644152082703c4508eb86577639826766 100644 (file)
@@ -150,6 +150,8 @@ hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
 {
        struct hns3_mbx_vf_to_pf_cmd *req;
        struct hns3_cmd_desc desc;
+       bool is_ring_vector_msg;
+       int offset;
        int ret;
 
        req = (struct hns3_mbx_vf_to_pf_cmd *)desc.data;
@@ -164,9 +166,15 @@ hns3_send_mbx_msg(struct hns3_hw *hw, uint16_t code, uint16_t subcode,
 
        hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_MBX_VF_TO_PF, false);
        req->msg[0] = code;
-       req->msg[1] = subcode;
-       if (msg_data)
-               memcpy(&req->msg[HNS3_CMD_CODE_OFFSET], msg_data, msg_len);
+       is_ring_vector_msg = (code == HNS3_MBX_MAP_RING_TO_VECTOR) ||
+                            (code == HNS3_MBX_UNMAP_RING_TO_VECTOR) ||
+                            (code == HNS3_MBX_GET_RING_VECTOR_MAP);
+       if (!is_ring_vector_msg)
+               req->msg[1] = subcode;
+       if (msg_data) {
+               offset = is_ring_vector_msg ? 1 : HNS3_CMD_CODE_OFFSET;
+               memcpy(&req->msg[offset], msg_data, msg_len);
+       }
 
        /* synchronous send */
        if (need_resp) {
index 3722c876045c767bd45a552191b448643f71d263..b01eaacc3c479224711f47b9b124fabccc717dba 100644 (file)
@@ -41,6 +41,7 @@ enum HNS3_MBX_OPCODE {
        HNS3_MBX_GET_QID_IN_PF,         /* (VF -> PF) get queue id in pf */
 
        HNS3_MBX_HANDLE_VF_TBL = 38,    /* (VF -> PF) store/clear hw cfg tbl */
+       HNS3_MBX_GET_RING_VECTOR_MAP,   /* (VF -> PF) get ring-to-vector map */
        HNS3_MBX_PUSH_LINK_STATUS = 201, /* (IMP -> PF) get port link status */
 };