struct hns3_hw *hw = &hns->hw;
int ret = 0;
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+ __atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
return 0;
+ }
if (hw->adapter_state == HNS3_NIC_STARTED)
ret = hns3_dev_stop(eth_dev);
"process, ret = %d", ret);
goto err_mp_init_secondary;
}
- hw->secondary_cnt++;
+ __atomic_fetch_add(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
hns3_tx_push_init(eth_dev);
return 0;
}
PMD_INIT_FUNC_TRACE();
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+ __atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
return 0;
+ }
if (hw->adapter_state < HNS3_NIC_CLOSING)
hns3_dev_close(eth_dev);
struct hns3_hw *hw = &hns->hw;
int ret = 0;
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+ __atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
return 0;
+ }
if (hw->adapter_state == HNS3_NIC_STARTED)
ret = hns3vf_dev_stop(eth_dev);
"process, ret = %d", ret);
goto err_mp_init_secondary;
}
- hw->secondary_cnt++;
+ __atomic_fetch_add(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
hns3_tx_push_init(eth_dev);
return 0;
}
PMD_INIT_FUNC_TRACE();
- if (rte_eal_process_type() != RTE_PROC_PRIMARY)
+ if (rte_eal_process_type() != RTE_PROC_PRIMARY) {
+ __atomic_fetch_sub(&hw->secondary_cnt, 1, __ATOMIC_RELAXED);
return 0;
+ }
if (hw->adapter_state < HNS3_NIC_CLOSING)
hns3vf_dev_close(eth_dev);
int ret;
int i;
- if (rte_eal_process_type() == RTE_PROC_SECONDARY || !hw->secondary_cnt)
+ if (rte_eal_process_type() == RTE_PROC_SECONDARY ||
+ __atomic_load_n(&hw->secondary_cnt, __ATOMIC_RELAXED) == 0)
return;
+
if (!mp_req_type_is_valid(type)) {
hns3_err(hw, "port %u unknown request (req_type %d)",
dev->data->port_id, type);