hv_netvsc: fix send buffer failure on MTU change
authorAlex Ng <alexng@microsoft.com>
Wed, 20 Sep 2017 18:17:35 +0000 (11:17 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 21 Sep 2017 22:17:16 +0000 (15:17 -0700)
commit0ab09befdbb7ca9b969d6206108629ddff43876e
tree1ba553b80649944a6def37747278778c3902e26a
parentfe2502e49b58606580c77b3d84e42f946de182d8
hv_netvsc: fix send buffer failure on MTU change

If MTU is changed the host would reject the send buffer change.
This problem is result of recent change to allow changing send
buffer size.

Every time we change the MTU, we store the previous net_device section
count before destroying the buffer, but we don’t store the previous
section size. When we reinitialize the buffer, its size is calculated
by multiplying the previous count and previous size. Since we
continuously increase the MTU, the host returns us a decreasing count
value while the section size is reinitialized to 1728 bytes every
time.

This eventually leads to a condition where the calculated buf_size is
so small that the host rejects it.

Fixes: 8b5327975ae1 ("netvsc: allow controlling send/recv buffer size")
Signed-off-by: Alex Ng <alexng@microsoft.com>
Signed-off-by: Stephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/hyperv/hyperv_net.h
drivers/net/hyperv/netvsc.c
drivers/net/hyperv/netvsc_drv.c