summaryrefslogtreecommitdiffstats
path: root/drivers/net/hyperv/rndis_filter.c
diff options
context:
space:
mode:
authorHaiyang Zhang <haiyangz@microsoft.com>2017-10-27 12:36:38 -0700
committerDavid S. Miller <davem@davemloft.net>2017-10-29 12:09:23 +0900
commita6fb6aa3cfa9047b62653dbcfc9bcde6e2272b41 (patch)
treedbcefe8f2e8919a00b6a3fc5cbda55d5ed521b11 /drivers/net/hyperv/rndis_filter.c
parent90e229ef61fad240554f5899eb122fbe44990f78 (diff)
downloadop-kernel-dev-a6fb6aa3cfa9047b62653dbcfc9bcde6e2272b41.zip
op-kernel-dev-a6fb6aa3cfa9047b62653dbcfc9bcde6e2272b41.tar.gz
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>
Diffstat (limited to 'drivers/net/hyperv/rndis_filter.c')
-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 addf9f6..0648eeb 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)
netif_set_real_num_tx_queues(ndev, nvdev->num_chn);
netif_set_real_num_rx_queues(ndev, nvdev->num_chn);
+ for (i = 0; i < VRSS_SEND_TAB_SIZE; i++)
+ ndev_ctx->tx_table[i] = i % nvdev->num_chn;
+
rtnl_unlock();
return;
OpenPOWER on IntegriCloud