History log of /dpdk/lib/ethdev/rte_flow.h (Results 26 – 50 of 127)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
# a080d5bf 08-Aug-2023 Gregory Etelson <getelson@nvidia.com>

ethdev: remove init color from meter mark action

Indirect list API defines 2 types of action update:
• Action mutable context is always shared between all flows
that referenced indirect actions li

ethdev: remove init color from meter mark action

Indirect list API defines 2 types of action update:
• Action mutable context is always shared between all flows
that referenced indirect actions list handle.
Action mutable context can be changed by explicit invocation
of indirect handle update function.
• Flow mutable context is private to a flow.
Flow mutable context can be updated by indirect list handle
flow rule configuration.

`METER_MARK::init_color` is flow resource.
Current flows implementation placed `init_color` in the
`rte_flow_action_meter_mark` making it action level resource.

The patch removes `init_color` from the `rte_flow_action_meter_mark`
structure.

API change:
The patch removed:
• struct rte_flow_action_meter_mark::init_color

• struct rte_flow_update_meter_mark::init_color_valid

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# a10ddcba 11-Oct-2023 Suanming Mou <suanmingm@nvidia.com>

ethdev: add TCP/IP modify field IDs

Currently, get TCP/IP header or data length information from traffic
is missing in the modify field IDs. This commit adds the missing
TCP data_offset, IPv4 IHL/to

ethdev: add TCP/IP modify field IDs

Currently, get TCP/IP header or data length information from traffic
is missing in the modify field IDs. This commit adds the missing
TCP data_offset, IPv4 IHL/total_len, IPv6 payload_len to modify filed
IDs. This allows users be able to manager more TCP/IP fields.

Signed-off-by: Suanming Mou <suanmingm@nvidia.com>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>

show more ...


# ffe18b05 10-Oct-2023 Ori Kam <orika@nvidia.com>

ethdev: add calculate hash function

rte_flow supports insert by index table, see
commit 60261a005dff ("ethdev: add flow template table insertion type").

Using the above table, the application can c

ethdev: add calculate hash function

rte_flow supports insert by index table, see
commit 60261a005dff ("ethdev: add flow template table insertion type").

Using the above table, the application can create rules
that are based on hash.
For example application can create the following logic in order
to create load balancing:
1. Create insert by index table with 2 rules, that hashes based on dmac
2. Insert to index 0 a rule that sends the traffic to port A.
3. Insert to index 1 a rule that sends the traffic to port B.

Let's also assume that before this table, there is a 5 tuple
match table that jumps to the above table.

So each packet that matches one of the 5 tuple rules is RSSed
to port A or B, based on dmac hash.

The issue arises when there is a miss on the 5 tuple table,
which resulted due to the packet being the first packet of this flow, or
fragmented packet or any other reason.
In this case, the application must calculate what would be the
hash calculated by the HW so it can send the packet to the correct
port.

This new API allows applications to calculate the hash value of a given
packet for a given table.

Signed-off-by: Ori Kam <orika@nvidia.com>

show more ...


# a3d2c697 09-Oct-2023 Alexander Kozyrev <akozyrev@nvidia.com>

ethdev: add packet type matching item

Add RTE_FLOW_ITEM_TYPE_PTYPE to allow matching on
L2/L3/L4 and tunnel information as defined in mbuf.

To match on RTE_PTYPE_L4_TCP and RTE_PTYPE_INNER_L4_UDP:

ethdev: add packet type matching item

Add RTE_FLOW_ITEM_TYPE_PTYPE to allow matching on
L2/L3/L4 and tunnel information as defined in mbuf.

To match on RTE_PTYPE_L4_TCP and RTE_PTYPE_INNER_L4_UDP:
flow pattern_template 0 create pattern_template_id 1
ingress template ptype packet_type mask 0x0f000f00 / end
flow queue 0 create 0 template_table 1
pattern_template 0 actions_template 0
pattern ptype packet_type is 0x02000100 / end
actions queue index 1 / end

Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# 8a26a658 20-Sep-2023 Tomer Shmilovich <tshmilovich@nvidia.com>

ethdev: set flow group miss actions

Introduce new group set miss actions API:
rte_flow_group_set_miss_actions().

A group's miss actions are a set of actions to be performed
in case of a miss on a g

ethdev: set flow group miss actions

Introduce new group set miss actions API:
rte_flow_group_set_miss_actions().

A group's miss actions are a set of actions to be performed
in case of a miss on a group, meaning a packet didn't hit any rules
in the group. This API function allows a user to set a group's
miss actions.

Add testpmd CLI interface for the group set miss actions API:

flow group 0 group_id 1 ingress set_miss_actions jump group 3 / end
flow group 0 group_id 1 ingress set_miss_actions end

Signed-off-by: Tomer Shmilovich <tshmilovich@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# 8f1953f1 25-Sep-2023 Cristian Dumitrescu <cristian.dumitrescu@intel.com>

ethdev: add flow API for P4-programmable devices

This patch introduces the new "program" action type to enable flow API
support for P4-programmable devices.

In the case of P4-programmable devices,

ethdev: add flow API for P4-programmable devices

This patch introduces the new "program" action type to enable flow API
support for P4-programmable devices.

In the case of P4-programmable devices, the device is initially blank.
The flow items and actions are defined by the user (outside of any
vendor control) through the P4 program, which is typically compiled
into firmware that is loaded on the device at init time. These flow
items and actions are then used during the run-time phase to add flows
on the device.

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Signed-off-by: Qi Zhang <qi.z.zhang@intel.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>

show more ...


# 6e4313ee 27-Aug-2023 Xueming Li <xuemingl@nvidia.com>

ethdev: add new symmetric hash function

The new symmetric hash function swap src/dst L3 address and
L4 ports automatically by sorting.

If src_ip > dst_ip, swap them, then the input becomes:
"dst_ip

ethdev: add new symmetric hash function

The new symmetric hash function swap src/dst L3 address and
L4 ports automatically by sorting.

If src_ip > dst_ip, swap them, then the input becomes:
"dst_ip+src_ip+src_port+dst_port" // note src and dst IP are swapped.
Same for L4 ports.

A detailed explanation of standard hash and symmetric hash by key:
https://www.ndsl.kaist.edu/~kyoungsoo/papers/TR-symRSS.pdf

Signed-off-by: Xueming Li <xuemingl@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>

show more ...


# 971d2b57 11-Aug-2023 Tyler Retzlaff <roretzla@linux.microsoft.com>

remove C11 compatibility macro

C11 conformant compiler is documented as a minimum requirement to build
and consume DPDK.
Remove use of RTE_STD_C11 macro marking use of C11 features with
__extension_

remove C11 compatibility macro

C11 conformant compiler is documented as a minimum requirement to build
and consume DPDK.
Remove use of RTE_STD_C11 macro marking use of C11 features with
__extension__ since it is no longer necessary and then remove definition
of RTE_STD_C11 macro.

Signed-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Morten Brørup <mb@smartsharesystems.com>

show more ...


Revision tags: v23.07, v23.07-rc4, v23.07-rc3
# 360dcc67 29-Jun-2023 David Marchand <david.marchand@redhat.com>

ethdev: fix Tx queue mask endianness

Even if harmless, this endianness tag is incorrect as the tx_queue field
is declared as a host integer.
Additionally, this breaks OVS compilation with sparse.

F

ethdev: fix Tx queue mask endianness

Even if harmless, this endianness tag is incorrect as the tx_queue field
is declared as a host integer.
Additionally, this breaks OVS compilation with sparse.

Fixes: 41f6bdc7615a ("ethdev: add Tx queue flow matching item")

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>

show more ...


Revision tags: v23.07-rc2
# d5d13ef9 14-Jun-2023 Thomas Monjalon <thomas@monjalon.net>

lib: align comment blocks

Some comment blocks were missing a space or had too many spaces
at the beginning of the lines, resulting in misalignment of asterisks.

Such mistakes were found with this k

lib: align comment blocks

Some comment blocks were missing a space or had too many spaces
at the beginning of the lines, resulting in misalignment of asterisks.

Such mistakes were found with this kind of commands:
git grep '^\*' lib
git grep '^ *\*' lib

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>

show more ...


# 3e4c5be9 14-Jun-2023 Thomas Monjalon <thomas@monjalon.net>

lib: remove extra asterisks ending comment blocks

A comment should always be terminated with */

