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