mirror of
https://github.com/torvalds/linux.git
synced 2026-05-31 02:24:24 +02:00
bpf: net_sched: Support updating bstats
Add a kfunc to update Qdisc bstats when an skb is dequeued. The kfunc is only available in .dequeue programs. Signed-off-by: Amery Hung <amery.hung@bytedance.com> Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org> Acked-by: Toke Høiland-Jørgensen <toke@redhat.com> Link: https://patch.msgid.link/20250409214606.2000194-6-ameryhung@gmail.com
This commit is contained in:
parent
7a2dafda95
commit
544e0a1f1e
|
|
@ -238,6 +238,15 @@ __bpf_kfunc void bpf_qdisc_reset_destroy_epilogue(struct Qdisc *sch)
|
|||
qdisc_watchdog_cancel(&q->watchdog);
|
||||
}
|
||||
|
||||
/* bpf_qdisc_bstats_update - Update Qdisc basic statistics
|
||||
* @sch: The qdisc from which an skb is dequeued.
|
||||
* @skb: The skb to be dequeued.
|
||||
*/
|
||||
__bpf_kfunc void bpf_qdisc_bstats_update(struct Qdisc *sch, const struct sk_buff *skb)
|
||||
{
|
||||
bstats_update(&sch->bstats, skb);
|
||||
}
|
||||
|
||||
__bpf_kfunc_end_defs();
|
||||
|
||||
BTF_KFUNCS_START(qdisc_kfunc_ids)
|
||||
|
|
@ -248,6 +257,7 @@ BTF_ID_FLAGS(func, bpf_dynptr_from_skb, KF_TRUSTED_ARGS)
|
|||
BTF_ID_FLAGS(func, bpf_qdisc_watchdog_schedule, KF_TRUSTED_ARGS)
|
||||
BTF_ID_FLAGS(func, bpf_qdisc_init_prologue, KF_TRUSTED_ARGS)
|
||||
BTF_ID_FLAGS(func, bpf_qdisc_reset_destroy_epilogue, KF_TRUSTED_ARGS)
|
||||
BTF_ID_FLAGS(func, bpf_qdisc_bstats_update, KF_TRUSTED_ARGS)
|
||||
BTF_KFUNCS_END(qdisc_kfunc_ids)
|
||||
|
||||
BTF_SET_START(qdisc_common_kfunc_set)
|
||||
|
|
@ -263,6 +273,7 @@ BTF_SET_END(qdisc_enqueue_kfunc_set)
|
|||
|
||||
BTF_SET_START(qdisc_dequeue_kfunc_set)
|
||||
BTF_ID(func, bpf_qdisc_watchdog_schedule)
|
||||
BTF_ID(func, bpf_qdisc_bstats_update)
|
||||
BTF_SET_END(qdisc_dequeue_kfunc_set)
|
||||
|
||||
enum qdisc_ops_kf_flags {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user