Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
hv_netvsc: Fix a network regression after ifdown/ifup #2454
There is a regression in the hv_netvsc driver used on Azure and Hyper-V:
Recently people reported the NIC stops working after "ifdown eth0; ifup eth0". It turns out in this case the TX queues are not enabled, after the refactoring of the common detach logic: when the NIC has sub-channels, usually we enable all the TX queues after all sub-channels are set up: see rndis_set_subchannel() ->netif_device_attach(), but in the case of "ifdown eth0; ifup eth0" where the number of channels doesn't change, we also must make sure the TX queues are enabled.
The following patch fixes the regression: https://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git/commit/?id=52acf73b6e9a6962045feb2ba5a8921da2201915
FYI, the regression was introduced in commit be9c798d: hv_netvsc: common detach logic. Upstream kernel 4.14.44 is the first kernel in this series to have that commit: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/drivers/net/hyperv?h=v4.14.44&id=be9c798d0d13ae609a91177323ac816545c39d28
Container Linux Version
1745.5.0, kernel version 4.14.44
After running something like 'ifdown eth0' you will not be able to bring back networking by running 'ifup eth0' or equivalent.
Network can be brought up as normal via "ifup eth0" or similar.
Yes, 4.16.14 is also impacted as it has the broken commit: https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/commit/drivers/net/hyperv?h=v4.16.14&id=7b2ee50c0cd513a176a26a71f2989facdd75bfea
Dave Miller said that this is queued up for -stable, but I don't have an ETA. Is there a way you can pull this patch from Dave's tree?