Extra asterisks were found with this kind of command:
git grep '\* *\*/' lib

Signed-off-by: Thomas

lib: remove extra asterisks ending comment blocks

A comment should always be terminated with */

Extra asterisks were found with this kind of command:
git grep '\* *\*/' lib

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>

show more ...


# b4f0a9bb 14-Jun-2023 Thomas Monjalon <thomas@monjalon.net>

lib: remove blank line ending comment blocks

At the end of a comment, no need for an extra line.

This pattern was fixed with the following command:
git ls lib | xargs sed -i '/^ *\* *$/{N;/ *\*\/ *

lib: remove blank line ending comment blocks

At the end of a comment, no need for an extra line.

This pattern was fixed with the following command:
git ls lib | xargs sed -i '/^ *\* *$/{N;/ *\*\/ *$/D;}'

Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>

show more ...


# fca8cba4 21-Jun-2023 David Marchand <david.marchand@redhat.com>

ethdev: advertise flow restore in mbuf

As reported by Ilya [1], unconditionally calling
rte_flow_get_restore_info() impacts an application performance for drivers
that do not provide this ops.
It co

ethdev: advertise flow restore in mbuf

As reported by Ilya [1], unconditionally calling
rte_flow_get_restore_info() impacts an application performance for drivers
that do not provide this ops.
It could also impact processing of packets that require no call to
rte_flow_get_restore_info() at all.

Register a dynamic mbuf flag when an application negotiates tunnel
metadata delivery (calling rte_eth_rx_metadata_negotiate() with
RTE_ETH_RX_METADATA_TUNNEL_ID).

Drivers then advertise that metadata can be extracted by setting this
dynamic flag in each mbuf.

The application then calls rte_flow_get_restore_info() only when required.

Link: http://inbox.dpdk.org/dev/5248c2ca-f2a6-3fb0-38b8-7f659bfa40de@ovn.org/

Signed-off-by: David Marchand <david.marchand@redhat.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
Tested-by: Ali Alnubani <alialnu@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


Revision tags: v23.07-rc1
# fad1e8f5 24-May-2023 Rongwei Liu <rongweil@nvidia.com>

ethdev: add IPv6 extension push/remove flow actions

Add new rte_actions to push and remove the specific
type of IPv6 extension to and from original packets.

A new extension to be pushed should be t

ethdev: add IPv6 extension push/remove flow actions

Add new rte_actions to push and remove the specific
type of IPv6 extension to and from original packets.

A new extension to be pushed should be the last extension
due to the next header awareness.

Remove can support the IPv6 extension in any position.

Signed-off-by: Rongwei Liu <rongweil@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# c23626f2 23-May-2023 Michael Baum <michaelba@nvidia.com>

ethdev: add MPLS header modification

Add support for MPLS modify header using "RTE_FLOW_FIELD_MPLS" id.

Since MPLS header might appear more the one time in inner/outer/tunnel,
a new field was added

ethdev: add MPLS header modification

Add support for MPLS modify header using "RTE_FLOW_FIELD_MPLS" id.

Since MPLS header might appear more the one time in inner/outer/tunnel,
a new field was added to "rte_flow_action_modify_data" structure in
addition to "level" field.
The "tag_index" field is the index of the header inside encapsulation
level. It is used for modify multiple MPLS headers in same encapsulation
level.

This addition enables to modify multiple VLAN headers too, so the
description of "RTE_FLOW_FIELD_VLAN_XXXX" was updated.

Since the "tag_index" field is added, the "RTE_FLOW_FIELD_TAG" type
moves to use it for tag array instead of using "level" field.
Using "level" is still supported for backwards compatibility when
"tag_index" field is zero.

Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# ec56f3a3 23-May-2023 Michael Baum <michaelba@nvidia.com>

ethdev: add GENEVE TLV option modification

Add modify field support for GENEVE option fields:
- "RTE_FLOW_FIELD_GENEVE_OPT_TYPE"
- "RTE_FLOW_FIELD_GENEVE_OPT_CLASS"
- "RTE_FLOW_FIELD_GENEVE_OPT_D

ethdev: add GENEVE TLV option modification

Add modify field support for GENEVE option fields:
- "RTE_FLOW_FIELD_GENEVE_OPT_TYPE"
- "RTE_FLOW_FIELD_GENEVE_OPT_CLASS"
- "RTE_FLOW_FIELD_GENEVE_OPT_DATA"

