IFF_NO_QUEUE: Fix for drivers not calling ether_setup() (regression in 4.3)
This commit is contained in:
parent
2c39d8f576
commit
96504c2870
|
@ -36,6 +36,7 @@ linux (4.4.1-1) UNRELEASED; urgency=medium
|
|||
- [i386/686-pae] mm: Fix types used in pgprot cacheability flags
|
||||
translations
|
||||
- [i386/686-pae] PCI: Set pci=nobios by default
|
||||
* IFF_NO_QUEUE: Fix for drivers not calling ether_setup() (regression in 4.3)
|
||||
|
||||
[ Roger Shimizu ]
|
||||
* Enable TTY_PRINTK as module (Closes: #814540).
|
||||
|
|
41
debian/patches/bugfix/all/iff_no_queue-fix-for-drivers-not-calling-ether_setup.patch
vendored
Normal file
41
debian/patches/bugfix/all/iff_no_queue-fix-for-drivers-not-calling-ether_setup.patch
vendored
Normal file
|
@ -0,0 +1,41 @@
|
|||
From: Phil Sutter <phil@nwl.cc>
|
||||
Date: Wed, 17 Feb 2016 15:37:43 +0100
|
||||
Subject: IFF_NO_QUEUE: Fix for drivers not calling ether_setup()
|
||||
Origin: http://mid.gmane.org/1455719863-25730-1-git-send-email-phil@nwl.cc
|
||||
|
||||
My implementation around IFF_NO_QUEUE driver flag assumed that leaving
|
||||
tx_queue_len untouched (specifically: not setting it to zero) by drivers
|
||||
would make it possible to assign a regular qdisc to them without having
|
||||
to worry about setting tx_queue_len to a useful value. This was only
|
||||
partially true: I overlooked that some drivers don't call ether_setup()
|
||||
and therefore not initialize tx_queue_len to the default value of 1000.
|
||||
Consequently, removing the workarounds in place for that case in qdisc
|
||||
implementations which cared about it (namely, pfifo, bfifo, gred, htb,
|
||||
plug and sfb) leads to problems with these specific interface types and
|
||||
qdiscs.
|
||||
|
||||
Luckily, there's already a sanitization point for drivers setting
|
||||
tx_queue_len to zero, which can be reused to assign the fallback value
|
||||
most qdisc implementations used, which is 1.
|
||||
|
||||
Fixes: 348e3435cbefa ("net: sched: drop all special handling of tx_queue_len == 0")
|
||||
Tested-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
|
||||
Signed-off-by: Phil Sutter <phil@nwl.cc>
|
||||
---
|
||||
net/core/dev.c | 4 +++-
|
||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
||||
|
||||
--- a/net/core/dev.c
|
||||
+++ b/net/core/dev.c
|
||||
@@ -7125,8 +7125,10 @@ struct net_device *alloc_netdev_mqs(int
|
||||
dev->priv_flags = IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM;
|
||||
setup(dev);
|
||||
|
||||
- if (!dev->tx_queue_len)
|
||||
+ if (!dev->tx_queue_len) {
|
||||
dev->priv_flags |= IFF_NO_QUEUE;
|
||||
+ dev->tx_queue_len = 1;
|
||||
+ }
|
||||
|
||||
dev->num_tx_queues = txqs;
|
||||
dev->real_num_tx_queues = txqs;
|
|
@ -132,3 +132,4 @@ bugfix/x86/x86-efi-build-our-own-page-table-structures.patch
|
|||
bugfix/x86/x86-efi-setup-separate-efi-page-tables-in-kexec-path.patch
|
||||
bugfix/x86/x86-mm-fix-types-used-in-pgprot-cacheability-flags-t.patch
|
||||
debian/i386-686-pae-pci-set-pci-nobios-by-default.patch
|
||||
bugfix/all/iff_no_queue-fix-for-drivers-not-calling-ether_setup.patch
|
||||
|
|
Loading…
Reference in New Issue