1 /* SPDX-License-Identifier: GPL-2.0 */ 2 3 #ifndef _BPF_QDISC_COMMON_H 4 #define _BPF_QDISC_COMMON_H 5 6 #define NET_XMIT_SUCCESS 0x00 7 #define NET_XMIT_DROP 0x01 /* skb dropped */ 8 #define NET_XMIT_CN 0x02 /* congestion notification */ 9 10 #define TC_PRIO_CONTROL 7 11 #define TC_PRIO_MAX 15 12 13 #define private(name) SEC(".data." #name) __hidden __attribute__((aligned(8))) 14 15 u32 bpf_skb_get_hash(struct sk_buff *p) __ksym; 16 void bpf_kfree_skb(struct sk_buff *p) __ksym; 17 void bpf_qdisc_skb_drop(struct sk_buff *p, struct bpf_sk_buff_ptr *to_free) __ksym; 18 void bpf_qdisc_watchdog_schedule(struct Qdisc *sch, u64 expire, u64 delta_ns) __ksym; 19 void bpf_qdisc_bstats_update(struct Qdisc *sch, const struct sk_buff *skb) __ksym; 20 21 static struct qdisc_skb_cb *qdisc_skb_cb(const struct sk_buff *skb) 22 { 23 return (struct qdisc_skb_cb *)skb->cb; 24 } 25 26 static inline unsigned int qdisc_pkt_len(const struct sk_buff *skb) 27 { 28 return qdisc_skb_cb(skb)->pkt_len; 29 } 30 31 #endif 32