(void)schedule_work(&priv->service_task);
 }
 
-static void hns_nic_service_timer(unsigned long data)
+static void hns_nic_service_timer(struct timer_list *t)
 {
-       struct hns_nic_priv *priv = (struct hns_nic_priv *)data;
+       struct hns_nic_priv *priv = from_timer(priv, t, service_timer);
 
        (void)mod_timer(&priv->service_timer, jiffies + SERVICE_TIMER_HZ);
 
        /* carrier off reporting is important to ethtool even BEFORE open */
        netif_carrier_off(ndev);
 
-       setup_timer(&priv->service_timer, hns_nic_service_timer,
-                   (unsigned long)priv);
+       timer_setup(&priv->service_timer, hns_nic_service_timer, 0);
        INIT_WORK(&priv->service_task, hns_nic_service_task);
 
        set_bit(NIC_STATE_SERVICE_INITED, &priv->state);
 
        return hdev->hw.mac.link;
 }
 
-static void hclge_service_timer(unsigned long data)
+static void hclge_service_timer(struct timer_list *t)
 {
-       struct hclge_dev *hdev = (struct hclge_dev *)data;
-       (void)mod_timer(&hdev->service_timer, jiffies + HZ);
+       struct hclge_dev *hdev = from_timer(hdev, t, service_timer);
 
+       mod_timer(&hdev->service_timer, jiffies + HZ);
        hclge_task_schedule(hdev);
 }
 
        /* mac enable */
        hclge_cfg_mac_mode(hdev, true);
        clear_bit(HCLGE_STATE_DOWN, &hdev->state);
-       (void)mod_timer(&hdev->service_timer, jiffies + HZ);
+       mod_timer(&hdev->service_timer, jiffies + HZ);
 
        ret = hclge_mac_start_phy(hdev);
        if (ret)
 
        hclge_dcb_ops_set(hdev);
 
-       setup_timer(&hdev->service_timer, hclge_service_timer,
-                   (unsigned long)hdev);
+       timer_setup(&hdev->service_timer, hclge_service_timer, 0);
        INIT_WORK(&hdev->service_task, hclge_service_task);
 
        set_bit(HCLGE_STATE_SERVICE_INITED, &hdev->state);
        if (IS_ENABLED(CONFIG_PCI_IOV))
                hclge_disable_sriov(hdev);
 
-       if (hdev->service_timer.data)
+       if (hdev->service_timer.function)
                del_timer_sync(&hdev->service_timer);
        if (hdev->service_task.func)
                cancel_work_sync(&hdev->service_task);