aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHaiyang Zhang <haiyangz@microsoft.com>2017-10-27 15:36:38 -0400
committerDavid S. Miller <davem@davemloft.net>2017-10-28 23:09:23 -0400
commita6fb6aa3cfa9047b62653dbcfc9bcde6e2272b41 (patch)
treedbcefe8f2e8919a00b6a3fc5cbda55d5ed521b11
parent90e229ef61fad240554f5899eb122fbe44990f78 (diff)
hv_netvsc: Set tx_table to equal weight after subchannels open
In some cases, like internal vSwitch, the host doesn't provide send indirection table updates. This patch sets the table to be equal weight after subchannels are all open. Otherwise, all workload will be on one TX channel. As tested, this patch has largely increased the throughput over internal vSwitch. Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--drivers/net/hyperv/rndis_filter.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c
index addf9f69c58c..0648eebda829 100644
--- a/drivers/net/hyperv/rndis_filter.c
+++ b/drivers/net/hyperv/rndis_filter.c
@@ -1114,6 +1114,9 @@ void rndis_set_subchannel(struct work_struct *w)
1114 netif_set_real_num_tx_queues(ndev, nvdev->num_chn); 1114 netif_set_real_num_tx_queues(ndev, nvdev->num_chn);
1115 netif_set_real_num_rx_queues(ndev, nvdev->num_chn); 1115 netif_set_real_num_rx_queues(ndev, nvdev->num_chn);
1116 1116
1117 for (i = 0; i < VRSS_SEND_TAB_SIZE; i++)
1118 ndev_ctx->tx_table[i] = i % nvdev->num_chn;
1119
1117 rtnl_unlock(); 1120 rtnl_unlock();
1118 return; 1121 return;
1119 1122