Skip to content

Commit bedbeaf

Browse files
authored
Merge ODP v1.47.0.0
Merge ODP linux-generic v1.47.0.0 into linux-dpdk.
2 parents 47e6751 + 36bff9e commit bedbeaf

File tree

422 files changed

+7259
-1916
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

422 files changed

+7259
-1916
lines changed

CHANGELOG

Lines changed: 135 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,138 @@
1+
== OpenDataPlane (1.47.0.0)
2+
3+
=== Backward incompatible API changes
4+
5+
==== System
6+
* Allow implementations to return zero in `odp_system_meminfo_t.total_overhead`
7+
field if tracking memory usage overhead is not supported.
8+
9+
=== Backward compatible API changes
10+
11+
==== General
12+
* Add a paragraph in the API principles section in `include/README` to describe
13+
parameter lifetimes of ODP API functions: Structures passed by reference
14+
(and structures referred by them) do not need to outlive the API call,
15+
unless otherwise noted in the API.
16+
17+
==== Classifier
18+
* Clarify the presumed intent of back pressure API by specifying how exactly the
19+
back pressure threshold for any given pktio + pool/queue + pfc_level -tuple is
20+
derived from the configuration.
21+
* Add CoS parameter `odp_cls_cos_param_t.aggr_enq_profile` for selecting
22+
aggregator enqueuing profile (`odp_aggr_enq_profile_t`), which can generate
23+
hints to an event aggregator. Support is advertised through
24+
`odp_cls_capability_t.aggr` capability. The hints can affect e.g. the boundaries
25+
of vector events generated by an event aggregator.
26+
27+
==== CPU
28+
* Add `odp_cpu_cycles_strict()` function for reading current CPU cycle count
29+
value more strictly in the program order.
30+
31+
==== DMA
32+
* Add necessary fields to `odp_dma_transfer_param_t` for freeing DMA source
33+
segments of data format `ODP_DMA_FORMAT_PACKET`. Support is advertised through
34+
`odp_dma_capability_t.src_seg_free` capability.
35+
* Add necessary fields to `odp_dma_seg_t`, `odp_dma_transfer_param_t`, and
36+
`odp_dma_result_t` for allocating DMA destination segments of data format
37+
`ODP_DMA_FORMAT_PACKET`. Support is advertised through
38+
`odp_dma_capability_t.dst_seg_alloc` capability.
39+
40+
==== Event
41+
* Add `ODP_EVENT_VECTOR` event type.
42+
* Add special `ODP_EVENT_ANY` event type, which does not match to any particular
43+
event type and can only be used when explicitly documented by the API.
44+
* Change `odp_event_free()` specification to state that in case of vector
45+
events (`ODP_EVENT_VECTOR` or `ODP_EVENT_PACKET_VECTOR`) it frees the vector and
46+
all events or packets stored inside it.
47+
48+
==== Event Vector
49+
* Add new generic event vector APIs. Event vectors can contain events of any
50+
type, as opposed to the existing packet vectors, which can contain only packets.
51+
52+
==== ML
53+
* Add quantization parameters to input (`odp_ml_input_info_t.quant_info`) and
54+
output (`odp_ml_output_info_t.quant_info`) info. Implementation may optionally
55+
provide these parameters, if they are available for a given model.
56+
57+
==== Pool
58+
* Add `ODP_POOL_EVENT_VECTOR` pool type for allocating event vectors.
59+
60+
==== Queue
61+
* Clarify that `odp_queue_sched_type()`, `odp_queue_sched_prio()`,
62+
`odp_queue_sched_group()`, and `odp_queue_lock_count()` functions can be used
63+
only with queues of `ODP_QUEUE_TYPE_SCHED` type.
64+
* Add event aggregators that are associated with queues and have the same life
65+
time. Event aggregators are queues which try to aggregate multiple events into
66+
event vectors, which are then enqueued to the underlying queue. Event
67+
aggregators are configured through queue parameters
68+
(`odp_queue_param_t.num_aggr` and `odp_queue_param_t.aggr`) and the related
69+
capabilities are advertised using `odp_event_aggr_capability_t` struct. Event
70+
aggregators cannot be used simultaneously with the existing packet vector config
71+
in the same ODP application.
72+
* Add `ODP_QUEUE_TYPE_AGGR` queue type.
73+
* Add `odp_queue_aggr()` function for getting a queue handle of an event
74+
aggregator associated with a queue.
75+
* Add `odp_aggr_enq_param_init()` function for initializing event aggregator
76+
enqueuing parameters.
77+
* Add `odp_queue_enq_aggr()` function that can be used for passing hints to an
78+
event aggregator.
79+
80+
==== Scheduler
81+
* Add `odp_schedule_group_param_init()` function for initializing schedule group
82+
parameters.
83+
* Add `odp_schedule_group_create_2()` function, which is otherwise like
84+
`odp_schedule_group_create()`, but additionally accepts a set of parameters
85+
(`odp_schedule_group_param_t`). Parameters for predefined scheduling groups can
86+
be configured in `odp_schedule_config()`.
87+
* Add possibility to configure cache stashing
88+
(`odp_schedule_group_param_t.cache_stash_hints`) at schedule group and/or
89+
priority levels. Stashing data of to-be-scheduled events and queues may improve
90+
performance in some workloads.
91+
92+
==== Timer
93+
* Add new timer pool parameter `odp_timer_pool_param_t.priority` and related
94+
capabilities. Timers allocated from pools with a higher priority value are
95+
served with higher priority than timers allocated from pools with a lower
96+
priority value.
97+
98+
==== Traffic Manager
99+
* Add `odp_tm_node_stats()` function for reading TM node specific statistics
100+
counters. The supported counters are advertised in
101+
`odp_tm_level_capabilities_t.node_stats` capability.
102+
103+
=== ABI changes
104+
* Increase `ODP_SHM_NAME_LEN` default value to 64.
105+
106+
=== Helper (1.7.1)
107+
108+
==== Backward compatible changes
109+
* Add `ODPH_DIV_ROUNDUP()` macro for dividing two numbers and rounding up the
110+
result to the closest integer.
111+
* Add `ODPH_ROUNDUP_MULTIPLE()` macro for rounding up a value to a multiple of
112+
another value.
113+
114+
=== Implementation
115+
* Disable basic scheduler implementation's ordered queue reorder stash config
116+
file option (`sched_basic:order_stash_size`) by default.
117+
* Simplify `odp_version_impl_str()` output and include commit hash (if
118+
available) in it.
119+
* Optimize `odp_packet_free_sp()` and `odp_event_free_sp()` implementations.
120+
121+
=== Performance Tests
122+
==== stress
123+
* Add new `-t` option for selecting timer mode (shared/private).
124+
125+
==== timer_accuracy
126+
* Add a new "concurrency" mode (`-m 4`) that performs timer starts and cancels
127+
across multiple threads. This mode aims to uncover concurrency issues in the
128+
timer implementation, particularly with a short period, where timer expirations,
129+
starts, and cancels frequently occur close to each other.
130+
131+
==== timer_stress
132+
* Add new tool for benchmarking timer handling performance in different
133+
scenarios. Tester currently supports modes for single-shot (with and without
134+
cancelling) and periodic timers.
135+
1136
== OpenDataPlane (1.46.0.0)
2137

