Ahmed S. Darwish
29cbcd8582
net: sched: Remove Qdisc::running sequence counter
...
The Qdisc::running sequence counter has two uses:
1. Reliably reading qdisc's tc statistics while the qdisc is running
(a seqcount read/retry loop at gnet_stats_add_basic()).
2. As a flag, indicating whether the qdisc in question is running
(without any retry loops).
For the first usage, the Qdisc::running sequence counter write section,
qdisc_run_begin() => qdisc_run_end(), covers a much wider area than what
is actually needed: the raw qdisc's bstats update. A u64_stats sync
point was thus introduced (in previous commits) inside the bstats
structure itself. A local u64_stats write section is then started and
stopped for the bstats updates.
Use that u64_stats sync point mechanism for the bstats read/retry loop
at gnet_stats_add_basic().
For the second qdisc->running usage, a __QDISC_STATE_RUNNING bit flag,
accessed with atomic bitops, is sufficient. Using a bit flag instead of
a sequence counter at qdisc_run_begin/end() and qdisc_is_running() leads
to the SMP barriers implicitly added through raw_read_seqcount() and
write_seqcount_begin/end() getting removed. All call sites have been
surveyed though, and no required ordering was identified.
Now that the qdisc->running sequence counter is no longer used, remove
it.
Note, using u64_stats implies no sequence counter protection for 64-bit
architectures. This can lead to the qdisc tc statistics "packets" vs.
"bytes" values getting out of sync on rare occasions. The individual
values will still be valid.
Signed-off-by: Ahmed S. Darwish <a.darwish@linutronix.de >
Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de >
Signed-off-by: David S. Miller <davem@davemloft.net >
2021-10-18 12:54:41 +01:00
..
2020-11-19 17:21:34 +01:00
2021-10-01 15:46:15 -07:00
2021-07-01 13:19:48 -07:00
2021-01-28 20:36:21 -08:00
2021-10-18 12:54:41 +01:00
2021-09-28 13:04:55 +02:00
2021-08-02 15:11:37 +01:00
2019-06-05 17:37:07 +02:00
2021-07-25 23:06:02 +01:00
2021-06-01 16:54:42 -07:00
2020-02-28 14:51:30 +01:00
2021-10-18 12:54:41 +01:00
2021-04-27 14:02:06 -07:00
2019-05-30 11:26:41 -07:00
2021-04-23 10:17:26 +01:00
2021-08-16 18:43:39 -07:00
2021-06-11 13:32:46 -07:00
2019-11-06 16:14:48 -08:00
2021-10-13 09:40:45 -07:00
2021-08-03 13:05:25 +01:00
2020-07-21 18:30:47 -07:00
2021-08-03 11:50:22 +01:00
2020-05-01 12:15:37 -07:00
2021-08-03 11:50:22 +01:00
2021-08-11 14:57:31 -07:00
2021-03-26 17:43:55 +01:00
2021-07-01 11:23:50 -07:00
2019-05-21 11:28:45 +02:00
2019-06-19 17:09:55 +02:00
2021-08-17 11:58:21 +02:00
2020-02-29 14:39:08 +01:00
2021-06-10 11:45:14 -04:00
2020-07-15 07:45:24 -07:00
2020-03-27 19:40:38 -07:00
2021-10-15 11:33:08 +01:00
2021-10-15 11:33:08 +01:00
2021-08-05 11:46:42 +01:00
2021-10-13 09:40:46 -07:00
2019-05-30 11:29:52 -07:00
2019-05-30 11:29:52 -07:00
2021-10-12 16:29:17 -07:00
2021-07-30 15:33:24 +02:00
2019-05-21 11:52:39 +02:00
2019-05-21 11:52:39 +02:00
2021-10-13 09:40:46 -07:00
2021-09-19 13:05:44 +01:00
2019-12-16 16:09:44 -08:00
2018-03-05 12:52:45 -05:00
2021-07-09 13:55:53 -07:00
2020-05-08 21:33:33 -07:00
2021-07-29 12:18:11 +01:00
2020-05-05 13:23:29 -07:00
2020-02-19 13:52:32 +01:00
2020-04-20 07:34:16 +02:00
2019-06-19 17:09:55 +02:00
2018-05-28 22:59:54 -04:00
2019-12-24 22:37:30 -08:00
2020-07-28 17:42:31 -07:00
2021-03-14 14:46:32 -07:00
2021-08-19 18:09:18 -07:00
2021-09-02 11:44:19 +01:00
2021-01-21 13:33:45 +01:00
2021-01-21 13:33:45 +01:00
2019-12-09 10:36:44 -08:00
2021-10-18 12:54:41 +01:00
2021-02-12 16:31:46 -08:00
2019-03-22 12:09:31 -07:00
2021-01-29 20:39:14 -08:00
2021-03-18 19:51:12 -07:00
2020-06-22 21:12:44 -07:00
2019-10-25 16:24:32 -07:00
2021-06-28 14:29:45 -07:00
2021-08-13 09:58:25 +02:00
2019-05-30 11:26:41 -07:00
2021-08-27 17:29:18 -07:00
2019-04-22 21:50:53 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-03-30 13:45:04 -07:00
2021-01-27 18:18:15 -08:00
2021-10-15 11:28:34 +01:00
2021-10-15 11:33:08 +01:00
2020-12-12 15:08:54 -08:00
2021-07-23 16:44:57 -07:00
2020-08-26 07:33:19 -07:00
2019-09-27 12:05:02 +02:00
2019-02-08 21:50:15 -08:00
2021-10-04 12:53:35 +01:00
2020-06-20 17:47:53 -07:00
2021-08-24 09:59:01 +01:00
2021-08-05 15:08:47 -07:00
2019-06-18 20:48:45 -04:00
2021-09-24 14:07:10 +01:00
2021-07-27 20:11:44 +01:00
2021-02-04 18:37:57 -08:00
2021-09-30 14:17:10 +01:00
2020-11-19 10:49:50 -08:00
2021-03-30 13:29:39 -07:00
2021-05-18 13:27:32 -07:00
2018-03-27 09:51:23 +02:00
2019-06-19 17:09:55 +02:00
2020-06-20 17:22:22 -07:00
2018-07-11 23:10:19 -07:00
2021-03-23 14:14:50 -07:00
2019-10-08 13:23:05 -07:00
2021-10-13 09:40:46 -07:00
2021-07-27 13:05:56 +01:00
2021-10-13 09:40:46 -07:00
2021-08-30 01:51:36 +02:00
2021-09-27 12:02:54 +02:00
2019-05-30 11:26:41 -07:00
2021-06-24 12:41:12 -07:00
2021-09-29 11:00:11 +01:00
2021-09-29 11:00:11 +01:00
2020-03-02 11:16:27 -08:00
2021-03-26 15:14:56 -07:00
2020-02-28 12:08:37 -08:00
2020-05-29 21:20:20 -07:00
2021-09-18 14:20:00 +01:00
2019-12-09 10:36:44 -08:00
2021-10-13 09:40:46 -07:00
2021-10-12 11:27:47 +01:00
2018-05-28 22:59:54 -04:00
2021-08-01 12:00:51 +02:00
2018-08-01 09:52:30 -07:00
2019-05-21 11:28:45 +02:00
2021-07-27 11:43:50 +01:00
2019-11-12 08:18:03 -08:00
2019-04-11 13:59:49 -07:00
2021-09-24 14:07:10 +01:00
2021-10-15 10:54:20 +01:00
2020-03-04 13:25:55 -08:00
2019-05-30 11:26:32 -07:00
2021-10-18 12:54:41 +01:00
2021-09-26 11:09:07 +01:00
2021-05-17 15:29:35 -07:00
2021-08-09 15:34:21 -07:00
2019-05-30 11:26:32 -07:00
2021-03-25 17:40:43 -07:00
2020-07-31 09:24:23 +02:00
2020-08-24 14:35:00 -07:00
2021-10-13 09:40:45 -07:00
2020-11-23 18:36:21 -05:00
2020-06-23 20:27:09 -07:00
2018-03-13 18:37:02 +02:00
2021-08-04 10:01:26 +01:00
2019-04-22 21:47:25 -07:00
2021-10-18 12:54:41 +01:00
2020-07-13 11:03:44 -07:00
2019-05-30 11:26:32 -07:00
2019-05-30 11:26:32 -07:00
2020-06-04 15:39:32 -07:00
2021-04-28 14:06:45 -07:00
2018-04-11 10:33:46 -04:00
2020-09-28 15:19:03 -07:00
2019-10-05 16:29:00 -07:00
2021-06-15 18:01:05 +02:00
2021-10-15 11:28:34 +01:00
2021-08-03 13:05:26 +01:00
2019-06-19 17:09:55 +02:00
2021-08-04 12:35:07 +01:00
2019-05-30 11:26:32 -07:00
2021-10-15 11:28:34 +01:00
2019-05-30 11:26:32 -07:00
2018-05-08 00:02:41 -04:00
2019-10-04 14:07:07 -07:00
2021-09-28 13:26:23 +01:00
2020-06-23 20:10:15 -07:00
2020-06-18 20:46:23 -07:00
2021-02-04 18:37:14 -08:00
2021-04-12 17:34:27 +02:00
2018-02-16 15:57:42 -05:00
2019-11-14 18:12:17 -08:00
2020-09-14 16:49:39 -07:00
2018-01-24 19:13:45 -05:00
2019-12-09 10:28:43 -08:00
2019-11-16 12:39:10 -08:00
2021-09-28 00:18:34 +02:00
2021-06-24 19:41:15 +02:00
2021-09-30 23:23:49 +02:00
2021-07-21 09:49:19 +02:00
2021-09-28 00:18:35 +02:00