The mailbox opcode is defined as one byte in datasheet which is not
compatible with that in the current hns3 PMD driver.
This patch fixes the data type of the local variable for mailbox opcode
in driver, changing from uint16_t to uint8_t.
Fixes:
463e748964f5 ("net/hns3: support mailbox")
Cc: stable@dpdk.org
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
Signed-off-by: Wei Hu (Xavier) <xavier.huwei@huawei.com>
Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
struct hns3_mac *mac = &hw->mac;
enum hns3_reset_level reset_level;
uint16_t *msg_q;
struct hns3_mac *mac = &hw->mac;
enum hns3_reset_level reset_level;
uint16_t *msg_q;
uint32_t tail;
tail = hw->arq.tail;
uint32_t tail;
tail = hw->arq.tail;
while (tail != hw->arq.head) {
msg_q = hw->arq.msg_q[hw->arq.head];
while (tail != hw->arq.head) {
msg_q = hw->arq.msg_q[hw->arq.head];
+ opcode = msg_q[0] & 0xff;
+ switch (opcode) {
case HNS3_MBX_LINK_STAT_CHANGE:
memcpy(&mac->link_speed, &msg_q[2],
sizeof(mac->link_speed));
case HNS3_MBX_LINK_STAT_CHANGE:
memcpy(&mac->link_speed, &msg_q[2],
sizeof(mac->link_speed));
break;
default:
hns3_err(hw, "Fetched unsupported(%d) message from arq",
break;
default:
hns3_err(hw, "Fetched unsupported(%d) message from arq",
struct hns3_cmd_desc *desc;
uint32_t msg_data;
uint16_t *msg_q;
struct hns3_cmd_desc *desc;
uint32_t msg_data;
uint16_t *msg_q;
uint16_t flag;
uint8_t *temp;
int i;
uint16_t flag;
uint8_t *temp;
int i;
desc = &crq->desc[crq->next_to_use];
req = (struct hns3_mbx_pf_to_vf_cmd *)desc->data;
desc = &crq->desc[crq->next_to_use];
req = (struct hns3_mbx_pf_to_vf_cmd *)desc->data;
+ opcode = req->msg[0] & 0xff;
flag = rte_le_to_cpu_16(crq->desc[crq->next_to_use].flag);
if (unlikely(!hns3_get_bit(flag, HNS3_CMDQ_RX_OUTVLD_B))) {
hns3_warn(hw,
"dropped invalid mailbox message, code = %d",
flag = rte_le_to_cpu_16(crq->desc[crq->next_to_use].flag);
if (unlikely(!hns3_get_bit(flag, HNS3_CMDQ_RX_OUTVLD_B))) {
hns3_warn(hw,
"dropped invalid mailbox message, code = %d",
/* dropping/not processing this invalid message */
crq->desc[crq->next_to_use].flag = 0;
/* dropping/not processing this invalid message */
crq->desc[crq->next_to_use].flag = 0;
case HNS3_MBX_PF_VF_RESP:
resp->resp_status = hns3_resp_to_errno(req->msg[3]);
case HNS3_MBX_PF_VF_RESP:
resp->resp_status = hns3_resp_to_errno(req->msg[3]);