This repository has been archived on 2026-03-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
ubports_kernel_google_msm/include/linux
John Fastabend f0796d5c73 net: decreasing real_num_tx_queues needs to flush qdisc
Reducing real_num_queues needs to flush the qdisc otherwise
skbs with queue_mappings greater then real_num_tx_queues can
be sent to the underlying driver.

The flow for this is,

dev_queue_xmit()
	dev_pick_tx()
		skb_tx_hash()  => hash using real_num_tx_queues
		skb_set_queue_mapping()
	...
	qdisc_enqueue_root() => enqueue skb on txq from hash
...
dev->real_num_tx_queues -= n
...
sch_direct_xmit()
	dev_hard_start_xmit()
		ndo_start_xmit(skb,dev) => skb queue set with old hash

skbs are enqueued on the qdisc with skb->queue_mapping set
0 < queue_mappings < real_num_tx_queues.  When the driver
decreases real_num_tx_queues skb's may be dequeued from the
qdisc with a queue_mapping greater then real_num_tx_queues.

This fixes a case in ixgbe where this was occurring with DCB
and FCoE. Because the driver is using queue_mapping to map
skbs to tx descriptor rings we can potentially map skbs to
rings that no longer exist.

Signed-off-by: John Fastabend <john.r.fastabend@intel.com>
Tested-by: Ross Brattain <ross.b.brattain@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-07-02 21:59:07 -07:00
..
2010-05-28 01:38:00 +02:00
2010-05-27 09:12:53 -07:00
2009-06-11 21:36:09 -04:00
2010-05-19 22:41:57 -04:00
2010-05-10 16:08:01 -07:00
2010-05-17 16:30:58 -07:00
2007-02-09 17:39:36 -05:00
2008-01-28 23:21:18 +01:00
2009-11-04 09:50:58 -08:00
2010-05-27 22:05:02 -04:00
2010-05-27 22:15:33 -04:00
2006-10-02 07:57:12 -07:00
2010-05-25 08:07:01 -07:00
2010-05-27 09:12:42 -07:00
2006-10-04 00:31:09 -07:00
2010-05-25 19:41:19 -04:00
2007-07-17 10:23:03 -07:00
2009-04-28 07:37:28 +02:00
2009-12-12 13:08:15 +01:00
2005-04-16 15:20:36 -07:00
2006-11-30 04:40:22 +01:00
2005-04-16 15:20:36 -07:00
2008-02-14 21:13:33 -08:00
2006-10-03 23:01:26 +02:00
2009-06-18 13:04:04 -07:00
2010-02-10 17:47:17 -08:00
2010-05-27 09:12:50 -07:00
2010-05-30 09:02:47 -07:00
2010-05-06 10:56:07 +10:00
2007-10-16 09:43:17 -07:00
2008-04-25 00:25:08 +02:00
2010-05-25 11:41:43 -04:00
2010-05-10 11:08:35 -07:00
2010-01-14 22:38:09 -05:00
2010-05-27 09:12:43 -07:00
2005-04-16 15:20:36 -07:00
2010-05-15 23:28:39 -07:00
2009-02-18 15:37:53 -08:00