From f9004dbfff8a3fbbd7e2a88c8a4327c7f2f8e5b2 Mon Sep 17 00:00:00 2001 From: hc <hc@nodka.com> Date: Wed, 31 Jan 2024 01:04:47 +0000 Subject: [PATCH] add driver 5G --- 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