diff options
author | stephen hemminger <stephen@networkplumber.org> | 2017-01-24 13:06:04 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-01-24 16:28:59 -0500 |
commit | ff4a44199012ee32839278cb84f82ae32c01dbc9 (patch) | |
tree | e4cc794a8afa2a5971289c8ea2f63b53fb7eefc9 /drivers/net/hyperv/rndis_filter.c | |
parent | 2b01888d1b453096b5b13c0d4b73e630411198b4 (diff) | |
download | op-kernel-dev-ff4a44199012ee32839278cb84f82ae32c01dbc9.zip op-kernel-dev-ff4a44199012ee32839278cb84f82ae32c01dbc9.tar.gz |
netvsc: allow get/set of RSS indirection table
Allow setting receive indirection table. Also uses the system standard
for initialization.
Signed-off-by: Stephen Hemminger <sthemmin@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.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/drivers/net/hyperv/rndis_filter.c b/drivers/net/hyperv/rndis_filter.c index ac08aa1..8d2b078 100644 --- a/drivers/net/hyperv/rndis_filter.c +++ b/drivers/net/hyperv/rndis_filter.c @@ -780,7 +780,7 @@ int rndis_filter_set_rss_param(struct rndis_device *rdev, /* Set indirection table entries */ itab = (u32 *)(rssp + 1); for (i = 0; i < ITAB_NUM; i++) - itab[i] = i % num_queue; + itab[i] = rdev->ind_table[i]; /* Set hask key values */ keyp = (u8 *)((unsigned long)rssp + rssp->kashkey_offset); @@ -1035,7 +1035,6 @@ static void netvsc_sc_open(struct vmbus_channel *new_sc) int rndis_filter_device_add(struct hv_device *dev, void *additional_info) { - int ret; struct net_device *net = hv_get_drvdata(dev); struct net_device_context *net_device_ctx = netdev_priv(net); struct netvsc_device *net_device; @@ -1053,6 +1052,7 @@ int rndis_filter_device_add(struct hv_device *dev, const struct cpumask *node_cpu_mask; u32 num_possible_rss_qs; unsigned long flags; + int i, ret; rndis_device = get_rndis_device(); if (!rndis_device) @@ -1206,6 +1206,11 @@ int rndis_filter_device_add(struct hv_device *dev, net_device->num_chn = min(num_possible_rss_qs, num_rss_qs); num_rss_qs = net_device->num_chn - 1; + + for (i = 0; i < ITAB_NUM; i++) + rndis_device->ind_table[i] = ethtool_rxfh_indir_default(i, + net_device->num_chn); + net_device->num_sc_offered = num_rss_qs; if (net_device->num_chn == 1) |