diff options
author | Rob Herring <robh@kernel.org> | 2018-03-08 09:21:07 -0600 |
---|---|---|
committer | Rob Herring <robh@kernel.org> | 2018-03-08 09:21:07 -0600 |
commit | c679fa6e3aaa5c58fc514b5b88cfa82774b8d390 (patch) | |
tree | 0c10b339368bd1795152a66a4e245e6f654fb3ec /net/core/dev.c | |
parent | bdb7013df910681f84eff27b07791d4c160cb76f (diff) | |
parent | 4fd98e374fd377ae0458a9dc44aa779cf9631ddd (diff) |
Merge branch 'dtc-update' into dt/next
Diffstat (limited to 'net/core/dev.c')
-rw-r--r-- | net/core/dev.c | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/net/core/dev.c b/net/core/dev.c index dda9d7b9a840..d4362befe7e2 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -2382,8 +2382,11 @@ EXPORT_SYMBOL(netdev_set_num_tc); */ int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq) { + bool disabling; int rc; + disabling = txq < dev->real_num_tx_queues; + if (txq < 1 || txq > dev->num_tx_queues) return -EINVAL; @@ -2399,15 +2402,19 @@ int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq) if (dev->num_tc) netif_setup_tc(dev, txq); - if (txq < dev->real_num_tx_queues) { + dev->real_num_tx_queues = txq; + + if (disabling) { + synchronize_net(); qdisc_reset_all_tx_gt(dev, txq); #ifdef CONFIG_XPS netif_reset_xps_queues_gt(dev, txq); #endif } + } else { + dev->real_num_tx_queues = txq; } - dev->real_num_tx_queues = txq; return 0; } EXPORT_SYMBOL(netif_set_real_num_tx_queues); |