History log of /dpdk/lib/ethdev/ (Results 51 – 75 of 121)
Revision Date Author Comments
(<<< Hide modified files)
(Show modified files >>>)
bf73419d20-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: fix EEPROM spelling

Signed-off-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

5906be5a20-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: fix ID spelling in comments and log messages

Signed-off-by: Andrew Rybchenko <[email protected]>
Acked-by: Ori Kam <[email protected]>
Reviewed-by: Ferruh Yigit <ferruh.yigit@inte

ethdev: fix ID spelling in comments and log messages

Signed-off-by: Andrew Rybchenko <[email protected]>
Acked-by: Ori Kam <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

show more ...

5b49ba6520-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: fix VLAN spelling including VLAN ID case

Signed-off-by: Andrew Rybchenko <[email protected]>
Acked-by: Ori Kam <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]

ethdev: fix VLAN spelling including VLAN ID case

Signed-off-by: Andrew Rybchenko <[email protected]>
Acked-by: Ori Kam <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

show more ...

064e90c420-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: fix DCB and VMDq spelling

Fix both in one changeset since they share line in a number of cases.

Signed-off-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Ferruh Yigit <fe

ethdev: fix DCB and VMDq spelling

Fix both in one changeset since they share line in a number of cases.

Signed-off-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

show more ...

0d9f56a820-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: fix Ethernet spelling

Signed-off-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

09fd422720-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: fix Rx/Tx spelling

Fix it everywhere in ethdev including log messages.

Signed-off-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

3c2ca0a920-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: avoid documentation in next lines

Documentation in the next separate line is confusing. If documentation
requires own line it should be before, not after.

Move documentation to the previous

ethdev: avoid documentation in next lines

Documentation in the next separate line is confusing. If documentation
requires own line it should be before, not after.

Move documentation to the previous line if documentation on the same
line makes it too long.

Fix a number of incorrect markups on the way.

When a lines is touched by the patch anyway, do other cosmetics
changes to avoid changes in next patches.

Signed-off-by: Andrew Rybchenko <[email protected]>
Acked-by: Ori Kam <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

show more ...


