Commit 7445565c authored by Peng Li's avatar Peng Li Committed by David S. Miller

net: hns3: update coalesce param per second

coalesce param updates every 100 napi times, it may update a little
late if ping test after a high rate flow, may over napi poll is called
100 times as ping test sends packets every second.

This patch updates coalesce param every second, instead with every
100 napi times. It can not update the param 100% in time, but the
lag time is very short.
Signed-off-by: default avatarPeng Li <lipeng321@huawei.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent ae6017a7
...@@ -240,7 +240,6 @@ static void hns3_vector_gl_rl_init(struct hns3_enet_tqp_vector *tqp_vector, ...@@ -240,7 +240,6 @@ static void hns3_vector_gl_rl_init(struct hns3_enet_tqp_vector *tqp_vector,
tqp_vector->tx_group.coal.int_gl = HNS3_INT_GL_50K; tqp_vector->tx_group.coal.int_gl = HNS3_INT_GL_50K;
tqp_vector->rx_group.coal.int_gl = HNS3_INT_GL_50K; tqp_vector->rx_group.coal.int_gl = HNS3_INT_GL_50K;
tqp_vector->int_adapt_down = HNS3_INT_ADAPT_DOWN_START;
tqp_vector->rx_group.coal.flow_level = HNS3_FLOW_LOW; tqp_vector->rx_group.coal.flow_level = HNS3_FLOW_LOW;
tqp_vector->tx_group.coal.flow_level = HNS3_FLOW_LOW; tqp_vector->tx_group.coal.flow_level = HNS3_FLOW_LOW;
} }
...@@ -2846,10 +2845,10 @@ static void hns3_update_new_int_gl(struct hns3_enet_tqp_vector *tqp_vector) ...@@ -2846,10 +2845,10 @@ static void hns3_update_new_int_gl(struct hns3_enet_tqp_vector *tqp_vector)
struct hns3_enet_ring_group *tx_group = &tqp_vector->tx_group; struct hns3_enet_ring_group *tx_group = &tqp_vector->tx_group;
bool rx_update, tx_update; bool rx_update, tx_update;
if (tqp_vector->int_adapt_down > 0) { /* update param every 1000ms */
tqp_vector->int_adapt_down--; if (time_before(jiffies,
tqp_vector->last_jiffies + msecs_to_jiffies(1000)))
return; return;
}
if (rx_group->coal.gl_adapt_enable) { if (rx_group->coal.gl_adapt_enable) {
rx_update = hns3_get_new_int_gl(rx_group); rx_update = hns3_get_new_int_gl(rx_group);
...@@ -2866,7 +2865,6 @@ static void hns3_update_new_int_gl(struct hns3_enet_tqp_vector *tqp_vector) ...@@ -2866,7 +2865,6 @@ static void hns3_update_new_int_gl(struct hns3_enet_tqp_vector *tqp_vector)
} }
tqp_vector->last_jiffies = jiffies; tqp_vector->last_jiffies = jiffies;
tqp_vector->int_adapt_down = HNS3_INT_ADAPT_DOWN_START;
} }
static int hns3_nic_common_poll(struct napi_struct *napi, int budget) static int hns3_nic_common_poll(struct napi_struct *napi, int budget)
......
...@@ -476,8 +476,6 @@ enum hns3_link_mode_bits { ...@@ -476,8 +476,6 @@ enum hns3_link_mode_bits {
#define HNS3_INT_RL_MAX 0x00EC #define HNS3_INT_RL_MAX 0x00EC
#define HNS3_INT_RL_ENABLE_MASK 0x40 #define HNS3_INT_RL_ENABLE_MASK 0x40
#define HNS3_INT_ADAPT_DOWN_START 100
struct hns3_enet_coalesce { struct hns3_enet_coalesce {
u16 int_gl; u16 int_gl;
u8 gl_adapt_enable; u8 gl_adapt_enable;
...@@ -512,8 +510,6 @@ struct hns3_enet_tqp_vector { ...@@ -512,8 +510,6 @@ struct hns3_enet_tqp_vector {
char name[HNAE3_INT_NAME_LEN]; char name[HNAE3_INT_NAME_LEN];
/* when 0 should adjust interrupt coalesce parameter */
u8 int_adapt_down;
unsigned long last_jiffies; unsigned long last_jiffies;
} ____cacheline_internodealigned_in_smp; } ____cacheline_internodealigned_in_smp;
......
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