[RFC,v2,4/4] ethdev: add new attributes to hairpin queues config
diff mbox series

Message ID 1600012140-70151-5-git-send-email-bingz@nvidia.com
State Superseded
Delegated to: Ferruh Yigit
Headers show
  • introduce support for hairpin between two ports
Related show


Context Check Description
ci/Intel-compilation fail Compilation issues
ci/checkpatch success coding style OK

Commit Message

Bing Zhao Sept. 13, 2020, 3:49 p.m. UTC
To support two ports hairpin mode and keep the backward compatibility
for application, two new attribute members of hairpin queue config
structure are added.

`tx_explicit` means if PMD or application itself will insert the TX
part flow rules.
`manual_bind` means if the hairpin TX queue and peer RX queue will be
bound automatically during device start stage.

Different TX and RX queue pairs could have different values, but it
is highly recommend that all paired queues between one egress and its
peer ingress ports have the same values, in order not to bring any
chaos to the system. The actual support of these attribute parameters
will be checked and decided by the PMD driver.

In a single port hairpin, if both are zero without any setting, the
behavior will remain the same as before. It means no bind API needs
to be called and no TX flow rules need to be inserted manually by
the application.

Signed-off-by: Bing Zhao <bingz@nvidia.com>
 lib/librte_ethdev/rte_ethdev.h | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff mbox series

diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h
index fb217b4..9560d60 100644
--- a/lib/librte_ethdev/rte_ethdev.h
+++ b/lib/librte_ethdev/rte_ethdev.h
@@ -996,6 +996,21 @@  struct rte_eth_hairpin_cap {
+ * Hairpin queue attribute parameters.
+ * Each TX queue and peer RX queue should have the same value.
+ * Default value 0 is for backward-compatibility, the same behaviors should
+ * remain if the value is not set (0).
+ */
+/**< Hairpin queues will be bound automatically */
+/**< Hairpin queues will be bound manually with bind API */
+/**< Hairpin TX part flow rule will be inserted implicitly by PMD */
+/**< Hairpin TX part flow rule will be inserted explicitly by APP */
  * @warning
  * @b EXPERIMENTAL: this API may change, or be removed, without prior notice
@@ -1016,6 +1031,8 @@  struct rte_eth_hairpin_peer {
 struct rte_eth_hairpin_conf {
 	uint16_t peer_count; /**< The number of peers. */
 	struct rte_eth_hairpin_peer peers[RTE_ETH_MAX_HAIRPIN_PEERS];
+	uint16_t tx_explicit; /**< Explicit TX flow rule by APP. */
+	uint16_t manual_bind; /**< Manually binding hairpin queues. */