net/ice: refactor input set config
[dpdk.git] / drivers / net / hns3 / hns3_intr.c
index 99c500d..2563504 100644 (file)
@@ -1248,6 +1248,26 @@ enable_ssu_err_intr(struct hns3_adapter *hns, bool en)
        return ret;
 }
 
+void
+hns3_config_mac_tnl_int(struct hns3_hw *hw, bool en)
+{
+       struct hns3_cmd_desc desc;
+       int ret;
+
+       hns3_cmd_setup_basic_desc(&desc, HNS3_OPC_MAC_TNL_INT_EN, false);
+       if (en)
+               desc.data[0] = rte_cpu_to_le_32(HNS3_MAC_TNL_INT_EN);
+       else
+               desc.data[0] = 0;
+
+       desc.data[1] = rte_cpu_to_le_32(HNS3_MAC_TNL_INT_EN_MASK);
+
+       ret = hns3_cmd_send(hw, &desc, 1);
+       if (ret)
+               hns3_err(hw, "fail to %s mac tnl intr, ret = %d",
+                        en ? "enable" : "disable", ret);
+}
+
 static int
 config_ppu_err_intrs(struct hns3_adapter *hns, uint32_t cmd, bool en)
 {
@@ -1761,8 +1781,8 @@ hns3_reset_init(struct hns3_hw *hw)
        hw->reset.stage = RESET_STAGE_NONE;
        hw->reset.request = 0;
        hw->reset.pending = 0;
-       rte_atomic16_init(&hw->reset.resetting);
-       rte_atomic16_init(&hw->reset.disable_cmd);
+       hw->reset.resetting = 0;
+       __atomic_store_n(&hw->reset.disable_cmd, 0, __ATOMIC_RELAXED);
        hw->reset.wait_data = rte_zmalloc("wait_data",
                                          sizeof(struct hns3_wait_data), 0);
        if (!hw->reset.wait_data) {
@@ -1779,7 +1799,8 @@ hns3_schedule_reset(struct hns3_adapter *hns)
 
        /* Reschedule the reset process after successful initialization */
        if (hw->adapter_state == HNS3_NIC_UNINITIALIZED) {
-               rte_atomic16_set(&hns->hw.reset.schedule, SCHEDULE_PENDING);
+               __atomic_store_n(&hw->reset.schedule, SCHEDULE_PENDING,
+                                __ATOMIC_RELAXED);
                return;
        }
 
@@ -1787,11 +1808,14 @@ hns3_schedule_reset(struct hns3_adapter *hns)
                return;
 
        /* Schedule restart alarm if it is not scheduled yet */
-       if (rte_atomic16_read(&hns->hw.reset.schedule) == SCHEDULE_REQUESTED)
+       if (__atomic_load_n(&hw->reset.schedule, __ATOMIC_RELAXED) ==
+                       SCHEDULE_REQUESTED)
                return;
-       if (rte_atomic16_read(&hns->hw.reset.schedule) == SCHEDULE_DEFERRED)
+       if (__atomic_load_n(&hw->reset.schedule, __ATOMIC_RELAXED) ==
+                       SCHEDULE_DEFERRED)
                rte_eal_alarm_cancel(hw->reset.ops->reset_service, hns);
-       rte_atomic16_set(&hns->hw.reset.schedule, SCHEDULE_REQUESTED);
+       __atomic_store_n(&hw->reset.schedule, SCHEDULE_REQUESTED,
+                        __ATOMIC_RELAXED);
 
        rte_eal_alarm_set(SWITCH_CONTEXT_US, hw->reset.ops->reset_service, hns);
 }
@@ -1808,9 +1832,11 @@ hns3_schedule_delayed_reset(struct hns3_adapter *hns)
                return;
        }
 
-       if (rte_atomic16_read(&hns->hw.reset.schedule) != SCHEDULE_NONE)
+       if (__atomic_load_n(&hw->reset.schedule, __ATOMIC_RELAXED) !=
+                           SCHEDULE_NONE)
                return;
-       rte_atomic16_set(&hns->hw.reset.schedule, SCHEDULE_DEFERRED);
+       __atomic_store_n(&hw->reset.schedule, SCHEDULE_DEFERRED,
+                        __ATOMIC_RELAXED);
        rte_eal_alarm_set(DEFERRED_SCHED_US, hw->reset.ops->reset_service, hns);
 }
 
@@ -1983,7 +2009,7 @@ hns3_reset_err_handle(struct hns3_adapter *hns)
         * Regardless of whether the execution is successful or not, the
         * flow after execution must be continued.
         */
-       if (rte_atomic16_read(&hw->reset.disable_cmd))
+       if (__atomic_load_n(&hw->reset.disable_cmd, __ATOMIC_RELAXED))
                (void)hns3_cmd_init(hw);
 reset_fail:
        hw->reset.attempts = 0;
@@ -2011,7 +2037,7 @@ hns3_reset_pre(struct hns3_adapter *hns)
        int ret;
 
        if (hw->reset.stage == RESET_STAGE_NONE) {
-               rte_atomic16_set(&hns->hw.reset.resetting, 1);
+               __atomic_store_n(&hns->hw.reset.resetting, 1, __ATOMIC_RELAXED);
                hw->reset.stage = RESET_STAGE_DOWN;
                ret = hw->reset.ops->stop_service(hns);
                gettimeofday(&tv, NULL);
@@ -2098,7 +2124,7 @@ hns3_reset_post(struct hns3_adapter *hns)
                /* IMP will wait ready flag before reset */
                hns3_notify_reset_ready(hw, false);
                hns3_clear_reset_level(hw, &hw->reset.pending);
-               rte_atomic16_clear(&hns->hw.reset.resetting);
+               __atomic_store_n(&hns->hw.reset.resetting, 0, __ATOMIC_RELAXED);
                hw->reset.attempts = 0;
                hw->reset.stats.success_cnt++;
                hw->reset.stage = RESET_STAGE_NONE;
@@ -2223,7 +2249,7 @@ err:
                        hw->reset.mbuf_deferred_free = false;
                }
                rte_spinlock_unlock(&hw->lock);
-               rte_atomic16_clear(&hns->hw.reset.resetting);
+               __atomic_store_n(&hns->hw.reset.resetting, 0, __ATOMIC_RELAXED);
                hw->reset.stage = RESET_STAGE_NONE;
                gettimeofday(&tv, NULL);
                timersub(&tv, &hw->reset.start_time, &tv_delta);