All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhiyong Yang <zhiyong.yang@intel.com>
To: dev@dpdk.org
Cc: bruce.richardson@intel.com, Helin Zhang <helin.zhang@intel.com>,
	Konstantin Ananyev <konstantin.ananyev@intel.com>,
	Zhiyong Yang <zhiyong.yang@intel.com>
Subject: [PATCH v2 3/5] net/ixgbe: remove limit of ixgbe_xmit_pkts_vec burst size
Date: Fri,  3 Mar 2017 19:17:29 +0800	[thread overview]
Message-ID: <1488539851-71009-4-git-send-email-zhiyong.yang@intel.com> (raw)
In-Reply-To: <1488539851-71009-1-git-send-email-zhiyong.yang@intel.com>

To add a wrapper function to remove the limit of tx burst size and
implement the "make an best effort to transmit the pkts" policy.
The patch makes ixgbe vec function work in a consistent behavior
like ixgbe_xmit_pkts_simple and ixgbe_xmit_pkts do that.

Cc: Helin Zhang <helin.zhang@intel.com>
Cc: Konstantin Ananyev <konstantin.ananyev@intel.com>
Signed-off-by: Zhiyong Yang <zhiyong.yang@intel.com>
---
 drivers/net/ixgbe/ixgbe_rxtx.c          | 29 +++++++++++++++++++++++++++++
 drivers/net/ixgbe/ixgbe_rxtx.h          |  4 ++--
 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c |  4 ++--
 drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c  |  4 ++--
 4 files changed, 35 insertions(+), 6 deletions(-)

diff --git a/drivers/net/ixgbe/ixgbe_rxtx.c b/drivers/net/ixgbe/ixgbe_rxtx.c
index 9502432..6068b11 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx.c
@@ -111,6 +111,11 @@
 #define rte_ixgbe_prefetch(p)   do {} while (0)
 #endif
 
+#ifdef RTE_IXGBE_INC_VECTOR
+uint16_t ixgbe_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
+				    uint16_t nb_pkts);
+#endif
+
 /*********************************************************************
  *
  *  TX functions
@@ -363,6 +368,30 @@ ixgbe_xmit_pkts_simple(void *tx_queue, struct rte_mbuf **tx_pkts,
 	return nb_tx;
 }
 
+#ifdef RTE_IXGBE_INC_VECTOR
+static uint16_t
+ixgbe_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
+		    uint16_t nb_pkts)
+{
+	uint16_t nb_tx = 0;
+	struct ixgbe_tx_queue *txq = (struct ixgbe_tx_queue *)tx_queue;
+
+	while (nb_pkts) {
+		uint16_t ret, num;
+
+		num = (uint16_t)RTE_MIN(nb_pkts, txq->tx_rs_thresh);
+		ret = ixgbe_xmit_fixed_burst_vec(tx_queue, &tx_pkts[nb_tx],
+						 num);
+		nb_tx += ret;
+		nb_pkts -= ret;
+		if (ret < num)
+			break;
+	}
+
+	return nb_tx;
+}
+#endif
+
 static inline void
 ixgbe_set_xmit_ctx(struct ixgbe_tx_queue *txq,
 		volatile struct ixgbe_adv_tx_context_desc *ctx_txd,
diff --git a/drivers/net/ixgbe/ixgbe_rxtx.h b/drivers/net/ixgbe/ixgbe_rxtx.h
index 739fd19..1ffab4c 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx.h
+++ b/drivers/net/ixgbe/ixgbe_rxtx.h
@@ -311,8 +311,8 @@ void ixgbe_rx_queue_release_mbufs_vec(struct ixgbe_rx_queue *rxq);
 
 #ifdef RTE_IXGBE_INC_VECTOR
 
-uint16_t ixgbe_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
-		uint16_t nb_pkts);
+uint16_t ixgbe_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
+				    uint16_t nb_pkts);
 int ixgbe_txq_vec_setup(struct ixgbe_tx_queue *txq);
 
 #endif /* RTE_IXGBE_INC_VECTOR */
diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
index e2715cb..5930aa1 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c
@@ -451,8 +451,8 @@ vtx(volatile union ixgbe_adv_tx_desc *txdp,
 }
 
 uint16_t