Each GENEVE TLV option is identified by both its "class" and "type", so
2 new fields were added to "rte_flow_action_modify_data" structure to
help specify which option to modify.

To get room for those 2 new fields, the "level" field move to use
"uint8_t" which is more than enough for encapsulation level.
This patch also reduces all modify field encapsulation level "fully
masked" initializations to use UINT8_MAX instead of UINT32_MAX.
This change avoids compilation warning caused by this API changing.

Signed-off-by: Michael Baum <michaelba@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# 72a3dec7 28-May-2023 Gregory Etelson <getelson@nvidia.com>

ethdev: add indirect flow list action

Indirect API creates a shared flow action with unique action handle.
Flow rules can access the shared flow action and resources related to
that action through t

ethdev: add indirect flow list action

Indirect API creates a shared flow action with unique action handle.
Flow rules can access the shared flow action and resources related to
that action through the indirect action handle.
In addition, the API allows to update existing shared flow action
configuration. After the update completes, new action configuration
is available to all flows that reference that shared action.

Indirect actions list expands the indirect action API:
• Indirect action list creates a handle for one or several
flow actions, while legacy indirect action handle references
single action only.
Input flow actions arranged in END terminated list.
• Flow rule can provide rule specific configuration parameters to
existing shared handle.
Updates of flow rule specific configuration will not change the base
action configuration.
Base action configuration was set during the action creation.

Indirect action list handle defines 2 types of resources:
• Mutable handle resource can be changed during handle lifespan.
• Immutable handle resource value is set during handle creation
and cannot be changed.

There are 2 types of mutable indirect handle contexts:
• Action mutable context is always shared between all flows
that referenced indirect actions list handle.
Action mutable context can be changed by explicit invocation
of indirect handle update function.
• Flow mutable context is private to a flow.
Flow mutable context can be updated by indirect list handle
flow rule configuration.

flow 1:
/ indirect handle H conf C1 /
| |
| |
| | flow 2:
| | / indirect handle H conf C2 /
| | | |
| | | |
| | | |
=========================================================
^ | | | |
| | V | V
| ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
| flow mutable flow mutable
| context 1 context 2
| ~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~
indirect | | |
action | | |
context | V V
| -----------------------------------------------------
| action mutable context
| -----------------------------------------------------
v action immutable context
=========================================================

Indirect action types - immutable, action / flow mutable, are mutually
exclusive and depend on the action definition.
For example:
• Indirect METER_MARK policy is immutable action member and profile is
action mutable action member.
• Indirect METER_MARK flow action defines init_color as flow mutable
member.
• Indirect QUOTA flow action does not define flow mutable members.

If indirect list handle was created from a list of actions
A1 / A2 ... An / END
indirect list flow action can update Ai flow mutable context in the
action configuration parameter.
Indirect list action configuration is and array [C1, C2, .., Cn]
where Ci corresponds to Ai in the action handle source.
Ci configuration element points Ai flow mutable update, or it's NULL
if Ai has no flow mutable update.
Indirect list action configuration can be NULL if the action
has no flow mutable updates.

Template API:

Action template format:

template .. indirect_list handle Htmpl conf Ctmpl ..
mask .. indirect_list handle Hmask conf Cmask ..

1 If Htmpl was masked (Hmask != 0), it will be fixed in that template.
Otherwise, indirect action value is set in a flow rule.

2 If Htmpl and Ctmpl[i] were masked (Hmask !=0 and Cmask[i] != 0),
Htmpl's Ai action flow mutable context fill be updated to
Ctmpl[i] values and will be fixed in that template.

Flow rule format:

actions .. indirect_list handle Hflow conf Cflow ..

3 If Htmpl was not masked in actions template, Hflow references an
action of the same type as Htmpl.

4 Cflow[i] updates handle's Ai flow mutable configuration if
the Ci was not masked in action template.

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# e9b8532e 31-May-2023 Dong Zhou <dongzhou@nvidia.com>

ethdev: add flow item for RoCE infiniband BTH

IB(InfiniBand) is one type of networking used in high-performance
computing with high throughput and low latency. Like Ethernet,
IB defines a layered pr

