psample_group
sample_attr->group_num = act->sample.psample_group->group_num;
struct psample_group psample_group = {};
psample_group.group_num = mapped_obj->sample.group_id;
psample_group.net = &init_net;
psample_sample_packet(&psample_group, skb, mapped_obj->sample.rate, &md);
struct psample_group *psample_group, u32 rate,
psample_group, rate, trunc_size,
struct psample_group *psample_group,
sampler = mlxsw_afa_sampler_create(block, local_port, psample_group,
struct psample_group *psample_group,
struct psample_group *psample_group, u32 rate,
if (trigger_node->params.psample_group != params->psample_group ||
struct psample_group *psample_group, u32 rate,
struct psample_group *psample_group;
struct psample_group *psample_group, u32 rate,
psample_group, rate, trunc_size,
struct psample_group *psample_group,
struct psample_group *psample_group,
params.psample_group = psample_group;
act->sample.psample_group,
mall_entry->sample.params.psample_group = act->sample.psample_group;
psample_sample_packet(params->psample_group, skb, params->rate, &md);
psample_sample_packet(params->psample_group, skb, params->rate, &md);
psample_sample_packet(params->psample_group, skb, params->rate, &md);
struct psample_group *group;
struct psample_group *
struct psample_group *psample_group;
struct psample_group *psample_group_get(struct net *net, u32 group_num);
void psample_group_take(struct psample_group *group);
void psample_group_put(struct psample_group *group);
void psample_sample_packet(struct psample_group *group,
static inline void psample_sample_packet(struct psample_group *group,
struct psample_group __rcu *psample_group;
struct psample_group psample_group = {};
psample_group.group_num = nla_get_u32(a);
psample_group.net = ovs_dp_get_net(dp);
psample_sample_packet(&psample_group, skb, rate, &md);
static void psample_group_notify(struct psample_group *group,
static struct psample_group *psample_group_create(struct net *net,
struct psample_group *group;
static void psample_group_destroy(struct psample_group *group)
static struct psample_group *
struct psample_group *group;
struct psample_group *psample_group_get(struct net *net, u32 group_num)
struct psample_group *group;
void psample_group_take(struct psample_group *group)
void psample_group_put(struct psample_group *group)
void psample_sample_packet(struct psample_group *group,
struct psample_group *group,
struct psample_group *group;
psample_group = psample_group_get(net, psample_group_num);
if (!psample_group) {
psample_group = rcu_replace_pointer(s->psample_group, psample_group,
if (psample_group)
psample_group_put(psample_group);
struct psample_group *psample_group;
psample_group = rcu_dereference_protected(s->psample_group, 1);
RCU_INIT_POINTER(s->psample_group, NULL);
if (psample_group)
psample_group_put(psample_group);
struct psample_group *psample_group;
psample_group = rcu_dereference_bh(s->psample_group);
if (psample_group && (get_random_u32_below(s->rate) == 0)) {
psample_sample_packet(psample_group, skb, s->rate, &md);
struct psample_group *group = priv;
static struct psample_group *
struct psample_group *group;
group = rcu_dereference_protected(s->psample_group,
entry->sample.psample_group =
entry->destructor_priv = entry->sample.psample_group;
struct psample_group *psample_group;