From: Ajit Khaparde <ajit.khaparde@broadcom.com> To: dev@dpdk.org Cc: Lance Richardson <lance.richardson@broadcom.com>, Thomas Monjalon <thomas@monjalon.net> Subject: [dpdk-dev] [PATCH v3 1/4] net/bnxt: disable vector receive for mark action Date: Wed, 1 Jul 2020 23:21:55 -0700 Message-ID: <20200702062158.49611-2-ajit.khaparde@broadcom.com> (raw) In-Reply-To: <20200702062158.49611-1-ajit.khaparde@broadcom.com> From: Lance Richardson <lance.richardson@broadcom.com> The bnxt vector mode receive handler does not support the rte_flow 'mark' action. Since we cannot know in advance whether this action will be required, add support for dynamically switching from vector to non-vector receive when the first flow create request with a mark action is processed. Fixes: 94eb699bc82e ("net/bnxt: support flow mark action") Suggested-by: Thomas Monjalon <thomas@monjalon.net> Signed-off-by: Lance Richardson <lance.richardson@broadcom.com> Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com> --- drivers/net/bnxt/bnxt_flow.c | 20 ++++++++------------ drivers/net/bnxt/bnxt_rxr.c | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/drivers/net/bnxt/bnxt_flow.c b/drivers/net/bnxt/bnxt_flow.c index 84a21dba9..19bc66a5a 100644 --- a/drivers/net/bnxt/bnxt_flow.c +++ b/drivers/net/bnxt/bnxt_flow.c @@ -18,6 +18,7 @@ #include "bnxt_hwrm.h" #include "bnxt_ring.h" #include "bnxt_rxq.h" +#include "bnxt_rxr.h" #include "bnxt_vnic.h" #include "hsi_struct_def_dpdk.h" @@ -1403,18 +1404,6 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev, bnxt_update_filter_flags_en(filter, filter1, use_ntuple); break; case RTE_FLOW_ACTION_TYPE_MARK: - if (bp->flags & BNXT_FLAG_RX_VECTOR_PKT_MODE) { - PMD_DRV_LOG(DEBUG, - "Disable vector processing for mark\n"); - rte_flow_error_set(error, - ENOTSUP, - RTE_FLOW_ERROR_TYPE_ACTION, - act, - "Disable vector processing for mark"); - rc = -rte_errno; - goto ret; - } - if (bp->mark_table == NULL) { rte_flow_error_set(error, ENOMEM, @@ -1425,6 +1414,13 @@ bnxt_validate_and_parse_flow(struct rte_eth_dev *dev, goto ret; } + if (bp->flags & BNXT_FLAG_RX_VECTOR_PKT_MODE) { + PMD_DRV_LOG(DEBUG, + "Disabling vector processing for mark\n"); + bp->eth_dev->rx_pkt_burst = bnxt_recv_pkts; + bp->flags &= ~BNXT_FLAG_RX_VECTOR_PKT_MODE; + } + filter->valid_flags |= BNXT_FLOW_MARK_FLAG; filter->mark = ((const struct rte_flow_action_mark *) act->conf)->id; diff --git a/drivers/net/bnxt/bnxt_rxr.c b/drivers/net/bnxt/bnxt_rxr.c index 64058879e..eb6f33c7b 100644 --- a/drivers/net/bnxt/bnxt_rxr.c +++ b/drivers/net/bnxt/bnxt_rxr.c @@ -782,6 +782,24 @@ uint16_t bnxt_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, !rte_spinlock_trylock(&rxq->lock))) return 0; +#if defined(RTE_ARCH_X86) + /* + * Replenish buffers if needed when a transition has been made from + * vector- to non-vector- receive processing. + */ + while (unlikely(rxq->rxrearm_nb)) { + if (!bnxt_alloc_rx_data(rxq, rxr, rxq->rxrearm_start)) { + rxr->rx_prod = rxq->rxrearm_start; + bnxt_db_write(&rxr->rx_db, rxr->rx_prod); + rxq->rxrearm_start++; + rxq->rxrearm_nb--; + } else { + /* Retry allocation on next call. */ + break; + } + } +#endif + /* Handle RX burst request */ while (1) { cons = RING_CMP(cpr->cp_ring_struct, raw_cons); -- 2.21.1 (Apple Git-122.3)
next prev parent reply other threads:[~2020-07-02 6:22 UTC|newest] Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top 2020-06-18 14:35 [dpdk-dev] [PATCH v2 0/3] net/bnxt: vector mode enhancements Lance Richardson 2020-06-18 14:35 ` [dpdk-dev] [PATCH 1/3] net/bnxt: disable vector receive for mark action Lance Richardson 2020-06-18 14:35 ` [dpdk-dev] [PATCH 2/3] net/bnxt: support Rx/Tx burst mode info Lance Richardson 2020-06-18 14:35 ` [dpdk-dev] [PATCH 3/3] net/bnxt: add ARM64 vector support Lance Richardson 2020-06-22 1:29 ` Ruifeng Wang 2020-07-01 15:13 ` [dpdk-dev] [PATCH v2 0/3] net/bnxt: vector mode enhancements Ajit Khaparde 2020-07-02 6:21 ` [dpdk-dev] [PATCH v3 0/4] " Ajit Khaparde 2020-07-02 6:21 ` Ajit Khaparde [this message] 2020-07-02 6:21 ` [dpdk-dev] [PATCH v3 2/4] net/bnxt: support Rx/Tx burst mode info Ajit Khaparde 2020-07-02 6:21 ` [dpdk-dev] [PATCH v3 3/4] net/bnxt: add ARM64 vector support Ajit Khaparde 2020-07-02 6:21 ` [dpdk-dev] [PATCH v3 4/4] doc: update release notes Ajit Khaparde 2020-07-06 17:26 ` [dpdk-dev] [PATCH v4 0/4] net/bnxt: vector mode enhancements Ajit Khaparde 2020-07-06 17:26 ` [dpdk-dev] [PATCH v4 1/4] net/bnxt: disable vector receive for mark action Ajit Khaparde 2020-07-06 17:26 ` [dpdk-dev] [PATCH v4 2/4] net/bnxt: support Rx/Tx burst mode info Ajit Khaparde 2020-07-06 17:26 ` [dpdk-dev] [PATCH v4 3/4] net/bnxt: add ARM64 vector support Ajit Khaparde 2020-07-06 17:26 ` [dpdk-dev] [PATCH v4 4/4] doc: update release notes Ajit Khaparde 2020-07-07 22:05 ` Ferruh Yigit 2020-07-07 22:08 ` Ajit Khaparde 2020-07-07 22:22 ` [dpdk-dev] [PATCH v5 0/3] net/bnxt: vector mode enhancements Ajit Khaparde 2020-07-07 22:22 ` [dpdk-dev] [PATCH v5 1/3] net/bnxt: disable vector receive for mark action Ajit Khaparde 2020-07-07 22:22 ` [dpdk-dev] [PATCH v5 2/3] net/bnxt: support Rx/Tx burst mode info Ajit Khaparde 2020-07-07 22:22 ` [dpdk-dev] [PATCH v5 3/3] net/bnxt: add ARM64 vector support Ajit Khaparde 2020-07-07 18:29 ` [dpdk-dev] [PATCH v4 0/4] net/bnxt: vector mode enhancements Ajit Khaparde
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=20200702062158.49611-2-ajit.khaparde@broadcom.com \ --to=ajit.khaparde@broadcom.com \ --cc=dev@dpdk.org \ --cc=lance.richardson@broadcom.com \ --cc=thomas@monjalon.net \ /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