From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <jianbo.liu@linaro.org>
Received: from mail-yw0-f170.google.com (mail-yw0-f170.google.com
 [209.85.161.170]) by dpdk.org (Postfix) with ESMTP id 7428D2BE0
 for <dev@dpdk.org>; Thu, 26 May 2016 03:37:11 +0200 (CEST)
Received: by mail-yw0-f170.google.com with SMTP id c127so63541780ywb.1
 for <dev@dpdk.org>; Wed, 25 May 2016 18:37:11 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google;
 h=mime-version:in-reply-to:references:date:message-id:subject:from:to
 :cc; bh=6+4wQu1klbq+Q7bCeTr/+B7mMicEzkOKwGAkvHV52eI=;
 b=ZowYox52bHN7mGcPpYcTd/5pTtLkAOF2T0Jn1QQmoDt+tX67Ds44TefWEKo12uMviY
 71/yUXhqEnKRj4rtnAvkb0xjKLieU//DADbq3m7SUIsdf/J8bxdn9fHy9c1Q4/jNf2pc
 nqWv4Cd0L68bLacVkBU6ZlB1/LtEfgls6LQFs=
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20130820;
 h=x-gm-message-state:mime-version:in-reply-to:references:date
 :message-id:subject:from:to:cc;
 bh=6+4wQu1klbq+Q7bCeTr/+B7mMicEzkOKwGAkvHV52eI=;
 b=Zc8dxJ4e3RaoTTvRnJTiKJNyub8moM7dVjLw+CC42NgteZFRJFWxBC9hE9FXIVRxB1
 QLHgC+/1CderKn8bJk+pgvMVsLsGfpfuYvRfe4y0+E3Zm/XufF32FLvsBnExmyhHjNsq
 Ji5uTqbJRVACIcedAbdx4RwkSK+nt47r0C14iroeofGZ1USoAdYhyWZiu4WqazVnpB5F
 cbaRrn03x9gqH8eeDFx7OIq/xTq+rtl8nwOfEuSq73JD45JMKwt0b0GuNqznHUDY91W9
 DOeRCRVQVSPUiVMl2SA9e1YBgRk3SSvtloi9IKktmYFqi8cAC843/pEnntgkCDA9T7ud
 LLtg==
X-Gm-Message-State: ALyK8tJ68Gd3EYHbPLN5vERO/zswLA8fDkP9FYBqIiGJQTQ16suM954GXlkjVe/+jrWTR9OpSM8WmArYayXIZxx9
MIME-Version: 1.0
X-Received: by 10.13.210.68 with SMTP id u65mr4842056ywd.112.1464226630780;
 Wed, 25 May 2016 18:37:10 -0700 (PDT)
Received: by 10.37.223.133 with HTTP; Wed, 25 May 2016 18:37:10 -0700 (PDT)
In-Reply-To: <20160525122935.GA30670@localhost.localdomain>
References: <1461159902-16680-1-git-send-email-jianbo.liu@linaro.org>
 <1462515948-23906-1-git-send-email-jianbo.liu@linaro.org>
 <1462515948-23906-3-git-send-email-jianbo.liu@linaro.org>
 <20160525122935.GA30670@localhost.localdomain>
Date: Thu, 26 May 2016 09:37:10 +0800
Message-ID: <CAP4Qi3-kAR8yJ0uV5hrrxBA1gMeVZjH+7ngUcbW68dvJXKm7GQ@mail.gmail.com>
From: Jianbo Liu <jianbo.liu@linaro.org>
To: Jerin Jacob <jerin.jacob@caviumnetworks.com>
Cc: dev@dpdk.org, Bruce Richardson <bruce.richardson@intel.com>, 
 "Zhang, Helin" <helin.zhang@intel.com>, 
 "Ananyev, Konstantin" <konstantin.ananyev@intel.com>
Content-Type: text/plain; charset=UTF-8
Subject: Re: [dpdk-dev] [PATCH v3 2/4] ixgbe: implement vector PMD for arm
	architecture
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.15
Precedence: list
List-Id: patches and discussions about DPDK <dev.dpdk.org>
List-Unsubscribe: <http://dpdk.org/ml/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://dpdk.org/ml/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <http://dpdk.org/ml/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
X-List-Received-Date: Thu, 26 May 2016 01:37:11 -0000

On 25 May 2016 at 20:29, Jerin Jacob <jerin.jacob@caviumnetworks.com> wrote:
> On Fri, May 06, 2016 at 11:55:46AM +0530, Jianbo Liu wrote:
>> use ARM NEON intrinsic to implement ixgbe vPMD
>>
>> Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
>> ---
>>  drivers/net/ixgbe/Makefile              |   4 +
>>  drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c | 561 ++++++++++++++++++++++++++++++++
>>  2 files changed, 565 insertions(+)
>>  create mode 100644 drivers/net/ixgbe/ixgbe_rxtx_vec_neon.c

>> +             /* Read desc statuses backwards to avoid race condition */
>> +             /* A.1 load 4 pkts desc */
>> +             descs[3] =  vld1q_u64((uint64_t *)(rxdp + 3));
>> +             rte_rmb();
>
> Any specific reason to add rte_rmb() here, If there is no performance
> drop then it makes sense to add before descs[3] uses it.i.e
> at rte_compiler_barrier() place in x86 code.
>
To avoid desc statuses inconsistent since they are read backwards.

>> +
>> +             /* B.2 copy 2 mbuf point into rx_pkts  */
>> +             vst1q_u64((uint64_t *)&rx_pkts[pos], mbp1);
>> +
>> +             /* B.1 load 1 mbuf point */
>> +             mbp2 = vld1q_u64((uint64_t *)&sw_ring[pos + 2]);
>> +
>> +             descs[2] =  vld1q_u64((uint64_t *)(rxdp + 2));
>> +             /* B.1 load 2 mbuf point */
>> +             descs[1] =  vld1q_u64((uint64_t *)(rxdp + 1));
>> +             descs[0] =  vld1q_u64((uint64_t *)(rxdp));
>> +
>> +             /* B.2 copy 2 mbuf point into rx_pkts  */
>> +             vst1q_u64((uint64_t *)&rx_pkts[pos + 2], mbp2);
>> +
>> +             if (split_packet) {
>> +                     rte_prefetch_non_temporal(&rx_pkts[pos]->cacheline1);
>> +                     rte_prefetch_non_temporal(&rx_pkts[pos+1]->cacheline1);
>> +                     rte_prefetch_non_temporal(&rx_pkts[pos+2]->cacheline1);
>> +                     rte_prefetch_non_temporal(&rx_pkts[pos+3]->cacheline1);
>
> replace with rte_mbuf_prefetch_part2 or equivalent
>
rte_mbuf_prefetch_part2 is new functions after this patchset, so it's
better to submit a new patch as Bruce said.