/
usr
/
src
/
kernels
/
4.18.0-553.121.1.el8_10.x86_64
/
include
/
net
/
/usr/src/kernels/4.18.0-553.121.1.el8_10.x86_64/include/net
mkdir
upload
Name
Size
Mode
Actions
9p/
-
0755
rm
bluetooth/
-
0755
rm
caif/
-
0755
rm
iucv/
-
0755
rm
mana/
-
0755
rm
netfilter/
-
0755
rm
netns/
-
0755
rm
nfc/
-
0755
rm
phonet/
-
0755
rm
sctp/
-
0755
rm
tc_act/
-
0755
rm
6lowpan.h
10271
0644
edit
dl
rm
act_api.h
9478
0644
edit
dl
rm
addrconf.h
13826
0644
edit
dl
rm
af_ieee802154.h
1591
0644
edit
dl
rm
af_rxrpc.h
2976
0644
edit
dl
rm
af_unix.h
2272
0644
edit
dl
rm
af_vsock.h
7295
0644
edit
dl
rm
ah.h
382
0644
edit
dl
rm
arp.h
2052
0644
edit
dl
rm
atmclip.h
1515
0644
edit
dl
rm
ax25.h
14999
0644
edit
dl
rm
ax88796.h
1488
0644
edit
dl
rm
bareudp.h
333
0644
edit
dl
rm
bonding.h
20225
0644
edit
dl
rm
bond_3ad.h
9629
0644
edit
dl
rm
bond_alb.h
6251
0644
edit
dl
rm
bond_options.h
3916
0644
edit
dl
rm
bpf_sk_storage.h
1802
0644
edit
dl
rm
busy_poll.h
4973
0644
edit
dl
rm
calipso.h
2199
0644
edit
dl
rm
cfg80211-wext.h
1900
0644
edit
dl
rm
cfg80211.h
325844
0644
edit
dl
rm
cfg802154.h
11175
0644
edit
dl
rm
checksum.h
4850
0644
edit
dl
rm
cipso_ipv4.h
8399
0644
edit
dl
rm
cls_cgroup.h
2301
0644
edit
dl
rm
codel.h
6000
0644
edit
dl
rm
codel_impl.h
8500
0644
edit
dl
rm
codel_qdisc.h
3001
0644
edit
dl
rm
compat.h
1711
0644
edit
dl
rm
datalink.h
619
0644
edit
dl
rm
dcbevent.h
1293
0644
edit
dl
rm
dcbnl.h
5267
0644
edit
dl
rm
devlink.h
64711
0644
edit
dl
rm
dn.h
7046
0644
edit
dl
rm
dn_dev.h
5488
0644
edit
dl
rm
dn_fib.h
4077
0644
edit
dl
rm
dn_neigh.h
968
0644
edit
dl
rm
dn_nsp.h
5966
0644
edit
dl
rm
dn_route.h
4500
0644
edit
dl
rm
dropreason-core.h
12063
0644
edit
dl
rm
drop_monitor.h
901
0644
edit
dl
rm
dsa.h
16605
0644
edit
dl
rm
dsfield.h
1139
0644
edit
dl
rm
dst.h
14870
0644
edit
dl
rm
dst_cache.h
2596
0644
edit
dl
rm
dst_metadata.h
5521
0644
edit
dl
rm
dst_ops.h
2564
0644
edit
dl
rm
erspan.h
8527
0644
edit
dl
rm
esp.h
1190
0644
edit
dl
rm
espintcp.h
966
0644
edit
dl
rm
ethoc.h
537
0644
edit
dl
rm
failover.h
1178
0644
edit
dl
rm
fib_notifier.h
1476
0644
edit
dl
rm
fib_rules.h
5728
0644
edit
dl
rm
firewire.h
636
0644
edit
dl
rm
flow.h
6353
0644
edit
dl
rm
flow_dissector.h
11284
0644
edit
dl
rm
flow_offload.h
17797
0644
edit
dl
rm
fou.h
549
0644
edit
dl
rm
fq.h
2497
0644
edit
dl
rm
fq_impl.h
8144
0644
edit
dl
rm
garp.h
2678
0644
edit
dl
rm
genetlink.h
14647
0644
edit
dl
rm
geneve.h
1898
0644
edit
dl
rm
gen_stats.h
3034
0644
edit
dl
rm
gre.h
3377
0644
edit
dl
rm
gro_cells.h
443
0644
edit
dl
rm
gtp.h
633
0644
edit
dl
rm
gue.h
3311
0644
edit
dl
rm
hwbm.h
937
0644
edit
dl
rm
icmp.h
1765
0644
edit
dl
rm
ieee80211_radiotap.h
23017
0644
edit
dl
rm
ieee802154_netdev.h
9358
0644
edit
dl
rm
ife.h
1057
0644
edit
dl
rm
if_inet6.h
6591
0644
edit
dl
rm
ila.h
498
0644
edit
dl
rm
inet6_connection_sock.h
976
0644
edit
dl
rm
inet6_hashtables.h
3746
0644
edit
dl
rm
inetpeer.h
3372
0644
edit
dl
rm
inet_common.h
2614
0644
edit
dl
rm
inet_connection_sock.h
11981
0644
edit
dl
rm
inet_ecn.h
8071
0644
edit
dl
rm
inet_frag.h
4816
0644
edit
dl
rm
inet_hashtables.h
13847
0644
edit
dl
rm
inet_sock.h
9828
0644
edit
dl
rm
inet_timewait_sock.h
3926
0644
edit
dl
rm
ip.h
21354
0644
edit
dl
rm
ip6_checksum.h
2981
0644
edit
dl
rm
ip6_fib.h
13766
0644
edit
dl
rm
ip6_route.h
9228
0644
edit
dl
rm
ip6_tunnel.h
5096
0644
edit
dl
rm
ipcomp.h
659
0644
edit
dl
rm
ipconfig.h
811
0644
edit
dl
rm
ipv6.h
32741
0644
edit
dl
rm
ipv6_frag.h
3321
0644
edit
dl
rm
ipv6_stubs.h
2671
0644
edit
dl
rm
ipx.h
4386
0644
edit
dl
rm
ip_fib.h
14290
0644
edit
dl
rm
ip_tunnels.h
14697
0644
edit
dl
rm
ip_vs.h
49407
0644
edit
dl
rm
iw_handler.h
21413
0644
edit
dl
rm
kcm.h
5083
0644
edit
dl
rm
l3mdev.h
6743
0644
edit
dl
rm
lag.h
409
0644
edit
dl
rm
lapb.h
4869
0644
edit
dl
rm
lib80211.h
4017
0644
edit
dl
rm
llc.h
4464
0644
edit
dl
rm
llc_conn.h
4155
0644
edit
dl
rm
llc_c_ac.h
9537
0644
edit
dl
rm
llc_c_ev.h
10940
0644
edit
dl
rm
llc_c_st.h
1762
0644
edit
dl
rm
llc_if.h
2210
0644
edit
dl
rm
llc_pdu.h
14783
0644
edit
dl
rm
llc_sap.h
1108
0644
edit
dl
rm
llc_s_ac.h
1591
0644
edit
dl
rm
llc_s_ev.h
2255
0644
edit
dl
rm
llc_s_st.h
947
0644
edit
dl
rm
lwtunnel.h
6563
0644
edit
dl
rm
mac80211.h
294437
0644
edit
dl
rm
mac802154.h
15633
0644
edit
dl
rm
mip6.h
1617
0644
edit
dl
rm
mld.h
2870
0644
edit
dl
rm
mpls.h
1340
0644
edit
dl
rm
mpls_iptunnel.h
827
0644
edit
dl
rm
mptcp.h
6242
0644
edit
dl
rm
mrp.h
3103
0644
edit
dl
rm
ncsi.h
1964
0644
edit
dl
rm
ndisc.h
15095
0644
edit
dl
rm
neighbour.h
16289
0644
edit
dl
rm
netdev_queues.h
5609
0644
edit
dl
rm
netevent.h
1044
0644
edit
dl
rm
netlabel.h
21236
0644
edit
dl
rm
netlink.h
63253
0644
edit
dl
rm
netprio_cgroup.h
1260
0644
edit
dl
rm
netrom.h
7896
0644
edit
dl
rm
net_failover.h
1023
0644
edit
dl
rm
net_namespace.h
14177
0644
edit
dl
rm
net_ratelimit.h
220
0644
edit
dl
rm
nexthop.h
865
0644
edit
dl
rm
nl802154.h
12385
0644
edit
dl
rm
nsh.h
12602
0644
edit
dl
rm
p8022.h
447
0644
edit
dl
rm
page_pool.h
6985
0644
edit
dl
rm
pie.h
3684
0644
edit
dl
rm
ping.h
3197
0644
edit
dl
rm
pkt_cls.h
26178
0644
edit
dl
rm
pkt_sched.h
6543
0644
edit
dl
rm
pptp.h
557
0644
edit
dl
rm
protocol.h
4320
0644
edit
dl
rm
psample.h
1083
0644
edit
dl
rm
psnap.h
351
0644
edit
dl
rm
raw.h
2161
0644
edit
dl
rm
rawv6.h
856
0644
edit
dl
rm
red.h
11600
0644
edit
dl
rm
regulatory.h
10961
0644
edit
dl
rm
request_sock.h
6871
0644
edit
dl
rm
rose.h
7802
0644
edit
dl
rm
route.h
11390
0644
edit
dl
rm
rsi_91x.h
1710
0644
edit
dl
rm
rtnetlink.h
7212
0644
edit
dl
rm
sch_generic.h
33841
0644
edit
dl
rm
scm.h
3671
0644
edit
dl
rm
secure_seq.h
855
0644
edit
dl
rm
seg6.h
1874
0644
edit
dl
rm
seg6_hmac.h
1699
0644
edit
dl
rm
seg6_local.h
870
0644
edit
dl
rm
slhc_vj.h
6831
0644
edit
dl
rm
smc.h
2155
0644
edit
dl
rm
snmp.h
5482
0644
edit
dl
rm
sock.h
79182
0644
edit
dl
rm
sock_reuseport.h
1565
0644
edit
dl
rm
Space.h
1094
0644
edit
dl
rm
stp.h
383
0644
edit
dl
rm
strparser.h
4340
0644
edit
dl
rm
switchdev.h
17812
0644
edit
dl
rm
tcp.h
73125
0644
edit
dl
rm
tcp_states.h
1540
0644
edit
dl
rm
tc_wrapper.h
7033
0644
edit
dl
rm
timewait_sock.h
1136
0644
edit
dl
rm
tipc.h
2405
0644
edit
dl
rm
tls.h
21363
0644
edit
dl
rm
tls_toe.h
3006
0644
edit
dl
rm
transp_v6.h
1996
0644
edit
dl
rm
tso.h
515
0644
edit
dl
rm
tun_proto.h
988
0644
edit
dl
rm
udp.h
16481
0644
edit
dl
rm
udplite.h
3762
0644
edit
dl
rm
udp_tunnel.h
13376
0644
edit
dl
rm
vsock_addr.h
662
0644
edit
dl
rm
vxlan.h
13541
0644
edit
dl
rm
wext.h
1510
0644
edit
dl
rm
wimax.h
20445
0644
edit
dl
rm
x25.h
9658
0644
edit
dl
rm
x25device.h
387
0644
edit
dl
rm
xdp.h
9436
0644
edit
dl
rm
xdp_priv.h
446
0644
edit
dl
rm
xdp_sock.h
2094
0644
edit
dl
rm
xdp_sock_drv.h
6423
0644
edit
dl
rm
xfrm.h
59628
0644
edit
dl
rm
xsk_buff_pool.h
6550
0644
edit
dl
rm
Edit:
/usr/src/kernels/4.18.0-553.121.1.el8_10.x86_64/include/net/xdp.h
(9436B)
/* include/net/xdp.h * * Copyright (c) 2017 Jesper Dangaard Brouer, Red Hat Inc. * Released under terms in GPL version 2. See COPYING. */ #ifndef __LINUX_NET_XDP_H__ #define __LINUX_NET_XDP_H__ #include <linux/skbuff.h> /* skb_shared_info */ #include <linux/rh_kabi.h> /** * DOC: XDP RX-queue information * * The XDP RX-queue info (xdp_rxq_info) is associated with the driver * level RX-ring queues. It is information that is specific to how * the driver have configured a given RX-ring queue. * * Each xdp_buff frame received in the driver carry a (pointer) * reference to this xdp_rxq_info structure. This provides the XDP * data-path read-access to RX-info for both kernel and bpf-side * (limited subset). * * For now, direct access is only safe while running in NAPI/softirq * context. Contents is read-mostly and must not be updated during * driver NAPI/softirq poll. * * The driver usage API is a register and unregister API. * * The struct is not directly tied to the XDP prog. A new XDP prog * can be attached as long as it doesn't change the underlying * RX-ring. If the RX-ring does change significantly, the NIC driver * naturally need to stop the RX-ring before purging and reallocating * memory. In that process the driver MUST call unregistor (which * also apply for driver shutdown and unload). The register API is * also mandatory during RX-ring setup. */ enum xdp_mem_type { MEM_TYPE_PAGE_SHARED = 0, /* Split-page refcnt based model */ MEM_TYPE_PAGE_ORDER0, /* Orig XDP full page model */ MEM_TYPE_PAGE_POOL, MEM_TYPE_XSK_BUFF_POOL, MEM_TYPE_MAX, }; /* XDP flags for ndo_xdp_xmit */ #define XDP_XMIT_FLUSH (1U << 0) /* doorbell signal consumer */ #define XDP_XMIT_FLAGS_MASK XDP_XMIT_FLUSH struct xdp_mem_info { u32 type; /* enum xdp_mem_type, but known size type */ u32 id; }; struct page_pool; struct xdp_rxq_info { struct net_device *dev; u32 queue_index; u32 reg_state; struct xdp_mem_info mem; /* RHEL: This structure is not considered part of the kABI * whitelist. However, it is embedded in struct netdev_rx_queue * which is referenced from struct net_device::_rx as an array. * Therefore, we need to protect the size of struct xdp_rxq_info. */ RH_KABI_USE(1, unsigned int napi_id) RH_KABI_RESERVE(2) RH_KABI_RESERVE(3) RH_KABI_RESERVE(4) RH_KABI_RESERVE(5) RH_KABI_RESERVE(6) /* Note that there is more space available after the reserved fields * due to the cache alignment of this structure. Be sure to verify * the result with pahole on all supported archs before using the * padding, though. */ } ____cacheline_aligned; /* perf critical, avoid false-sharing */ struct xdp_txq_info { struct net_device *dev; }; struct xdp_buff { void *data; void *data_end; void *data_meta; void *data_hard_start; struct xdp_rxq_info *rxq; struct xdp_txq_info *txq; u32 frame_sz; /* frame size to deduce data_hard_end/reserved tailroom*/ }; static __always_inline void xdp_init_buff(struct xdp_buff *xdp, u32 frame_sz, struct xdp_rxq_info *rxq) { xdp->frame_sz = frame_sz; xdp->rxq = rxq; } static __always_inline void xdp_prepare_buff(struct xdp_buff *xdp, unsigned char *hard_start, int headroom, int data_len, const bool meta_valid) { unsigned char *data = hard_start + headroom; xdp->data_hard_start = hard_start; xdp->data = data; xdp->data_end = data + data_len; xdp->data_meta = meta_valid ? data : data + 1; } /* Reserve memory area at end-of data area. * * This macro reserves tailroom in the XDP buffer by limiting the * XDP/BPF data access to data_hard_end. Notice same area (and size) * is used for XDP_PASS, when constructing the SKB via build_skb(). */ #define xdp_data_hard_end(xdp) \ ((xdp)->data_hard_start + (xdp)->frame_sz - \ SKB_DATA_ALIGN(sizeof(struct skb_shared_info))) static inline struct skb_shared_info * xdp_get_shared_info_from_buff(struct xdp_buff *xdp) { return (struct skb_shared_info *)xdp_data_hard_end(xdp); } struct xdp_frame { void *data; u16 len; u16 headroom; u32 metasize:8; u32 frame_sz:24; /* Lifetime of xdp_rxq_info is limited to NAPI/enqueue time, * while mem info is valid on remote CPU. */ struct xdp_mem_info mem; struct net_device *dev_rx; /* used by cpumap */ }; #define XDP_BULK_QUEUE_SIZE 16 struct xdp_frame_bulk { int count; void *xa; void *q[XDP_BULK_QUEUE_SIZE]; }; static __always_inline void xdp_frame_bulk_init(struct xdp_frame_bulk *bq) { /* bq->count will be zero'ed when bq->xa gets updated */ bq->xa = NULL; } static inline struct skb_shared_info * xdp_get_shared_info_from_frame(struct xdp_frame *frame) { void *data_hard_start = frame->data - frame->headroom - sizeof(*frame); return (struct skb_shared_info *)(data_hard_start + frame->frame_sz - SKB_DATA_ALIGN(sizeof(struct skb_shared_info))); } struct xdp_cpumap_stats { unsigned int redirect; unsigned int pass; unsigned int drop; }; /* Clear kernel pointers in xdp_frame */ static inline void xdp_scrub_frame(struct xdp_frame *frame) { frame->data = NULL; frame->dev_rx = NULL; } /* Avoids inlining WARN macro in fast-path */ void xdp_warn(const char *msg, const char *func, const int line); #define XDP_WARN(msg) xdp_warn(msg, __func__, __LINE__) struct xdp_frame *xdp_convert_zc_to_xdp_frame(struct xdp_buff *xdp); struct sk_buff *__xdp_build_skb_from_frame(struct xdp_frame *xdpf, struct sk_buff *skb, struct net_device *dev); struct sk_buff *xdp_build_skb_from_frame(struct xdp_frame *xdpf, struct net_device *dev); int xdp_alloc_skb_bulk(void **skbs, int n_skb, gfp_t gfp); struct xdp_frame *xdpf_clone(struct xdp_frame *xdpf); static inline void xdp_convert_frame_to_buff(struct xdp_frame *frame, struct xdp_buff *xdp) { xdp->data_hard_start = frame->data - frame->headroom - sizeof(*frame); xdp->data = frame->data; xdp->data_end = frame->data + frame->len; xdp->data_meta = frame->data - frame->metasize; xdp->frame_sz = frame->frame_sz; } static inline int xdp_update_frame_from_buff(struct xdp_buff *xdp, struct xdp_frame *xdp_frame) { int metasize, headroom; /* Assure headroom is available for storing info */ headroom = xdp->data - xdp->data_hard_start; metasize = xdp->data - xdp->data_meta; metasize = metasize > 0 ? metasize : 0; if (unlikely((headroom - metasize) < sizeof(*xdp_frame))) return -ENOSPC; /* Catch if driver didn't reserve tailroom for skb_shared_info */ if (unlikely(xdp->data_end > xdp_data_hard_end(xdp))) { XDP_WARN("Driver BUG: missing reserved tailroom"); return -ENOSPC; } xdp_frame->data = xdp->data; xdp_frame->len = xdp->data_end - xdp->data; xdp_frame->headroom = headroom - sizeof(*xdp_frame); xdp_frame->metasize = metasize; xdp_frame->frame_sz = xdp->frame_sz; return 0; } /* Convert xdp_buff to xdp_frame */ static inline struct xdp_frame *xdp_convert_buff_to_frame(struct xdp_buff *xdp) { struct xdp_frame *xdp_frame; if (xdp->rxq->mem.type == MEM_TYPE_XSK_BUFF_POOL) return xdp_convert_zc_to_xdp_frame(xdp); /* Store info in top of packet */ xdp_frame = xdp->data_hard_start; if (unlikely(xdp_update_frame_from_buff(xdp, xdp_frame) < 0)) return NULL; /* rxq only valid until napi_schedule ends, convert to xdp_mem_info */ xdp_frame->mem = xdp->rxq->mem; return xdp_frame; } void xdp_return_frame(struct xdp_frame *xdpf); void xdp_return_frame_rx_napi(struct xdp_frame *xdpf); void xdp_return_buff(struct xdp_buff *xdp); void xdp_flush_frame_bulk(struct xdp_frame_bulk *bq); void xdp_return_frame_bulk(struct xdp_frame *xdpf, struct xdp_frame_bulk *bq); /* When sending xdp_frame into the network stack, then there is no * return point callback, which is needed to release e.g. DMA-mapping * resources with page_pool. Thus, have explicit function to release * frame resources. */ void __xdp_release_frame(void *data, struct xdp_mem_info *mem); static inline void xdp_release_frame(struct xdp_frame *xdpf) { struct xdp_mem_info *mem = &xdpf->mem; /* Curr only page_pool needs this */ if (mem->type == MEM_TYPE_PAGE_POOL) __xdp_release_frame(xdpf->data, mem); } /* RHEL: increase the version of xdp_rxq_info_reg kABI whenever XDP is * changed in a kABI incompatible way. That includes changes to ndo_xdp* and * ndo_bpf ops, inline function changes and XDP struct changes. */ RH_KABI_FORCE_CHANGE(3) int xdp_rxq_info_reg(struct xdp_rxq_info *xdp_rxq, struct net_device *dev, u32 queue_index, unsigned int napi_id); void xdp_rxq_info_unreg(struct xdp_rxq_info *xdp_rxq); void xdp_rxq_info_unused(struct xdp_rxq_info *xdp_rxq); bool xdp_rxq_info_is_reg(struct xdp_rxq_info *xdp_rxq); int xdp_rxq_info_reg_mem_model(struct xdp_rxq_info *xdp_rxq, enum xdp_mem_type type, void *allocator); void xdp_rxq_info_unreg_mem_model(struct xdp_rxq_info *xdp_rxq); /* Drivers not supporting XDP metadata can use this helper, which * rejects any room expansion for metadata as a result. */ static __always_inline void xdp_set_data_meta_invalid(struct xdp_buff *xdp) { xdp->data_meta = xdp->data + 1; } static __always_inline bool xdp_data_meta_unsupported(const struct xdp_buff *xdp) { return unlikely(xdp->data_meta > xdp->data); } struct xdp_attachment_info { struct bpf_prog *prog; u32 flags; }; struct netdev_bpf; void xdp_attachment_setup(struct xdp_attachment_info *info, struct netdev_bpf *bpf); #define DEV_MAP_BULK_SIZE XDP_BULK_QUEUE_SIZE #endif /* __LINUX_NET_XDP_H__ */
Save
cmd:
run