Commit db01afeb authored by liuzhongzhu's avatar liuzhongzhu Committed by David S. Miller

net: hns3: add queue's statistics update to service task

This patch updates VF's TQP statistic info in the service task,
and adds a limitation to prevent update too frequently.
Signed-off-by: default avatarliuzhongzhu <liuzhongzhu@huawei.com>
Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
Signed-off-by: default avatarHuazhong Tan <tanhuazhong@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent a6345787
...@@ -1649,6 +1649,7 @@ static void hclgevf_service_timer(struct timer_list *t) ...@@ -1649,6 +1649,7 @@ static void hclgevf_service_timer(struct timer_list *t)
mod_timer(&hdev->service_timer, jiffies + 5 * HZ); mod_timer(&hdev->service_timer, jiffies + 5 * HZ);
hdev->stats_timer++;
hclgevf_task_schedule(hdev); hclgevf_task_schedule(hdev);
} }
...@@ -1769,9 +1770,16 @@ static void hclgevf_keep_alive_task(struct work_struct *work) ...@@ -1769,9 +1770,16 @@ static void hclgevf_keep_alive_task(struct work_struct *work)
static void hclgevf_service_task(struct work_struct *work) static void hclgevf_service_task(struct work_struct *work)
{ {
struct hnae3_handle *handle;
struct hclgevf_dev *hdev; struct hclgevf_dev *hdev;
hdev = container_of(work, struct hclgevf_dev, service_task); 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 /* 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 * about such updates in future so we might remove this later
......
...@@ -116,6 +116,8 @@ ...@@ -116,6 +116,8 @@
#define HCLGEVF_S_IP_BIT BIT(3) #define HCLGEVF_S_IP_BIT BIT(3)
#define HCLGEVF_V_TAG_BIT BIT(4) #define HCLGEVF_V_TAG_BIT BIT(4)
#define HCLGEVF_STATS_TIMER_INTERVAL (36)
enum hclgevf_evt_cause { enum hclgevf_evt_cause {
HCLGEVF_VECTOR0_EVENT_RST, HCLGEVF_VECTOR0_EVENT_RST,
HCLGEVF_VECTOR0_EVENT_MBX, HCLGEVF_VECTOR0_EVENT_MBX,
...@@ -281,6 +283,7 @@ struct hclgevf_dev { ...@@ -281,6 +283,7 @@ struct hclgevf_dev {
struct hnae3_client *nic_client; struct hnae3_client *nic_client;
struct hnae3_client *roce_client; struct hnae3_client *roce_client;
u32 flag; u32 flag;
u32 stats_timer;
}; };
static inline bool hclgevf_is_reset_pending(struct hclgevf_dev *hdev) static inline bool hclgevf_is_reset_pending(struct hclgevf_dev *hdev)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment