DPDK patches and discussions
 help / color / mirror / Atom feed
From: Hemant Agrawal <hemant.agrawal@nxp.com>
To: dev@dpdk.org, thomas@monjalon.net, ferruh.yigit@intel.com
Subject: [dpdk-dev] [PATCH v2 10/13] net/dpaa: separate Rx function for LS1046
Date: Tue, 18 Sep 2018 19:01:53 +0530	[thread overview]
Message-ID: <1537277516-8876-11-git-send-email-hemant.agrawal@nxp.com> (raw)
In-Reply-To: <1537277516-8876-1-git-send-email-hemant.agrawal@nxp.com>

This is to avoid the checks in datapath and help in performance.
LS1046 has different data stash settings.

Signed-off-by: Hemant Agrawal <hemant.agrawal@nxp.com>
---
 drivers/net/dpaa/dpaa_ethdev.c |  9 +++++--
 drivers/net/dpaa/dpaa_rxtx.c   | 60 +++++++++++++++++++++++++++++++++---------
 drivers/net/dpaa/dpaa_rxtx.h   |  3 +++
 3 files changed, 58 insertions(+), 14 deletions(-)

diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c
index c2d6f44..c430cac 100644
--- a/drivers/net/dpaa/dpaa_ethdev.c
+++ b/drivers/net/dpaa/dpaa_ethdev.c
@@ -657,8 +657,13 @@ int dpaa_eth_rx_queue_setup(struct rte_eth_dev *dev, uint16_t queue_idx,
 				"ret:%d(%s)", rxq->fqid, ret, strerror(ret));
 			return ret;
 		}
-		rxq->cb.dqrr_dpdk_pull_cb = dpaa_rx_cb;
-		rxq->cb.dqrr_prepare = dpaa_rx_cb_prepare;
+		if (dpaa_svr_family == SVR_LS1043A_FAMILY) {
+			rxq->cb.dqrr_dpdk_pull_cb = dpaa_rx_cb_no_prefetch;
+		} else {
+			rxq->cb.dqrr_dpdk_pull_cb = dpaa_rx_cb;
+			rxq->cb.dqrr_prepare = dpaa_rx_cb_prepare;
+		}
+
 		rxq->is_static = true;
 	}
 	dev->data->rx_queues[queue_idx] = rxq;
diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c
index 6698c97..2c57741 100644
--- a/drivers/net/dpaa/dpaa_rxtx.c
+++ b/drivers/net/dpaa/dpaa_rxtx.c
@@ -398,8 +398,9 @@ dpaa_eth_fd_to_mbuf(const struct qm_fd *fd, uint32_t ifid)
 	return mbuf;
 }
 
+/* Specific for LS1043 */
 void
-dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr,
+dpaa_rx_cb_no_prefetch(struct qman_fq **fq, struct qm_dqrr_entry **dqrr,
 	   void **bufs, int num_bufs)
 {
 	struct rte_mbuf *mbuf;
@@ -411,17 +412,13 @@ dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr,
 	uint32_t length;
 	uint8_t format;
 
-	if (dpaa_svr_family != SVR_LS1046A_FAMILY) {
-		bp_info = DPAA_BPID_TO_POOL_INFO(dqrr[0]->fd.bpid);
-		ptr = rte_dpaa_mem_ptov(qm_fd_addr(&dqrr[0]->fd));
-		rte_prefetch0((void *)((uint8_t *)ptr + DEFAULT_RX_ICEOF));
-		bufs[0] = (struct rte_mbuf *)((char *)ptr -
-				bp_info->meta_data_size);
-	}
+	bp_info = DPAA_BPID_TO_POOL_INFO(dqrr[0]->fd.bpid);
+	ptr = rte_dpaa_mem_ptov(qm_fd_addr(&dqrr[0]->fd));
+	rte_prefetch0((void *)((uint8_t *)ptr + DEFAULT_RX_ICEOF));
+	bufs[0] = (struct rte_mbuf *)((char *)ptr - bp_info->meta_data_size);
 
 	for (i = 0; i < num_bufs; i++) {
-		if (dpaa_svr_family != SVR_LS1046A_FAMILY &&
-		    i < num_bufs - 1) {
+		if (i < num_bufs - 1) {
 			bp_info = DPAA_BPID_TO_POOL_INFO(dqrr[i + 1]->fd.bpid);
 			ptr = rte_dpaa_mem_ptov(qm_fd_addr(&dqrr[i + 1]->fd));
 			rte_prefetch0((void *)((uint8_t *)ptr +
@@ -458,6 +455,46 @@ dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr,
 	}
 }
 
+void
+dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr,
+	   void **bufs, int num_bufs)
+{
+	struct rte_mbuf *mbuf;
+	const struct qm_fd *fd;
+	struct dpaa_if *dpaa_intf;
+	uint16_t offset, i;
+	uint32_t length;
+	uint8_t format;
+
+	for (i = 0; i < num_bufs; i++) {
+		fd = &dqrr[i]->fd;
+		dpaa_intf = fq[0]->dpaa_intf;
+
+		format = (fd->opaque & DPAA_FD_FORMAT_MASK) >>
+				DPAA_FD_FORMAT_SHIFT;
+		if (unlikely(format == qm_fd_sg)) {
+			bufs[i] = dpaa_eth_sg_to_mbuf(fd, dpaa_intf->ifid);
+			continue;
+		}
+
+		offset = (fd->opaque & DPAA_FD_OFFSET_MASK) >>
+				DPAA_FD_OFFSET_SHIFT;
+		length = fd->opaque & DPAA_FD_LENGTH_MASK;
+
+		mbuf = bufs[i];
+		mbuf->data_off = offset;
+		mbuf->data_len = length;
+		mbuf->pkt_len = length;
+		mbuf->port = dpaa_intf->ifid;
+
+		mbuf->nb_segs = 1;
+		mbuf->ol_flags = 0;
+		mbuf->next = NULL;
+		rte_mbuf_refcnt_set(mbuf, 1);
+		dpaa_eth_packet_info(mbuf, mbuf->buf_addr);
+	}
+}
+
 void dpaa_rx_cb_prepare(struct qm_dqrr_entry *dq, void **bufs)
 {
 	struct dpaa_bp_info *bp_info = DPAA_BPID_TO_POOL_INFO(dq->fd.bpid);
@@ -468,8 +505,7 @@ void dpaa_rx_cb_prepare(struct qm_dqrr_entry *dq, void **bufs)
 	 * So we prefetch the annoation beforehand, so that it is available
 	 * in cache when accessed.
 	 */
-	if (dpaa_svr_family == SVR_LS1046A_FAMILY)
-		rte_prefetch0((void *)((uint8_t *)ptr + DEFAULT_RX_ICEOF));
+	rte_prefetch0((void *)((uint8_t *)ptr + DEFAULT_RX_ICEOF));
 
 	*bufs = (struct rte_mbuf *)((char *)ptr - bp_info->meta_data_size);
 }
diff --git a/drivers/net/dpaa/dpaa_rxtx.h b/drivers/net/dpaa/dpaa_rxtx.h
index 6de70a7..75b093c 100644
--- a/drivers/net/dpaa/dpaa_rxtx.h
+++ b/drivers/net/dpaa/dpaa_rxtx.h
@@ -270,4 +270,7 @@ void dpaa_rx_cb(struct qman_fq **fq,
 		struct qm_dqrr_entry **dqrr, void **bufs, int num_bufs);
 
 void dpaa_rx_cb_prepare(struct qm_dqrr_entry *dq, void **bufs);
+
+void dpaa_rx_cb_no_prefetch(struct qman_fq **fq,
+		    struct qm_dqrr_entry **dqrr, void **bufs, int num_bufs);
 #endif
-- 
2.7.4

  parent reply	other threads:[~2018-09-18 13:34 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-08-29 10:47 [dpdk-dev] [PATCH 00/13] driver/net: NXP DPAA driver enhancements Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 01/13] net/dpaa: configure frame queue on MAC ID basis Hemant Agrawal
2018-09-18 13:31   ` [dpdk-dev] [PATCH v2 00/13] NXP DPAA driver enhancements Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 01/13] net/dpaa: configure frame queue on MAC ID basis Hemant Agrawal
2018-09-21 11:05       ` [dpdk-dev] [PATCH v3 00/13] NXP DPAA driver enhancements Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 01/13] net/dpaa: configure frame queue on MAC ID basis Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 02/13] net/dpaa: fix jumbo buffer config Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 03/13] net/dpaa: implement scatter offload support Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 04/13] net/dpaa: fix link speed based on MAC type Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 05/13] net/dpaa: minor debug log enhancements Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 06/13] bus/dpaa: add interrupt based portal fd support Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 07/13] bus/dpaa: avoid tag Set for eqcr in Tx path Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 08/13] bus/dpaa: avoid using be conversions for contextb Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 09/13] net/dpaa: rearranging of atomic queue support code Hemant Agrawal
2018-09-21 11:05         ` [dpdk-dev] [PATCH v3 10/13] net/dpaa: separate Rx function for LS1046 Hemant Agrawal
2018-09-21 11:06         ` [dpdk-dev] [PATCH v3 11/13] net/dpaa: tune prefetch in Rx path Hemant Agrawal
2018-09-21 11:06         ` [dpdk-dev] [PATCH v3 12/13] bus/dpaa: add check for re-definition in compat Hemant Agrawal
2018-09-21 11:06         ` [dpdk-dev] [PATCH v3 13/13] mempool/dpaa: change the debug log level to DP Hemant Agrawal
2018-09-24 14:28         ` [dpdk-dev] [PATCH v3 00/13] NXP DPAA driver enhancements Ferruh Yigit
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 02/13] net/dpaa: fix jumbo buffer config Hemant Agrawal
2018-09-18 14:03       ` Thomas Monjalon
2018-09-18 16:22         ` Hemant
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 03/13] net/dpaa: implement scatter offload support Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 04/13] net/dpaa: fix link speed based on MAC type Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 05/13] net/dpaa: minor debug log enhancements Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 06/13] bus/dpaa: add interrupt based portal fd support Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 07/13] bus/dpaa: avoid tag Set for eqcr in Tx path Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 08/13] bus/dpaa: avoid using be conversions for contextb Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 09/13] net/dpaa: rearranging of atomic queue support code Hemant Agrawal
2018-09-18 13:31     ` Hemant Agrawal [this message]
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 11/13] net/dpaa: tune prefetch in Rx path Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 12/13] bus/dpaa: add check for re-definition in compat Hemant Agrawal
2018-09-18 13:31     ` [dpdk-dev] [PATCH v2 13/13] mempool/dpaa: change the debug log level to DP Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 02/13] net/dpaa: fix jumbo buffer config Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 03/13] net/dpaa: implement scatter offload support Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 04/13] net/dpaa: set correct speed based on MAC type Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 05/13] net/dpaa: minor debug log enhancements Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 06/13] bus/dpaa: add interrupt based portal fd support Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 07/13] bus/dpaa: avoid tag Set for eqcr in Tx path Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 08/13] bus/dpaa: avoid using be conversions for contextb Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 09/13] net/dpaa: rearranging of atomic queue support code Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 10/13] net/dpaa: separate Rx function for LS1046 Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 11/13] net/dpaa: tune prefetch in Rx path Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 12/13] bus/dpaa: add check for re-definition in compat Hemant Agrawal
2018-08-29 10:47 ` [dpdk-dev] [PATCH 13/13] mempool/dpaa: change the debug log level to DP Hemant Agrawal
2018-09-14 10:56 ` [dpdk-dev] [PATCH 00/13] driver/net: NXP DPAA driver enhancements Ferruh Yigit
2018-09-16 19:44   ` Thomas Monjalon
2018-09-17  3:21     ` Hemant Agrawal

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=1537277516-8876-11-git-send-email-hemant.agrawal@nxp.com \
    --to=hemant.agrawal@nxp.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).