/dpdk/MAINTAINERS
/dpdk/app/dumpcap/main.c
/dpdk/app/dumpcap/meson.build
/dpdk/app/meson.build
/dpdk/app/test-cmdline/commands.c
/dpdk/app/test-eventdev/evt_common.h
/dpdk/app/test-eventdev/evt_main.c
/dpdk/app/test-eventdev/evt_options.c
/dpdk/app/test-eventdev/evt_options.h
/dpdk/app/test-eventdev/test_perf_common.c
/dpdk/app/test-eventdev/test_perf_common.h
/dpdk/app/test-eventdev/test_pipeline_common.c
/dpdk/app/test/meson.build
/dpdk/app/test/test.c
/dpdk/app/test/test_bpf.c
/dpdk/app/test/test_cmdline_lib.c
/dpdk/app/test/test_devargs.c
/dpdk/app/test/test_dmadev.c
/dpdk/app/test/test_event_crypto_adapter.c
/dpdk/app/test/test_event_eth_rx_adapter.c
/dpdk/app/test/test_hash.c
/dpdk/app/test/test_mbuf.c
/dpdk/app/test/test_pcapng.c
/dpdk/config/rte_config.h
/dpdk/devtools/check-git-log.sh
/dpdk/doc/api/doxy-api-index.md
/dpdk/doc/api/doxy-api.conf.in
/dpdk/doc/guides/dmadevs/idxd.rst
/dpdk/doc/guides/dmadevs/index.rst
/dpdk/doc/guides/dmadevs/ioat.rst
/dpdk/doc/guides/howto/img/packet_capture_framework.svg
/dpdk/doc/guides/howto/packet_capture_framework.rst
/dpdk/doc/guides/prog_guide/dmadev.rst
/dpdk/doc/guides/prog_guide/event_ethernet_rx_adapter.rst
/dpdk/doc/guides/prog_guide/index.rst
/dpdk/doc/guides/prog_guide/meson_ut.rst
/dpdk/doc/guides/prog_guide/pcapng_lib.rst
/dpdk/doc/guides/prog_guide/pdump_lib.rst
/dpdk/doc/guides/rawdevs/ioat.rst
/dpdk/doc/guides/rel_notes/deprecation.rst
/dpdk/doc/guides/rel_notes/release_21_11.rst
/dpdk/doc/guides/sample_app_ug/l2_forward_event.rst
/dpdk/doc/guides/sample_app_ug/l3_forward.rst
/dpdk/doc/guides/tools/dumpcap.rst
/dpdk/doc/guides/tools/index.rst
/dpdk/doc/guides/tools/testeventdev.rst
/dpdk/drivers/bus/pci/pci_params.c
/dpdk/drivers/common/mlx5/linux/mlx5_common_os.c
/dpdk/drivers/common/mlx5/linux/mlx5_common_os.h
/dpdk/drivers/common/mlx5/linux/mlx5_common_verbs.c
/dpdk/drivers/common/mlx5/linux/mlx5_nl.c
/dpdk/drivers/common/mlx5/linux/mlx5_nl.h
/dpdk/drivers/common/mlx5/mlx5_common.c
/dpdk/drivers/common/mlx5/mlx5_common.h
/dpdk/drivers/common/mlx5/mlx5_common_defs.h
/dpdk/drivers/common/mlx5/mlx5_common_mp.h
/dpdk/drivers/common/mlx5/mlx5_common_mr.c
/dpdk/drivers/common/mlx5/mlx5_common_mr.h
/dpdk/drivers/common/mlx5/mlx5_common_private.h
/dpdk/drivers/common/mlx5/mlx5_devx_cmds.h
/dpdk/drivers/common/mlx5/mlx5_malloc.h
/dpdk/drivers/common/mlx5/version.map
/dpdk/drivers/common/mlx5/windows/mlx5_common_os.c
/dpdk/drivers/common/mlx5/windows/mlx5_common_os.h
/dpdk/drivers/compress/mlx5/mlx5_compress.c
/dpdk/drivers/crypto/mlx5/mlx5_crypto.c
/dpdk/drivers/crypto/mlx5/mlx5_crypto.h
/dpdk/drivers/crypto/mlx5/mlx5_crypto_dek.c
/dpdk/drivers/dma/idxd/dpdk_idxd_cfg.py
/dpdk/drivers/dma/idxd/idxd_bus.c
/dpdk/drivers/dma/idxd/idxd_common.c
/dpdk/drivers/dma/idxd/idxd_hw_defs.h
/dpdk/drivers/dma/idxd/idxd_internal.h
/dpdk/drivers/dma/idxd/idxd_pci.c
/dpdk/drivers/dma/idxd/meson.build
/dpdk/drivers/dma/idxd/version.map
/dpdk/drivers/dma/ioat/ioat_dmadev.c
/dpdk/drivers/dma/ioat/ioat_hw_defs.h
/dpdk/drivers/dma/ioat/ioat_internal.h
/dpdk/drivers/dma/ioat/meson.build
/dpdk/drivers/dma/ioat/version.map
/dpdk/drivers/dma/meson.build
/dpdk/drivers/dma/skeleton/skeleton_dmadev.c
/dpdk/drivers/event/cnxk/cn10k_eventdev.c
/dpdk/drivers/event/cnxk/cn9k_eventdev.c
/dpdk/drivers/event/cnxk/cnxk_eventdev.c
/dpdk/drivers/event/cnxk/cnxk_eventdev_adptr.c
/dpdk/drivers/event/cnxk/cnxk_tim_evdev.c
/dpdk/drivers/event/cnxk/cnxk_tim_evdev.h
/dpdk/drivers/event/dlb2/dlb2.c
/dpdk/drivers/event/dlb2/dlb2_inline_fns.h
/dpdk/drivers/event/dlb2/dlb2_priv.h
/dpdk/drivers/event/dlb2/pf/dlb2_pf.c
/dpdk/drivers/event/dpaa/dpaa_eventdev.c
/dpdk/drivers/event/dpaa2/dpaa2_eventdev.c
/dpdk/drivers/event/dsw/dsw_evdev.c
/dpdk/drivers/event/dsw/dsw_evdev.h
/dpdk/drivers/event/octeontx/ssovf_evdev.c
/dpdk/drivers/event/octeontx/ssovf_worker.c
/dpdk/drivers/event/octeontx/timvf_evdev.c
/dpdk/drivers/event/octeontx/timvf_evdev.h
/dpdk/drivers/event/octeontx/timvf_worker.h
/dpdk/drivers/event/octeontx2/otx2_evdev.c
/dpdk/drivers/event/octeontx2/otx2_tim_evdev.c
/dpdk/drivers/event/octeontx2/otx2_tim_evdev.h
/dpdk/drivers/event/opdl/opdl_evdev.c
/dpdk/drivers/event/skeleton/skeleton_eventdev.c
/dpdk/drivers/event/sw/sw_evdev.c
/dpdk/drivers/meson.build
/dpdk/drivers/net/mlx5/linux/mlx5_ethdev_os.c
/dpdk/drivers/net/mlx5/linux/mlx5_mp_os.c
/dpdk/drivers/net/mlx5/linux/mlx5_os.c
/dpdk/drivers/net/mlx5/linux/mlx5_verbs.c
/dpdk/drivers/net/mlx5/linux/mlx5_verbs.h
/dpdk/drivers/net/mlx5/meson.build
/dpdk/drivers/net/mlx5/mlx5.c
/dpdk/drivers/net/mlx5/mlx5.h
/dpdk/drivers/net/mlx5/mlx5_defs.h
/dpdk/drivers/net/mlx5/mlx5_devx.c
/dpdk/drivers/net/mlx5/mlx5_flow.c
/dpdk/drivers/net/mlx5/mlx5_flow_aso.c
/dpdk/drivers/net/mlx5/mlx5_flow_dv.c
/dpdk/drivers/net/mlx5/mlx5_flow_verbs.c
/dpdk/drivers/net/mlx5/mlx5_rx.c
/dpdk/drivers/net/mlx5/mlx5_rx.h
/dpdk/drivers/net/mlx5/mlx5_rxq.c
/dpdk/drivers/net/mlx5/mlx5_rxtx.c
/dpdk/drivers/net/mlx5/mlx5_rxtx.h
/dpdk/drivers/net/mlx5/mlx5_rxtx_vec.h
/dpdk/drivers/net/mlx5/mlx5_trigger.c
/dpdk/drivers/net/mlx5/mlx5_tx.c
/dpdk/drivers/net/mlx5/mlx5_tx.h
/dpdk/drivers/net/mlx5/mlx5_txpp.c
/dpdk/drivers/net/mlx5/mlx5_txq.c
/dpdk/drivers/net/mlx5/windows/mlx5_ethdev_os.c
/dpdk/drivers/net/mlx5/windows/mlx5_os.c
/dpdk/drivers/net/octeontx/octeontx_ethdev.c
/dpdk/drivers/raw/ioat/dpdk_idxd_cfg.py
/dpdk/drivers/raw/ioat/meson.build
/dpdk/drivers/regex/mlx5/mlx5_regex.c
/dpdk/drivers/regex/mlx5/mlx5_regex.h
/dpdk/drivers/regex/mlx5/mlx5_regex_control.c
/dpdk/drivers/regex/mlx5/mlx5_regex_fastpath.c
/dpdk/drivers/regex/mlx5/mlx5_rxp.c
/dpdk/drivers/vdpa/mlx5/mlx5_vdpa.c
/dpdk/drivers/vdpa/mlx5/mlx5_vdpa.h
/dpdk/drivers/vdpa/mlx5/mlx5_vdpa_event.c
/dpdk/drivers/vdpa/mlx5/mlx5_vdpa_lm.c
/dpdk/drivers/vdpa/mlx5/mlx5_vdpa_mem.c
/dpdk/drivers/vdpa/mlx5/mlx5_vdpa_steer.c
/dpdk/drivers/vdpa/mlx5/mlx5_vdpa_virtq.c
/dpdk/examples/eventdev_pipeline/pipeline_worker_generic.c
/dpdk/examples/eventdev_pipeline/pipeline_worker_tx.c
/dpdk/examples/l2fwd-event/l2fwd_common.h
/dpdk/examples/l2fwd-event/l2fwd_event.c
/dpdk/examples/l2fwd-event/l2fwd_event_generic.c
/dpdk/examples/l2fwd-event/l2fwd_event_internal_port.c
/dpdk/examples/l2fwd-event/main.c
/dpdk/examples/l3fwd/l3fwd.h
/dpdk/examples/l3fwd/l3fwd_em.c
/dpdk/examples/l3fwd/l3fwd_em.h
/dpdk/examples/l3fwd/l3fwd_em_hlm.h
/dpdk/examples/l3fwd/l3fwd_em_sequential.h
/dpdk/examples/l3fwd/l3fwd_event.c
/dpdk/examples/l3fwd/l3fwd_event.h
/dpdk/examples/l3fwd/l3fwd_event_internal_port.c
/dpdk/examples/l3fwd/l3fwd_fib.c
/dpdk/examples/l3fwd/l3fwd_lpm.c
/dpdk/examples/l3fwd/main.c
/dpdk/lib/acl/meson.build
/dpdk/lib/bbdev/meson.build
/dpdk/lib/bpf/bpf_convert.c
/dpdk/lib/bpf/bpf_dump.c
/dpdk/lib/bpf/bpf_validate.c
/dpdk/lib/bpf/meson.build
/dpdk/lib/bpf/rte_bpf.h
/dpdk/lib/bpf/version.map
/dpdk/lib/cmdline/cmdline.c
/dpdk/lib/cmdline/cmdline.h
/dpdk/lib/cmdline/cmdline_private.h
/dpdk/lib/cmdline/cmdline_rdline.c
/dpdk/lib/cmdline/cmdline_rdline.h
/dpdk/lib/cmdline/cmdline_socket.c
/dpdk/lib/cmdline/version.map
/dpdk/lib/compressdev/meson.build
/dpdk/lib/distributor/meson.build
/dpdk/lib/dmadev/rte_dmadev.c
/dpdk/lib/dmadev/rte_dmadev.h
/dpdk/lib/dmadev/rte_dmadev_pmd.h
/dpdk/lib/dmadev/version.map
/dpdk/lib/eal/common/eal_common_devargs.c
/dpdk/lib/efd/meson.build
ethdev_driver.h
rte_ethdev.h
rte_ethdev_core.h
rte_flow.h
rte_mtr_driver.h
/dpdk/lib/eventdev/event_timer_adapter_pmd.h
/dpdk/lib/eventdev/eventdev_pmd.h
/dpdk/lib/eventdev/eventdev_pmd_pci.h
/dpdk/lib/eventdev/eventdev_pmd_vdev.h
/dpdk/lib/eventdev/eventdev_private.c
/dpdk/lib/eventdev/eventdev_trace.h
/dpdk/lib/eventdev/eventdev_trace_points.c
/dpdk/lib/eventdev/meson.build
/dpdk/lib/eventdev/rte_event_crypto_adapter.c
/dpdk/lib/eventdev/rte_event_crypto_adapter.h
/dpdk/lib/eventdev/rte_event_eth_rx_adapter.c
/dpdk/lib/eventdev/rte_event_eth_rx_adapter.h
/dpdk/lib/eventdev/rte_event_eth_tx_adapter.c
/dpdk/lib/eventdev/rte_event_eth_tx_adapter.h
/dpdk/lib/eventdev/rte_event_timer_adapter.c
/dpdk/lib/eventdev/rte_event_timer_adapter.h
/dpdk/lib/eventdev/rte_eventdev.c
/dpdk/lib/eventdev/rte_eventdev.h
/dpdk/lib/eventdev/rte_eventdev_core.h
/dpdk/lib/eventdev/version.map
/dpdk/lib/fib/meson.build
/dpdk/lib/flow_classify/meson.build
/dpdk/lib/graph/meson.build
/dpdk/lib/hash/rte_hash.h
/dpdk/lib/hash/version.map
/dpdk/lib/ip_frag/meson.build
/dpdk/lib/ipsec/meson.build
/dpdk/lib/jobstats/meson.build
/dpdk/lib/kni/meson.build
/dpdk/lib/lpm/meson.build
/dpdk/lib/mbuf/rte_mbuf.c
/dpdk/lib/mbuf/rte_mbuf.h
/dpdk/lib/mbuf/rte_mbuf_core.h
/dpdk/lib/member/meson.build
/dpdk/lib/mempool/meson.build
/dpdk/lib/mempool/rte_mempool.c
/dpdk/lib/meson.build
/dpdk/lib/node/meson.build
/dpdk/lib/pcapng/meson.build
/dpdk/lib/pcapng/pcapng_proto.h
/dpdk/lib/pcapng/rte_pcapng.c
/dpdk/lib/pcapng/rte_pcapng.h
/dpdk/lib/pcapng/version.map
/dpdk/lib/pdump/meson.build
/dpdk/lib/pdump/rte_pdump.c
/dpdk/lib/pdump/rte_pdump.h
/dpdk/lib/pdump/version.map
/dpdk/lib/pipeline/meson.build
/dpdk/lib/port/meson.build
/dpdk/lib/power/meson.build
/dpdk/lib/rawdev/meson.build
/dpdk/lib/regexdev/meson.build
/dpdk/lib/reorder/meson.build
/dpdk/lib/rib/meson.build
/dpdk/lib/ring/rte_ring_core.h
/dpdk/lib/sched/meson.build
/dpdk/lib/table/meson.build
/dpdk/usertools/dpdk-devbind.py
e1823e0820-Oct-2021 Thomas Monjalon <[email protected]>

