From 244b2c5ca8b14627e4a17755e5922221e121c771 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 09 Oct 2024 06:15:07 +0000
Subject: [PATCH] change system file
---
kernel/include/net/sch_generic.h | 33 ++++++---------------------------
1 files changed, 6 insertions(+), 27 deletions(-)
diff --git a/kernel/include/net/sch_generic.h b/kernel/include/net/sch_generic.h
index 18965dd..c9b9482 100644
--- a/kernel/include/net/sch_generic.h
+++ b/kernel/include/net/sch_generic.h
@@ -10,7 +10,6 @@
#include <linux/percpu.h>
#include <linux/dynamic_queue_limits.h>
#include <linux/list.h>
-#include <net/net_seq_lock.h>
#include <linux/refcount.h>
#include <linux/workqueue.h>
#include <linux/mutex.h>
@@ -103,7 +102,7 @@
struct sk_buff_head gso_skb ____cacheline_aligned_in_smp;
struct qdisc_skb_head q;
struct gnet_stats_basic_packed bstats;
- net_seqlock_t running;
+ seqcount_t running;
struct gnet_stats_queue qstats;
unsigned long state;
struct Qdisc *next_sched;
@@ -146,11 +145,7 @@
{
if (qdisc->flags & TCQ_F_NOLOCK)
return spin_is_locked(&qdisc->seqlock);
-#ifdef CONFIG_PREEMPT_RT
- return spin_is_locked(&qdisc->running.lock) ? true : false;
-#else
return (raw_read_seqcount(&qdisc->running) & 1) ? true : false;
-#endif
}
static inline bool qdisc_is_percpu_stats(const struct Qdisc *q)
@@ -191,35 +186,17 @@
} else if (qdisc_is_running(qdisc)) {
return false;
}
-#ifdef CONFIG_PREEMPT_RT
- if (spin_trylock(&qdisc->running.lock)) {
- seqcount_t *s = &qdisc->running.seqcount.seqcount;
- /*
- * Variant of write_seqcount_t_begin() telling lockdep that a
- * trylock was attempted.
- */
- raw_write_seqcount_t_begin(s);
- seqcount_acquire(&s->dep_map, 0, 1, _RET_IP_);
- return true;
- }
- return false;
-#else
/* Variant of write_seqcount_begin() telling lockdep a trylock
* was attempted.
*/
raw_write_seqcount_begin(&qdisc->running);
seqcount_acquire(&qdisc->running.dep_map, 0, 1, _RET_IP_);
return true;
-#endif
}
static inline void qdisc_run_end(struct Qdisc *qdisc)
{
-#ifdef CONFIG_PREEMPT_RT
- write_sequnlock(&qdisc->running);
-#else
write_seqcount_end(&qdisc->running);
-#endif
if (qdisc->flags & TCQ_F_NOLOCK) {
spin_unlock(&qdisc->seqlock);
@@ -611,7 +588,7 @@
return qdisc_lock(root);
}
-static inline net_seqlock_t *qdisc_root_sleeping_running(const struct Qdisc *qdisc)
+static inline seqcount_t *qdisc_root_sleeping_running(const struct Qdisc *qdisc)
{
struct Qdisc *root = qdisc_root_sleeping(qdisc);
@@ -1346,9 +1323,11 @@
void mini_qdisc_pair_block_init(struct mini_Qdisc_pair *miniqp,
struct tcf_block *block);
-static inline int skb_tc_reinsert(struct sk_buff *skb, struct tcf_result *res)
+/* Make sure qdisc is no longer in SCHED state. */
+static inline void qdisc_synchronize(const struct Qdisc *q)
{
- return res->ingress ? netif_receive_skb(skb) : dev_queue_xmit(skb);
+ while (test_bit(__QDISC_STATE_SCHED, &q->state))
+ msleep(1);
}
#endif
--
Gitblit v1.6.2