#define SCX_OP_IDX(op)         (offsetof(struct sched_ext_ops, op) / sizeof(void (*)(void)))
 
 enum scx_consts {
+       SCX_SLICE_BYPASS                = SCX_SLICE_DFL / 4,
        SCX_DSP_DFL_MAX_BATCH           = 32,
        SCX_DSP_MAX_LOOPS               = 32,
        SCX_WATCHDOG_MAX_TIMEOUT        = 30 * HZ,
 static void do_enqueue_task(struct rq *rq, struct task_struct *p, u64 enq_flags,
                            int sticky_cpu)
 {
+       bool bypassing = scx_rq_bypassing(rq);
        struct task_struct **ddsp_taskp;
        unsigned long qseq;
 
        if (!scx_rq_online(rq))
                goto local;
 
-       if (scx_rq_bypassing(rq))
+       if (bypassing)
                goto global;
 
        if (p->scx.ddsp_dsq_id != SCX_DSQ_INVALID)
 
 global:
        touch_core_sched(rq, p);        /* see the comment in local: */
-       p->scx.slice = SCX_SLICE_DFL;
+       p->scx.slice = bypassing ? SCX_SLICE_BYPASS : SCX_SLICE_DFL;
        dispatch_enqueue(find_global_dsq(p), p, enq_flags);
 }