diff options
author | Haiyang Zhang <haiyangz@microsoft.com> | 2017-12-11 17:56:57 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2017-12-13 19:25:04 +0100 |
commit | 11b2b653102571ac791885324371d9a1a17b900e (patch) | |
tree | bb02a198e68bd6e6042af7b62bc3194ab7fa1ad1 /drivers/net/hyperv/netvsc.c | |
parent | Merge branch 'fec-fix-refclk-enable-for-SMSC-LAN8710-20' (diff) | |
download | linux-11b2b653102571ac791885324371d9a1a17b900e.tar.xz linux-11b2b653102571ac791885324371d9a1a17b900e.zip |
hv_netvsc: Fix the receive buffer size limit
The max should be 31 MB on host with NVSP version > 2.
On legacy hosts (NVSP version <=2) only 15 MB receive buffer is allowed,
otherwise the buffer request will be rejected by the host, resulting
vNIC not coming up.
The NVSP version is only available after negotiation. So, we add the
limit checking for legacy hosts in netvsc_init_buf().
Fixes: 5023a6db73196 ("netvsc: increase default receive buffer size")
Signed-off-by: Haiyang Zhang <haiyangz@microsoft.com>
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to '')
-rw-r--r-- | drivers/net/hyperv/netvsc.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/hyperv/netvsc.c b/drivers/net/hyperv/netvsc.c index e4bcd202a56a..e5d16a8cf0d6 100644 --- a/drivers/net/hyperv/netvsc.c +++ b/drivers/net/hyperv/netvsc.c @@ -268,6 +268,11 @@ static int netvsc_init_buf(struct hv_device *device, buf_size = device_info->recv_sections * device_info->recv_section_size; buf_size = roundup(buf_size, PAGE_SIZE); + /* Legacy hosts only allow smaller receive buffer */ + if (net_device->nvsp_version <= NVSP_PROTOCOL_VERSION_2) + buf_size = min_t(unsigned int, buf_size, + NETVSC_RECEIVE_BUFFER_SIZE_LEGACY); + net_device->recv_buf = vzalloc(buf_size); if (!net_device->recv_buf) { netdev_err(ndev, |