ethdev: replace bit shifts with macros

The macros RTE_BIT32 and RTE_BIT64 are used to replace bit shifts.
The macro UINT64C is also used to replace remaining occurrences of ULL.

The bit shifts of E

ethdev: replace bit shifts with macros

The macros RTE_BIT32 and RTE_BIT64 are used to replace bit shifts.
The macro UINT64C is also used to replace remaining occurrences of ULL.

The bit shifts of ETH_RSS_LEVEL_* are kept for aesthetic reason.

The API of rte_mtr and rte_tm is using enums for 64-bit variables.
As they are enums, unsigned bit cannot be used.

Signed-off-by: Thomas Monjalon <[email protected]>
Reviewed-by: Andrew Rybchenko <[email protected]>

show more ...

febc855b20-Oct-2021 Andrew Rybchenko <[email protected]>

ethdev: forbid closing started device

Ethernet device must be stopped first before close in accordance
with the documentation.

Fixes: 980995f8cc56 ("ethdev: improve API comments of close and detach

ethdev: forbid closing started device

Ethernet device must be stopped first before close in accordance
with the documentation.

Fixes: 980995f8cc56 ("ethdev: improve API comments of close and detach functions")
Cc: [email protected]

Signed-off-by: Andrew Rybchenko <[email protected]>
Acked-by: Thomas Monjalon <[email protected]>
Acked-by: Ajit Khaparde <[email protected]>

show more ...

dc4d860e20-Oct-2021 Viacheslav Ovsiienko <[email protected]>

ethdev: introduce configurable flexible item

1. Introduction and Retrospective

Nowadays the networks are evolving fast and wide, the network
structures are getting more and more complicated, the ne

ethdev: introduce configurable flexible item

1. Introduction and Retrospective

Nowadays the networks are evolving fast and wide, the network
structures are getting more and more complicated, the new
application areas are emerging. To address these challenges
the new network protocols are continuously being developed,
considered by technical communities, adopted by industry and,
eventually implemented in hardware and software. The DPDK
framework follows the common trends and if we bother
to glance at the RTE Flow API header we see the multiple
new items were introduced during the last years since
the initial release.

The new protocol adoption and implementation process is
not straightforward and takes time, the new protocol passes
development, consideration, adoption, and implementation
phases. The industry tries to mitigate and address the
forthcoming network protocols, for example, many hardware
vendors are implementing flexible and configurable network
protocol parsers. As DPDK developers, could we anticipate
the near future in the same fashion and introduce the similar
flexibility in RTE Flow API?

Let's check what we already have merged in our project, and
we see the nice raw item (rte_flow_item_raw). At the first
glance, it looks superior and we can try to implement a flow
matching on the header of some relatively new tunnel protocol,
say on the GENEVE header with variable length options. And,
under further consideration, we run into the raw item
limitations:

- only fixed size network header can be represented
- the entire network header pattern of fixed format
(header field offsets are fixed) must be provided
- the search for patterns is not robust (the wrong matches
might be triggered), and actually is not supported
by existing PMDs
- no explicitly specified relations with preceding
and following items
- no tunnel hint support

As the result, implementing the support for tunnel protocols
like aforementioned GENEVE with variable extra protocol option
with flow raw item becomes very complicated and would require
multiple flows and multiple raw items chained in the same
flow (by the way, there is no support found for chained raw
items in implemented drivers).

This RFC introduces the dedicated flex item (rte_flow_item_flex)
to handle matches with existing and new network protocol headers
in a unified fashion.

2. Flex Item Life Cycle

Let's assume there are the requirements to support the new
network protocol with RTE Flows. What is given within protocol
specification:

- header format
- header length, (can be variable, depending on options)
- potential presence of extra options following or included
in the header the header
- the relations with preceding protocols. For example,
the GENEVE follows UDP, eCPRI can follow either UDP
or L2 header
- the relations with following protocols. For example,
the next layer after tunnel header can be L2 or L3
- whether the new protocol is a tunnel and the header
is a splitting point between outer and inner layers

The supposed way to operate with flex item:

- application defines the header structures according to
protocol specification

- application calls rte_flow_flex_item_create() with desired
configuration according to the protocol specification, it
creates the flex item object over specified ethernet device
and prepares PMD and underlying hardware to handle flex
item. On item creation call PMD backing the specified
ethernet device returns the opaque handle identifying
the object has been created

- application uses the rte_flow_item_flex with obtained handle
in the flows, the values/masks to match with fields in the
header are specified in the flex item per flow as for regular
items (except that pattern buffer combines all fields)

- flows with flex items match with packets in a regular fashion,
the values and masks for the new protocol header match are
taken from the flex items in the flows

- application destroys flows with flex items

- application calls rte_flow_flex_item_release() as part of
ethernet device API and destroys the flex item object in
PMD and releases the engaged hardware resources

3. Flex Item Structure

The flex item structure is intended to be used as part of the flow
pattern like regular RTE flow items and provides the mask and
value to match with fields of the protocol item was configured
for.

struct rte_flow_item_flex {
void *handle;
uint32_t length;
const uint8_t* pattern;
};

The handle is some opaque object maintained on per device basis
by underlying driver.

The protocol header fields are considered as bit fields, all
offsets and widths are expressed in bits. The pattern is the
buffer containing the bit concatenation of all the fields
presented at item configuration time, in the same order and
same amount. If byte boundary alignment is needed an application
can use a dummy type field, this is just some kind of gap filler.

The length field specifies the pattern buffer length in bytes
and is needed to allow rte_flow_copy() operations. The approach
of multiple pattern pointers and lengths (per field) was
considered and found clumsy - it seems to be much suitable for
the application to maintain the single structure within the
single pattern buffer.

4. Flex Item Configuration

The flex item configuration consists of the following parts:

- header field descriptors:
- next header
- next protocol
- sample to match
- input link descriptors
- output link descriptors

The field descriptors tell the driver and hardware what data should
be extracted from the packet and then control the packet handling
in the flow engine. Besides this, sample fields can be presented
to match with patterns in the flows. Each field is a bit pattern.
It has width, offset from the header beginning, mode of offset
calculation, and offset related parameters.

The next header field is special, no data are actually taken
from the packet, but its offset is used as a pointer to the next
header in the packet, in other words the next header offset
specifies the size of the header being parsed by flex item.

There is one more special field - next protocol, it specifies
where the next protocol identifier is contained and packet data
sampled from this field will be used to determine the next
protocol header type to continue packet parsing. The next
protocol field is like eth_type field in MAC2, or proto field
in IPv4/v6 headers.

The sample fields are used to represent the data be sampled
from the packet and then matched with established flows.

There are several methods supposed to calculate field offset
in runtime depending on configuration and packet content:

- FIELD_MODE_FIXED - fixed offset. The bit offset from
header beginning is permanent and defined by field_base
configuration parameter.

- FIELD_MODE_OFFSET - the field bit offset is extracted
from other header field (indirect offset field). The
resulting field offset to match is calculated from as:

field_base + (*offset_base & offset_mask) << offset_shift

This mode is useful to sample some extra options following
the main header with field containing main header length.
Also, this mode can be used to calculate offset to the
next protocol header, for example - IPv4 header contains
the 4-bit field with IPv4 header length expressed in dwords.
One more example - this mode would allow us to skip GENEVE
header variable length options.

- FIELD_MODE_BITMASK - the field bit offset is extracted
from other header field (indirect offset field), the latter
is considered as bitmask containing some number of one bits,
the resulting field offset to match is calculated as:

field_base + bitcount(*offset_base & offset_mask) << offset_shift

This mode would be useful to skip the GTP header and its
extra options with specified flags.

- FIELD_MODE_DUMMY - dummy field, optionally used for byte
boundary alignment in pattern. Pattern mask and data are
ignored in the match. All configuration parameters besides
field size and offset are ignored.

Note: "*" - means the indirect field offset is calculated
and actual data are extracted from the packet by this
offset (like data are fetched by pointer *p from memory).

The offset mode list can be extended by vendors according to
hardware supported options.

The input link configuration section tells the driver after
what protocols and at what conditions the flex item can follow.
Input link specified the preceding header pattern, for example
for GENEVE it can be UDP item specifying match on destination
port with value 6081. The flex item can follow multiple header
types and multiple input links should be specified. At flow
creation time the item with one of the input link types should
precede the flex item and driver will select the correct flex
item settings, depending on the actual flow pattern.

The output link configuration section tells the driver how
to continue packet parsing after the flex item protocol.
If multiple protocols can follow the flex item header the
flex item should contain the field with the next protocol
identifier and the parsing will be continued depending
on the data contained in this field in the actual packet.

The flex item fields can participate in RSS hash calculation,
the dedicated flag is present in the field description to specify
what fields should be provided for hashing.

5. Flex Item Chaining

If there are multiple protocols supposed to be supported with
flex items in chained fashion - two or more flex items within
the same flow and these ones might be neighbors in the pattern,
it means the flex items are mutual referencing. In this case,
the item that occurred first should be created with empty
output link list or with the list including existing items,
and then the second flex item should be created referencing
the first flex item as input arc, drivers should adjust
the item configuration.

Also, the hardware resources used by flex items to handle
the packet can be limited. If there are multiple flex items
that are supposed to be used within the same flow it would
be nice to provide some hint for the driver that these two
or more flex items are intended for simultaneous usage.
The fields of items should be assigned with hint indices
and these indices from two or more flex items supposed
to be provided within the same flow should be the same
as well. In other words, the field hint index specifies
the group of fields that can be matched simultaneously
within a single flow. If hint indices are specified,
the driver will try to engage not overlapping hardware
resources and provide independent handling of the field
groups with unique indices. If the hint index is zero
the driver assigns resources on its own.

6. Example of New Protocol Handling

Let's suppose we have the requirements to handle the new tunnel
protocol that follows UDP header with destination port 0xFADE
and is followed by MAC header. Let the new protocol header format
be like this:

struct new_protocol_header {
rte_be32 header_length; /* length in dwords, including options */
rte_be32 specific0; /* some protocol data, no intention */
rte_be32 specific1; /* to match in flows on these fields */
rte_be32 crucial; /* data of interest, match is needed */
rte_be32 options[0]; /* optional protocol data, variable length */
};

The supposed flex item configuration:

struct rte_flow_item_flex_field field0 = {
.field_mode = FIELD_MODE_DUMMY, /* Affects match pattern only */
.field_size = 96, /* three dwords from the beginning */
};
struct rte_flow_item_flex_field field1 = {
.field_mode = FIELD_MODE_FIXED,
.field_size = 32, /* Field size is one dword */
.field_base = 96, /* Skip three dwords from the beginning */
};
struct rte_flow_item_udp spec0 = {
.hdr = {
.dst_port = RTE_BE16(0xFADE),
}
};
struct rte_flow_item_udp mask0 = {
.hdr = {
.dst_port = RTE_BE16(0xFFFF),
}
};
struct rte_flow_item_flex_link link0 = {
.item = {
.type = RTE_FLOW_ITEM_TYPE_UDP,
.spec = &spec0,
.mask = &mask0,
};

struct rte_flow_item_flex_conf conf = {
.next_header = {
.tunnel = FLEX_TUNNEL_MODE_SINGLE,
.field_mode = FIELD_MODE_OFFSET,
.field_base = 0,
.offset_base = 0,
.offset_mask = 0xFFFFFFFF,
.offset_shift = 2 /* Expressed in dwords, shift left by 2 */
},
.sample = {
&field0,
&field1,
},
.nb_samples = 2,
.input_link[0] = &link0,
.nb_inputs = 1
};

Let's suppose we have created the flex item successfully, and PMD
returned the handle 0x123456789A. We can use the following item
pattern to match the crucial field in the packet with value 0x00112233:

struct new_protocol_header spec_pattern =
{
.crucial = RTE_BE32(0x00112233),
};
struct new_protocol_header mask_pattern =
{
.crucial = RTE_BE32(0xFFFFFFFF),
};
struct rte_flow_item_flex spec_flex = {
.handle = 0x123456789A
.length = sizeiof(struct new_protocol_header),
.pattern = &spec_pattern,
};
struct rte_flow_item_flex mask_flex = {
.length = sizeof(struct new_protocol_header),
.pattern = &mask_pattern,
};
struct rte_flow_item item_to_match = {
.type = RTE_FLOW_ITEM_TYPE_FLEX,
.spec = &spec_flex,
.mask = &mask_flex,
};

Signed-off-by: Viacheslav Ovsiienko <[email protected]>
Acked-by: Ori Kam <[email protected]>

show more ...

6cf7204720-Oct-2021 Gregory Etelson <[email protected]>

ethdev: support flow elements with variable length

Flow API provides RAW item type for packet patterns of variable
length. The RAW item structure has fixed size members that describe the
variable pa

ethdev: support flow elements with variable length

Flow API provides RAW item type for packet patterns of variable
length. The RAW item structure has fixed size members that describe the
variable pattern length and methods to process it.

There is the new Flow items with variable lengths coming - flex
item. In order to handle this item (and potentially other new ones
with variable pattern length) in flow copy and conversion routines
the helper function is introduced.

Signed-off-by: Gregory Etelson <[email protected]>
Reviewed-by: Viacheslav Ovsiienko <[email protected]>
Acked-by: Ori Kam <[email protected]>

show more ...


/dpdk/app/test-pmd/cmdline_mtr.c
/dpdk/app/test-pmd/config.c
/dpdk/doc/guides/nics/cnxk.rst
/dpdk/doc/guides/nics/features/cnxk.ini
/dpdk/doc/guides/nics/features/cnxk_vf.ini
/dpdk/doc/guides/nics/features/i40e.ini
/dpdk/doc/guides/rel_notes/release_21_11.rst
/dpdk/drivers/common/cnxk/cnxk_telemetry.h
/dpdk/drivers/common/cnxk/cnxk_telemetry_nix.c
/dpdk/drivers/common/cnxk/cnxk_telemetry_npa.c
/dpdk/drivers/common/cnxk/hw/nix.h
/dpdk/drivers/common/cnxk/meson.build
/dpdk/drivers/common/cnxk/roc_mbox.h
/dpdk/drivers/common/cnxk/roc_nix.c
/dpdk/drivers/common/cnxk/roc_nix.h
/dpdk/drivers/common/cnxk/roc_nix_bpf.c
/dpdk/drivers/common/cnxk/roc_nix_priv.h
/dpdk/drivers/common/cnxk/roc_nix_queue.c
/dpdk/drivers/common/cnxk/roc_npc.c
/dpdk/drivers/common/cnxk/roc_npc.h
/dpdk/drivers/common/cnxk/roc_npc_mcam.c
/dpdk/drivers/common/cnxk/roc_npc_priv.h
/dpdk/drivers/common/cnxk/roc_npc_utils.c
/dpdk/drivers/common/cnxk/roc_platform.h
/dpdk/drivers/common/cnxk/roc_utils.c
/dpdk/drivers/common/cnxk/version.map
/dpdk/drivers/common/sfc_efx/base/ef10_nic.c
/dpdk/drivers/common/sfc_efx/base/efx.h
/dpdk/drivers/common/sfc_efx/base/siena_nic.c
/dpdk/drivers/mempool/cnxk/cnxk_mempool_telemetry.c
/dpdk/drivers/mempool/cnxk/meson.build
/dpdk/drivers/net/cnxk/cn10k_rte_flow.c
/dpdk/drivers/net/cnxk/cnxk_ethdev.c
/dpdk/drivers/net/cnxk/cnxk_ethdev.h
/dpdk/drivers/net/cnxk/cnxk_ethdev_mtr.c
/dpdk/drivers/net/cnxk/cnxk_ethdev_telemetry.c
/dpdk/drivers/net/cnxk/cnxk_rte_flow.c
/dpdk/drivers/net/cnxk/meson.build
/dpdk/drivers/net/ena/ena_ethdev.c
/dpdk/drivers/net/ena/ena_ethdev.h
/dpdk/drivers/net/i40e/i40e_hash.c
/dpdk/drivers/net/i40e/i40e_rxtx_common_avx.h
/dpdk/drivers/net/i40e/i40e_rxtx_vec_avx2.c
/dpdk/drivers/net/i40e/i40e_rxtx_vec_avx512.c
/dpdk/drivers/net/i40e/i40e_rxtx_vec_common.h
/dpdk/drivers/net/i40e/i40e_rxtx_vec_neon.c
/dpdk/drivers/net/ice/ice_ethdev.c
/dpdk/drivers/net/ice/ice_ethdev.h
/dpdk/drivers/net/ice/ice_rxtx_common_avx.h
/dpdk/drivers/net/ice/ice_rxtx_vec_avx2.c
/dpdk/drivers/net/ice/ice_rxtx_vec_avx512.c
/dpdk/drivers/net/ice/ice_rxtx_vec_common.h
/dpdk/drivers/net/mlx5/mlx5_flow.c
/dpdk/drivers/net/octeontx2/otx2_ethdev_sec.c
/dpdk/drivers/net/octeontx2/otx2_ethdev_sec_tx.h
/dpdk/drivers/net/sfc/sfc.c
/dpdk/drivers/net/sfc/sfc_ethdev.c
/dpdk/drivers/net/sfc/sfc_flow.c
/dpdk/drivers/net/sfc/sfc_mae.c
/dpdk/drivers/net/sfc/sfc_mae.h
/dpdk/drivers/net/sfc/sfc_switch.c
/dpdk/drivers/net/sfc/sfc_switch.h
/dpdk/drivers/net/softnic/rte_eth_softnic_meter.c
/dpdk/examples/ip_reassembly/main.c
rte_flow.c
990912e618-Oct-2021 Ferruh Yigit <[email protected]>

ethdev: unify MTU checks

Both 'rte_eth_dev_configure()' & 'rte_eth_dev_set_mtu()' sets MTU but
have slightly different checks. Like one checks min MTU against
RTE_ETHER_MIN_MTU and other RTE_ETHER_M

ethdev: unify MTU checks

Both 'rte_eth_dev_configure()' & 'rte_eth_dev_set_mtu()' sets MTU but
have slightly different checks. Like one checks min MTU against
RTE_ETHER_MIN_MTU and other RTE_ETHER_MIN_LEN.

Checks moved into common function to unify the checks. Also this has
benefit to have common error logs.

Default 'dev_info->min_mtu' (the one set by ethdev if driver doesn't
provide one), changed to ('RTE_ETHER_MIN_LEN' - overhead). Previously it
was 'RTE_ETHER_MIN_MTU' which is min MTU for IPv4 packets. Since the
intention is to provide min MTU corresponding minimum frame size, new
default value suits better.

Suggested-by: Huisong Li <[email protected]>
Signed-off-by: Ferruh Yigit <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>

show more ...

b563c14218-Oct-2021 Ferruh Yigit <[email protected]>

ethdev: remove jumbo offload flag

Removing 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag.

Instead of drivers announce this capability, application can deduct the
capability by checking reported 'dev_in

ethdev: remove jumbo offload flag

Removing 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag.

Instead of drivers announce this capability, application can deduct the
capability by checking reported 'dev_info.max_mtu' or
'dev_info.max_rx_pktlen'.

And instead of application setting this flag explicitly to enable jumbo
frames, this can be deduced by driver by comparing requested 'mtu' to
'RTE_ETHER_MTU'.

Removing this additional configuration for simplification.

Suggested-by: Konstantin Ananyev <[email protected]>
Signed-off-by: Ferruh Yigit <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Rosen Xu <[email protected]>
Acked-by: Somnath Kotur <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>
Acked-by: Huisong Li <[email protected]>
Acked-by: Hyong Youb Kim <[email protected]>
Acked-by: Michal Krawczyk <[email protected]>

show more ...


/dpdk/app/test-eventdev/test_pipeline_common.c
/dpdk/app/test-pmd/cmdline.c
/dpdk/app/test-pmd/config.c
/dpdk/app/test-pmd/testpmd.c
/dpdk/app/test-pmd/testpmd.h
/dpdk/doc/guides/howto/debug_troubleshoot.rst
/dpdk/doc/guides/nics/bnxt.rst
/dpdk/doc/guides/nics/features.rst
/dpdk/drivers/net/atlantic/atl_ethdev.c
/dpdk/drivers/net/axgbe/axgbe_ethdev.c
/dpdk/drivers/net/bnx2x/bnx2x_ethdev.c
/dpdk/drivers/net/bnxt/bnxt.h
/dpdk/drivers/net/bnxt/bnxt_ethdev.c
/dpdk/drivers/net/bonding/rte_eth_bond_pmd.c
/dpdk/drivers/net/cnxk/cnxk_ethdev.h
/dpdk/drivers/net/cnxk/cnxk_ethdev_ops.c
/dpdk/drivers/net/cxgbe/cxgbe.h
/dpdk/drivers/net/cxgbe/cxgbe_ethdev.c
/dpdk/drivers/net/cxgbe/sge.c
/dpdk/drivers/net/dpaa/dpaa_ethdev.c
/dpdk/drivers/net/dpaa2/dpaa2_ethdev.c
/dpdk/drivers/net/e1000/e1000_ethdev.h
/dpdk/drivers/net/e1000/em_ethdev.c
/dpdk/drivers/net/e1000/em_rxtx.c
/dpdk/drivers/net/e1000/igb_rxtx.c
/dpdk/drivers/net/ena/ena_ethdev.c
/dpdk/drivers/net/enetc/enetc_ethdev.c
/dpdk/drivers/net/enic/enic_res.c
/dpdk/drivers/net/failsafe/failsafe_ops.c
/dpdk/drivers/net/fm10k/fm10k_ethdev.c
/dpdk/drivers/net/hinic/hinic_pmd_ethdev.c
/dpdk/drivers/net/hns3/hns3_ethdev.c
/dpdk/drivers/net/hns3/hns3_ethdev_vf.c
/dpdk/drivers/net/i40e/i40e_ethdev.c
/dpdk/drivers/net/i40e/i40e_rxtx.c
/dpdk/drivers/net/iavf/iavf_ethdev.c
/dpdk/drivers/net/ice/ice_dcf_ethdev.c
/dpdk/drivers/net/ice/ice_dcf_vf_representor.c
/dpdk/drivers/net/ice/ice_ethdev.c
/dpdk/drivers/net/ice/ice_rxtx.c
/dpdk/drivers/net/igc/igc_ethdev.h
/dpdk/drivers/net/igc/igc_txrx.c
/dpdk/drivers/net/ionic/ionic_ethdev.c
/dpdk/drivers/net/ipn3ke/ipn3ke_representor.c
/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c
/dpdk/drivers/net/ixgbe/ixgbe_pf.c
/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c
/dpdk/drivers/net/mlx4/mlx4_rxq.c
/dpdk/drivers/net/mlx5/mlx5_rxq.c
/dpdk/drivers/net/mvneta/mvneta_ethdev.h
/dpdk/drivers/net/mvpp2/mrvl_ethdev.c
/dpdk/drivers/net/nfp/nfp_common.c
/dpdk/drivers/net/octeontx/octeontx_ethdev.h
/dpdk/drivers/net/octeontx2/otx2_ethdev.h
/dpdk/drivers/net/octeontx_ep/otx_ep_ethdev.c
/dpdk/drivers/net/octeontx_ep/otx_ep_rxtx.c
/dpdk/drivers/net/qede/qede_ethdev.c
/dpdk/drivers/net/sfc/sfc_rx.c
/dpdk/drivers/net/thunderx/nicvf_ethdev.h
/dpdk/drivers/net/txgbe/txgbe_rxtx.c
/dpdk/drivers/net/virtio/virtio_ethdev.c
/dpdk/drivers/net/vmxnet3/vmxnet3_ethdev.c
/dpdk/examples/ip_fragmentation/main.c
/dpdk/examples/ip_reassembly/main.c
/dpdk/examples/ipsec-secgw/ipsec-secgw.c
/dpdk/examples/ipv4_multicast/main.c
/dpdk/examples/kni/main.c
/dpdk/examples/l3fwd-acl/main.c
/dpdk/examples/l3fwd-graph/main.c
/dpdk/examples/l3fwd-power/main.c
/dpdk/examples/l3fwd/main.c
/dpdk/examples/performance-thread/l3fwd-thread/main.c
/dpdk/examples/vhost/main.c
rte_ethdev.c
rte_ethdev.h
f7e04f5718-Oct-2021 Ferruh Yigit <[email protected]>

ethdev: move MTU set check to library

Move requested MTU value check to the API to prevent the duplicated
code.

Signed-off-by: Ferruh Yigit <[email protected]>
Reviewed-by: Andrew Rybchenko <a

ethdev: move MTU set check to library

Move requested MTU value check to the API to prevent the duplicated
code.

Signed-off-by: Ferruh Yigit <[email protected]>
Reviewed-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Rosen Xu <[email protected]>
Acked-by: Somnath Kotur <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>

show more ...

dd4e429c18-Oct-2021 Ferruh Yigit <[email protected]>

ethdev: move jumbo frame offload check to library

Setting MTU bigger than RTE_ETHER_MTU requires the jumbo frame support,
and application should enable the jumbo frame offload support for it.

When

ethdev: move jumbo frame offload check to library

Setting MTU bigger than RTE_ETHER_MTU requires the jumbo frame support,
and application should enable the jumbo frame offload support for it.

When jumbo frame offload is not enabled by application, but MTU bigger
than RTE_ETHER_MTU is requested there are two options, either fail or
enable jumbo frame offload implicitly.

Enabling jumbo frame offload implicitly is selected by many drivers
since setting a big MTU value already implies it, and this increases
usability.

This patch moves this logic from drivers to the library, both to reduce
the duplicated code in the drivers and to make behaviour more visible.

Signed-off-by: Ferruh Yigit <[email protected]>
Reviewed-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Rosen Xu <[email protected]>
Acked-by: Ajit Khaparde <[email protected]>
Acked-by: Somnath Kotur <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>
Acked-by: Huisong Li <[email protected]>

show more ...

1bb4a52818-Oct-2021 Ferruh Yigit <[email protected]>

ethdev: fix max Rx packet length

There is a confusion on setting max Rx packet length, this patch aims to
clarify it.

'rte_eth_dev_configure()' API accepts max Rx packet size via
'uint32_t max_rx_p

ethdev: fix max Rx packet length

There is a confusion on setting max Rx packet length, this patch aims to
clarify it.

'rte_eth_dev_configure()' API accepts max Rx packet size via
'uint32_t max_rx_pkt_len' field of the config struct 'struct
rte_eth_conf'.

Also 'rte_eth_dev_set_mtu()' API can be used to set the MTU, and result
stored into '(struct rte_eth_dev)->data->mtu'.

These two APIs are related but they work in a disconnected way, they
store the set values in different variables which makes hard to figure
out which one to use, also having two different method for a related
functionality is confusing for the users.

Other issues causing confusion is:
* maximum transmission unit (MTU) is payload of the Ethernet frame. And
'max_rx_pkt_len' is the size of the Ethernet frame. Difference is
Ethernet frame overhead, and this overhead may be different from
device to device based on what device supports, like VLAN and QinQ.
* 'max_rx_pkt_len' is only valid when application requested jumbo frame,
which adds additional confusion and some APIs and PMDs already
discards this documented behavior.
* For the jumbo frame enabled case, 'max_rx_pkt_len' is an mandatory
field, this adds configuration complexity for application.

As solution, both APIs gets MTU as parameter, and both saves the result
in same variable '(struct rte_eth_dev)->data->mtu'. For this
'max_rx_pkt_len' updated as 'mtu', and it is always valid independent
from jumbo frame.

For 'rte_eth_dev_configure()', 'dev->data->dev_conf.rxmode.mtu' is user
request and it should be used only within configure function and result
should be stored to '(struct rte_eth_dev)->data->mtu'. After that point
both application and PMD uses MTU from this variable.

When application doesn't provide an MTU during 'rte_eth_dev_configure()'
default 'RTE_ETHER_MTU' value is used.

Additional clarification done on scattered Rx configuration, in
relation to MTU and Rx buffer size.
MTU is used to configure the device for physical Rx/Tx size limitation,
Rx buffer is where to store Rx packets, many PMDs use mbuf data buffer
size as Rx buffer size.
PMDs compare MTU against Rx buffer size to decide enabling scattered Rx
or not. If scattered Rx is not supported by device, MTU bigger than Rx
buffer size should fail.

Signed-off-by: Ferruh Yigit <[email protected]>
Acked-by: Ajit Khaparde <[email protected]>
Acked-by: Somnath Kotur <[email protected]>
Acked-by: Huisong Li <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>
Acked-by: Konstantin Ananyev <[email protected]>
Acked-by: Rosen Xu <[email protected]>
Acked-by: Hyong Youb Kim <[email protected]>

show more ...


/dpdk/app/test-eventdev/test_perf_common.c
/dpdk/app/test-eventdev/test_pipeline_common.c
/dpdk/app/test-pmd/cmdline.c
/dpdk/app/test-pmd/config.c
/dpdk/app/test-pmd/parameters.c
/dpdk/app/test-pmd/testpmd.c
/dpdk/app/test-pmd/testpmd.h
/dpdk/app/test-pmd/util.c
/dpdk/app/test/test_link_bonding.c
/dpdk/app/test/test_link_bonding_mode4.c
/dpdk/app/test/test_link_bonding_rssconf.c
/dpdk/app/test/test_pmd_perf.c
/dpdk/doc/guides/nics/dpaa.rst
/dpdk/doc/guides/nics/dpaa2.rst
/dpdk/doc/guides/nics/e1000em.rst
/dpdk/doc/guides/nics/features.rst
/dpdk/doc/guides/nics/fm10k.rst
/dpdk/doc/guides/nics/mlx5.rst
/dpdk/doc/guides/nics/octeontx.rst
/dpdk/doc/guides/nics/thunderx.rst
/dpdk/doc/guides/rel_notes/deprecation.rst
/dpdk/doc/guides/sample_app_ug/flow_classify.rst
/dpdk/doc/guides/sample_app_ug/l3_forward.rst
/dpdk/doc/guides/sample_app_ug/l3_forward_access_ctrl.rst
/dpdk/doc/guides/sample_app_ug/l3_forward_graph.rst
/dpdk/doc/guides/sample_app_ug/l3_forward_power_man.rst
/dpdk/doc/guides/sample_app_ug/performance_thread.rst
/dpdk/doc/guides/sample_app_ug/skeleton.rst
/dpdk/drivers/common/octeontx/meson.build
/dpdk/drivers/common/octeontx2/meson.build
/dpdk/drivers/compress/octeontx/meson.build
/dpdk/drivers/crypto/octeontx/meson.build
/dpdk/drivers/event/octeontx/meson.build
/dpdk/drivers/event/octeontx2/meson.build
/dpdk/drivers/mempool/octeontx/meson.build
/dpdk/drivers/mempool/octeontx2/meson.build
/dpdk/drivers/net/atlantic/atl_ethdev.c
/dpdk/drivers/net/avp/avp_ethdev.c
/dpdk/drivers/net/axgbe/axgbe_ethdev.c
/dpdk/drivers/net/bnx2x/bnx2x_ethdev.c
/dpdk/drivers/net/bnxt/bnxt_ethdev.c
/dpdk/drivers/net/bonding/rte_eth_bond_pmd.c
/dpdk/drivers/net/cnxk/cnxk_ethdev.c
/dpdk/drivers/net/cnxk/cnxk_ethdev_ops.c
/dpdk/drivers/net/cxgbe/cxgbe_ethdev.c
/dpdk/drivers/net/cxgbe/cxgbe_main.c
/dpdk/drivers/net/cxgbe/sge.c
/dpdk/drivers/net/dpaa/dpaa_ethdev.c
/dpdk/drivers/net/dpaa2/dpaa2_ethdev.c
/dpdk/drivers/net/e1000/em_ethdev.c
/dpdk/drivers/net/e1000/igb_ethdev.c
/dpdk/drivers/net/e1000/igb_rxtx.c
/dpdk/drivers/net/ena/ena_ethdev.c
/dpdk/drivers/net/enetc/enetc_ethdev.c
/dpdk/drivers/net/enic/enic_ethdev.c
/dpdk/drivers/net/enic/enic_fm_flow.c
/dpdk/drivers/net/enic/enic_main.c
/dpdk/drivers/net/fm10k/fm10k_ethdev.c
/dpdk/drivers/net/hinic/hinic_pmd_ethdev.c
/dpdk/drivers/net/hns3/hns3_ethdev.c
/dpdk/drivers/net/hns3/hns3_ethdev_vf.c
/dpdk/drivers/net/hns3/hns3_rxtx.c
/dpdk/drivers/net/i40e/i40e_ethdev.c
/dpdk/drivers/net/i40e/i40e_rxtx.c
/dpdk/drivers/net/iavf/iavf_ethdev.c
/dpdk/drivers/net/ice/ice_dcf_ethdev.c
/dpdk/drivers/net/ice/ice_ethdev.c
/dpdk/drivers/net/ice/ice_rxtx.c
/dpdk/drivers/net/igc/igc_ethdev.c
/dpdk/drivers/net/igc/igc_ethdev.h
/dpdk/drivers/net/igc/igc_txrx.c
/dpdk/drivers/net/ionic/ionic_ethdev.c
/dpdk/drivers/net/ionic/ionic_rxtx.c
/dpdk/drivers/net/ipn3ke/ipn3ke_representor.c
/dpdk/drivers/net/ixgbe/ixgbe_ethdev.c
/dpdk/drivers/net/ixgbe/ixgbe_pf.c
/dpdk/drivers/net/ixgbe/ixgbe_rxtx.c
/dpdk/drivers/net/liquidio/lio_ethdev.c
/dpdk/drivers/net/mlx4/mlx4_rxq.c
/dpdk/drivers/net/mlx5/mlx5_rxq.c
/dpdk/drivers/net/mvneta/mvneta_ethdev.c
/dpdk/drivers/net/mvneta/mvneta_rxtx.c
/dpdk/drivers/net/mvpp2/mrvl_ethdev.c
/dpdk/drivers/net/nfp/nfp_common.c
/dpdk/drivers/net/octeontx/meson.build
/dpdk/drivers/net/octeontx/octeontx_ethdev.c
/dpdk/drivers/net/octeontx2/meson.build
/dpdk/drivers/net/octeontx2/otx2_ethdev.c
/dpdk/drivers/net/octeontx2/otx2_ethdev_ops.c
/dpdk/drivers/net/pfe/pfe_ethdev.c
/dpdk/drivers/net/qede/qede_ethdev.c
/dpdk/drivers/net/qede/qede_rxtx.c
/dpdk/drivers/net/sfc/sfc_ethdev.c
/dpdk/drivers/net/sfc/sfc_port.c
/dpdk/drivers/net/tap/rte_eth_tap.c
/dpdk/drivers/net/thunderx/meson.build
/dpdk/drivers/net/thunderx/nicvf_ethdev.c
/dpdk/drivers/net/txgbe/txgbe_ethdev.c
/dpdk/drivers/net/txgbe/txgbe_ethdev.h
/dpdk/drivers/net/txgbe/txgbe_ethdev_vf.c
/dpdk/drivers/net/txgbe/txgbe_rxtx.c
/dpdk/drivers/net/virtio/virtio_ethdev.c
/dpdk/examples/bbdev_app/main.c
/dpdk/examples/bond/main.c
/dpdk/examples/distributor/main.c
/dpdk/examples/eventdev_pipeline/pipeline_worker_generic.c
/dpdk/examples/eventdev_pipeline/pipeline_worker_tx.c
/dpdk/examples/flow_classify/flow_classify.c
/dpdk/examples/ioat/ioatfwd.c
/dpdk/examples/ip_fragmentation/main.c
/dpdk/examples/ip_pipeline/link.c
/dpdk/examples/ip_reassembly/main.c
/dpdk/examples/ipsec-secgw/ipsec-secgw.c
/dpdk/examples/ipv4_multicast/main.c
/dpdk/examples/kni/main.c
/dpdk/examples/l2fwd-cat/l2fwd-cat.c
/dpdk/examples/l2fwd-crypto/main.c
/dpdk/examples/l2fwd-event/l2fwd_common.c
/dpdk/examples/l3fwd-acl/main.c
/dpdk/examples/l3fwd-graph/main.c
/dpdk/examples/l3fwd-power/main.c
/dpdk/examples/l3fwd/main.c
/dpdk/examples/performance-thread/l3fwd-thread/main.c
/dpdk/examples/performance-thread/l3fwd-thread/test.sh
/dpdk/examples/pipeline/obj.c
/dpdk/examples/ptpclient/ptpclient.c
/dpdk/examples/qos_meter/main.c
/dpdk/examples/qos_sched/init.c
/dpdk/examples/rxtx_callbacks/main.c
/dpdk/examples/skeleton/basicfwd.c
/dpdk/examples/vhost/main.c
/dpdk/examples/vm_power_manager/main.c
rte_ethdev.c
rte_ethdev.h
rte_ethdev_trace.h
/dpdk/lib/net/rte_ip.h
632be32714-Oct-2021 Jie Wang <[email protected]>

ethdev: add API to get device configuration

The driver may change offloads info into dev->data->dev_conf
in dev_configure which may cause apps use outdated values.

Add a new API to get actual devic

ethdev: add API to get device configuration

The driver may change offloads info into dev->data->dev_conf
in dev_configure which may cause apps use outdated values.

Add a new API to get actual device configuration.

Signed-off-by: Jie Wang <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

show more ...

58b43c1d29-Sep-2021 Gowrishankar Muthukrishnan <[email protected]>

ethdev: add telemetry endpoint for device info

Add telemetry endpoint /ethdev/info for device info.

Signed-off-by: Gowrishankar Muthukrishnan <[email protected]>
Reviewed-by: Ferruh Yigit <f

ethdev: add telemetry endpoint for device info

Add telemetry endpoint /ethdev/info for device info.

Signed-off-by: Gowrishankar Muthukrishnan <[email protected]>
Reviewed-by: Ferruh Yigit <[email protected]>

show more ...

50cd039113-Oct-2021 Viacheslav Ovsiienko <[email protected]>

ethdev: add experimental comment for modify field action

EXPERIMENTAL tag was missed in rte_flow_action_modify_data
structure description.

Fixes: 73b68f4c54a0 ("ethdev: introduce generic modify flo

ethdev: add experimental comment for modify field action

EXPERIMENTAL tag was missed in rte_flow_action_modify_data
structure description.

Fixes: 73b68f4c54a0 ("ethdev: introduce generic modify flow action")
Cc: [email protected]

Signed-off-by: Viacheslav Ovsiienko <[email protected]>
Acked-by: Ori Kam <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>

show more ...

14fc81ae13-Oct-2021 Viacheslav Ovsiienko <[email protected]>

ethdev: update modify field flow action

The generic modify field flow action introduced in [1] has
some issues related to the immediate source operand:

- immediate source can be presented either

ethdev: update modify field flow action

The generic modify field flow action introduced in [1] has
some issues related to the immediate source operand:

- immediate source can be presented either as an unsigned
64-bit integer or pointer to data pattern in memory.
There was no explicit pointer field defined in the union.

- the byte ordering for 64-bit integer was not specified.
Many fields have shorter lengths and byte ordering
is crucial.

- how the bit offset is applied to the immediate source
field was not defined and documented.

- 64-bit integer size is not enough to provide IPv6
addresses.

In order to cover the issues and exclude any ambiguities
the following is done:

- introduce the explicit pointer field
in rte_flow_action_modify_data structure

- replace the 64-bit unsigned integer with 16-byte array

- update the modify field flow action documentation

Appropriate deprecation notice has been removed.

[1] commit 73b68f4c54a0 ("ethdev: introduce generic modify flow action")

Signed-off-by: Viacheslav Ovsiienko <[email protected]>
Acked-by: Ori Kam <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>

show more ...

1179f05c14-Oct-2021 Ivan Malov <[email protected]>

ethdev: query proxy port to manage transfer flows

Not all DPDK ports in a given switching domain may have the
privilege to manage "transfer" flows. Add an API to find a
port with sufficient privileg

ethdev: query proxy port to manage transfer flows

Not all DPDK ports in a given switching domain may have the
privilege to manage "transfer" flows. Add an API to find a
port with sufficient privileges by any port in the domain.

Signed-off-by: Ivan Malov <[email protected]>
Reviewed-by: Andrew Rybchenko <[email protected]>
Acked-by: Ori Kam <[email protected]>

show more ...

9d2a349b13-Oct-2021 Ivan Malov <[email protected]>

ethdev: deprecate direction attributes in transfer flows

Attributes "ingress" and "egress" can only apply unambiguosly
to non-"transfer" flows. In "transfer" flows, the standpoint
is effectively shi

ethdev: deprecate direction attributes in transfer flows

Attributes "ingress" and "egress" can only apply unambiguosly
to non-"transfer" flows. In "transfer" flows, the standpoint
is effectively shifted to the embedded switch. There can be
many different endpoints connected to the switch, so the
use of "ingress" / "egress" does not shed light on which
endpoints precisely can be considered as traffic sources.

Add relevant deprecation notices and suggest the use of precise
traffic source items (PORT_REPRESENTOR and REPRESENTED_PORT).

Signed-off-by: Ivan Malov <[email protected]>
Acked-by: Ori Kam <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>
Acked-by: Viacheslav Ovsiienko <[email protected]>

show more ...

5da44faa13-Oct-2021 Ivan Malov <[email protected]>

ethdev: deprecate hard-to-use or ambiguous items and actions

PF, VF and PHY_PORT require that applications have extra
knowledge of the underlying NIC and thus are hard to use.
Also, the correspondin

ethdev: deprecate hard-to-use or ambiguous items and actions

PF, VF and PHY_PORT require that applications have extra
knowledge of the underlying NIC and thus are hard to use.
Also, the corresponding items depend on the direction
attribute (ingress / egress), which complicates their
use in applications and interpretation in PMDs.

The concept of PORT_ID is ambiguous as it doesn't say whether
the port in question is an ethdev or the represented entity.

Items and actions PORT_REPRESENTOR, REPRESENTED_PORT
should be used instead.

Signed-off-by: Ivan Malov <[email protected]>
Acked-by: Ori Kam <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>

show more ...

88caad2513-Oct-2021 Ivan Malov <[email protected]>

ethdev: add represented port action to flow API

For use in "transfer" flows. Supposed to send matching traffic to the
entity represented by the given ethdev, at embedded switch level.
Such an entity

ethdev: add represented port action to flow API

For use in "transfer" flows. Supposed to send matching traffic to the
entity represented by the given ethdev, at embedded switch level.
Such an entity can be a network (via a network port), a guest
machine (via a VF) or another ethdev in the same application.

Signed-off-by: Ivan Malov <[email protected]>
Acked-by: Ori Kam <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>

show more ...

8edb6bc013-Oct-2021 Ivan Malov <[email protected]>

ethdev: add port representor action to flow API

For use in "transfer" flows. Supposed to send matching traffic to
the given ethdev (to the application), at embedded switch level.

Signed-off-by: Iva

ethdev: add port representor action to flow API

For use in "transfer" flows. Supposed to send matching traffic to
the given ethdev (to the application), at embedded switch level.

Signed-off-by: Ivan Malov <[email protected]>
Acked-by: Ori Kam <[email protected]>
Acked-by: Andrew Rybchenko <[email protected]>

show more ...

12345