net/hns3: fix triggering reset procedure in slave process
authorChengwen Feng <fengchengwen@huawei.com>
Thu, 9 Jan 2020 03:15:59 +0000 (11:15 +0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 17 Jan 2020 18:46:26 +0000 (19:46 +0100)
Currently, reset related operations can only be performed in the primary
process and are not allowed in the slave process in hns3 PMD driver.

In the internal function interface named hns3_cmd_send used for
communication between driver and firmware, if the wrong head value is
detected in the static subfunction hns3_cmd_csq_clean, driver will
trigger a function level reset to make the hardware work normally again.

This patch adds check condition to prevent triggering reset procedure in
the slave process to avoid failure.

Fixes: 2790c6464725 ("net/hns3: support device reset")
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_cmd.c

index 65a5af8..5ec3dfe 100644 (file)
@@ -215,12 +215,12 @@ hns3_cmd_csq_clean(struct hns3_hw *hw)
        head = hns3_read_dev(hw, HNS3_CMDQ_TX_HEAD_REG);
 
        if (!is_valid_csq_clean_head(csq, head)) {
-               struct hns3_adapter *hns = HNS3_DEV_HW_TO_ADAPTER(hw);
                hns3_err(hw, "wrong cmd head (%u, %u-%u)", head,
                            csq->next_to_use, csq->next_to_clean);
-               rte_atomic16_set(&hw->reset.disable_cmd, 1);
-
-               hns3_schedule_delayed_reset(hns);
+               if (rte_eal_process_type() == RTE_PROC_PRIMARY) {
+                       rte_atomic16_set(&hw->reset.disable_cmd, 1);
+                       hns3_schedule_delayed_reset(HNS3_DEV_HW_TO_ADAPTER(hw));
+               }
 
                return -EIO;
        }