From: Bing Zhao <bingz@nvidia.com> To: thomas@monjalon.net, orika@nvidia.com, ferruh.yigit@intel.com, arybchenko@solarflare.com, mdr@ashroe.eu, nhorman@tuxdriver.com, bernard.iremonger@intel.com, beilei.xing@intel.com, wenzhuo.lu@intel.com Cc: dev@dpdk.org Subject: [dpdk-dev] [PATCH v2 2/6] ethdev: add new attributes to hairpin config Date: Thu, 8 Oct 2020 16:51:34 +0800 Message-ID: <1602147098-9768-3-git-send-email-bingz@nvidia.com> (raw) In-Reply-To: <1602147098-9768-1-git-send-email-bingz@nvidia.com> To support two ports hairpin mode and keep the backward compatibility for the application, two new attribute members of hairpin queue configuration structure are added. `tx_explicit` means if the application itself will insert the TX part flow rules. If not set, PMD will insert the rules implicitly. `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 recommended 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 drivers. 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> --- v2: optimize the structure and remove unused macros --- lib/librte_ethdev/rte_ethdev.c | 8 ++++---- lib/librte_ethdev/rte_ethdev.h | 5 ++++- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/lib/librte_ethdev/rte_ethdev.c b/lib/librte_ethdev/rte_ethdev.c index 85a19bd..a4adeff 100644 --- a/lib/librte_ethdev/rte_ethdev.c +++ b/lib/librte_ethdev/rte_ethdev.c @@ -1954,13 +1954,13 @@ struct rte_eth_dev * } if (conf->peer_count > cap.max_rx_2_tx) { RTE_ETHDEV_LOG(ERR, - "Invalid value for number of peers for Rx queue(=%hu), should be: <= %hu", + "Invalid value for number of peers for Rx queue(=%u), should be: <= %hu", conf->peer_count, cap.max_rx_2_tx); return -EINVAL; } if (conf->peer_count == 0) { RTE_ETHDEV_LOG(ERR, - "Invalid value for number of peers for Rx queue(=%hu), should be: > 0", + "Invalid value for number of peers for Rx queue(=%u), should be: > 0", conf->peer_count); return -EINVAL; } @@ -2125,13 +2125,13 @@ struct rte_eth_dev * } if (conf->peer_count > cap.max_tx_2_rx) { RTE_ETHDEV_LOG(ERR, - "Invalid value for number of peers for Tx queue(=%hu), should be: <= %hu", + "Invalid value for number of peers for Tx queue(=%u), should be: <= %hu", conf->peer_count, cap.max_tx_2_rx); return -EINVAL; } if (conf->peer_count == 0) { RTE_ETHDEV_LOG(ERR, - "Invalid value for number of peers for Tx queue(=%hu), should be: > 0", + "Invalid value for number of peers for Tx queue(=%u), should be: > 0", conf->peer_count); return -EINVAL; } diff --git a/lib/librte_ethdev/rte_ethdev.h b/lib/librte_ethdev/rte_ethdev.h index 6206643..94a981c 100644 --- a/lib/librte_ethdev/rte_ethdev.h +++ b/lib/librte_ethdev/rte_ethdev.h @@ -1045,7 +1045,10 @@ struct rte_eth_hairpin_peer { * A structure used to configure hairpin binding. */ struct rte_eth_hairpin_conf { - uint16_t peer_count; /**< The number of peers. */ + uint32_t peer_count:16; /**< The number of peers. */ + uint32_t tx_explicit:1; /**< Explicit TX flow rule mode. */ + uint32_t manual_bind:1; /**< Manually bind hairpin queues. */ + uint32_t reserved:14; /**< Reserved bits. */ struct rte_eth_hairpin_peer peers[RTE_ETH_MAX_HAIRPIN_PEERS]; }; -- 1.8.3.1
next prev parent reply other threads:[~2020-10-08 8:52 UTC|newest] Thread overview: 81+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-09-11 4:51 [dpdk-dev] [RFC] introduce support for hairpin between two ports Bing Zhao 2020-09-13 15:48 ` [dpdk-dev] [RFC PATCH v2 0/4] " Bing Zhao 2020-09-13 15:48 ` [dpdk-dev] [RFC PATCH v2 1/4] ethdev: add support for flow item transmit queue Bing Zhao 2020-09-13 15:48 ` [dpdk-dev] [RFC PATCH v2 2/4] testpmd: add item transmit queue in flow CLI Bing Zhao 2020-09-13 15:48 ` [dpdk-dev] [RFC PATCH v2 3/4] ethdev: add hairpin bind APIs Bing Zhao 2020-09-13 15:49 ` [dpdk-dev] [RFC PATCH v2 4/4] ethdev: add new attributes to hairpin queues config Bing Zhao 2020-10-01 0:25 ` [dpdk-dev] [PATCH 0/4] introduce support for hairpin between two ports Bing Zhao 2020-10-01 0:25 ` [dpdk-dev] [PATCH 1/4] ethdev: add hairpin bind and unbind APIs Bing Zhao 2020-10-04 9:20 ` Ori Kam 2020-10-07 11:21 ` Bing Zhao 2020-10-07 11:42 ` Ori Kam 2020-10-01 0:26 ` [dpdk-dev] [PATCH 2/4] ethdev: add new attributes to hairpin config Bing Zhao 2020-10-04 9:22 ` Ori Kam 2020-10-07 11:32 ` Bing Zhao 2020-10-01 0:26 ` [dpdk-dev] [PATCH 3/4] ethdev: add APIs for hairpin queue operation Bing Zhao 2020-10-04 9:34 ` Ori Kam 2020-10-07 11:34 ` Bing Zhao 2020-10-01 0:26 ` [dpdk-dev] [PATCH 4/4] app/testpmd: change hairpin queues setup Bing Zhao 2020-10-04 9:39 ` Ori Kam 2020-10-07 11:36 ` Bing Zhao 2020-10-04 9:45 ` [dpdk-dev] [PATCH 0/4] introduce support for hairpin between two ports Ori Kam 2020-10-08 8:51 ` [dpdk-dev] [PATCH v2 0/6] " Bing Zhao 2020-10-08 8:51 ` [dpdk-dev] [PATCH v2 1/6] ethdev: add hairpin bind and unbind APIs Bing Zhao 2020-10-08 9:07 ` Ori Kam 2020-10-08 8:51 ` Bing Zhao [this message] 2020-10-08 9:23 ` [dpdk-dev] [PATCH v2 2/6] ethdev: add new attributes to hairpin config Ori Kam 2020-10-08 8:51 ` [dpdk-dev] [PATCH v2 3/6] ethdev: add API to get hairpin peer ports list Bing Zhao 2020-10-08 9:40 ` Ori Kam 2020-10-08 8:51 ` [dpdk-dev] [PATCH v2 4/6] ethdev: add APIs for hairpin queue operation Bing Zhao 2020-10-08 9:44 ` Ori Kam 2020-10-08 8:51 ` [dpdk-dev] [PATCH v2 5/6] app/testpmd: change hairpin queues setup Bing Zhao 2020-10-08 9:45 ` Ori Kam 2020-10-08 8:51 ` [dpdk-dev] [PATCH v2 6/6] doc: update for two ports hairpin mode Bing Zhao 2020-10-08 9:47 ` Ori Kam 2020-10-08 12:05 ` [dpdk-dev] [PATCH v3 0/6] introduce support for hairpin between two ports Bing Zhao 2020-10-08 12:05 ` [dpdk-dev] [PATCH v3 1/6] ethdev: add hairpin bind and unbind APIs Bing Zhao 2020-10-14 14:35 ` Thomas Monjalon 2020-10-15 2:56 ` Bing Zhao 2020-10-15 7:31 ` Thomas Monjalon 2020-10-08 12:05 ` [dpdk-dev] [PATCH v3 2/6] ethdev: add new attributes to hairpin config Bing Zhao 2020-10-12 21:37 ` Thomas Monjalon 2020-10-13 12:29 ` Bing Zhao 2020-10-13 12:41 ` Thomas Monjalon 2020-10-13 13:21 ` Bing Zhao 2020-10-08 12:05 ` [dpdk-dev] [PATCH v3 3/6] ethdev: add API to get hairpin peer ports list Bing Zhao 2020-10-08 12:31 ` Ori Kam 2020-10-08 12:05 ` [dpdk-dev] [PATCH v3 4/6] ethdev: add APIs for hairpin queue operation Bing Zhao 2020-10-08 12:05 ` [dpdk-dev] [PATCH v3 5/6] app/testpmd: change hairpin queues setup Bing Zhao 2020-10-08 12:05 ` [dpdk-dev] [PATCH v3 6/6] doc: update for two ports hairpin mode Bing Zhao 2020-10-12 21:30 ` Thomas Monjalon 2020-10-13 1:13 ` Bing Zhao 2020-10-13 6:37 ` Thomas Monjalon 2020-10-13 6:40 ` Bing Zhao 2020-10-13 16:19 ` [dpdk-dev] [PATCH v4 0/5] introduce support for hairpin between two ports Bing Zhao 2020-10-13 16:19 ` [dpdk-dev] [PATCH v4 1/5] ethdev: add hairpin bind and unbind APIs Bing Zhao 2020-10-14 14:43 ` Thomas Monjalon 2020-10-15 2:59 ` Bing Zhao 2020-10-13 16:19 ` [dpdk-dev] [PATCH v4 2/5] ethdev: add new attributes to hairpin config Bing Zhao 2020-10-13 16:19 ` [dpdk-dev] [PATCH v4 3/5] ethdev: add API to get hairpin peer ports list Bing Zhao 2020-10-14 15:02 ` Thomas Monjalon 2020-10-15 4:03 ` Bing Zhao 2020-10-13 16:19 ` [dpdk-dev] [PATCH v4 4/5] ethdev: add APIs for hairpin queue operation Bing Zhao 2020-10-13 16:19 ` [dpdk-dev] [PATCH v4 5/5] app/testpmd: change hairpin queues setup Bing Zhao 2020-10-15 5:35 ` [dpdk-dev] [PATCH v5 0/5] introduce support for hairpin between two ports Bing Zhao 2020-10-15 5:35 ` [dpdk-dev] [PATCH v5 1/5] ethdev: add hairpin bind and unbind APIs Bing Zhao 2020-10-15 10:34 ` Thomas Monjalon 2020-10-15 11:39 ` Bing Zhao 2020-10-15 5:35 ` [dpdk-dev] [PATCH v5 2/5] ethdev: add new attributes to hairpin config Bing Zhao 2020-10-15 10:46 ` Thomas Monjalon 2020-10-15 13:45 ` Bing Zhao 2020-10-15 5:35 ` [dpdk-dev] [PATCH v5 3/5] ethdev: add API to get hairpin peer ports list Bing Zhao 2020-10-15 5:35 ` [dpdk-dev] [PATCH v5 4/5] ethdev: add APIs for hairpin queue operation Bing Zhao 2020-10-15 5:35 ` [dpdk-dev] [PATCH v5 5/5] app/testpmd: change hairpin queues setup Bing Zhao 2020-10-15 13:08 ` [dpdk-dev] [PATCH v6 0/5] introduce support for hairpin between two ports Bing Zhao 2020-10-15 13:08 ` [dpdk-dev] [PATCH v6 1/5] ethdev: add hairpin bind and unbind APIs Bing Zhao 2020-10-15 13:08 ` [dpdk-dev] [PATCH v6 2/5] ethdev: add new attributes to hairpin config Bing Zhao 2020-10-15 13:08 ` [dpdk-dev] [PATCH v6 3/5] ethdev: add API to get hairpin peer ports list Bing Zhao 2020-10-15 13:08 ` [dpdk-dev] [PATCH v6 4/5] ethdev: add APIs for hairpin queue operation Bing Zhao 2020-10-15 13:08 ` [dpdk-dev] [PATCH v6 5/5] app/testpmd: change hairpin queues setup Bing Zhao 2020-10-15 23:03 ` [dpdk-dev] [PATCH v6 0/5] introduce support for hairpin between two ports Ferruh Yigit 2020-10-16 1:34 ` Bing Zhao
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1602147098-9768-3-git-send-email-bingz@nvidia.com \ --to=bingz@nvidia.com \ --cc=arybchenko@solarflare.com \ --cc=beilei.xing@intel.com \ --cc=bernard.iremonger@intel.com \ --cc=dev@dpdk.org \ --cc=ferruh.yigit@intel.com \ --cc=mdr@ashroe.eu \ --cc=nhorman@tuxdriver.com \ --cc=orika@nvidia.com \ --cc=thomas@monjalon.net \ --cc=wenzhuo.lu@intel.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
DPDK patches and discussions This inbox may be cloned and mirrored by anyone: git clone --mirror https://inbox.dpdk.org/dev/0 dev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 dev dev/ https://inbox.dpdk.org/dev \ dev@dpdk.org public-inbox-index dev Example config snippet for mirrors. Newsgroup available over NNTP: nntp://inbox.dpdk.org/inbox.dpdk.dev AGPL code for this site: git clone https://public-inbox.org/public-inbox.git