|
Revision tags: v24.11, v24.11-rc4, v24.11-rc3, v24.11-rc2, v24.11-rc1 |
|
| #
e2bce04b |
| 15-Aug-2024 |
Alex Chapman <alex.chapman@arm.com> |
app/testpmd: add L4 port to verbose output
To help distinguish packets we want to add more identifiable information and print port number for all packets. This will make packet metadata more uniform
app/testpmd: add L4 port to verbose output
To help distinguish packets we want to add more identifiable information and print port number for all packets. This will make packet metadata more uniform as previously it only printed port number for encapsulated packets.
Bugzilla ID: 1517
Signed-off-by: Alex Chapman <alex.chapman@arm.com> Reviewed-by: Luca Vizzarro <luca.vizzarro@arm.com> Reviewed-by: Paul Szczepanek <paul.szczepanek@arm.com>
show more ...
|
|
Revision tags: v24.07, v24.07-rc4, v24.07-rc3, v24.07-rc2, v24.07-rc1, v24.03, v24.03-rc4 |
|
| #
03c162f3 |
| 18-Mar-2024 |
David Marchand <david.marchand@redhat.com> |
app/testpmd: dump TCI when asking for VLAN insertion
I got some report for users that VLAN insertion was not working as the only thing they could see in verbose mode was a 0x0800 ethertype even thou
app/testpmd: dump TCI when asking for VLAN insertion
I got some report for users that VLAN insertion was not working as the only thing they could see in verbose mode was a 0x0800 ethertype even though the RTE_MBUF_F_TX_VLAN flag was shown.
Dump the VLAN TCI from mbuf metadata when VLAN insertion is requested. This should enhance the situation.
Before: src=76:4E:EA:3F:78:1D - dst=50:7C:6F:3C:10:5B - pool=mb_pool_1 - type=0x0800 - length=64 - nb_segs=1 - sw ptype: L2_ETHER L3_IPV4 L4_UDP - l2_len=14 - l3_len=20 - l4_len=8 - Send queue=0x0 ol_flags: RTE_MBUF_F_TX_VLAN RTE_MBUF_F_TX_L4_NO_CKSUM
After: src=76:4E:EA:3F:78:1D - dst=50:7C:6F:3C:10:5B - pool=mb_pool_1 - type=0x0800 - length=64 - nb_segs=1 - VLAN tci=0x2a - sw ptype: L2_ETHER L3_IPV4 L4_UDP - l2_len=14 - l3_len=20 - l4_len=8 - Send queue=0x0 ol_flags: RTE_MBUF_F_TX_VLAN RTE_MBUF_F_TX_L4_NO_CKSUM
Signed-off-by: David Marchand <david.marchand@redhat.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@amd.com>
show more ...
|
|
Revision tags: v24.03-rc3, v24.03-rc2, v24.03-rc1, v23.11, v23.11-rc4, v23.11-rc3, v23.11-rc2, v23.11-rc1, v23.07, v23.07-rc4, v23.07-rc3, v23.07-rc2 |
|
| #
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, v23.03, v23.03-rc4, v23.03-rc3, v23.03-rc2, v23.03-rc1, v22.11, v22.11-rc4, v22.11-rc3 |
|
| #
4f04edcd |
| 10-Nov-2022 |
Hanumanth Pothula <hpothula@marvell.com> |
app/testpmd: support multiple mbuf pools per Rx queue
Some of the HW has support for choosing memory pools based on the packet's size. The pool sort capability allows PMD/NIC to choose a memory pool
app/testpmd: support multiple mbuf pools per Rx queue
Some of the HW has support for choosing memory pools based on the packet's size. The pool sort capability allows PMD/NIC to choose a memory pool based on the packet's length.
On multiple mempool support enabled, populate mempool array accordingly. Also, print pool name on which packet is received.
Signed-off-by: Hanumanth Pothula <hpothula@marvell.com> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
show more ...
|
|
Revision tags: v22.11-rc2, v22.11-rc1, v22.07, v22.07-rc4, v22.07-rc3, v22.07-rc2, v22.07-rc1, v22.03, v22.03-rc4, v22.03-rc3, v22.03-rc2, v22.03-rc1, v21.11, v21.11-rc4, v21.11-rc3 |
|
| #
2490bb89 |
| 16-Nov-2021 |
Ivan Malov <ivan.malov@oktetlabs.ru> |
app/testpmd: fix flow transfer proxy port handling
The current approach detects the proxy port on each port (re-)plug and may spam the log with error messages if the PMD does not support flows. As t
app/testpmd: fix flow transfer proxy port handling
The current approach detects the proxy port on each port (re-)plug and may spam the log with error messages if the PMD does not support flows. As testpmd is a debug tool, it must not do such implicit port handling. Instead, the new API should be called only when the user requests that.
Revoke the existing code. Implement an explicit command-line primitive to let the user find the proxy port themselves. Provide relevant hints.
Fixes: 1179f05cc9a0 ("ethdev: query proxy port to manage transfer flows")
Signed-off-by: Ivan Malov <ivan.malov@oktetlabs.ru> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Acked-by: Ori Kam <orika@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
show more ...
|
|
Revision tags: v21.11-rc2, v21.11-rc1 |
|
| #
daa02b5c |
| 15-Oct-2021 |
Olivier Matz <olivier.matz@6wind.com> |
mbuf: add namespace to offload flags
Fix the mbuf offload flags namespace by adding an RTE_ prefix to the name. The old flags remain usable, but a deprecation warning is issued at compilation.
Sign
mbuf: add namespace to offload flags
Fix the mbuf offload flags namespace by adding an RTE_ prefix to the name. The old flags remain usable, but a deprecation warning is issued at compilation.
Signed-off-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com> Acked-by: Somnath Kotur <somnath.kotur@broadcom.com>
show more ...
|
| #
7fbf4a02 |
| 21-Oct-2021 |
Xueming Li <xuemingl@nvidia.com> |
app/testpmd: dump port info for shared Rx queue
In case of shared Rx queue, source port mbuf from polling result isn't the Rx port of forwarding stream. To provide original port ID, this patch dumps
app/testpmd: dump port info for shared Rx queue
In case of shared Rx queue, source port mbuf from polling result isn't the Rx port of forwarding stream. To provide original port ID, this patch dumps mbuf->port for each packet in verbose mode if shared Rx queue enabled.
Signed-off-by: Xueming Li <xuemingl@nvidia.com> Acked-by: Xiaoyun Li <xiaoyun.li@intel.com> Acked-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
show more ...
|
| #
655eae01 |
| 14-Oct-2021 |
Jie Wang <jie1x.wang@intel.com> |
app/testpmd: fix RSS hash offload display
The driver may change RSS hash offloads in dev->data->dev_conf during dev_configure which may cause port->dev_conf and port->rx_conf contain outdated values
app/testpmd: fix RSS hash offload display
The driver may change RSS hash offloads in dev->data->dev_conf during dev_configure which may cause port->dev_conf and port->rx_conf contain outdated values. Since testpmd uses its configuration structures to display offloads configuration, it doesn't display RSS hash offload.
This patch updates the testpmd offloads from device configuration to fix this issue.
Fixes: ce8d561418d4 ("app/testpmd: add port configuration settings")
Signed-off-by: Jie Wang <jie1x.wang@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
| #
1179f05c |
| 14-Oct-2021 |
Ivan Malov <ivan.malov@oktetlabs.ru> |
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 <ivan.malov@oktetlabs.ru> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Acked-by: Ori Kam <orika@nvidia.com>
show more ...
|
| #
04d43857 |
| 07-Oct-2021 |
Dmitry Kozlyuk <dmitry.kozliuk@gmail.com> |
net: rename Ethernet header fields
Definition of `rte_ether_addr` structure used a workaround allowing DPDK and Windows SDK headers to be used in the same file, because Windows SDK defines `s_addr`
net: rename Ethernet header fields
Definition of `rte_ether_addr` structure used a workaround allowing DPDK and Windows SDK headers to be used in the same file, because Windows SDK defines `s_addr` as a macro. Rename `s_addr` to `src_addr` and `d_addr` to `dst_addr` to avoid the conflict and remove the workaround. Deprecation notice: https://mails.dpdk.org/archives/dev/2021-July/215270.html
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
show more ...
|
| #
eeedef70 |
| 16-Aug-2021 |
Nithin Dabilpuram <ndabilpuram@marvell.com> |
app/testpmd: fix dump of Tx offload flags
Fix verbose mode dump for Tx to dump tx offload flags instead of Rx offload flags.
Fixes: d862c45b5955 ("app/testpmd: move dumping packets to a separate fu
app/testpmd: fix dump of Tx offload flags
Fix verbose mode dump for Tx to dump tx offload flags instead of Rx offload flags.
Fixes: d862c45b5955 ("app/testpmd: move dumping packets to a separate function") Cc: stable@dpdk.org
Signed-off-by: Nithin Dabilpuram <ndabilpuram@marvell.com> Acked-by: Xiaoyun Li <xiaoyun.li@intel.com> Acked-by: Raslan Darawsheh <rasland@nvidia.com>
show more ...
|
|
Revision tags: v21.08, v21.08-rc4, v21.08-rc3, v21.08-rc2, v21.08-rc1 |
|
| #
61a3b0e5 |
| 17-Jun-2021 |
Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> |
app/testpmd: send failure logs to stderr
Running with stdout suppressed or redirected for further processing is very confusing in the case of errors. Fix it by logging errors and warnings to stderr.
app/testpmd: send failure logs to stderr
Running with stdout suppressed or redirected for further processing is very confusing in the case of errors. Fix it by logging errors and warnings to stderr.
Since lines with log messages are touched anyway concatenate split format strings to make it easier to search using grep.
Fix indent of format string arguments.
Signed-off-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru> Acked-by: Xiaoyun Li <xiaoyun.li@intel.com>
show more ...
|
| #
dbd8e410 |
| 13-Jul-2021 |
Rongwei Liu <rongweil@nvidia.com> |
app/testpmd: support matching on VXLAN reserved field
Add a new testpmd pattern field 'last_rsvd' that supports the last 8-bits matching of VXLAN header.
The examples for the "last_rsvd" pattern fi
app/testpmd: support matching on VXLAN reserved field
Add a new testpmd pattern field 'last_rsvd' that supports the last 8-bits matching of VXLAN header.
The examples for the "last_rsvd" pattern field are as below:
1. ...pattern eth / ipv4 / udp / vxlan last_rsvd is 0x80 / end ...
This flow will exactly match the last 8-bits to be 0x80.
2. ...pattern eth / ipv4 / udp / vxlan last_rsvd spec 0x80 vxlan mask 0x80 / end ...
This flow will only match the MSB of the last 8-bits to be 1.
Signed-off-by: Rongwei Liu <rongweil@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> Acked-by: Raslan Darawsheh <rasland@nvidia.com>
show more ...
|
|
Revision tags: v21.05, v21.05-rc4, v21.05-rc3, v21.05-rc2, v21.05-rc1, v21.02, v21.02-rc4, v21.02-rc3, v21.02-rc2 |
|
| #
2ce96495 |
| 20-Jan-2021 |
Jiawei Wang <jiaweiw@nvidia.com> |
app/testpmd: fix packets dump overlapping
When testpmd enabled the verbosity for the received packets, if two packets were received at the same time, for example, sampling packet and normal packet,
app/testpmd: fix packets dump overlapping
When testpmd enabled the verbosity for the received packets, if two packets were received at the same time, for example, sampling packet and normal packet, the dump output of these packets may be overlapping due to multiple core handling the multiple queues simultaneously.
The patch uses one string buffer that collects all the packet dump output into this buffer and then printouts it at last, that guarantees to printout separately the dump output per packet.
Fixes: d862c45b5955 ("app/testpmd: move dumping packets to a separate function") Cc: stable@dpdk.org
Signed-off-by: Jiawei Wang <jiaweiw@nvidia.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
|
Revision tags: v21.02-rc1, v20.11, v20.11-rc5, v20.11-rc4, v20.11-rc3, v20.11-rc2 |
|
| #
7a0c6491 |
| 29-Oct-2020 |
Thomas Monjalon <thomas@monjalon.net> |
app/testpmd: switch Rx timestamp to dynamic mbuf field
The mbuf timestamp is moved to a dynamic field in order to allow removal of the deprecated static field. The related mbuf flag is also replaced
app/testpmd: switch Rx timestamp to dynamic mbuf field
The mbuf timestamp is moved to a dynamic field in order to allow removal of the deprecated static field. The related mbuf flag is also replaced.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net> Acked-by: David Marchand <david.marchand@redhat.com> Acked-by: Olivier Matz <olivier.matz@6wind.com>
show more ...
|
|
Revision tags: v20.11-rc1 |
|
| #
1b9f2746 |
| 16-Oct-2020 |
Gregory Etelson <getelson@nvidia.com> |
app/testpmd: add commands for tunnel offload
Tunnel Offload API provides hardware independent, unified model to offload tunneled traffic. Key model elements are: - apply matches to both outer and i
app/testpmd: add commands for tunnel offload
Tunnel Offload API provides hardware independent, unified model to offload tunneled traffic. Key model elements are: - apply matches to both outer and inner packet headers during entire offload procedure; - restore outer header of partially offloaded packet; - model is implemented as a set of helper functions.
Implementation details:
* Create application tunnel: flow tunnel create <port> type <tunnel type> On success, the command creates application tunnel object and returns the tunnel descriptor. Tunnel descriptor is used in subsequent flow creation commands to reference the tunnel.
* Create tunnel steering flow rule: tunnel_set <tunnel descriptor> parameter used with steering rule template.
* Create tunnel matching flow rule: tunnel_match <tunnel descriptor> used with matching rule template.
* If tunnel steering rule was offloaded, outer header of a partially offloaded packet is restored after miss.
Example: test packet= <Ether dst=24:8a:07:8d:ae:d6 src=50:6b:4b:cc:fc:e2 type=IPv4 | <IP version=4 ihl=5 proto=udp src=1.1.1.1 dst=1.1.1.10 | <UDP sport=4789 dport=4789 len=58 chksum=0x7f7b | <VXLAN NextProtocol=Ethernet vni=0x0 | <Ether dst=24:aa:aa:aa:aa:d6 src=50:bb:bb:bb:bb:e2 type=IPv4 | <IP version=4 ihl=5 proto=icmp src=2.2.2.2 dst=2.2.2.200 | <ICMP type=echo-request code=0 chksum=0xf7ff id=0x0 seq=0x0 |>>>>>>> >>> len(packet) 92
testpmd> flow flush 0 testpmd> port 0/queue 0: received 1 packets src=50:6B:4B:CC:FC:E2 - dst=24:8A:07:8D:AE:D6 - type=0x0800 - length=92
testpmd> flow tunnel 0 type vxlan port 0: flow tunnel #1 type vxlan testpmd> flow create 0 ingress group 0 tunnel_set 1 pattern eth /ipv4 / udp dst is 4789 / vxlan / end actions jump group 0 / end Flow rule #0 created testpmd> port 0/queue 0: received 1 packets tunnel restore info: - vxlan tunnel - outer header present # <-- src=50:6B:4B:CC:FC:E2 - dst=24:8A:07:8D:AE:D6 - type=0x0800 - length=92
testpmd> flow create 0 ingress group 0 tunnel_match 1 pattern eth / ipv4 / udp dst is 4789 / vxlan / eth / ipv4 / end actions set_mac_dst mac_addr 02:CA:FE:CA:FA:80 / queue index 0 / end Flow rule #1 created testpmd> port 0/queue 0: received 1 packets src=50:BB:BB:BB:BB:E2 - dst=02:CA:FE:CA:FA:80 - type=0x0800 - length=42
* Destroy flow tunnel flow tunnel destroy <port> id <tunnel id>
* Show existing flow tunnels flow tunnel list <port>
Signed-off-by: Gregory Etelson <getelson@nvidia.com>
show more ...
|
|
Revision tags: v20.08, v20.08-rc4, v20.08-rc3, v20.08-rc2, v20.08-rc1, v20.05, v20.05-rc4, v20.05-rc3, v20.05-rc2, v20.05-rc1, v20.02, v20.02-rc4, v20.02-rc3 |
|
| #
80139e35 |
| 09-Feb-2020 |
Thomas Monjalon <thomas@monjalon.net> |
fix Mellanox copyright and SPDX tag
Mellanox owns Tilera and EZchip, so the copyrights can be converted. At the same time, the license header is switched to SPDX tag format, and a typo is fixed in a
fix Mellanox copyright and SPDX tag
Mellanox owns Tilera and EZchip, so the copyrights can be converted. At the same time, the license header is switched to SPDX tag format, and a typo is fixed in another copyright line.
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
show more ...
|
|
Revision tags: v20.02-rc2, v20.02-rc1 |
|
| #
b57b66a9 |
| 16-Jan-2020 |
Ori Kam <orika@mellanox.com> |
app/testpmd: support mbuf dynamic flag
DPDK now supports registration of dynamic flags (dynf) to the mbuf. dynf can be given any name, and can be used with a supporting PMD or supporting application
app/testpmd: support mbuf dynamic flag
DPDK now supports registration of dynamic flags (dynf) to the mbuf. dynf can be given any name, and can be used with a supporting PMD or supporting application.
Due to the generic concept of the dynf, it is impossible and meaningless, to define register set/get function for each flag. This commit introduce a generic way to register and set/clear such flags.
The basic syntax: port config <port id> dynf <name> <set|clear>
The first step the new flag is registered. Regardless if the action is set or clear. There is no way to unregister the flag, after registering it.
The second step, if the action is set then we set the requested flag. If this is the first flag that is enabled we also register a call back for the Tx. In this call back we set the flag. If the action is clear the requested flag is cleared, and if there are no more flags that are set, the call back is removed.
The reason that the set is only applied in Tx is that in case of Rx it is assumed that the value comes from the PMD.
If log is enabled the name of the flag, and value will be printed in the packet info. In order for the log to work correctly the registration of the flag must be done before setting verbose.
Signed-off-by: Ori Kam <orika@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
show more ...
|
|
Revision tags: v19.11, v19.11-rc4, v19.11-rc3 |
|
| #
d56ec3dc |
| 14-Nov-2019 |
Dekel Peled <dekelp@mellanox.com> |
app/testpmd: fix cleanup of Tx metadata offload
Commit in fixes tag removed the match_metadata Tx offload. This patch removes the option to select this offload from testpmd menu, help text and docum
app/testpmd: fix cleanup of Tx metadata offload
Commit in fixes tag removed the match_metadata Tx offload. This patch removes the option to select this offload from testpmd menu, help text and documentation.
It also modifies the cmd_show_tx_metadata_parsed() function, to display the value correctly, and the dump_pkt_burst() function to display the relevant (Tx/Rx) metadata only.
Fixes: 9bf26e1318e3 ("ethdev: move egress metadata to dynamic field")
Signed-off-by: Dekel Peled <dekelp@mellanox.com> Acked-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Bernard Iremonger <bernard.iremonger@intel.com>
show more ...
|
|
Revision tags: v19.11-rc2 |
|
| #
9bf26e13 |
| 05-Nov-2019 |
Viacheslav Ovsiienko <viacheslavo@mellanox.com> |
ethdev: move egress metadata to dynamic field
The dynamic mbuf fields were introduced by [1]. The egress metadata is good candidate to be moved from statically allocated field tx_metadata to dynamic
ethdev: move egress metadata to dynamic field
The dynamic mbuf fields were introduced by [1]. The egress metadata is good candidate to be moved from statically allocated field tx_metadata to dynamic one. Because mbufs are used in half-duplex fashion only, it is safe to share this dynamic field with ingress metadata.
The shared dynamic field contains either egress (if application going to transmit mbuf with tx_burst) or ingress (if mbuf is received with rx_burst) metadata and can be accessed by RTE_FLOW_DYNF_METADATA() macro or with rte_flow_dynf_metadata_set() and rte_flow_dynf_metadata_get() helper routines. PKT_TX_DYNF_METADATA/PKT_RX_DYNF_METADATA flag will be set along with the data.
The mbuf dynamic field must be registered by calling rte_flow_dynf_metadata_register() prior accessing the data.
The availability of dynamic mbuf metadata field can be checked with rte_flow_dynf_metadata_avail() routine.
DEV_TX_OFFLOAD_MATCH_METADATA offload and configuration flag is removed. The metadata support in PMDs is engaged on dynamic field registration.
Metadata feature is getting complex. We might have some set of actions and items that might be supported by PMDs in multiple combinations, the supported values and masks are the subjects to query by perfroming trials (with rte_flow_validate).
[1] http://patches.dpdk.org/patch/62040/
Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Ori Kam <orika@mellanox.com>
show more ...
|
| #
e02ecc13 |
| 05-Nov-2019 |
Viacheslav Ovsiienko <viacheslavo@mellanox.com> |
ethdev: extend flow metadata
Currently, metadata can be set on egress path via mbuf tx_metadata field with PKT_TX_METADATA flag and RTE_FLOW_ITEM_TYPE_META matches metadata.
This patch extends the
ethdev: extend flow metadata
Currently, metadata can be set on egress path via mbuf tx_metadata field with PKT_TX_METADATA flag and RTE_FLOW_ITEM_TYPE_META matches metadata.
This patch extends the metadata feature usability.
1) RTE_FLOW_ACTION_TYPE_SET_META
When supporting multiple tables, Tx metadata can also be set by a rule and matched by another rule. This new action allows metadata to be set as a result of flow match.
2) Metadata on ingress
There's also need to support metadata on ingress. Metadata can be set by SET_META action and matched by META item like Tx. The final value set by the action will be delivered to application via metadata dynamic field of mbuf which can be accessed by RTE_FLOW_DYNF_METADATA() macro or with rte_flow_dynf_metadata_set() and rte_flow_dynf_metadata_get() helper routines. PKT_RX_DYNF_METADATA flag will be set along with the data.
The mbuf dynamic field must be registered by calling rte_flow_dynf_metadata_register() prior to use SET_META action.
The availability of dynamic mbuf metadata field can be checked with rte_flow_dynf_metadata_avail() routine.
If application is going to engage the metadata feature it registers the metadata dynamic fields, then PMD checks the metadata field availability and handles the appropriate fields in datapath.
For loopback/hairpin packet, metadata set on Rx/Tx may or may not be propagated to the other path depending on hardware capability.
MARK and METADATA look similar and might operate in similar way, but not interacting.
Initially, there were proposed two metadata related actions:
- RTE_FLOW_ACTION_TYPE_FLAG - RTE_FLOW_ACTION_TYPE_MARK
These actions set the special flag in the packet metadata, MARK action stores some specified value in the metadata storage, and, on the packet receiving PMD puts the flag and value to the mbuf and applications can see the packet was threated inside flow engine according to the appropriate RTE flow(s). MARK and FLAG are like some kind of gateway to transfer some per-packet information from the flow engine to the application via receiving datapath. Also, there is the item of type RTE_FLOW_ITEM_TYPE_MARK provided. It allows us to extend the flow match pattern with the capability to match the metadata values set by MARK/FLAG actions on other flows.
From the datapath point of view, the MARK and FLAG are related to the receiving side only. It would useful to have the same gateway on the transmitting side and there was the feature of type RTE_FLOW_ITEM_TYPE_META was proposed. The application can fill the field in mbuf and this value will be transferred to some field in the packet metadata inside the flow engine. It did not matter whether these metadata fields are shared because of MARK and META items belonged to different domains (receiving and transmitting) and could be vendor-specific.
So far, so good, DPDK proposes some entities to control metadata inside the flow engine and gateways to exchange these values on a per-packet basis via datapaths.
As we can see, the MARK and META means are not symmetric, there is absent action which would allow us to set META value on the transmitting path. So, the action of type:
- RTE_FLOW_ACTION_TYPE_SET_META was proposed.
The next, applications raise the new requirements for packet metadata. The flow ngines are getting more complex, internal switches are introduced, multiple ports might be supported within the same flow engine namespace. From the DPDK points of view, it means the packets might be sent on one eth_dev port and received on the other one, and the packet path inside the flow engine entirely belongs to the same hardware device. The simplest example is SR-IOV with PF, VFs and the representors. And there is a brilliant opportunity to provide some out-of-band channel to transfer some extra data from one port to another one, besides the packet data itself. And applications would like to use this opportunity.
It is supposed for application to use trials (with rte_flow_validate) to detect which metadata features (FLAG, MARK, META) actually supported by PMD and underlying hardware. It might depend on PMD configuration, system software, hardware settings, etc., and should be detected in run time.
Signed-off-by: Yongseok Koh <yskoh@mellanox.com> Signed-off-by: Viacheslav Ovsiienko <viacheslavo@mellanox.com> Acked-by: Andrew Rybchenko <arybchenko@solarflare.com> Acked-by: Olivier Matz <olivier.matz@6wind.com> Acked-by: Ori Kam <orika@mellanox.com>
show more ...
|
|
Revision tags: v19.11-rc1 |
|
| #
512d873f |
| 23-Oct-2019 |
Flavia Musatescu <flavia.musatescu@intel.com> |
net: add new header file for VXLAN
The VXLAN related definitions and structures are moved from rte_ether.h to a new header file: rte_xvlan.h.
Also introducing a new define macro for VXLAN default p
net: add new header file for VXLAN
The VXLAN related definitions and structures are moved from rte_ether.h to a new header file: rte_xvlan.h.
Also introducing a new define macro for VXLAN default port id: RTE_VXLAN_DEFAULT_PORT
Signed-off-by: Flavia Musatescu <flavia.musatescu@intel.com> Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com> Tested-by: Raslan Darawsheh <rasland@mellanox.com>
show more ...
|
| #
8835806d |
| 24-Sep-2019 |
Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru> |
app/testpmd: check code of allmulticast mode switch
rte_eth_allmulticast_enable()/rte_eth_allmulticast_disable() return value was changed from void to int, so this patch modify usage of these functi
app/testpmd: check code of allmulticast mode switch
rte_eth_allmulticast_enable()/rte_eth_allmulticast_disable() return value was changed from void to int, so this patch modify usage of these functions across app/test-pmd according to new return type.
Signed-off-by: Ivan Ilchenko <ivan.ilchenko@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
| #
a5279d25 |
| 10-Sep-2019 |
Igor Romanov <igor.romanov@oktetlabs.ru> |
app/testpmd: check status of getting MAC address
Add a wrapper for rte_eth_macaddr_get() that prints an error and returns a status code if the function fails.
Signed-off-by: Igor Romanov <igor.roma
app/testpmd: check status of getting MAC address
Add a wrapper for rte_eth_macaddr_get() that prints an error and returns a status code if the function fails.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|
| #
e661a08b |
| 10-Sep-2019 |
Igor Romanov <igor.romanov@oktetlabs.ru> |
app/testpmd: check status of getting link info
Add a wrapper for rte_eth_eth_link_get_nowait() that prints an error and returns a status code if the function fails.
Signed-off-by: Igor Romanov <igo
app/testpmd: check status of getting link info
Add a wrapper for rte_eth_eth_link_get_nowait() that prints an error and returns a status code if the function fails.
Signed-off-by: Igor Romanov <igor.romanov@oktetlabs.ru> Signed-off-by: Andrew Rybchenko <arybchenko@solarflare.com>
show more ...
|