ethdev: add flow item for RoCE infiniband BTH

IB(InfiniBand) is one type of networking used in high-performance
computing with high throughput and low latency. Like Ethernet,
IB defines a layered protocol (Physical, Link, Network, Transport
Layers). IB provides native support for RDMA(Remote DMA), an
extension of the DMA that allows direct access to remote host
memory without CPU intervention. IB network requires NICs and
switches to support the IB protocol.

RoCE(RDMA over Converged Ethernet) is a network protocol that
allows RDMA to run on Ethernet. RoCE encapsulates IB packets on
Ethernet and has two versions, RoCEv1 and RoCEv2. RoCEv1 is an
Ethernet link layer protocol, IB packets are encapsulated in the
Ethernet layer and use Ethernet type 0x8915. RoCEv2 is an internet
layer protocol, IB packets are encapsulated in UDP payload and
use a destination port 4791, The format of the RoCEv2 packet is
as follows:
ETH + IP + UDP(dport 4791) + IB(BTH + ExtHDR + PAYLOAD + CRC)

BTH(Base Transport Header) is the IB transport layer header, RoCEv1
and RoCEv2 both contain this header. This patch introduces a new
RTE item to match the IB BTH in RoCE packets. One use of this match
is that the user can monitor RoCEv2's CNP(Congestion Notification
Packet) by matching BTH opcode 0x81.

This patch also adds the testpmd command line to match the RoCEv2
BTH. Usage example:

testpmd> flow create 0 group 1 ingress pattern
eth / ipv4 / udp dst is 4791 / ib_bth opcode is 0x81
dst_qp is 0xd3 / end actions queue index 0 / end

Signed-off-by: Dong Zhou <dongzhou@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>

show more ...


# 1728c5c4 28-May-2023 Gregory Etelson <getelson@nvidia.com>

ethdev: add indirect list meter mark update structure

Indirect list API defines 2 types of action update:
• Action mutable context is always shared between all flows
that referenced indirect actio

ethdev: add indirect list meter mark update structure

Indirect list API defines 2 types of action update:
• Action mutable context is always shared between all flows
that referenced indirect actions list handle.
Action mutable context can be changed by explicit invocation
of indirect handle update function.
• Flow mutable context is private to a flow.
Flow mutable context can be updated by indirect list handle
flow rule configuration.

The patch defines `struct rte_flow_indirect_update_flow_meter_mark`
for indirect METER_MARK flow mutable updates.

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# 8f257a48 23-May-2023 Alexander Kozyrev <akozyrev@nvidia.com>

ethdev: add flow rule actions update

Introduce the new rte_flow_actions_update() API allowing users
to update the action list in the already existing rule.
Flow rules can be updated now without the

ethdev: add flow rule actions update

Introduce the new rte_flow_actions_update() API allowing users
to update the action list in the already existing rule.
Flow rules can be updated now without the need to destroy
the rule first and create a new one instead.
A single API call ensures that no packets are lost by
guaranteeing atomicity and flow state correctness.
The rte_flow_async_actions_update() is added as well.
The matcher is not updated, only the action list is.

Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# 41f6bdc7 18-May-2023 Kiran Kumar K <kirankumark@marvell.com>

ethdev: add Tx queue flow matching item

Adding support for Tx queue flow matching item.
This item is valid only for egress rules.
An example use case would be that application can
set different vlan

ethdev: add Tx queue flow matching item

Adding support for Tx queue flow matching item.
This item is valid only for egress rules.
An example use case would be that application can
set different vlan insert rules with different PCP values
based on Tx queue number.

Signed-off-by: Kiran Kumar K <kirankumark@marvell.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


Revision tags: v23.03, v23.03-rc4, v23.03-rc3, v23.03-rc2, v23.03-rc1
# 8ebc396b 17-Feb-2023 Jiawei Wang <jiaweiw@nvidia.com>

ethdev: add flow matching of aggregated port

When multiple ports are aggregated into a single DPDK port,
(example: Linux bonding, DPDK bonding, failsafe, etc.),
we want to know which port is used fo

ethdev: add flow matching of aggregated port

When multiple ports are aggregated into a single DPDK port,
(example: Linux bonding, DPDK bonding, failsafe, etc.),
we want to know which port is used for Rx and Tx.

