xref: /openbmc/linux/include/net/psample.h (revision dbf47a2a094edf58983265e323ca4bdcdb58b5ee)
1b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */
26ae0a628SYotam Gigi #ifndef __NET_PSAMPLE_H
36ae0a628SYotam Gigi #define __NET_PSAMPLE_H
46ae0a628SYotam Gigi 
56ae0a628SYotam Gigi #include <uapi/linux/psample.h>
66ae0a628SYotam Gigi #include <linux/list.h>
76ae0a628SYotam Gigi 
86ae0a628SYotam Gigi struct psample_group {
96ae0a628SYotam Gigi 	struct list_head list;
106ae0a628SYotam Gigi 	struct net *net;
116ae0a628SYotam Gigi 	u32 group_num;
126ae0a628SYotam Gigi 	u32 refcount;
136ae0a628SYotam Gigi 	u32 seq;
14*dbf47a2aSVlad Buslov 	struct rcu_head rcu;
156ae0a628SYotam Gigi };
166ae0a628SYotam Gigi 
176ae0a628SYotam Gigi struct psample_group *psample_group_get(struct net *net, u32 group_num);
186ae0a628SYotam Gigi void psample_group_put(struct psample_group *group);
196ae0a628SYotam Gigi 
206ae0a628SYotam Gigi #if IS_ENABLED(CONFIG_PSAMPLE)
216ae0a628SYotam Gigi 
226ae0a628SYotam Gigi void psample_sample_packet(struct psample_group *group, struct sk_buff *skb,
236ae0a628SYotam Gigi 			   u32 trunc_size, int in_ifindex, int out_ifindex,
246ae0a628SYotam Gigi 			   u32 sample_rate);
256ae0a628SYotam Gigi 
266ae0a628SYotam Gigi #else
276ae0a628SYotam Gigi 
286ae0a628SYotam Gigi static inline void psample_sample_packet(struct psample_group *group,
296ae0a628SYotam Gigi 					 struct sk_buff *skb, u32 trunc_size,
306ae0a628SYotam Gigi 					 int in_ifindex, int out_ifindex,
316ae0a628SYotam Gigi 					 u32 sample_rate)
326ae0a628SYotam Gigi {
336ae0a628SYotam Gigi }
346ae0a628SYotam Gigi 
356ae0a628SYotam Gigi #endif
366ae0a628SYotam Gigi 
376ae0a628SYotam Gigi #endif /* __NET_PSAMPLE_H */
38