xref: /openbmc/linux/include/net/psample.h (revision 4a5da47d5cb6aba3c26a5cc0dddfb2d577e851e9)
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;
14dbf47a2aSVlad Buslov 	struct rcu_head rcu;
156ae0a628SYotam Gigi };
166ae0a628SYotam Gigi 
176ae0a628SYotam Gigi struct psample_group *psample_group_get(struct net *net, u32 group_num);
18*4a5da47dSVlad Buslov void psample_group_take(struct psample_group *group);
196ae0a628SYotam Gigi void psample_group_put(struct psample_group *group);
206ae0a628SYotam Gigi 
216ae0a628SYotam Gigi #if IS_ENABLED(CONFIG_PSAMPLE)
226ae0a628SYotam Gigi 
236ae0a628SYotam Gigi void psample_sample_packet(struct psample_group *group, struct sk_buff *skb,
246ae0a628SYotam Gigi 			   u32 trunc_size, int in_ifindex, int out_ifindex,
256ae0a628SYotam Gigi 			   u32 sample_rate);
266ae0a628SYotam Gigi 
276ae0a628SYotam Gigi #else
286ae0a628SYotam Gigi 
296ae0a628SYotam Gigi static inline void psample_sample_packet(struct psample_group *group,
306ae0a628SYotam Gigi 					 struct sk_buff *skb, u32 trunc_size,
316ae0a628SYotam Gigi 					 int in_ifindex, int out_ifindex,
326ae0a628SYotam Gigi 					 u32 sample_rate)
336ae0a628SYotam Gigi {
346ae0a628SYotam Gigi }
356ae0a628SYotam Gigi 
366ae0a628SYotam Gigi #endif
376ae0a628SYotam Gigi 
386ae0a628SYotam Gigi #endif /* __NET_PSAMPLE_H */
39