Lines Matching defs:psample
13 #include <net/psample.h>
81 static void nsim_dev_psample_md_prepare(const struct nsim_dev_psample *psample,
85 md->trunc_size = psample->trunc_size ? psample->trunc_size : len;
86 md->in_ifindex = psample->in_ifindex;
87 md->out_ifindex = psample->out_ifindex;
89 if (psample->out_tc != NSIM_PSAMPLE_INVALID_TC) {
90 md->out_tc = psample->out_tc;
94 if (psample->out_tc_occ_max) {
98 md->out_tc_occ = out_tc_occ & (psample->out_tc_occ_max - 1);
102 if (psample->latency_max) {
106 md->latency = latency & (psample->latency_max - 1);
113 struct nsim_dev_psample *psample;
118 psample = container_of(work, struct nsim_dev_psample, psample_dw.work);
124 nsim_dev_psample_md_prepare(psample, &md, skb->len);
125 psample_sample_packet(psample->group, skb, psample->rate, &md);
130 schedule_delayed_work(&psample->psample_dw, delay);
135 struct nsim_dev_psample *psample = nsim_dev->psample;
139 if (psample->is_active)
143 psample->group = psample_group_get(devlink_net(devlink),
144 psample->group_num);
145 if (!psample->group)
149 schedule_delayed_work(&psample->psample_dw, delay);
151 psample->is_active = true;
158 struct nsim_dev_psample *psample = nsim_dev->psample;
160 if (!psample->is_active)
163 psample->is_active = false;
165 cancel_delayed_work_sync(&psample->psample_dw);
166 psample_group_put(psample->group);
200 struct nsim_dev_psample *psample;
203 psample = kzalloc(sizeof(*psample), GFP_KERNEL);
204 if (!psample)
206 nsim_dev->psample = psample;
208 INIT_DELAYED_WORK(&psample->psample_dw, nsim_dev_psample_report_work);
210 psample->ddir = debugfs_create_dir("psample", nsim_dev->ddir);
211 if (IS_ERR(psample->ddir)) {
212 err = PTR_ERR(psample->ddir);
217 psample->rate = 100;
218 debugfs_create_u32("rate", 0600, psample->ddir, &psample->rate);
220 psample->group_num = 10;
221 debugfs_create_u32("group_num", 0600, psample->ddir,
222 &psample->group_num);
224 psample->trunc_size = 0;
225 debugfs_create_u32("trunc_size", 0600, psample->ddir,
226 &psample->trunc_size);
228 psample->in_ifindex = 1;
229 debugfs_create_u32("in_ifindex", 0600, psample->ddir,
230 &psample->in_ifindex);
232 psample->out_ifindex = 2;
233 debugfs_create_u32("out_ifindex", 0600, psample->ddir,
234 &psample->out_ifindex);
236 psample->out_tc = 0;
237 debugfs_create_u16("out_tc", 0600, psample->ddir, &psample->out_tc);
239 psample->out_tc_occ_max = 10000;
240 debugfs_create_u64("out_tc_occ_max", 0600, psample->ddir,
241 &psample->out_tc_occ_max);
243 psample->latency_max = 50;
244 debugfs_create_u64("latency_max", 0600, psample->ddir,
245 &psample->latency_max);
247 debugfs_create_file("enable", 0200, psample->ddir, nsim_dev,
253 kfree(nsim_dev->psample);
259 debugfs_remove_recursive(nsim_dev->psample->ddir);
260 if (nsim_dev->psample->is_active) {
261 cancel_delayed_work_sync(&nsim_dev->psample->psample_dw);
262 psample_group_put(nsim_dev->psample->group);
264 kfree(nsim_dev->psample);