| 1063 | } |
| 1064 | |
| 1065 | static int |
| 1066 | search_ip5tuples(__rte_unused void *arg) |
| 1067 | { |
| 1068 | uint64_t pkt, start, tm; |
| 1069 | uint32_t i, lcore; |
| 1070 | long double st; |
| 1071 | |
| 1072 | lcore = rte_lcore_id(); |
| 1073 | start = rte_rdtsc_precise(); |
| 1074 | pkt = 0; |
| 1075 | |
| 1076 | for (i = 0; i != config.iter_num; i++) { |
| 1077 | pkt += search_ip5tuples_once(config.run_categories, |
| 1078 | config.trace_step, config.alg.name); |
| 1079 | } |
| 1080 | |
| 1081 | tm = rte_rdtsc_precise() - start; |
| 1082 | |
| 1083 | st = (long double)tm / rte_get_timer_hz(); |
| 1084 | dump_verbose(DUMP_NONE, stdout, |
| 1085 | "%s @lcore %u: %" PRIu32 " iterations, %" PRIu64 " pkts, %" |
| 1086 | PRIu32 " categories, %" PRIu64 " cycles (%.2Lf sec), " |
| 1087 | "%.2Lf cycles/pkt, %.2Lf pkt/sec\n", |
| 1088 | __func__, lcore, i, pkt, |
| 1089 | config.run_categories, tm, st, |
| 1090 | (pkt == 0) ? 0 : (long double)tm / pkt, pkt / st); |
| 1091 | |
| 1092 | return 0; |
| 1093 | } |
| 1094 | |
| 1095 | static unsigned long |
| 1096 | get_ulong_opt(const char *opt, const char *name, size_t min, size_t max) |
no test coverage detected