Skip to content

Commit

Permalink
net/hns3: fix processing link status message on PF
Browse files Browse the repository at this point in the history
[ upstream commit 4a2f6ab ]

The opcode of the link status notification message reported by the
firmware is zero, it will be filtered out because driver treats it as
already processed message. As a result, the PF can't update the link
status in a timely manner.

Because only VF can set opcode to zero when processing mailbox message,
we add a judgment to make sure the PF messages will not be filtered out.

Fixes: dbbbad2 ("net/hns3: fix VF handling LSC event in secondary process")

Signed-off-by: Chengwen Feng <fengchengwen@huawei.com>
Signed-off-by: Min Hu (Connor) <humin29@huawei.com>
  • Loading branch information
fengchengwen authored and steevenlee committed Jun 8, 2021
1 parent b47af28 commit b012ce6
Showing 1 changed file with 7 additions and 3 deletions.
10 changes: 7 additions & 3 deletions drivers/net/hns3/hns3_mbx.c
Expand Up @@ -446,16 +446,19 @@ hns3_handle_mbx_msg_out_intr(struct hns3_hw *hw)
void
hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
{
struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
struct hns3_cmq_ring *crq = &hw->cmq.crq;
struct hns3_mbx_pf_to_vf_cmd *req;
struct hns3_cmd_desc *desc;
uint16_t *msg_q;
bool handle_out;
uint8_t opcode;
uint16_t flag;
rte_spinlock_lock(&hw->cmq.crq.lock);

if (rte_eal_process_type() != RTE_PROC_PRIMARY ||
!rte_thread_is_intr()) {
handle_out = (rte_eal_process_type() != RTE_PROC_PRIMARY ||
!rte_thread_is_intr()) && hns->is_vf;
if (handle_out) {
/*
* Currently, any threads in the primary and secondary processes
* could send mailbox sync request, so it will need to process
Expand Down Expand Up @@ -499,7 +502,8 @@ hns3_dev_handle_mbx_msg(struct hns3_hw *hw)
continue;
}

if (desc->opcode == 0) {
handle_out = hns->is_vf && desc->opcode == 0;
if (handle_out) {
/* Message already processed by other thread */
crq->desc[crq->next_to_use].flag = 0;
hns3_mbx_ring_ptr_move_crq(crq);
Expand Down

0 comments on commit b012ce6

Please sign in to comment.