Lines Matching +full:per +full:- +full:cpu
1 // SPDX-License-Identifier: GPL-2.0-only
56 #define __COLUMN(x) "%'10" x " %-13s"
94 struct datarec *cpu; member
172 static const char *xdp_redirect_err_help[XDP_REDIRECT_ERR_MAX - 1] = {
213 "By default, redirect success statistics are disabled, use -s to enable.\n" in sample_print_help()
214 "The terse output mode is default, verbose mode can be activated using -v\n" in sample_print_help()
217 " rx/s Number of packets received per second\n" in sample_print_help()
218 " redir/s Number of packets successfully redirected per second\n" in sample_print_help()
219 " err,drop/s Aggregated count of errors per second (including dropped packets)\n" in sample_print_help()
220 " xmit/s Number of packets transmitted on the output device per second\n\n" in sample_print_help()
226 " \t\t\tWhenever an error or packet drop occurs, details of per CPU error\n" in sample_print_help()
228 " \t\t\t\tpkt/s - Packets received per second\n" in sample_print_help()
229 " \t\t\t\tdrop/s - Packets dropped per second\n" in sample_print_help()
230 " \t\t\t\terror/s - Errors encountered per second\n\n"); in sample_print_help()
235 " \t\t\tNote that passing -s to enable it has a per packet overhead\n" in sample_print_help()
236 " \t\t\t\tredir/s - Packets redirected successfully per second\n\n" in sample_print_help()
238 " \t\t\tThe errno is expanded under this field with per CPU count\n" in sample_print_help()
243 xdp_redirect_err_help[i - 1]); in sample_print_help()
245 printf(" \n\t\t\t\terror/s - Packets that failed redirection per second\n\n"); in sample_print_help()
249 printf(" enqueue to cpu N\tDisplays the number of packets enqueued to bulk queue of CPU N\n" in sample_print_help()
250 " \t\t\tExpands to cpu:FROM->N to display enqueue stats for each CPU enqueuing to CPU N\n" in sample_print_help()
251 " \t\t\tReceived packets can be associated with the CPU redirect program is enqueuing \n" in sample_print_help()
253 " \t\t\t\tpkt/s - Packets enqueued per second from other CPU to CPU N\n" in sample_print_help()
254 " \t\t\t\tdrop/s - Packets dropped when trying to enqueue to CPU N\n" in sample_print_help()
255 " \t\t\t\tbulk-avg - Average number of packets processed for each event\n\n"); in sample_print_help()
259 printf(" kthread\t\tDisplays the number of packets processed in CPUMAP kthread for each CPU\n" in sample_print_help()
262 " \t\t\tthen per-CPU to associate it to each CPU's pinned CPUMAP kthread.\n" in sample_print_help()
263 " \t\t\t\tpkt/s - Packets consumed per second from ptr_ring\n" in sample_print_help()
264 " \t\t\t\tdrop/s - Packets dropped per second in kthread\n" in sample_print_help()
265 " \t\t\t\tsched - Number of times kthread called schedule()\n\n" in sample_print_help()
266 " \t\t\txdp_stats (also expands to per-CPU counts)\n" in sample_print_help()
267 " \t\t\t\tpass/s - XDP_PASS count for CPUMAP program execution\n" in sample_print_help()
268 " \t\t\t\tdrop/s - XDP_DROP count for CPUMAP program execution\n" in sample_print_help()
269 " \t\t\t\tredir/s - XDP_REDIRECT count for CPUMAP program execution\n\n"); in sample_print_help()
277 " \t\t\t\thit/s - Number of times the tracepoint was hit per second\n\n"); in sample_print_help()
285 " \t\t\t\txmit/s - Number of packets that were transmitted per second\n" in sample_print_help()
286 " \t\t\t\tdrop/s - Number of packets that failed transmissions per second\n" in sample_print_help()
287 " \t\t\t\tdrv_err/s - Number of internal driver errors per second\n" in sample_print_help()
288 " \t\t\t\tbulk-avg - Average number of packets processed for each event\n\n"); in sample_print_help()
302 printf(" --%-15s", long_options[i].name); in sample_usage()
307 printf("\t short-option: -%c", long_options[i].val); in sample_usage()
329 e->pair = pair; in map_entry_init()
330 INIT_HLIST_NODE(&e->node); in map_entry_init()
331 e->val.timestamp = gettime(); in map_entry_init()
332 e->val.cpu = alloc_record_per_cpu(); in map_entry_init()
333 if (!e->val.cpu) in map_entry_init()
334 return -ENOMEM; in map_entry_init()
340 /* For percpu maps, userspace gets a value per possible CPU */ in map_collect_percpu()
351 rec->timestamp = gettime(); in map_collect_percpu()
353 /* Record and sum values from each CPU */ in map_collect_percpu()
355 rec->cpu[i].processed = READ_ONCE(values[i].processed); in map_collect_percpu()
356 rec->cpu[i].dropped = READ_ONCE(values[i].dropped); in map_collect_percpu()
357 rec->cpu[i].issue = READ_ONCE(values[i].issue); in map_collect_percpu()
358 rec->cpu[i].xdp_pass = READ_ONCE(values[i].xdp_pass); in map_collect_percpu()
359 rec->cpu[i].xdp_drop = READ_ONCE(values[i].xdp_drop); in map_collect_percpu()
360 rec->cpu[i].xdp_redirect = READ_ONCE(values[i].xdp_redirect); in map_collect_percpu()
362 sum_processed += rec->cpu[i].processed; in map_collect_percpu()
363 sum_dropped += rec->cpu[i].dropped; in map_collect_percpu()
364 sum_issue += rec->cpu[i].issue; in map_collect_percpu()
365 sum_xdp_pass += rec->cpu[i].xdp_pass; in map_collect_percpu()
366 sum_xdp_drop += rec->cpu[i].xdp_drop; in map_collect_percpu()
367 sum_xdp_redirect += rec->cpu[i].xdp_redirect; in map_collect_percpu()
370 rec->total.processed = sum_processed; in map_collect_percpu()
371 rec->total.dropped = sum_dropped; in map_collect_percpu()
372 rec->total.issue = sum_issue; in map_collect_percpu()
373 rec->total.xdp_pass = sum_xdp_pass; in map_collect_percpu()
374 rec->total.xdp_drop = sum_xdp_drop; in map_collect_percpu()
375 rec->total.xdp_redirect = sum_xdp_redirect; in map_collect_percpu()
389 return -ENOMEM; in map_collect_percpu_devmap()
393 return -ENOMEM; in map_collect_percpu_devmap()
413 hash_for_each_possible(rec->xmit_map, e, node, pair) { in map_collect_percpu_devmap()
414 if (e->pair == pair) { in map_collect_percpu_devmap()
427 hash_add(rec->xmit_map, &x->node, pair); in map_collect_percpu_devmap()
429 map_collect_percpu(arr, &x->val); in map_collect_percpu_devmap()
443 return -ENOMEM; in map_collect_percpu_devmap()
458 rec->rx_cnt.cpu = alloc_record_per_cpu(); in alloc_stats_record()
459 if (!rec->rx_cnt.cpu) { in alloc_stats_record()
461 "Failed to allocate rx_cnt per-CPU array\n"); in alloc_stats_record()
467 rec->redir_err[i].cpu = alloc_record_per_cpu(); in alloc_stats_record()
468 if (!rec->redir_err[i].cpu) { in alloc_stats_record()
470 "Failed to allocate redir_err per-CPU array for " in alloc_stats_record()
473 while (i--) in alloc_stats_record()
474 free(rec->redir_err[i].cpu); in alloc_stats_record()
480 rec->kthread.cpu = alloc_record_per_cpu(); in alloc_stats_record()
481 if (!rec->kthread.cpu) { in alloc_stats_record()
483 "Failed to allocate kthread per-CPU array\n"); in alloc_stats_record()
489 rec->exception[i].cpu = alloc_record_per_cpu(); in alloc_stats_record()
490 if (!rec->exception[i].cpu) { in alloc_stats_record()
492 "Failed to allocate exception per-CPU array for " in alloc_stats_record()
495 while (i--) in alloc_stats_record()
496 free(rec->exception[i].cpu); in alloc_stats_record()
502 rec->devmap_xmit.cpu = alloc_record_per_cpu(); in alloc_stats_record()
503 if (!rec->devmap_xmit.cpu) { in alloc_stats_record()
505 "Failed to allocate devmap_xmit per-CPU array\n"); in alloc_stats_record()
510 hash_init(rec->xmit_map); in alloc_stats_record()
513 rec->enq[i].cpu = alloc_record_per_cpu(); in alloc_stats_record()
514 if (!rec->enq[i].cpu) { in alloc_stats_record()
516 "Failed to allocate enqueue per-CPU array for " in alloc_stats_record()
517 "CPU %d\n", in alloc_stats_record()
519 while (i--) in alloc_stats_record()
520 free(rec->enq[i].cpu); in alloc_stats_record()
529 free(rec->devmap_xmit.cpu); in alloc_stats_record()
532 free(rec->exception[i].cpu); in alloc_stats_record()
534 free(rec->kthread.cpu); in alloc_stats_record()
537 free(rec->redir_err[i].cpu); in alloc_stats_record()
539 free(rec->rx_cnt.cpu); in alloc_stats_record()
552 free(r->enq[i].cpu); in free_stats_record()
553 hash_for_each_safe(r->xmit_map, i, tmp, e, node) { in free_stats_record()
554 hash_del(&e->node); in free_stats_record()
555 free(e->val.cpu); in free_stats_record()
558 free(r->devmap_xmit.cpu); in free_stats_record()
560 free(r->exception[i].cpu); in free_stats_record()
561 free(r->kthread.cpu); in free_stats_record()
563 free(r->redir_err[i].cpu); in free_stats_record()
564 free(r->rx_cnt.cpu); in free_stats_record()
573 period = r->timestamp - p->timestamp; in calc_period()
582 if (val - floor(val) < 0.5) in sample_round()
593 packets = r->processed - p->processed; in calc_pps()
605 packets = r->dropped - p->dropped; in calc_drop_pps()
617 packets = r->issue - p->issue; in calc_errs_pps()
629 packets = r->info - p->info; in calc_info_pps()
640 *xdp_redirect = (r->xdp_redirect - p->xdp_redirect) / period_; in calc_xdp_pps()
641 *xdp_pass = (r->xdp_pass - p->xdp_pass) / period_; in calc_xdp_pps()
642 *xdp_drop = (r->xdp_drop - p->xdp_drop) / period_; in calc_xdp_pps()
654 rec = &stats_rec->rx_cnt; in stats_get_rx_cnt()
655 prev = &stats_prev->rx_cnt; in stats_get_rx_cnt()
659 struct datarec *r = &rec->cpu[i]; in stats_get_rx_cnt()
660 struct datarec *p = &prev->cpu[i]; in stats_get_rx_cnt()
669 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_rx_cnt()
670 print_default(" %-18s " FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf in stats_get_rx_cnt()
676 pps = calc_pps(&rec->total, &prev->total, t); in stats_get_rx_cnt()
677 drop = calc_drop_pps(&rec->total, &prev->total, t); in stats_get_rx_cnt()
678 err = calc_errs_pps(&rec->total, &prev->total, t); in stats_get_rx_cnt()
680 out->rx_cnt.pps = pps; in stats_get_rx_cnt()
681 out->rx_cnt.drop = drop; in stats_get_rx_cnt()
682 out->rx_cnt.err = err; in stats_get_rx_cnt()
683 out->totals.rx += pps; in stats_get_rx_cnt()
684 out->totals.drop += drop; in stats_get_rx_cnt()
685 out->totals.err += err; in stats_get_rx_cnt()
699 rec = &stats_rec->enq[to_cpu]; in stats_get_cpumap_enqueue()
700 prev = &stats_prev->enq[to_cpu]; in stats_get_cpumap_enqueue()
703 pps = calc_pps(&rec->total, &prev->total, t); in stats_get_cpumap_enqueue()
704 drop = calc_drop_pps(&rec->total, &prev->total, t); in stats_get_cpumap_enqueue()
705 err = calc_errs_pps(&rec->total, &prev->total, t); in stats_get_cpumap_enqueue()
710 snprintf(str, sizeof(str), "enqueue to cpu %d", to_cpu); in stats_get_cpumap_enqueue()
716 " %-20s " FMT_COLUMNf FMT_COLUMNf __COLUMN( in stats_get_cpumap_enqueue()
718 str, PPS(pps), DROP(drop), err, "bulk-avg"); in stats_get_cpumap_enqueue()
722 struct datarec *r = &rec->cpu[i]; in stats_get_cpumap_enqueue()
723 struct datarec *p = &prev->cpu[i]; in stats_get_cpumap_enqueue()
732 snprintf(str, sizeof(str), "cpu:%d->%d", i, to_cpu); in stats_get_cpumap_enqueue()
736 " %-18s " FMT_COLUMNf FMT_COLUMNf __COLUMN( in stats_get_cpumap_enqueue()
738 str, PPS(pps), DROP(drop), err, "bulk-avg"); in stats_get_cpumap_enqueue()
752 rec = &stats_rec->kthread; in stats_get_cpumap_remote()
753 prev = &stats_prev->kthread; in stats_get_cpumap_remote()
756 calc_xdp_pps(&rec->total, &prev->total, &xdp_pass, &xdp_drop, in stats_get_cpumap_remote()
760 " %-18s " FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf "\n", in stats_get_cpumap_remote()
766 struct datarec *r = &rec->cpu[i]; in stats_get_cpumap_remote()
767 struct datarec *p = &prev->cpu[i]; in stats_get_cpumap_remote()
774 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_cpumap_remote()
775 print_default(" %-16s " FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf in stats_get_cpumap_remote()
790 rec = &stats_rec->kthread; in stats_get_cpumap_kthread()
791 prev = &stats_prev->kthread; in stats_get_cpumap_kthread()
794 pps = calc_pps(&rec->total, &prev->total, t); in stats_get_cpumap_kthread()
795 drop = calc_drop_pps(&rec->total, &prev->total, t); in stats_get_cpumap_kthread()
796 err = calc_errs_pps(&rec->total, &prev->total, t); in stats_get_cpumap_kthread()
798 print_err(drop, " %-20s " FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf "\n", in stats_get_cpumap_kthread()
803 struct datarec *r = &rec->cpu[i]; in stats_get_cpumap_kthread()
804 struct datarec *p = &prev->cpu[i]; in stats_get_cpumap_kthread()
813 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_cpumap_kthread()
814 print_default(" %-18s " FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf in stats_get_cpumap_kthread()
829 rec = &stats_rec->redir_err[0]; in stats_get_redirect_cnt()
830 prev = &stats_prev->redir_err[0]; in stats_get_redirect_cnt()
833 struct datarec *r = &rec->cpu[i]; in stats_get_redirect_cnt()
834 struct datarec *p = &prev->cpu[i]; in stats_get_redirect_cnt()
841 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_redirect_cnt()
842 print_default(" %-18s " FMT_COLUMNf "\n", str, REDIR(pps)); in stats_get_redirect_cnt()
846 pps = calc_pps(&rec->total, &prev->total, t); in stats_get_redirect_cnt()
847 out->redir_cnt.suc = pps; in stats_get_redirect_cnt()
848 out->totals.redir += pps; in stats_get_redirect_cnt()
864 rec = &stats_rec->redir_err[rec_i]; in stats_get_redirect_err_cnt()
865 prev = &stats_prev->redir_err[rec_i]; in stats_get_redirect_err_cnt()
868 drop = calc_drop_pps(&rec->total, &prev->total, t); in stats_get_redirect_err_cnt()
874 print_err(drop, " %-18s " FMT_COLUMNf "\n", str, in stats_get_redirect_err_cnt()
879 struct datarec *r = &rec->cpu[i]; in stats_get_redirect_err_cnt()
880 struct datarec *p = &prev->cpu[i]; in stats_get_redirect_err_cnt()
887 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_redirect_err_cnt()
888 print_default(" %-16s" FMT_COLUMNf "\n", str, in stats_get_redirect_err_cnt()
896 out->redir_cnt.err = sum; in stats_get_redirect_err_cnt()
897 out->totals.err += sum; in stats_get_redirect_err_cnt()
911 rec = &stats_rec->exception[rec_i]; in stats_get_exception_cnt()
912 prev = &stats_prev->exception[rec_i]; in stats_get_exception_cnt()
915 drop = calc_drop_pps(&rec->total, &prev->total, t); in stats_get_exception_cnt()
920 print_always(" %-18s " FMT_COLUMNf "\n", in stats_get_exception_cnt()
924 struct datarec *r = &rec->cpu[i]; in stats_get_exception_cnt()
925 struct datarec *p = &prev->cpu[i]; in stats_get_exception_cnt()
933 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_exception_cnt()
934 print_default(" %-16s" FMT_COLUMNf "\n", in stats_get_exception_cnt()
941 out->except_cnt.hits = sum; in stats_get_exception_cnt()
942 out->totals.err += sum; in stats_get_exception_cnt()
956 rec = &stats_rec->devmap_xmit; in stats_get_devmap_xmit()
957 prev = &stats_prev->devmap_xmit; in stats_get_devmap_xmit()
960 struct datarec *r = &rec->cpu[i]; in stats_get_devmap_xmit()
961 struct datarec *p = &prev->cpu[i]; in stats_get_devmap_xmit()
971 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_devmap_xmit()
975 print_default(" %-18s" FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf in stats_get_devmap_xmit()
978 info, "bulk-avg"); in stats_get_devmap_xmit()
981 pps = calc_pps(&rec->total, &prev->total, t); in stats_get_devmap_xmit()
982 drop = calc_drop_pps(&rec->total, &prev->total, t); in stats_get_devmap_xmit()
983 info = calc_info_pps(&rec->total, &prev->total, t); in stats_get_devmap_xmit()
986 err = calc_errs_pps(&rec->total, &prev->total, t); in stats_get_devmap_xmit()
988 out->xmit_cnt.pps = pps; in stats_get_devmap_xmit()
989 out->xmit_cnt.drop = drop; in stats_get_devmap_xmit()
990 out->xmit_cnt.bavg = info; in stats_get_devmap_xmit()
991 out->xmit_cnt.err = err; in stats_get_devmap_xmit()
992 out->totals.xmit += pps; in stats_get_devmap_xmit()
993 out->totals.drop_xmit += drop; in stats_get_devmap_xmit()
994 out->totals.err += err; in stats_get_devmap_xmit()
1010 hash_for_each(stats_rec->xmit_map, bkt, entry, node) { in stats_get_devmap_xmit_multi()
1024 pair = entry->pair; in stats_get_devmap_xmit_multi()
1028 r = &entry->val; in stats_get_devmap_xmit_multi()
1029 beg.timestamp = r->timestamp - prev_time; in stats_get_devmap_xmit_multi()
1032 hash_for_each_possible(stats_prev->xmit_map, e, node, pair) { in stats_get_devmap_xmit_multi()
1033 if (e->pair == pair) { in stats_get_devmap_xmit_multi()
1039 p = &x->val; in stats_get_devmap_xmit_multi()
1043 pps = calc_pps(&r->total, &p->total, t); in stats_get_devmap_xmit_multi()
1044 drop = calc_drop_pps(&r->total, &p->total, t); in stats_get_devmap_xmit_multi()
1045 info = calc_info_pps(&r->total, &p->total, t); in stats_get_devmap_xmit_multi()
1048 err = calc_errs_pps(&r->total, &p->total, t); in stats_get_devmap_xmit_multi()
1052 out->totals.xmit += pps; in stats_get_devmap_xmit_multi()
1053 out->totals.drop_xmit += drop; in stats_get_devmap_xmit_multi()
1054 out->totals.err += err; in stats_get_devmap_xmit_multi()
1064 snprintf(str, sizeof(str), "xmit %s->%s", fstr ?: "?", in stats_get_devmap_xmit_multi()
1069 " %-20s " FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf in stats_get_devmap_xmit_multi()
1071 err, "drv_err/s", info, "bulk-avg"); in stats_get_devmap_xmit_multi()
1075 struct datarec *rc = &r->cpu[i]; in stats_get_devmap_xmit_multi()
1079 pc = p == &beg ? &p_beg : &p->cpu[i]; in stats_get_devmap_xmit_multi()
1088 snprintf(str, sizeof(str), "cpu:%d", i); in stats_get_devmap_xmit_multi()
1093 print_default(" %-18s" FMT_COLUMNf FMT_COLUMNf FMT_COLUMNf in stats_get_devmap_xmit_multi()
1095 DROP(drop), err, "drv_err/s", info, "bulk-avg"); in stats_get_devmap_xmit_multi()
1106 print_always("%-23s", prefix ?: "Summary"); in stats_print()
1108 print_always(FMT_COLUMNl, RX(out->totals.rx)); in stats_print()
1110 print_always(FMT_COLUMNl, REDIR(out->totals.redir)); in stats_print()
1112 out->totals.err + out->totals.drop + out->totals.drop_xmit, in stats_print()
1116 printf(FMT_COLUMNl, XMIT(out->totals.xmit)); in stats_print()
1120 str = (sample_log_level & LL_DEFAULT) && out->rx_cnt.pps ? in stats_print()
1123 print_err((out->rx_cnt.err || out->rx_cnt.drop), in stats_print()
1124 " %-20s " FMT_COLUMNl FMT_COLUMNl FMT_COLUMNl "\n", in stats_print()
1125 str, PPS(out->rx_cnt.pps), DROP(out->rx_cnt.drop), in stats_print()
1126 ERR(out->rx_cnt.err)); in stats_print()
1140 str = out->redir_cnt.suc ? "redirect total" : "redirect"; in stats_print()
1141 print_default(" %-20s " FMT_COLUMNl "\n", str, in stats_print()
1142 REDIR(out->redir_cnt.suc)); in stats_print()
1148 str = (sample_log_level & LL_DEFAULT) && out->redir_cnt.err ? in stats_print()
1151 print_err(out->redir_cnt.err, " %-20s " FMT_COLUMNl "\n", str, in stats_print()
1152 ERR(out->redir_cnt.err)); in stats_print()
1158 str = out->except_cnt.hits ? "xdp_exception total" : in stats_print()
1161 print_err(out->except_cnt.hits, " %-20s " FMT_COLUMNl "\n", str, in stats_print()
1162 HITS(out->except_cnt.hits)); in stats_print()
1168 str = (sample_log_level & LL_DEFAULT) && out->xmit_cnt.pps ? in stats_print()
1172 print_err(out->xmit_cnt.err || out->xmit_cnt.drop, in stats_print()
1173 " %-20s " FMT_COLUMNl FMT_COLUMNl FMT_COLUMNl in stats_print()
1175 str, XMIT(out->xmit_cnt.pps), in stats_print()
1176 DROP(out->xmit_cnt.drop), out->xmit_cnt.err, in stats_print()
1177 "drv_err/s", out->xmit_cnt.bavg, "bulk-avg"); in stats_print()
1216 return -EINVAL; in sample_setup_maps()
1219 return -errno; in sample_setup_maps()
1233 return -errno; in sample_setup_maps_mappings()
1248 return -errno; in __sample_init()
1250 sample_sig_fd = signalfd(-1, &st, SFD_CLOEXEC | SFD_NONBLOCK); in __sample_init()
1252 return -errno; in __sample_init()
1267 return -errno; in __sample_remove_xdp()
1274 return -ENOENT; in __sample_remove_xdp()
1278 return bpf_set_link_xdp_fd(ifindex, -1, xdp_flags); in __sample_remove_xdp()
1290 return -ENOTSUP; in sample_install_xdp()
1298 ret = -errno; in sample_install_xdp()
1304 strerror(-ret)); in sample_install_xdp()
1310 ret = -errno; in sample_install_xdp()
1330 print_always(" Packets received : %'-10llu\n", in sample_summary_print()
1332 print_always(" Average packets/s : %'-10.0f\n", in sample_summary_print()
1338 print_always(" Packets redirected : %'-10llu\n", in sample_summary_print()
1340 print_always(" Average redir/s : %'-10.0f\n", in sample_summary_print()
1344 print_always(" Rx dropped : %'-10llu\n", in sample_summary_print()
1347 print_always(" Tx dropped : %'-10llu\n", in sample_summary_print()
1350 print_always(" Errors recorded : %'-10llu\n", in sample_summary_print()
1355 print_always(" Packets transmitted : %'-10llu\n", in sample_summary_print()
1357 print_always(" Average transmit/s : %'-10.0f\n", in sample_summary_print()
1370 while (sample_xdp_cnt--) { in sample_exit()
1390 map_collect_percpu(sample_mmap[MAP_RX], &rec->rx_cnt); in sample_stats_collect()
1393 map_collect_percpu(sample_mmap[MAP_REDIRECT_ERR], &rec->redir_err[0]); in sample_stats_collect()
1398 &rec->redir_err[i]); in sample_stats_collect()
1404 &rec->enq[i]); in sample_stats_collect()
1408 &rec->kthread); in sample_stats_collect()
1413 &rec->exception[i]); in sample_stats_collect()
1416 map_collect_percpu(sample_mmap[MAP_DEVMAP_XMIT], &rec->devmap_xmit); in sample_stats_collect()
1420 return -EINVAL; in sample_stats_collect()
1427 sample_out.totals.rx += out->totals.rx; in sample_summary_update()
1428 sample_out.totals.redir += out->totals.redir; in sample_summary_update()
1429 sample_out.totals.drop += out->totals.drop; in sample_summary_update()
1430 sample_out.totals.drop_xmit += out->totals.drop_xmit; in sample_summary_update()
1431 sample_out.totals.err += out->totals.err; in sample_summary_update()
1432 sample_out.totals.xmit += out->totals.xmit; in sample_summary_update()
1462 sample_log_level ^= LL_DEBUG - 1; in sample_switch_mode()
1472 return -errno; in sample_signal_cb()
1506 return -errno; in sample_timer_cb()
1524 snprintf(line, sizeof(line), "%s->%s", f ?: "?", t ?: "?"); in sample_timer_cb()
1541 return -EINVAL; in sample_run()
1545 setlocale(LC_NUMERIC, "en_US.UTF-8"); in sample_run()
1549 return -errno; in sample_run()
1558 ret = -ENOMEM; in sample_run()
1571 ret = poll(pfd, 2, -1); in sample_run()
1643 return -errno; in get_mac_addr()
1646 r = -errno; in get_mac_addr()
1654 r = -errno; in get_mac_addr()