-ixgbe_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
-		       uint16_t nb_pkts)
+ixgbe_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
+			   uint16_t nb_pkts)
 {
 	struct ixgbe_tx_queue *txq = (struct ixgbe_tx_queue *)tx_queue;
 	volatile union ixgbe_adv_tx_desc *txdp;
diff --git a/drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c b/drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c
index abbf284..0861d91 100644
--- a/drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c
+++ b/drivers/net/ixgbe/ixgbe_rxtx_vec_sse.c
@@ -537,8 +537,8 @@ vtx(volatile union ixgbe_adv_tx_desc *txdp,
 }
 
 uint16_t
-ixgbe_xmit_pkts_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
-		       uint16_t nb_pkts)
+ixgbe_xmit_fixed_burst_vec(void *tx_queue, struct rte_mbuf **tx_pkts,
+			   uint16_t nb_pkts)
 {
 	struct ixgbe_tx_queue *txq = (struct ixgbe_tx_queue *)tx_queue;
 	volatile union ixgbe_adv_tx_desc *txdp;
-- 
2.7.4

  parent reply	other threads:[~2017-03-03 11:20 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-24  8:48 [PATCH 0/5] consistent PMD batching behaviour Zhiyong Yang
2017-02-24  8:48 ` [PATCH 1/5] net/fm10k: remove limit of fm10k_xmit_pkts_vec burst size Zhiyong Yang
2017-02-24  9:32   ` Bruce Richardson
2017-02-24  9:36     ` Bruce Richardson
2017-02-24  9:48       ` Yang, Zhiyong
2017-03-03 11:17   ` [PATCH v2 0/5] consistent PMD batching behaviour Zhiyong Yang
2017-03-03 11:17     ` [PATCH v2 1/5] net/fm10k: remove limit of fm10k_xmit_pkts_vec burst size Zhiyong Yang
2017-03-29  7:16       ` [PATCH v3 0/5] consistent PMD batching behaviour Zhiyong Yang
2017-03-29  7:16         ` [PATCH v3 1/5] net/fm10k: remove limit of fm10k_xmit_pkts_vec burst size Zhiyong Yang
2017-03-29  7:16         ` [PATCH v3 2/5] net/i40e: remove limit of i40e_xmit_pkts_vec " Zhiyong Yang
2017-03-29  7:16         ` [PATCH v3 3/5] net/ixgbe: remove limit of ixgbe_xmit_pkts_vec " Zhiyong Yang
2017-03-29  7:16         ` [PATCH v3 4/5] net/vhost: remove limit of vhost TX " Zhiyong Yang
2017-03-29  7:16         ` [PATCH v3 5/5] net/vhost: remove limit of vhost RX " Zhiyong Yang
2017-03-30 12:54         ` [PATCH v3 0/5] consistent PMD batching behaviour Ferruh Yigit
2017-03-31  7:00           ` Yao, Lei A
2017-03-03 11:17     ` [PATCH v2 2/5] net/i40e: remove limit of i40e_xmit_pkts_vec burst size Zhiyong Yang
2017-03-24 14:03       ` Ferruh Yigit
2017-03-03 11:17     ` Zhiyong Yang [this message]
2017-03-03 11:17     ` [PATCH v2 4/5] net/vhost: remove limit of vhost TX " Zhiyong Yang
2017-03-03 11:17     ` [PATCH v2 5/5] net/vhost: remove limit of vhost RX " Zhiyong Yang
2017-03-05 13:02     ` [PATCH v2 0/5] consistent PMD batching behaviour Ananyev, Konstantin
2017-03-06  2:13       ` Yang, Zhiyong
2017-03-24 14:02     ` Ferruh Yigit
2017-03-25  6:29       ` Yang, Zhiyong
2017-03-28 10:00       ` Yang, Zhiyong
2017-03-28 10:05         ` Ferruh Yigit
2017-02-24  8:48 ` [PATCH 2/5] net/i40e: remove limit of i40e_xmit_pkts_vec burst size Zhiyong Yang
2017-02-24  8:48 ` [PATCH 3/5] net/ixgbe: remove limit of ixgbe_xmit_pkts_vec " Zhiyong Yang
2017-02-24  8:48 ` [PATCH 4/5] net/vhost: remove limit of vhost TX " Zhiyong Yang
2017-02-24 11:08   ` Kevin Traynor
2017-02-24 13:04     ` Bruce Richardson
2017-02-24 13:33       ` Kevin Traynor
2017-03-01  9:44   ` Maxime Coquelin
2017-03-01 13:24     ` Yang, Zhiyong
2017-02-24  8:48 ` [PATCH 5/5] net/vhost: remove limit of vhost RX " Zhiyong Yang
2017-02-24 11:41   ` Kevin Traynor

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=1488539851-71009-4-git-send-email-zhiyong.yang@intel.com \
    --to=zhiyong.yang@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=helin.zhang@intel.com \
    --cc=konstantin.ananyev@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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.