net/hns3: fix triggering reset procedure in slave process
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: 2790c64647
("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>
This commit is contained in:
parent
eee015976b
commit
a1f381ad53
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user