3138
=== Backward incompatible API changes

config/odp-linux-dpdk.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -203,7 +203,7 @@ sched_basic: {
203203
# performance if threads process events in bursts. If 'order_stash_size'
204204
# > 0, events may be dropped by the implementation if the target queue
205205
# is full. To prevent this set 'order_stash_size' to 0.
206-
order_stash_size = 512
206+
order_stash_size = 0
207207

208208
# Power saving options for schedule with wait
209209
#

config/odp-linux-generic.conf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ sched_basic: {
233233
# performance if threads process events in bursts. If 'order_stash_size'
234234
# > 0, events may be dropped by the implementation if the target queue
235235
# is full. To prevent this set 'order_stash_size' to 0.
236-
order_stash_size = 512
236+
order_stash_size = 0
237237

238238
# Power saving options for schedule with wait
239239
#

configure.ac

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ AC_PREREQ([2.5])
33
# ODP API version
44
##########################################################################
55
m4_define([odp_version_generation], [1])
6-
m4_define([odp_version_major], [46])
6+
m4_define([odp_version_major], [47])
77
m4_define([odp_version_minor], [0])
88
m4_define([odp_version_patch], [0])
99

@@ -23,12 +23,21 @@ AC_SUBST(ODP_VERSION_API_MINOR)
2323
ODP_VERSION_API=odp_version_api
2424
AC_SUBST(ODP_VERSION_API)
2525

26+
##########################################################################
27+
# ODP Git Revision
28+
##########################################################################
29+
m4_define([odp_git_revision],
30+
[m4_esyscmd_s([sh -c 'hash=$(git rev-parse --short=8 HEAD 2>/dev/null) && echo "-$hash" || echo ""'])])
31+
32+
ODP_GIT_REVISION=odp_git_revision
33+
AC_DEFINE_UNQUOTED([_ODP_GIT_REVISION], ["$ODP_GIT_REVISION"], "ODP Git Revision")
34+
2635
##########################################################################
2736
# Helper library version
2837
##########################################################################
2938
m4_define([odph_version_generation], [1])
3039
m4_define([odph_version_major], [7])
31-
m4_define([odph_version_minor], [0])
40+
m4_define([odph_version_minor], [1])
3241

3342
m4_define([odph_version],
3443
[odph_version_generation.odph_version_major.odph_version_minor])

example/classifier/odp_classifier.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,7 +1161,6 @@ static int parse_policy_ci_pass_count(appl_args_t *appl_args, char *optarg)
11611161
static int parse_args(int argc, char *argv[], appl_args_t *appl_args)
11621162
{
11631163
int opt;
1164-
int long_index;
11651164
size_t len;
11661165
int i;
11671166
int interface = 0;
@@ -1198,7 +1197,7 @@ static int parse_args(int argc, char *argv[], appl_args_t *appl_args)
11981197

11991198
while (ret == 0) {
12001199
opt = getopt_long(argc, argv, shortopts,
1201-
longopts, &long_index);
1200+
longopts, NULL);
12021201

12031202
if (opt == -1)
12041203
break; /* No more options */

example/debug/odp_debug.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ static void print_usage(void)
5858

5959
static int parse_options(int argc, char *argv[], test_global_t *global)
6060
{
61-
int opt, long_index;
61+
int opt;
6262
char *str;
6363
uint32_t str_len = 0;
6464

@@ -78,7 +78,7 @@ static int parse_options(int argc, char *argv[], test_global_t *global)
7878
int ret = 0;
7979

8080
while (1) {
81-
opt = getopt_long(argc, argv, shortopts, longopts, &long_index);
81+
opt = getopt_long(argc, argv, shortopts, longopts, NULL);
8282

8383
if (opt == -1)
8484
break; /* No more options */

example/ipsec_api/odp_ipsec.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1188,7 +1188,6 @@ main(int argc, char *argv[])
11881188
static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
11891189
{
11901190
int opt;
1191-
int long_index;
11921191
char *token;
11931192
size_t len;
11941193
int rc = 0;
@@ -1216,7 +1215,7 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
12161215
printf("\nParsing command line options\n");
12171216

12181217
while (!rc) {
1219-
opt = getopt_long(argc, argv, shortopts, longopts, &long_index);
1218+
opt = getopt_long(argc, argv, shortopts, longopts, NULL);
12201219

12211220
if (-1 == opt)
12221221
break; /* No more options */

example/ipsec_crypto/odp_ipsec.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1471,7 +1471,6 @@ main(int argc, char *argv[])
14711471
static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
14721472
{
14731473
int opt;
1474-
int long_index;
14751474
char *token;
14761475
size_t len;
14771476
int rc = 0;
@@ -1499,7 +1498,7 @@ static void parse_args(int argc, char *argv[], appl_args_t *appl_args)
14991498
appl_args->mode = 0; /* turn off async crypto API by default */
15001499

15011500
while (!rc) {
1502-
opt = getopt_long(argc, argv, shortopts, longopts, &long_index);
1501+
opt = getopt_long(argc, argv, shortopts, longopts, NULL);
15031502

15041503
if (-1 == opt)
15051504
break; /* No more options */

example/l3fwd/odp_l3fwd.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -516,7 +516,6 @@ static void print_usage(char *progname)
516516
static void parse_cmdline_args(int argc, char *argv[], app_args_t *args)
517517
{
518518
int opt;
519-
int long_index;
520519
char *token, *local;
521520
size_t len, route_index = 0;
522521
int mem_failure = 0;
@@ -538,7 +537,7 @@ static void parse_cmdline_args(int argc, char *argv[], app_args_t *args)
538537

539538
while (1) {
540539
opt = getopt_long(argc, argv, "+s:t:d:i:r:q:e:h",
541-
longopts, &long_index);
540+
longopts, NULL);
542541

543542
if (opt == -1)
544543
break; /* No more options */

example/packet/odp_packet_dump.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ static int parse_int_list(char *str, int integer[], int max_num)
109109

110110
static int parse_options(int argc, char *argv[], test_global_t *global)
111111
{
112-
int i, opt, long_index;
112+
int i, opt;
113113
char *name, *str;
114114
int len, str_len, num;
115115

@@ -128,7 +128,7 @@ static int parse_options(int argc, char *argv[], test_global_t *global)
128128
int ret = 0;
129129

130130
while (1) {
131-
opt = getopt_long(argc, argv, shortopts, longopts, &long_index);
131+
opt = getopt_long(argc, argv, shortopts, longopts, NULL);
132132

133133
if (opt == -1)
134134
break; /* No more options */

0 commit comments

Comments
 (0)