From: "Zhang, Qi Z" <qi.z.zhang@intel.com>
To: "Guo, Jia" <jia.guo@intel.com>,
"Yang, Qiming" <qiming.yang@intel.com>,
"Xing, Beilei" <beilei.xing@intel.com>,
"Wu, Jingjing" <jingjing.wu@intel.com>,
"Wang, Haiyue" <haiyue.wang@intel.com>
Cc: "Zhao1, Wei" <wei.zhao1@intel.com>,
"Richardson, Bruce" <bruce.richardson@intel.com>,
"dev@dpdk.org" <dev@dpdk.org>,
"Zhang, Helin" <helin.zhang@intel.com>,
"mb@smartsharesystems.com" <mb@smartsharesystems.com>,
"Yigit, Ferruh" <ferruh.yigit@intel.com>,
"stephen@networkplumber.org" <stephen@networkplumber.org>,
"barbette@kth.se" <barbette@kth.se>,
"Han, YingyaX" <yingyax.han@intel.com>
Subject: Re: [dpdk-dev] [PATCH v4 4/5] net/ice: fix vector rx burst for ice
Date: Thu, 17 Sep 2020 11:03:19 +0000 [thread overview]
Message-ID: <a4c65097e1ca42609c74b020d48a5d3f@intel.com> (raw)
In-Reply-To: <20200917075834.60034-5-jia.guo@intel.com>
> -----Original Message-----
> From: Guo, Jia <jia.guo@intel.com>
> Sent: Thursday, September 17, 2020 3:59 PM
> To: Yang, Qiming <qiming.yang@intel.com>; Xing, Beilei
> <beilei.xing@intel.com>; Zhang, Qi Z <qi.z.zhang@intel.com>; Wu, Jingjing
> <jingjing.wu@intel.com>; Wang, Haiyue <haiyue.wang@intel.com>
> Cc: Zhao1, Wei <wei.zhao1@intel.com>; Richardson, Bruce
> <bruce.richardson@intel.com>; dev@dpdk.org; Guo, Jia <jia.guo@intel.com>;
> Zhang, Helin <helin.zhang@intel.com>; mb@smartsharesystems.com; Yigit,
> Ferruh <ferruh.yigit@intel.com>; stephen@networkplumber.org;
> barbette@kth.se; Han, YingyaX <yingyax.han@intel.com>
> Subject: [PATCH v4 4/5] net/ice: fix vector rx burst for ice
>
> The limitation of burst size in vector rx was removed, since it should retrieve as
> much received packets as possible. And also the scattered receive path should
> use a wrapper function to achieve the goal of burst maximizing. And do some
> code cleaning for vector rx path.
>
> Bugzilla ID: 516
> Fixes: c68a52b8b38c ("net/ice: support vector SSE in Rx")
> Fixes: ae60d3c9b227 ("net/ice: support Rx AVX2 vector")
>
> Signed-off-by: Jeff Guo <jia.guo@intel.com>
> Tested-by: Yingya Han <yingyax.han@intel.com>
> ---
> drivers/net/ice/ice_rxtx.h | 1 +
> drivers/net/ice/ice_rxtx_vec_avx2.c | 23 ++++++------
> drivers/net/ice/ice_rxtx_vec_sse.c | 56 +++++++++++++++++++----------
> 3 files changed, 49 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/net/ice/ice_rxtx.h b/drivers/net/ice/ice_rxtx.h index
> 2fdcfb7d0..3ef5f300d 100644
> --- a/drivers/net/ice/ice_rxtx.h
> +++ b/drivers/net/ice/ice_rxtx.h
> @@ -35,6 +35,7 @@
> #define ICE_MAX_RX_BURST ICE_RXQ_REARM_THRESH
> #define ICE_TX_MAX_FREE_BUF_SZ 64
> #define ICE_DESCS_PER_LOOP 4
> +#define ICE_DESCS_PER_LOOP_AVX 8
No need to expose this if no external link, better to keep all avx stuff inside avx.c
>
> #define ICE_FDIR_PKT_LEN 512
>
> diff --git a/drivers/net/ice/ice_rxtx_vec_avx2.c
> b/drivers/net/ice/ice_rxtx_vec_avx2.c
> index be50677c2..843e4f32a 100644
> --- a/drivers/net/ice/ice_rxtx_vec_avx2.c
> +++ b/drivers/net/ice/ice_rxtx_vec_avx2.c
> @@ -29,7 +29,7 @@ ice_rxq_rearm(struct ice_rx_queue *rxq)
> __m128i dma_addr0;
>
> dma_addr0 = _mm_setzero_si128();
> - for (i = 0; i < ICE_DESCS_PER_LOOP; i++) {
> + for (i = 0; i < ICE_DESCS_PER_LOOP_AVX; i++) {
> rxep[i].mbuf = &rxq->fake_mbuf;
> _mm_store_si128((__m128i *)&rxdp[i].read,
> dma_addr0);
> @@ -132,12 +132,17 @@ ice_rxq_rearm(struct ice_rx_queue *rxq)
> ICE_PCI_REG_WRITE(rxq->qrx_tail, rx_id); }
>
> +/**
> + * vPMD raw receive routine, only accept(nb_pkts >=
> +ICE_DESCS_PER_LOOP_AVX)
> + *
> + * Notice:
> + * - nb_pkts < ICE_DESCS_PER_LOOP_AVX, just return no packet
> + * - floor align nb_pkts to a ICE_DESCS_PER_LOOP_AVX power-of-two */
The comment is misleading, it looks like we are going to floor align nb_pkts to 2^8, better to reword .
> static inline uint16_t
> _ice_recv_raw_pkts_vec_avx2(struct ice_rx_queue *rxq, struct rte_mbuf
> **rx_pkts,
> uint16_t nb_pkts, uint8_t *split_packet) { -#define
> ICE_DESCS_PER_LOOP_AVX 8
> -
> const uint32_t *ptype_tbl = rxq->vsi->adapter->ptype_tbl;
> const __m256i mbuf_init = _mm256_set_epi64x(0, 0,
> 0, rxq->mbuf_initializer);
> @@ -603,10 +608,6 @@ _ice_recv_raw_pkts_vec_avx2(struct ice_rx_queue
> *rxq, struct rte_mbuf **rx_pkts,
> return received;
> }
>
> -/*
> - * Notice:
> - * - nb_pkts < ICE_DESCS_PER_LOOP, just return no packet
> - */
> uint16_t
> ice_recv_pkts_vec_avx2(void *rx_queue, struct rte_mbuf **rx_pkts,
> uint16_t nb_pkts)
> @@ -616,8 +617,6 @@ ice_recv_pkts_vec_avx2(void *rx_queue, struct
> rte_mbuf **rx_pkts,
>
> /**
> * vPMD receive routine that reassembles single burst of 32 scattered
> packets
> - * Notice:
> - * - nb_pkts < ICE_DESCS_PER_LOOP, just return no packet
> */
Why we need to remove this? is it still true for this function?
> static uint16_t
> ice_recv_scattered_burst_vec_avx2(void *rx_queue, struct rte_mbuf
> **rx_pkts, @@ -626,6 +625,9 @@ ice_recv_scattered_burst_vec_avx2(void
> *rx_queue, struct rte_mbuf **rx_pkts,
> struct ice_rx_queue *rxq = rx_queue;
> uint8_t split_flags[ICE_VPMD_RX_BURST] = {0};
>
> + /* split_flags only can support max of ICE_VPMD_RX_BURST */
> + nb_pkts = RTE_MIN(nb_pkts, ICE_VPMD_RX_BURST);
Is this necessary? the only consumer of this function is ice_recv_scattered_pkts_vec_avx2,
I think nb_pkts <= ICE_VPMD_RX_BURST it already be guaranteed.
> +
> /* get some new buffers */
> uint16_t nb_bufs = _ice_recv_raw_pkts_vec_avx2(rxq, rx_pkts, nb_pkts,
> split_flags);
> @@ -657,9 +659,6 @@ ice_recv_scattered_burst_vec_avx2(void *rx_queue,
> struct rte_mbuf **rx_pkts,
>
> /**
> * vPMD receive routine that reassembles scattered packets.
> - * Main receive routine that can handle arbitrary burst sizes
> - * Notice:
> - * - nb_pkts < ICE_DESCS_PER_LOOP, just return no packet
> */
Why we need to remove this? isn't it the main routine that be able to handle arbitrary burst size?
Btw, I will suggest all AVX2 changes can be in a separate patch, because this looks like some code clean and fix.
its not related with the main purpose of the patch set.
next prev parent reply other threads:[~2020-09-17 11:03 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-08-27 7:54 [dpdk-dev] [PATCH v1 0/4] maximize vector rx burst for PMDs Jeff Guo
2020-08-27 7:54 ` [dpdk-dev] [PATCH v1 1/4] net/ixgbe: maximize vector rx burst for ixgbe Jeff Guo
2020-08-27 7:54 ` [dpdk-dev] [PATCH v1 2/4] net/i40e: maximize vector rx burst for i40e Jeff Guo
2020-08-27 7:54 ` [dpdk-dev] [PATCH v1 3/4] net/ice: maximize vector rx burst for ice Jeff Guo
2020-08-27 7:54 ` [dpdk-dev] [PATCH v1 4/4] net/iavf: maximize vector rx burst for iavf Jeff Guo
2020-08-27 8:40 ` [dpdk-dev] [RFC] ethdev: rte_eth_rx_burst() requirements for nb_pkts Morten Brørup
2020-08-27 9:09 ` Bruce Richardson
2020-08-27 9:31 ` Morten Brørup
2020-08-27 9:43 ` Bruce Richardson
2020-08-27 10:13 ` [dpdk-dev] [RFC] ethdev: rte_eth_rx_burst() requirements fornb_pkts Morten Brørup
2020-08-27 11:41 ` Bruce Richardson
2020-08-28 9:03 ` Morten Brørup
2020-08-28 10:07 ` Bruce Richardson
2020-08-28 10:50 ` Morten Brørup
2020-08-29 10:15 ` Morten Brørup
2020-09-09 6:36 ` [dpdk-dev] [PATCH v3 0/5] fix vector rx burst for PMDs Jeff Guo
2020-09-09 6:36 ` [dpdk-dev] [PATCH v3 1/5] net/iavf: fix vector rx burst for iavf Jeff Guo
2020-09-09 6:36 ` [dpdk-dev] [PATCH v3 2/5] net/ixgbe: fix vector rx burst for ixgbe Jeff Guo
[not found] ` <VI1PR0802MB23518C6B517B6EAD8E018CD49E260@VI1PR0802MB2351.eurprd08.prod.outlook.com>
2020-09-09 9:54 ` [dpdk-dev] 回复: " Feifei Wang
2020-09-09 6:36 ` [dpdk-dev] [PATCH v3 3/5] net/i40e: fix vector rx burst for i40e Jeff Guo
2020-09-09 6:36 ` [dpdk-dev] [PATCH v3 4/5] net/ice: fix vector rx burst for ice Jeff Guo
2020-09-15 7:10 ` Han, YingyaX
2020-09-09 6:36 ` [dpdk-dev] [PATCH v3 5/5] net/fm10k: fix vector rx burst for fm10k Jeff Guo
2020-09-09 6:45 ` [dpdk-dev] [PATCH v3 0/5] fix vector rx burst for PMDs Wang, Haiyue
2020-09-09 7:03 ` Guo, Jia
2020-09-09 7:05 ` Wang, Haiyue
2020-09-09 7:43 ` Morten Brørup
2020-09-09 7:55 ` Wang, Haiyue
2020-09-09 8:01 ` Guo, Jia
2020-09-17 7:58 ` [dpdk-dev] [PATCH v4 " Jeff Guo
2020-09-17 7:58 ` [dpdk-dev] [PATCH v4 1/5] net/iavf: fix vector rx burst for iavf Jeff Guo
2020-09-17 7:58 ` [dpdk-dev] [PATCH v4 2/5] net/ixgbe: fix vector rx burst for ixgbe Jeff Guo
2020-09-17 7:58 ` [dpdk-dev] [PATCH v4 3/5] net/i40e: fix vector rx burst for i40e Jeff Guo
2020-09-17 7:58 ` [dpdk-dev] [PATCH v4 4/5] net/ice: fix vector rx burst for ice Jeff Guo
2020-09-17 11:03 ` Zhang, Qi Z [this message]
2020-09-18 3:20 ` Guo, Jia
2020-09-18 3:41 ` Zhang, Qi Z
2020-09-18 4:41 ` Guo, Jia
2020-09-18 5:39 ` Zhang, Qi Z
2020-09-17 7:58 ` [dpdk-dev] [PATCH v4 5/5] net/fm10k: fix vector rx burst for fm10k Jeff Guo
2020-10-16 9:44 ` [dpdk-dev] [PATCH v5 0/5] fix vector rx burst for PMDs Jeff Guo
2020-10-16 9:44 ` [dpdk-dev] [PATCH v5 1/5] net/ixgbe: fix vector rx burst for ixgbe Jeff Guo
2020-10-16 9:44 ` [dpdk-dev] [PATCH v5 2/5] net/i40e: fix vector rx burst for i40e Jeff Guo
2020-10-16 9:44 ` [dpdk-dev] [PATCH v5 3/5] net/ice: fix vector rx burst for ice Jeff Guo
2020-10-16 9:44 ` [dpdk-dev] [PATCH v5 4/5] net/fm10k: fix vector rx burst for fm10k Jeff Guo
2020-10-16 9:44 ` [dpdk-dev] [PATCH v5 5/5] net/iavf: fix vector rx burst for iavf Jeff Guo
2020-10-23 5:09 ` Ling, WeiX
2020-10-23 10:11 ` [dpdk-dev] [PATCH v5 0/5] fix vector rx burst for PMDs Zhang, Qi Z
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=a4c65097e1ca42609c74b020d48a5d3f@intel.com \
--to=qi.z.zhang@intel.com \
--cc=barbette@kth.se \
--cc=beilei.xing@intel.com \
--cc=bruce.richardson@intel.com \
--cc=dev@dpdk.org \
--cc=ferruh.yigit@intel.com \
--cc=haiyue.wang@intel.com \
--cc=helin.zhang@intel.com \
--cc=jia.guo@intel.com \
--cc=jingjing.wu@intel.com \
--cc=mb@smartsharesystems.com \
--cc=qiming.yang@intel.com \
--cc=stephen@networkplumber.org \
--cc=wei.zhao1@intel.com \
--cc=yingyax.han@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.