Tune the vmbus connection so the host scans faster. This improves transmit performance. The host default value is 100us but setting to 50us reduces packet loss significantly.
Signed-off-by: Stephen Hemminger <sthem...@microsoft.com> --- drivers/net/netvsc/hn_ethdev.c | 6 ++++++ drivers/net/netvsc/hn_var.h | 3 +++ 2 files changed, 9 insertions(+) diff --git a/drivers/net/netvsc/hn_ethdev.c b/drivers/net/netvsc/hn_ethdev.c index 78b842ba2d68..148e6a33d682 100644 --- a/drivers/net/netvsc/hn_ethdev.c +++ b/drivers/net/netvsc/hn_ethdev.c @@ -264,6 +264,9 @@ static int hn_subchan_configure(struct hn_data *hv, return err; } + rte_vmbus_set_latency(hv->vmbus, new_sc, + HN_CHAN_LATENCY_NS); + retry = 0; chn_index = rte_vmbus_sub_channel_index(new_sc); if (chn_index == 0 || chn_index > hv->max_queues) { @@ -629,6 +632,9 @@ eth_hn_dev_init(struct rte_eth_dev *eth_dev) if (err) return err; + rte_vmbus_set_latency(hv->vmbus, hv->channels[0], + HN_CHAN_LATENCY_NS); + hv->primary = hn_rx_queue_alloc(hv, 0, eth_dev->device->numa_node); diff --git a/drivers/net/netvsc/hn_var.h b/drivers/net/netvsc/hn_var.h index f7ff8585bc1c..b3e0a93d45df 100644 --- a/drivers/net/netvsc/hn_var.h +++ b/drivers/net/netvsc/hn_var.h @@ -20,6 +20,9 @@ /* Retry interval */ #define HN_CHAN_INTERVAL_US 100 +/* Host monitor interval */ +#define HN_CHAN_LATENCY_NS 50000 + /* Buffers need to be aligned */ #ifndef PAGE_SIZE #define PAGE_SIZE 4096 -- 2.18.0