This patch allows to map a Rx queue with an aggregated port by using
a flow rule. The new item is called RTE_FLOW_ITEM_TYPE_AGGR_AFFINITY.

While uses the aggregated affinity as a matching item in the flow rule,
and sets the same affinity value by call
rte_eth_dev_map_aggr_tx_affinity(), then the packet can be sent from
the same port as the receiving one.
The affinity numbering starts from 1, then trying to match on
aggr_affinity 0 will result in an error.

Add the testpmd command line to match the new item:
flow create 0 ingress group 0 pattern aggr_affinity affinity is 1 /
end actions queue index 0 / end

The above command means that creates a flow on a single DPDK port and
matches the packet from the first physical port and redirects
these packets into Rx queue 0.

Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>

show more ...


# 6807e8b5 16-Feb-2023 Rakesh Kudurumalla <rkudurumalla@marvell.com>

ethdev: skip congestion management configuration

Introduce new flow action to skip congestion management configuration.

This feature helps to skip the congestion management processing based on
per

ethdev: skip congestion management configuration

Introduce new flow action to skip congestion management configuration.

This feature helps to skip the congestion management processing based on
per flow or the packet color identified by rte_flow meter object.
For example, If one Rx queue configured as RED congestion and
application wants to bypass the RED congestion processing for all GREEN
color packet can be expressed though RTE_FLOW_ACTION_TYPE_SKIP_CMAN flow
action.

Added support for testpmd application to accept skip_cman action while
configuring policy action.

Below is sample command given after configuring meter profile for which
congestion configuration is applied for red and yellow color packets and
bypassed for green color packets in dpdk-testpmd application:

add port meter policy 0 200 g_actions drop / skip_cman / end
y_actions drop / end r_actions drop / end

Signed-off-by: Rakesh Kudurumalla <rkudurumalla@marvell.com>
Acked-by: Ori Kam <orika@nvidia.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>

show more ...


# 3e3edab5 02-Feb-2023 Gregory Etelson <getelson@nvidia.com>

ethdev: add flow quota

Quota action limits traffic according to pre-defined configuration.
Quota reflects overall traffic usage regardless bandwidth.
Quota flow action initialized with signed tokens

ethdev: add flow quota

Quota action limits traffic according to pre-defined configuration.
Quota reflects overall traffic usage regardless bandwidth.
Quota flow action initialized with signed tokens number value.
Quota flow action updates tokens number according to
these rules:
1. if quota was configured to count packet length, for each packet
of size S, tokens number reduced by S.
2. If quota was configured to count packets, each packet decrements
tokens number.
quota action sets packet metadata according to a number of remaining
tokens number:
PASS - remaining tokens number is non-negative.
BLOCK - remaining tokens number is negative.

Quota flow item matches on that data

Application updates tokens number in quota flow action
with SET or ADD calls:
SET(QUOTA, val) - arm quota with new tokens number set to val
ADD(QUOTA, val) - increase existing quota tokens number by val

Both SET and ADD return to application number of tokens stored in port
before update.

If quota state was BLOCK (negative action tokens number)
application can change it to PASS after providing enough tokens to
raise action tokens number to 0 or above.

Application must create a rule with quota action to mark flow and
match on the mark with quota item in following flow rule.

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


# 044c47b4 02-Feb-2023 Gregory Etelson <getelson@nvidia.com>

ethdev: add atomic flow query and update

Current API allows either query or update indirect flow action.
If indirect action must be conditionally updated according to it's
present state application

ethdev: add atomic flow query and update

Current API allows either query or update indirect flow action.
If indirect action must be conditionally updated according to it's
present state application must first issue action query then
analyze returned data and if needed issue update request.
When the update will be processed, action state can change and
the update can invalidate the action.

Add `rte_flow_action_handle_query_update` function call,
and it's async version `rte_flow_async_action_handle_query_update`
to atomically query and update flow action.

Application can control query and update order, if that is supported
by port hardware, by setting `qu_mode` parameter to
RTE_FLOW_QU_QUERY_FIRST or RTE_FLOW_QU_UPDATE_FIRST.

Signed-off-by: Gregory Etelson <getelson@nvidia.com>
Acked-by: Ori Kam <orika@nvidia.com>

show more ...


123456