This patch updates VF's TQP statistic info in the service task,
and adds a limitation to prevent update too frequently.
Signed-off-by: liuzhongzhu <liuzhongzhu@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Huazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
 
        mod_timer(&hdev->service_timer, jiffies + 5 * HZ);
 
+       hdev->stats_timer++;
        hclgevf_task_schedule(hdev);
 }
 
 
 static void hclgevf_service_task(struct work_struct *work)
 {
+       struct hnae3_handle *handle;
        struct hclgevf_dev *hdev;
 
        hdev = container_of(work, struct hclgevf_dev, service_task);
+       handle = &hdev->nic;
+
+       if (hdev->stats_timer >= HCLGEVF_STATS_TIMER_INTERVAL) {
+               hclgevf_tqps_update_stats(handle);
+               hdev->stats_timer = 0;
+       }
 
        /* request the link status from the PF. PF would be able to tell VF
         * about such updates in future so we might remove this later
 
 #define HCLGEVF_S_IP_BIT               BIT(3)
 #define HCLGEVF_V_TAG_BIT              BIT(4)
 
+#define HCLGEVF_STATS_TIMER_INTERVAL   (36)
+
 enum hclgevf_evt_cause {
        HCLGEVF_VECTOR0_EVENT_RST,
        HCLGEVF_VECTOR0_EVENT_MBX,
        struct hnae3_client *nic_client;
        struct hnae3_client *roce_client;
        u32 flag;
+       u32 stats_timer;
 };
 
 static inline bool hclgevf_is_reset_pending(struct hclgevf_dev *hdev)