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-30 09:12:43 -07:00
2009-01-06 18:10:26 -08:00
2009-09-19 00:51:34 -03:00
2010-05-27 11:34:55 -07:00
2010-05-28 01:37:38 +02:00
2009-09-22 07:54:33 -07:00
2010-05-28 01:38:00 +02:00
2010-05-27 09:12:40 -07:00
2010-05-14 01:56:12 +01:00
2010-05-31 16:41:35 +02:00
2009-12-14 12:49:47 +11:00
2010-05-25 10:16:01 +01:00
2008-09-03 15:41:57 -07:00
2010-05-25 00:38:26 -06:00
2010-05-29 15:31:57 -07:00
2010-05-28 14:42:18 -07:00
2010-05-27 09:12:53 -07:00
2009-09-30 16:12:20 -07:00
2009-09-15 09:50:47 -07:00
2010-05-21 20:00:35 +02:00
2010-05-30 09:00:03 -07:00
2010-05-21 15:26:46 -07:00
2010-05-27 22:15:33 -04:00
2009-06-16 19:47:48 -07:00
2008-04-28 08:58:19 -07:00
2009-11-24 15:06:47 +11:00
2009-06-11 21:36:09 -04:00
2010-05-27 09:12:44 -07:00
2010-05-25 08:07:00 -07:00
2010-05-27 09:12:53 -07:00
2010-05-29 09:12:30 -07:00
2009-07-16 09:19:16 -07:00
2009-03-24 16:38:26 -07:00
2008-06-04 14:56:12 +01:00
2010-05-27 21:06:58 -04:00
2010-05-27 09:12:44 -07:00
2010-05-27 09:12:45 -07:00
2009-04-14 11:11:52 +02:00
2010-05-19 22:41:57 -04:00
2010-05-10 16:08:01 -07:00
2010-05-22 00:36:56 -06:00
2009-04-15 12:22:37 +02:00
2010-05-27 09:12:53 -07:00
2010-05-17 16:30:58 -07:00
2007-02-09 17:39:36 -05:00
2010-05-21 21:12:01 +02:00
2010-05-25 08:07:05 -07:00
2010-05-21 20:29:10 -07:00
2008-01-28 23:21:18 +01:00
2010-05-25 08:07:02 -07:00
2009-11-04 09:50:58 -08:00
2009-05-05 12:26:24 -07:00
2010-06-29 01:00:29 -07:00
2010-05-27 22:05:02 -04:00
2010-05-27 22:05:02 -04:00
2010-05-21 21:12:40 +02:00
2010-05-24 00:36:13 -07:00
2010-05-27 22:03:07 -04:00
2010-04-15 22:18:36 +02:00
2009-09-22 07:17:47 -07:00
2009-12-17 10:58:17 -05:00
2009-03-31 23:00:26 -04:00
2010-05-27 22:15:33 -04:00
2010-05-27 15:23:47 -07:00
2010-05-25 15:06:06 +02:00
2006-10-02 07:57:12 -07:00
2010-05-21 18:31:18 -04:00
2010-05-25 08:07:01 -07:00
2010-05-27 09:12:42 -07:00
2009-06-26 10:48:34 +02:00
2010-05-25 08:07:01 -07:00
2009-02-24 19:19:49 +01:00
2010-05-22 00:36:56 -06:00
2010-05-24 08:05:29 -07:00
2010-02-16 15:55:17 -08:00
2010-05-27 09:12:52 -07:00
2009-12-15 20:42:06 +01:00
2009-11-20 00:52:09 -08:00
2010-05-20 23:05:28 -07:00
2006-10-04 00:31:09 -07:00
2010-05-25 08:07:09 -07:00
2007-07-31 15:39:40 -07:00
2010-05-25 08:07:05 -07:00
2010-02-16 16:01:21 -08:00
2010-05-27 09:12:45 -07:00
2009-12-31 19:45:04 +00:00
2010-03-15 15:29:39 +01:00
2008-07-24 19:11:15 -07:00
2010-05-26 17:34:16 +01:00
2010-05-26 13:07:55 +01:00
2010-05-25 19:41:19 -04:00
2007-07-17 10:23:03 -07:00
2009-06-16 19:47:57 -07:00
2010-05-25 08:07:07 -07:00
2009-04-28 07:37:28 +02:00
2010-05-25 08:07:09 -07:00
2008-04-15 19:35:41 -07:00
2010-05-27 09:12:44 -07:00
2010-05-25 08:07:00 -07:00
2010-03-17 18:43:47 -07:00
2010-05-25 08:06:57 -07:00
2010-05-25 08:06:59 -07:00
2010-05-25 15:08:26 -07:00
2010-05-25 08:07:02 -07:00
2009-12-12 13:08:15 +01:00
2005-04-16 15:20:36 -07:00
2010-05-27 09:12:57 -07:00
2010-05-21 17:15:44 -07:00
2010-04-08 10:18:47 +02:00
2009-01-05 08:40:13 +10:30
2009-10-29 08:56:17 +10:30
2009-04-01 07:38:54 -04:00
2006-11-30 04:40:22 +01:00
2008-02-13 16:21:18 -08:00
2010-06-30 13:01:11 -07:00
2010-07-02 21:59:07 -07:00
2009-12-15 08:53:13 -08:00
2010-05-30 09:00:03 -07:00
2010-05-27 09:12:47 -07:00
2010-05-22 00:10:41 -06:00
2010-05-22 00:10:40 -06:00
2010-05-27 09:12:44 -07:00
2005-04-16 15:20:36 -07:00
2008-10-13 10:10:37 -07:00
2008-02-14 21:13:33 -08:00
2010-05-21 18:58:52 -07:00
2010-05-28 14:42:18 -07:00
2010-05-21 21:12:52 +02:00
2006-10-03 23:01:26 +02:00
2009-06-18 13:04:04 -07:00
2010-05-27 18:56:27 +02:00
2010-05-30 09:11:11 -07:00
2010-02-08 18:19:41 -06:00
2010-05-21 18:31:26 -04:00
2010-05-27 09:12:52 -07:00
2010-02-10 17:47:17 -08:00
2010-05-25 08:07:03 -07:00
2010-05-21 18:31:19 -04:00
2010-05-21 18:31:19 -04:00
2010-04-27 13:06:35 -04:00
2010-05-27 09:12:50 -07:00
2010-05-27 09:12:50 -07:00
2010-05-27 09:12:51 -07:00
2010-05-30 09:02:47 -07:00
2010-05-25 08:06:58 -07:00
2006-07-13 13:21:35 -07:00
2010-05-11 14:40:55 +02:00
2010-05-27 09:12:47 -07:00
2010-05-27 09:12:39 -07:00
2009-10-30 08:27:25 +11:00
2010-05-06 10:56:07 +10:00
2007-10-16 09:43:17 -07:00
2010-05-27 09:12:49 -07:00
2008-04-25 00:25:08 +02:00
2010-05-25 11:41:43 -04:00
2010-06-10 22:23:34 -07:00
2010-05-30 13:02:08 +03:00
2010-04-06 23:53:30 -07:00
2010-05-21 21:12:40 +02:00
2010-05-10 11:08:35 -07:00
2008-05-26 16:15:32 +02:00
2009-06-12 23:04:12 +02:00
2006-12-07 02:14:08 +01:00
2010-01-14 22:38:09 -05:00
2009-04-10 15:48:52 +02:00
2010-05-27 09:12:43 -07:00
2010-05-27 09:12:52 -07:00
2005-04-16 15:20:36 -07:00
2010-05-15 23:28:39 -07:00
2010-03-07 17:04:47 -08:00
2010-05-21 09:37:31 -07:00
2010-02-04 14:20:41 +11:00
2009-01-31 00:08:18 +05:30
2010-05-27 09:12:51 -07:00
2010-04-06 21:50:02 +02:00
2009-02-18 15:37:53 -08:00
2010-05-27 09:12:57 -07:00
2009-08-14 15:00:52 +09:00
2010-05-25 08:06:59 -07:00
2006-04-26 12:56:16 +01:00
2009-11-16 01:09:48 +09:00
2010-05-21 20:01:03 +02:00
2010-05-21 18:31:18 -04:00