OSDN Git Service

hv_netvsc: Set tx_table to equal weight after subchannels open
authorHaiyang Zhang <haiyangz@microsoft.com>
Fri, 27 Oct 2017 19:36:38 +0000 (12:36 -0700)
committerDavid S. Miller <davem@davemloft.net>
Sun, 29 Oct 2017 03:09:23 +0000 (12:09 +0900)
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>
drivers/net/hyperv/rndis_filter.c

index addf9f6..0648eeb 100644 (file)
@@ -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;