#
f7c9651c |
| 11-Dec-2024 |
Andre Muezerie <andremue@linux.microsoft.com> |
app: use portable variadic macros
Many places are using a GCC extension related to variadic macros, where a name prepends the ellipsis. This results in a warning like the one below when compiling th
app: use portable variadic macros
Many places are using a GCC extension related to variadic macros, where a name prepends the ellipsis. This results in a warning like the one below when compiling the code with MSVC:
app\test-pmd\testpmd.h(1314): error C2608: invalid token '...' in macro parameter list
Variadic macros became a standard part of the C language with C99. GCC, Clang and MSVC handle them properly.
The fix is to remove the prefix name (args... becomes ...) and use __VA_ARGS__.
Signed-off-by: Andre Muezerie <andremue@linux.microsoft.com>
show more ...
|
#
5334c3fe |
| 31-Oct-2024 |
Gregory Etelson <getelson@nvidia.com> |
app/testpmd: add hairpin map parameter
Hairpin offloads packet forwarding between ports. Packet is expected on Rx port <rp>, Rx queue <rq> and is forwarded to Tx port <tp> Tx queue <tq>.
Testpmd im
app/testpmd: add hairpin map parameter
Hairpin offloads packet forwarding between ports. Packet is expected on Rx port <rp>, Rx queue <rq> and is forwarded to Tx port <tp> Tx queue <tq>.
Testpmd implements a static hairpin configuration scheme.
The new parameter allows explicit selection of Rx and Tx ports and queues in hairpin configuration. The new `hairpin-map` parameter is provided with 5 parameters, separated by `:`
`--hairpin-map=Rx port id:Rx queue:Tx port id:Tx queue:queues number`
Testpmd operator can provide several `hairpin-map` parameters for different hairpin maps. Example:
dpdk-testpmd <EAL params> -- \ <testpmd params> \ --rxq=2 --txq=2 --hairpinq=2 --hairpin-mode=0x12 \ --hairpin-map=0:2:1:2:1 \ # [1] --hairpin-map=0:3:2:2:3 # [2]
Hairpin map [1] binds Rx port 0, queue 2 with Tx port 1, queue 2. Hairpin map [2] binds Rx port 0, queue 3 with Tx port 2, queue 2, Rx port 0, queue 4 with Tx port 2, queue 3, Rx port 0, queue 5 with Tx port 2, queue 4.
The new `hairpin-map` parameter is optional. If omitted, testpmd will create "default" hairpin maps.
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org>
show more ...
|
#
52e04a63 |
| 18-Oct-2024 |
Robin Jarry <rjarry@redhat.com> |
cmdline: use IPv6 address structure
The previous commits introduced a new rte_ipv6_addr structure without any alignment requirements. It is not compatible with the in6_addr POSIX type available in n
cmdline: use IPv6 address structure
The previous commits introduced a new rte_ipv6_addr structure without any alignment requirements. It is not compatible with the in6_addr POSIX type available in netinet/in.h.
The main issue is that in6_addr is not uniform on all platforms which causes unaligned access warnings when compiling without -Wno-address-of-packed-member (set in dpdk by default).
In order to have a consistent code base, replace in6_addr with rte_ipv6_addr in the cmdline library. Update all code accordingly.
Signed-off-by: Robin Jarry <rjarry@redhat.com> Acked-by: Bruce Richardson <bruce.richardson@intel.com>
show more ...
|
#
045e35aa |
| 10-Oct-2024 |
James Hershaw <james.hershaw@corigine.com> |
app/testpmd: support switching LED on/off
Add command to change the state of a controllable LED on an ethdev port to on/off. This is for the purpose of identifying which physical port is associated
app/testpmd: support switching LED on/off
Add command to change the state of a controllable LED on an ethdev port to on/off. This is for the purpose of identifying which physical port is associated with an ethdev.
Usage: testpmd> set port <port-id> led <on/off>
Signed-off-by: James Hershaw <james.hershaw@corigine.com> Reviewed-by: Chaoyong He <chaoyong.he@corigine.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
54780542 |
| 10-Oct-2024 |
James Hershaw <james.hershaw@corigine.com> |
app/testpmd: support setting device EEPROM
There is currently no means to test the .set_eeprom function callback of a given PMD in drivers/net/. This patch adds functionality to allow a user to set
app/testpmd: support setting device EEPROM
There is currently no means to test the .set_eeprom function callback of a given PMD in drivers/net/. This patch adds functionality to allow a user to set device eeprom from the testpmd cmdline.
Usage: testpmd> set port <port-id> eeprom <accept_risk> magic <magic> \ value <value> offset <offset>
- <accept_risk> is a fixed string that is required from the user to acknowledge the risk involved in using this command and accepting the responsibility for that. - <magic> is a decimal. - <value> is a hex-as-string with no leading "0x". - <offset> is a decimal (this field is optional and defaults to 0 if not specified.)
Signed-off-by: James Hershaw <james.hershaw@corigine.com> Reviewed-by: Chaoyong He <chaoyong.he@corigine.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
933f18db |
| 25-Sep-2024 |
Alexander Kozyrev <akozyrev@nvidia.com> |
ethdev: add flow rule by index with pattern
Add a new API to enqueue flow rule creation by index with pattern. The new template table rules insertion type, index-based insertion with pattern, requir
ethdev: add flow rule by index with pattern
Add a new API to enqueue flow rule creation by index with pattern. The new template table rules insertion type, index-based insertion with pattern, requires a new flow rule creation function with both rule index and pattern provided. Packets will match on the provided pattern at the provided index.
In testpmd, allow to specify both the rule index and the pattern in the flow rule creation command line parameters. Both are needed for rte_flow_async_create_by_index_with_pattern().
flow queue 0 create 0 template_table 2 rule_index 5 pattern_template 0 actions_template 0 postpone no pattern eth / end actions count / queue index 1 / end
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com>
show more ...
|
#
2bf44dd1 |
| 06-Jun-2024 |
Sivaprasad Tummala <sivaprasad.tummala@amd.com> |
app/testpmd: fix lcore ID restriction
With modern CPUs, it is possible to have higher CPU count thus we can have higher RTE_MAX_LCORES. In testpmd application, the current config forwarding cores op
app/testpmd: fix lcore ID restriction
With modern CPUs, it is possible to have higher CPU count thus we can have higher RTE_MAX_LCORES. In testpmd application, the current config forwarding cores option "--nb-cores" is hard limited to 255.
The patch fixes this constraint and also adjusts the lcore data structure to 32-bit to align with rte lcore APIs.
Fixes: af75078fece3 ("first public release") Cc: stable@dpdk.org
Signed-off-by: Sivaprasad Tummala <sivaprasad.tummala@amd.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
c1496cb6 |
| 07-Mar-2024 |
Gregory Etelson <getelson@nvidia.com> |
app/testpmd: fix async indirect action list creation
Testpmd calls the same function to create legacy indirect action and indirect list action. The function did not identify required action correctl
app/testpmd: fix async indirect action list creation
Testpmd calls the same function to create legacy indirect action and indirect list action. The function did not identify required action correctly.
The patch adds the `indirect_list` boolean function parameter that is derived from the action type.
Fixes: 72a3dec7126f ("ethdev: add indirect flow list action") Cc: stable@dpdk.org
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com>
show more ...
|
#
2d9c7e56 |
| 29-Feb-2024 |
Oleksandr Kolomeiets <okl-plv@napatech.com> |
app/testpmd: support updating flow rule actions
"flow update" updates a flow rule specified by a rule ID with a new action list by making a call to "rte_flow_actions_update()":
flow update {por
app/testpmd: support updating flow rule actions
"flow update" updates a flow rule specified by a rule ID with a new action list by making a call to "rte_flow_actions_update()":
flow update {port_id} {rule_id} actions {action} [/ {action} [...]] / end [user_id]
Creating, updating and destroying a flow rule:
testpmd> flow create 0 group 1 pattern eth / end actions drop / end Flow rule #0 created testpmd> flow update 0 0 actions queue index 1 / end Flow rule #0 updated with new actions testpmd> flow destroy 0 rule 0 Flow rule #0 destroyed
Signed-off-by: Oleksandr Kolomeiets <okl-plv@napatech.com> Reviewed-by: Mykola Kostenok <mko-plv@napatech.com> Reviewed-by: Christian Koue Muf <ckm@napatech.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
99231e48 |
| 15-Feb-2024 |
Gregory Etelson <getelson@nvidia.com> |
ethdev: add template table resize
Template table creation API sets table flows capacity. If application needs more flows then the table was designed for, the following procedures must be completed:
ethdev: add template table resize
Template table creation API sets table flows capacity. If application needs more flows then the table was designed for, the following procedures must be completed: 1. Create a new template table with larger flows capacity. 2. Re-create existing flows in the new table and delete flows from the original table. 3. Destroy original table.
Application cannot always execute that procedure: * Port may not have sufficient resources to allocate a new table while maintaining original table. * Application may not have existing flows "recipes" to re-create flows in a new table.
The patch defines a new API that allows application to resize existing template table:
* Resizable template table must be created with the RTE_FLOW_TABLE_SPECIALIZE_RESIZABLE_TABLE bit set.
* Application resizes existing table with the `rte_flow_template_table_resize()` function call. The table resize procedure updates the table maximal flow number only. Other table attributes are not affected by the table resize. ** The table resize procedure must not interrupt existing table flows operations in hardware. ** The table resize procedure must not alter flow handles held by application.
* After `rte_flow_template_table_resize()` returned, application must update table flow rules by calling `rte_flow_async_update_resized()`. The call reconfigures internal flow resources for the new table configuration. The flow update must not interrupt hardware flow operations.
* After table flows were updated, application must call `rte_flow_template_table_resize_complete()`. The function releases PMD resources related to the original table. Application can start new table resize after `rte_flow_template_table_resize_complete()` returned.
Testpmd commands:
* Create resizable template table flow template_table <port-id> create table_id <tbl-id> resizable \ [transfer|ingress|egres] group <group-id> \ rules_number <initial table capacity> \ pattern_template <pt1> [ pattern_template <pt2> [ ... ]] \ actions_template <at1> [ actions_template <at2> [ ... ]]
* Resize table: flow template_table <tbl-id> resize table_resize_id <tbl-id> \ table_resize_rules_num <new table capacity>
* Queue a flow update: flow queue <port-id> update_resized <tbl-id> rule <flow-id>
* Complete table resize: flow template_table <port-id> resize_complete table <tbl-id>
Signed-off-by: Gregory Etelson <getelson@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com> Acked-by: Thomas Monjalon <thomas@monjalon.net>
show more ...
|
#
9733f099 |
| 13-Feb-2024 |
Ori Kam <orika@nvidia.com> |
ethdev: add encapsulation hash calculation
During encapsulation of a packet, it is possible to change some outer headers to improve flow distribution. For example, from VXLAN RFC: "It is recommended
ethdev: add encapsulation hash calculation
During encapsulation of a packet, it is possible to change some outer headers to improve flow distribution. For example, from VXLAN RFC: "It is recommended that the UDP source port number be calculated using a hash of fields from the inner packet -- one example being a hash of the inner Ethernet frame's headers. This is to enable a level of entropy for the ECMP/load-balancing"
The tunnel protocol defines which outer field should hold this hash, but it doesn't define the hash calculation algorithm.
An application that uses flow offloads gets the first few packets (exception path) and then decides to offload the flow. As a result, there are two different paths that a packet from a given flow may take. SW for the first few packets or HW for the rest. When the packet goes through the SW, the SW encapsulates the packet and must use the same hash calculation as the HW will do for the rest of the packets in this flow.
The new function rte_flow_calc_encap_hash can query the hash value from the driver for a given packet as if the packet was passed through the HW.
Testpmd command: flow hash {port} encap {target field} pattern {item} [/ {item} [...] ] / end
Testpmd example for VXLAN encapsulation: flow hash 0 encap hash_field_sport pattern ipv4 dst is 7.7.7.7 src is 8.8.8.8 / udp dst is 5678 src is 1234 / end
Signed-off-by: Ori Kam <orika@nvidia.com> Acked-by: Dariusz Sosnowski <dsosnowski@nvidia.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
92628e2b |
| 02-Nov-2023 |
Jie Hai <haijie1@huawei.com> |
ethdev: get RSS algorithm names
This patch adds new API rte_eth_dev_rss_algo_name() to get name of a RSS algorithm and document it.
Example:
testpmd> show port 0 rss-hash algorithm RSS algorithm:
ethdev: get RSS algorithm names
This patch adds new API rte_eth_dev_rss_algo_name() to get name of a RSS algorithm and document it.
Example:
testpmd> show port 0 rss-hash algorithm RSS algorithm: toeplitz
Signed-off-by: Jie Hai <haijie1@huawei.com> Acked-by: Huisong Li <lihuisong@huawei.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com> Reviewed-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 ...
|
#
ef8bd7d0 |
| 08-Oct-2023 |
Dengdui Huang <huangdengdui@huawei.com> |
app/testpmd: add command to flush multicast MAC addresses
Add command to flush all multicast MAC address Usage: mcast_addr flush <port_id> : flush all multicast MAC address on port_id
Signe
app/testpmd: add command to flush multicast MAC addresses
Add command to flush all multicast MAC address Usage: mcast_addr flush <port_id> : flush all multicast MAC address on port_id
Signed-off-by: Dengdui Huang <huangdengdui@huawei.com> Acked-by: Chengwen Feng <fengchengwen@huawei.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.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 ...
|
#
5fe42bc6 |
| 25-Sep-2023 |
Feifei Wang <feifei.wang2@arm.com> |
app/testpmd: add mbuf recycle engine
Add recycle mbufs engine for testpmd. This engine forward pkts with I/O forward mode. But enable mbufs recycle feature to recycle used txq mbufs for rxq mbuf rin
app/testpmd: add mbuf recycle engine
Add recycle mbufs engine for testpmd. This engine forward pkts with I/O forward mode. But enable mbufs recycle feature to recycle used txq mbufs for rxq mbuf ring, which can bypass mempool path and save CPU cycles.
Suggested-by: Jerin Jacob <jerinj@marvell.com> Signed-off-by: Feifei Wang <feifei.wang2@arm.com> Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com> Acked-by: Konstantin Ananyev <konstantin.v.ananyev@yandex.ru> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
show more ...
|
#
15e34522 |
| 16-Aug-2023 |
Long Wu <long.wu@corigine.com> |
net/bonding: replace master/slave to main/member
This patch replaces the usage of the word 'master/slave' with more appropriate word 'main/member' in bonding PMD as well as in its docs and examples.
net/bonding: replace master/slave to main/member
This patch replaces the usage of the word 'master/slave' with more appropriate word 'main/member' in bonding PMD as well as in its docs and examples. Also the test app and testpmd were modified to use the new wording.
The bonding PMD's public APIs were modified according to the changes in word: rte_eth_bond_8023ad_slave_info is now called rte_eth_bond_8023ad_member_info, rte_eth_bond_active_slaves_get is now called rte_eth_bond_active_members_get, rte_eth_bond_slave_add is now called rte_eth_bond_member_add, rte_eth_bond_slave_remove is now called rte_eth_bond_member_remove, rte_eth_bond_slaves_get is now called rte_eth_bond_members_get.
The data structure ``struct rte_eth_bond_8023ad_slave_info`` was renamed to ``struct rte_eth_bond_8023ad_member_info``
Signed-off-by: Long Wu <long.wu@corigine.com> Reviewed-by: James Hershaw <james.hershaw@corigine.com> Reviewed-by: Chaoyong He <chaoyong.he@corigine.com> Acked-by: Niklas Söderlund <niklas.soderlund@corigine.com> Acked-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Huisong Li <lihuisong@huawei.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
8ac3a1cd |
| 16-Mar-2023 |
Eli Britstein <elibr@nvidia.com> |
app/testpmd: assign custom ID to flow rules
Upon creation of a flow, testpmd assigns it a flow ID. Later, the flow ID is used for flow operations (query, destroy, dump).
The testpmd application all
app/testpmd: assign custom ID to flow rules
Upon creation of a flow, testpmd assigns it a flow ID. Later, the flow ID is used for flow operations (query, destroy, dump).
The testpmd application allows to manage flow rules with its IDs. The flow ID is known only when the flow is created. In order to prepare a complete sequence of testpmd commands to copy/paste, the flow IDs must be predictable.
Allow the user to provide an assigned ID.
Example: testpmd> flow create 0 ingress user_id 0x1234 pattern eth / end actions count / drop / end Flow rule #0 created, user-id 0x1234
testpmd> flow query 0 0x1234 count user_id
testpmd> flow dump 0 user_id rule 0x1234
testpmd> flow destroy 0 rule 0x1234 user_id Flow rule #0 destroyed, user-id 0x1234
Here, "user_id" is a flag that signifies the "rule" ID is the user-id.
The motivation is from OVS. OVS dumps its "rte_flow_create" calls to the log in testpmd commands syntax. As the flow ID testpmd would assign is unkwon, it cannot log valid "flow destroy" commands.
With this enhancement, valid testpmd commands can be created in a log to copy/paste to testpmd. The application's flows sequence can then be played back in testpmd, to enable enhanced dpdk debug capabilities of the applications's flows in a controlled environment of testpmd rather than a dynamic, more difficult to debug environment of the application.
Signed-off-by: Eli Britstein <elibr@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com>
show more ...
|
#
fd5392d8 |
| 16-Mar-2023 |
Eli Britstein <elibr@nvidia.com> |
app/testpmd: change flow rule ID type
Change flow rule type to be uint64_t (instead of currently uint32_t) to be able to accommodate larger IDs, as a pre-step towards allowing user-id to flows.
Sig
app/testpmd: change flow rule ID type
Change flow rule type to be uint64_t (instead of currently uint32_t) to be able to accommodate larger IDs, as a pre-step towards allowing user-id to flows.
Signed-off-by: Eli Britstein <elibr@nvidia.com> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
77e7939a |
| 12-Jun-2023 |
Alexander Kozyrev <akozyrev@nvidia.com> |
app/testpmd: add flow rule update command
Add testpmd CLI interface for the flow update API. flow queue 1 update 2 rule 3 actions_template 4 postpone yes pattern end actions queue index
app/testpmd: add flow rule update command
Add testpmd CLI interface for the flow update API. flow queue 1 update 2 rule 3 actions_template 4 postpone yes pattern end actions queue index 3 / end
Signed-off-by: Alexander Kozyrev <akozyrev@nvidia.com> Acked-by: Ori Kam <orika@nvidia.com>
show more ...
|
#
1d343c19 |
| 08-Jun-2023 |
Mike Pattrick <mkp@redhat.com> |
app/testpmd: expand noisy neighbour forward modes
Previously the noisy neighbour vnf simulation would only operate in io mode, forwarding packets as is. However, this limited the usefulness of noisy
app/testpmd: expand noisy neighbour forward modes
Previously the noisy neighbour vnf simulation would only operate in io mode, forwarding packets as is. However, this limited the usefulness of noisy neighbour simulation.
This feature has now been expanded to supporting mac, macswap, and 5tswap modes. To facilitate adding this support, some new header files were added.
Signed-off-by: Mike Pattrick <mkp@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@amd.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 ...
|
#
0fd1386c |
| 03-Feb-2023 |
Stephen Hemminger <stephen@networkplumber.org> |
app/testpmd: cleanup cleanly from signal
Do a clean shutdown of testpmd when a signal is received; instead of having testpmd kill itself. This fixes the problem where a signal could be received in
app/testpmd: cleanup cleanly from signal
Do a clean shutdown of testpmd when a signal is received; instead of having testpmd kill itself. This fixes the problem where a signal could be received in the middle of a PMD and then the signal handler would call PMD's close routine leading to locking problems.
The cmdline structure no longer needs to be global it can just be local to the prompt() function.
An added benefit is it gets rid of some Windows specific code.
Fixes: d9a191a00e81 ("app/testpmd: fix quitting in container") Cc: stable@dpdk.org
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org> Acked-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
655131cc |
| 20-Feb-2023 |
David Marchand <david.marchand@redhat.com> |
app/testpmd: factorize fwd engines Tx
Reduce code duplication by introducing a helper that takes care of transmitting, retrying if enabled and incrementing tx counter. inc_tx_burst_stats() is then u
app/testpmd: factorize fwd engines Tx
Reduce code duplication by introducing a helper that takes care of transmitting, retrying if enabled and incrementing tx counter. inc_tx_burst_stats() is then unneeded and removed.
Signed-off-by: David Marchand <david.marchand@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
#
d3dae396 |
| 20-Feb-2023 |
David Marchand <david.marchand@redhat.com> |
app/testpmd: factorize fwd engines Rx
Reduce code duplication by introducing a helper that takes care of receiving packets and incrementing rx counter. inc_rx_burst_stats() is then unneeded and remo
app/testpmd: factorize fwd engines Rx
Reduce code duplication by introducing a helper that takes care of receiving packets and incrementing rx counter. inc_rx_burst_stats() is then unneeded and removed.
Signed-off-by: David Marchand <david.marchand@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|