struct sched_gate_list __rcu *admin_sched;
        struct hrtimer advance_timer;
        struct list_head taprio_list;
-       struct sk_buff *(*dequeue)(struct Qdisc *sch);
-       struct sk_buff *(*peek)(struct Qdisc *sch);
        u32 txtime_delay;
 };
 
        return taprio_enqueue_one(skb, sch, child, to_free);
 }
 
-static struct sk_buff *taprio_peek_soft(struct Qdisc *sch)
+static struct sk_buff *taprio_peek(struct Qdisc *sch)
 {
        struct taprio_sched *q = qdisc_priv(sch);
        struct net_device *dev = qdisc_dev(sch);
        u32 gate_mask;
        int i;
 
+       if (unlikely(FULL_OFFLOAD_IS_ENABLED(q->flags))) {
+               WARN_ONCE(1, "Trying to peek into the root of a taprio qdisc configured with full offload\n");
+               return NULL;
+       }
+
        rcu_read_lock();
        entry = rcu_dereference(q->current_entry);
        gate_mask = entry ? entry->gate_mask : TAPRIO_ALL_GATES_OPEN;
        return NULL;
 }
 
-static struct sk_buff *taprio_peek_offload(struct Qdisc *sch)
-{
-       WARN_ONCE(1, "Trying to peek into the root of a taprio qdisc configured with full offload\n");
-
-       return NULL;
-}
-
-static struct sk_buff *taprio_peek(struct Qdisc *sch)
-{
-       struct taprio_sched *q = qdisc_priv(sch);
-
-       return q->peek(sch);
-}
-
 static void taprio_set_budget(struct taprio_sched *q, struct sched_entry *entry)
 {
        atomic_set(&entry->budget,
                             atomic64_read(&q->picos_per_byte)));
 }
 
-static struct sk_buff *taprio_dequeue_soft(struct Qdisc *sch)
+static struct sk_buff *taprio_dequeue(struct Qdisc *sch)
 {
        struct taprio_sched *q = qdisc_priv(sch);
        struct net_device *dev = qdisc_dev(sch);
        u32 gate_mask;
        int i;
 
+       if (unlikely(FULL_OFFLOAD_IS_ENABLED(q->flags))) {
+               WARN_ONCE(1, "Trying to dequeue from the root of a taprio qdisc configured with full offload\n");
+               return NULL;
+       }
+
        rcu_read_lock();
        entry = rcu_dereference(q->current_entry);
        /* if there's no entry, it means that the schedule didn't
        return skb;
 }
 
-static struct sk_buff *taprio_dequeue_offload(struct Qdisc *sch)
-{
-       WARN_ONCE(1, "Trying to dequeue from the root of a taprio qdisc configured with full offload\n");
-
-       return NULL;
-}
-
-static struct sk_buff *taprio_dequeue(struct Qdisc *sch)
-{
-       struct taprio_sched *q = qdisc_priv(sch);
-
-       return q->dequeue(sch);
-}
-
 static bool should_restart_cycle(const struct sched_gate_list *oper,
                                 const struct sched_entry *entry)
 {
                q->advance_timer.function = advance_sched;
        }
 
-       if (FULL_OFFLOAD_IS_ENABLED(q->flags)) {
-               q->dequeue = taprio_dequeue_offload;
-               q->peek = taprio_peek_offload;
-       } else {
-               /* Be sure to always keep the function pointers
-                * in a consistent state.
-                */
-               q->dequeue = taprio_dequeue_soft;
-               q->peek = taprio_peek_soft;
-       }
-
        err = taprio_get_start_time(sch, new_admin, &start);
        if (err < 0) {
                NL_SET_ERR_MSG(extack, "Internal error: failed get start time");
        hrtimer_init(&q->advance_timer, CLOCK_TAI, HRTIMER_MODE_ABS);
        q->advance_timer.function = advance_sched;
 
-       q->dequeue = taprio_dequeue_soft;
-       q->peek = taprio_peek_soft;
-
        q->root = sch;
 
        /* We only support static clockids. Use an invalid value as default