| #
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 ...
|