From 87e3b20439edf4e094295b2987df220989c4c468 Mon Sep 17 00:00:00 2001 From: Bastian Blank Date: Wed, 13 Jun 2018 13:49:24 +0200 Subject: [PATCH] hv_netvsc: Fix a network regression after ifdown/ifup --- debian/changelog | 3 ++ ...network-regression-after-ifdown-ifup.patch | 43 +++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 47 insertions(+) create mode 100644 debian/patches/bugfix/all/hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch diff --git a/debian/changelog b/debian/changelog index 1080229ac..12b6a9a92 100644 --- a/debian/changelog +++ b/debian/changelog @@ -291,6 +291,9 @@ linux (4.16.13-1) UNRELEASED; urgency=medium [ Ben Hutchings ] * ext4: Fix duplicate softdep fields in module info + [ Bastian Blank ] + * hv_netvsc: Fix a network regression after ifdown/ifup + -- Salvatore Bonaccorso Wed, 30 May 2018 08:41:30 +0200 linux (4.16.12-1) unstable; urgency=medium diff --git a/debian/patches/bugfix/all/hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch b/debian/patches/bugfix/all/hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch new file mode 100644 index 000000000..b5a97511d --- /dev/null +++ b/debian/patches/bugfix/all/hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch @@ -0,0 +1,43 @@ +From 52acf73b6e9a6962045feb2ba5a8921da2201915 Mon Sep 17 00:00:00 2001 +From: Dexuan Cui +Date: Wed, 6 Jun 2018 21:32:51 +0000 +Subject: [PATCH] hv_netvsc: Fix a network regression after ifdown/ifup + +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 patch fixes the regression. + +Fixes: 7b2ee50c0cd5 ("hv_netvsc: common detach logic") +Signed-off-by: Dexuan Cui +Cc: Stephen Hemminger +Cc: K. Y. Srinivasan +Cc: Haiyang Zhang +Signed-off-by: David S. Miller +--- + drivers/net/hyperv/netvsc_drv.c | 4 +++- + 1 file changed, 3 insertions(+), 1 deletion(-) + +diff --git a/drivers/net/hyperv/netvsc_drv.c b/drivers/net/hyperv/netvsc_drv.c +index bef4d55a108c..8eec156418ea 100644 +--- a/drivers/net/hyperv/netvsc_drv.c ++++ b/drivers/net/hyperv/netvsc_drv.c +@@ -127,8 +127,10 @@ static int netvsc_open(struct net_device *net) + } + + rdev = nvdev->extension; +- if (!rdev->link_state) ++ if (!rdev->link_state) { + netif_carrier_on(net); ++ netif_tx_wake_all_queues(net); ++ } + + if (vf_netdev) { + /* Setting synthetic device up transparently sets +-- +2.17.1 + diff --git a/debian/patches/series b/debian/patches/series index 4c47e7b68..cc0aed6cc 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -99,6 +99,7 @@ bugfix/all/partially-revert-usb-kconfig-using-select-for-usb_co.patch bugfix/all/kbuild-include-addtree-remove-quotes-before-matching-path.patch debian/revert-objtool-fix-config_stack_validation-y-warning.patch bugfix/all/i40e-build-for-64-bit-targets-only.patch +bugfix/all/hv_netvsc-Fix-a-network-regression-after-ifdown-ifup.patch # Miscellaneous features features/all/kbuild-use-fmacro-prefix-map-to-make-__file__-a-rela.patch