DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
@ 2016-08-02  6:58 Jianbo Liu
       [not found] ` <82F45D86ADE5454A95A89742C8D1410E0330A4B6@shsmsx102.ccr.corp.intel.com>
                   ` (2 more replies)
  0 siblings, 3 replies; 12+ messages in thread
From: Jianbo Liu @ 2016-08-02  6:58 UTC (permalink / raw)
  To: dev, helin.zhang, jingjing.wu; +Cc: Jianbo Liu

And add read memory barrier to avoid status inconsistency
between two RX descriptors readings.

Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
---
 config/defconfig_arm64-armv8a-linuxapp-gcc | 2 +-
 doc/guides/nics/overview.rst               | 2 +-
 drivers/net/i40e/i40e_rxtx.c               | 2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc b/config/defconfig_arm64-armv8a-linuxapp-gcc
index 1a17126..08f282b 100644
--- a/config/defconfig_arm64-armv8a-linuxapp-gcc
+++ b/config/defconfig_arm64-armv8a-linuxapp-gcc
@@ -46,6 +46,6 @@ CONFIG_RTE_EAL_IGB_UIO=n
 
 CONFIG_RTE_LIBRTE_IVSHMEM=n
 CONFIG_RTE_LIBRTE_FM10K_PMD=n
-CONFIG_RTE_LIBRTE_I40E_PMD=n
+CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n
 
 CONFIG_RTE_SCHED_VECTOR=n
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 6abbae6..5175591 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -138,7 +138,7 @@ Most of these differences are summarized below.
    Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
    Other kdrv                                                         Y Y               Y
    ARMv7                                                                        Y             Y Y
-   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
+   ARMv8                                  Y           Y Y Y Y                   Y         Y   Y Y
    Power8                                                             Y Y       Y
    TILE-Gx                                                                      Y
    x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 554d167..4004b8e 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -994,6 +994,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
 					I40E_RXD_QW1_STATUS_SHIFT;
 		}
 
+		rte_rmb();
+
 		/* Compute how many status bits were set */
 		for (j = 0, nb_dd = 0; j < I40E_LOOK_AHEAD; j++)
 			nb_dd += s[j] & (1 << I40E_RX_DESC_STATUS_DD_SHIFT);
-- 
2.4.11

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
       [not found] ` <82F45D86ADE5454A95A89742C8D1410E0330A4B6@shsmsx102.ccr.corp.intel.com>
@ 2016-08-03  3:26   ` Yao, Lei A
  2016-08-03  6:02     ` Jianbo Liu
  0 siblings, 1 reply; 12+ messages in thread
From: Yao, Lei A @ 2016-08-03  3:26 UTC (permalink / raw)
  To: Jianbo Liu; +Cc: dev, Zhang, Helin, Wu, Jingjing

Hi, Jianbo

I have tested you patch on my X86 platform,  the single core performance for Non-vector PMD will have about 1Mpps drop
Non-vector PMD single core performance with patch               :  ~33.9 Mpps
Non-vector PMD single core performance without patch        :  ~35.1 Mpps
Is there any way to avoid such performance drop on X86? Thanks.

BRs
Lei

-----Original Message-----
From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jianbo Liu
Sent: Tuesday, August 2, 2016 2:58 PM
To: dev@dpdk.org; Zhang, Helin <helin.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>
Cc: Jianbo Liu <jianbo.liu@linaro.org>
Subject: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform

And add read memory barrier to avoid status inconsistency between two RX descriptors readings.

Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
---
 config/defconfig_arm64-armv8a-linuxapp-gcc | 2 +-
 doc/guides/nics/overview.rst               | 2 +-
 drivers/net/i40e/i40e_rxtx.c               | 2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc b/config/defconfig_arm64-armv8a-linuxapp-gcc
index 1a17126..08f282b 100644
--- a/config/defconfig_arm64-armv8a-linuxapp-gcc
+++ b/config/defconfig_arm64-armv8a-linuxapp-gcc
@@ -46,6 +46,6 @@ CONFIG_RTE_EAL_IGB_UIO=n
 
 CONFIG_RTE_LIBRTE_IVSHMEM=n
 CONFIG_RTE_LIBRTE_FM10K_PMD=n
-CONFIG_RTE_LIBRTE_I40E_PMD=n
+CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n
 
 CONFIG_RTE_SCHED_VECTOR=n
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst index 6abbae6..5175591 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -138,7 +138,7 @@ Most of these differences are summarized below.
    Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
    Other kdrv                                                         Y Y               Y
    ARMv7                                                                        Y             Y Y
-   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
+   ARMv8                                  Y           Y Y Y Y                   Y         Y   Y Y
    Power8                                                             Y Y       Y
    TILE-Gx                                                                      Y
    x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index 554d167..4004b8e 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -994,6 +994,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
 					I40E_RXD_QW1_STATUS_SHIFT;
 		}
 
+		rte_rmb();
+
 		/* Compute how many status bits were set */
 		for (j = 0, nb_dd = 0; j < I40E_LOOK_AHEAD; j++)
 			nb_dd += s[j] & (1 << I40E_RX_DESC_STATUS_DD_SHIFT);
--
2.4.11

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
  2016-08-03  3:26   ` Yao, Lei A
@ 2016-08-03  6:02     ` Jianbo Liu
  2016-08-03  7:58       ` Thomas Monjalon
  2016-08-03  8:29       ` Ananyev, Konstantin
  0 siblings, 2 replies; 12+ messages in thread
From: Jianbo Liu @ 2016-08-03  6:02 UTC (permalink / raw)
  To: Yao, Lei A; +Cc: dev, Zhang, Helin, Wu, Jingjing

On 3 August 2016 at 11:26, Yao, Lei A <lei.a.yao@intel.com> wrote:
> Hi, Jianbo
>
> I have tested you patch on my X86 platform,  the single core performance for Non-vector PMD will have about 1Mpps drop
> Non-vector PMD single core performance with patch               :  ~33.9 Mpps
> Non-vector PMD single core performance without patch        :  ~35.1 Mpps
> Is there any way to avoid such performance drop on X86? Thanks.
>

I think we can place a compiling condition before rte_rmb() to avoid
performance decrease on x86.
For example:  #if defined(RTE_ARCH_ARM) || defined(RTE_ARCH_ARM64)

Thanks!
Jianbo

> BRs
> Lei
>
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jianbo Liu
> Sent: Tuesday, August 2, 2016 2:58 PM
> To: dev@dpdk.org; Zhang, Helin <helin.zhang@intel.com>; Wu, Jingjing <jingjing.wu@intel.com>
> Cc: Jianbo Liu <jianbo.liu@linaro.org>
> Subject: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
>
> And add read memory barrier to avoid status inconsistency between two RX descriptors readings.
>
> Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
> ---
>  config/defconfig_arm64-armv8a-linuxapp-gcc | 2 +-
>  doc/guides/nics/overview.rst               | 2 +-
>  drivers/net/i40e/i40e_rxtx.c               | 2 ++
>  3 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc b/config/defconfig_arm64-armv8a-linuxapp-gcc
> index 1a17126..08f282b 100644
> --- a/config/defconfig_arm64-armv8a-linuxapp-gcc
> +++ b/config/defconfig_arm64-armv8a-linuxapp-gcc
> @@ -46,6 +46,6 @@ CONFIG_RTE_EAL_IGB_UIO=n
>
>  CONFIG_RTE_LIBRTE_IVSHMEM=n
>  CONFIG_RTE_LIBRTE_FM10K_PMD=n
> -CONFIG_RTE_LIBRTE_I40E_PMD=n
> +CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n
>
>  CONFIG_RTE_SCHED_VECTOR=n
> diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst index 6abbae6..5175591 100644
> --- a/doc/guides/nics/overview.rst
> +++ b/doc/guides/nics/overview.rst
> @@ -138,7 +138,7 @@ Most of these differences are summarized below.
>     Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
>     Other kdrv                                                         Y Y               Y
>     ARMv7                                                                        Y             Y Y
> -   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
> +   ARMv8                                  Y           Y Y Y Y                   Y         Y   Y Y
>     Power8                                                             Y Y       Y
>     TILE-Gx                                                                      Y
>     x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
> diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index 554d167..4004b8e 100644
> --- a/drivers/net/i40e/i40e_rxtx.c
> +++ b/drivers/net/i40e/i40e_rxtx.c
> @@ -994,6 +994,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
>                                         I40E_RXD_QW1_STATUS_SHIFT;
>                 }
>
> +               rte_rmb();
> +
>                 /* Compute how many status bits were set */
>                 for (j = 0, nb_dd = 0; j < I40E_LOOK_AHEAD; j++)
>                         nb_dd += s[j] & (1 << I40E_RX_DESC_STATUS_DD_SHIFT);
> --
> 2.4.11
>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
  2016-08-03  6:02     ` Jianbo Liu
@ 2016-08-03  7:58       ` Thomas Monjalon
  2016-08-03  9:33         ` Jianbo Liu
  2016-08-03  8:29       ` Ananyev, Konstantin
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2016-08-03  7:58 UTC (permalink / raw)
  To: Jianbo Liu; +Cc: dev, Yao, Lei A, Zhang, Helin, Wu, Jingjing

2016-08-03 14:02, Jianbo Liu:
> I think we can place a compiling condition before rte_rmb() to avoid
> performance decrease on x86.
> For example:  #if defined(RTE_ARCH_ARM) || defined(RTE_ARCH_ARM64)

Please could you explain why a memory barrier would be needed on ARM but
not on x86? What about other architectures?

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
  2016-08-03  6:02     ` Jianbo Liu
  2016-08-03  7:58       ` Thomas Monjalon
@ 2016-08-03  8:29       ` Ananyev, Konstantin
  2016-08-03  9:36         ` Jianbo Liu
  1 sibling, 1 reply; 12+ messages in thread
From: Ananyev, Konstantin @ 2016-08-03  8:29 UTC (permalink / raw)
  To: Jianbo Liu, Yao, Lei A; +Cc: dev, Zhang, Helin, Wu, Jingjing


Hi Jianbo,

> > Hi, Jianbo
> >
> > I have tested you patch on my X86 platform,  the single core performance for Non-vector PMD will have about 1Mpps drop
> > Non-vector PMD single core performance with patch               :  ~33.9 Mpps
> > Non-vector PMD single core performance without patch        :  ~35.1 Mpps
> > Is there any way to avoid such performance drop on X86? Thanks.
> >
> 
> I think we can place a compiling condition before rte_rmb() to avoid performance decrease on x86.
> For example:  #if defined(RTE_ARCH_ARM) || defined(RTE_ARCH_ARM64)

I suppose you can use rte_smp_rmb() here?
Konstantin

> 
> Thanks!
> Jianbo
> 
> > BRs
> > Lei
> >
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jianbo Liu
> > Sent: Tuesday, August 2, 2016 2:58 PM
> > To: dev@dpdk.org; Zhang, Helin <helin.zhang@intel.com>; Wu, Jingjing
> > <jingjing.wu@intel.com>
> > Cc: Jianbo Liu <jianbo.liu@linaro.org>
> > Subject: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
> >
> > And add read memory barrier to avoid status inconsistency between two RX descriptors readings.
> >
> > Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
> > ---
> >  config/defconfig_arm64-armv8a-linuxapp-gcc | 2 +-
> >  doc/guides/nics/overview.rst               | 2 +-
> >  drivers/net/i40e/i40e_rxtx.c               | 2 ++
> >  3 files changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc
> > b/config/defconfig_arm64-armv8a-linuxapp-gcc
> > index 1a17126..08f282b 100644
> > --- a/config/defconfig_arm64-armv8a-linuxapp-gcc
> > +++ b/config/defconfig_arm64-armv8a-linuxapp-gcc
> > @@ -46,6 +46,6 @@ CONFIG_RTE_EAL_IGB_UIO=n
> >
> >  CONFIG_RTE_LIBRTE_IVSHMEM=n
> >  CONFIG_RTE_LIBRTE_FM10K_PMD=n
> > -CONFIG_RTE_LIBRTE_I40E_PMD=n
> > +CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n
> >
> >  CONFIG_RTE_SCHED_VECTOR=n
> > diff --git a/doc/guides/nics/overview.rst
> > b/doc/guides/nics/overview.rst index 6abbae6..5175591 100644
> > --- a/doc/guides/nics/overview.rst
> > +++ b/doc/guides/nics/overview.rst
> > @@ -138,7 +138,7 @@ Most of these differences are summarized below.
> >     Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
> >     Other kdrv                                                         Y Y               Y
> >     ARMv7                                                                        Y             Y Y
> > -   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
> > +   ARMv8                                  Y           Y Y Y Y                   Y         Y   Y Y
> >     Power8                                                             Y Y       Y
> >     TILE-Gx                                                                      Y
> >     x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
> > diff --git a/drivers/net/i40e/i40e_rxtx.c
> > b/drivers/net/i40e/i40e_rxtx.c index 554d167..4004b8e 100644
> > --- a/drivers/net/i40e/i40e_rxtx.c
> > +++ b/drivers/net/i40e/i40e_rxtx.c
> > @@ -994,6 +994,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
> >                                         I40E_RXD_QW1_STATUS_SHIFT;
> >                 }
> >
> > +               rte_rmb();
> > +
> >                 /* Compute how many status bits were set */
> >                 for (j = 0, nb_dd = 0; j < I40E_LOOK_AHEAD; j++)
> >                         nb_dd += s[j] & (1 <<
> > I40E_RX_DESC_STATUS_DD_SHIFT);
> > --
> > 2.4.11
> >

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
  2016-08-03  7:58       ` Thomas Monjalon
@ 2016-08-03  9:33         ` Jianbo Liu
  0 siblings, 0 replies; 12+ messages in thread
From: Jianbo Liu @ 2016-08-03  9:33 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev, Yao, Lei A, Zhang, Helin, Wu, Jingjing

Hi Thomas,

On 3 August 2016 at 15:58, Thomas Monjalon <thomas.monjalon@6wind.com> wrote:
> 2016-08-03 14:02, Jianbo Liu:
>> I think we can place a compiling condition before rte_rmb() to avoid
>> performance decrease on x86.
>> For example:  #if defined(RTE_ARCH_ARM) || defined(RTE_ARCH_ARM64)
>
> Please could you explain why a memory barrier would be needed on ARM but

The reason is that ARM is weealy ordered processor, and data access
will be executed out of order to improve performance.
In this case, we have to read 2 times, 8 descriptors each. The read
statuses could be wrong if no memory barrier.
I also got the outdated status for some descriptors in my testing.

> not on x86? What about other architectures?

I think Konstantin gave me a good solution, by using rte_smp_rmb :)

Jianbo

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform
  2016-08-03  8:29       ` Ananyev, Konstantin
@ 2016-08-03  9:36         ` Jianbo Liu
  0 siblings, 0 replies; 12+ messages in thread
From: Jianbo Liu @ 2016-08-03  9:36 UTC (permalink / raw)
  To: Ananyev, Konstantin; +Cc: Yao, Lei A, dev, Zhang, Helin, Wu, Jingjing

On 3 August 2016 at 16:29, Ananyev, Konstantin
<konstantin.ananyev@intel.com> wrote:
>
> Hi Jianbo,
>
>> > Hi, Jianbo
>> >
>> > I have tested you patch on my X86 platform,  the single core performance for Non-vector PMD will have about 1Mpps drop
>> > Non-vector PMD single core performance with patch               :  ~33.9 Mpps
>> > Non-vector PMD single core performance without patch        :  ~35.1 Mpps
>> > Is there any way to avoid such performance drop on X86? Thanks.
>> >
>>
>> I think we can place a compiling condition before rte_rmb() to avoid performance decrease on x86.
>> For example:  #if defined(RTE_ARCH_ARM) || defined(RTE_ARCH_ARM64)
>
> I suppose you can use rte_smp_rmb() here?

Great. Thank Konstantin.
I'll send v2.

Jianbo

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [dpdk-dev] [PATCH v2] i40e: enable i40e pmd on ARM platform
  2016-08-02  6:58 [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform Jianbo Liu
       [not found] ` <82F45D86ADE5454A95A89742C8D1410E0330A4B6@shsmsx102.ccr.corp.intel.com>
@ 2016-08-03 10:12 ` Jianbo Liu
  2016-08-05  9:06 ` [dpdk-dev] [PATCH v3] " Jianbo Liu
  2 siblings, 0 replies; 12+ messages in thread
From: Jianbo Liu @ 2016-08-03 10:12 UTC (permalink / raw)
  To: dev, helin.zhang, jingjing.wu; +Cc: Jianbo Liu

And add read memory barrier to avoid status inconsistency
between two RX descriptors readings.

Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
---
 config/defconfig_arm64-armv8a-linuxapp-gcc | 2 +-
 doc/guides/nics/overview.rst               | 2 +-
 drivers/net/i40e/i40e_rxtx.c               | 2 ++
 3 files changed, 4 insertions(+), 2 deletions(-)

diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc b/config/defconfig_arm64-armv8a-linuxapp-gcc
index 1a17126..08f282b 100644
--- a/config/defconfig_arm64-armv8a-linuxapp-gcc
+++ b/config/defconfig_arm64-armv8a-linuxapp-gcc
@@ -46,6 +46,6 @@ CONFIG_RTE_EAL_IGB_UIO=n
 
 CONFIG_RTE_LIBRTE_IVSHMEM=n
 CONFIG_RTE_LIBRTE_FM10K_PMD=n
-CONFIG_RTE_LIBRTE_I40E_PMD=n
+CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n
 
 CONFIG_RTE_SCHED_VECTOR=n
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 6abbae6..5175591 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -138,7 +138,7 @@ Most of these differences are summarized below.
    Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
    Other kdrv                                                         Y Y               Y
    ARMv7                                                                        Y             Y Y
-   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
+   ARMv8                                  Y           Y Y Y Y                   Y         Y   Y Y
    Power8                                                             Y Y       Y
    TILE-Gx                                                                      Y
    x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 554d167..19cfec4 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -994,6 +994,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
 					I40E_RXD_QW1_STATUS_SHIFT;
 		}
 
+		rte_rmb_smp();
+
 		/* Compute how many status bits were set */
 		for (j = 0, nb_dd = 0; j < I40E_LOOK_AHEAD; j++)
 			nb_dd += s[j] & (1 << I40E_RX_DESC_STATUS_DD_SHIFT);
-- 
2.4.11

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [dpdk-dev] [PATCH v3] i40e: enable i40e pmd on ARM platform
  2016-08-02  6:58 [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform Jianbo Liu
       [not found] ` <82F45D86ADE5454A95A89742C8D1410E0330A4B6@shsmsx102.ccr.corp.intel.com>
  2016-08-03 10:12 ` [dpdk-dev] [PATCH v2] " Jianbo Liu
@ 2016-08-05  9:06 ` Jianbo Liu
  2016-09-23  1:13   ` Zhang, Qi Z
  2 siblings, 1 reply; 12+ messages in thread
From: Jianbo Liu @ 2016-08-05  9:06 UTC (permalink / raw)
  To: dev, helin.zhang, jingjing.wu; +Cc: Jianbo Liu

And add read memory barrier to avoid status inconsistency
between two RX descriptors readings.

Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
---
 config/defconfig_arm64-armv8a-linuxapp-gcc | 2 +-
 doc/guides/nics/features/i40e.ini          | 1 +
 drivers/net/i40e/i40e_rxtx.c               | 2 ++
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc b/config/defconfig_arm64-armv8a-linuxapp-gcc
index 1a17126..08f282b 100644
--- a/config/defconfig_arm64-armv8a-linuxapp-gcc
+++ b/config/defconfig_arm64-armv8a-linuxapp-gcc
@@ -46,6 +46,6 @@ CONFIG_RTE_EAL_IGB_UIO=n
 
 CONFIG_RTE_LIBRTE_IVSHMEM=n
 CONFIG_RTE_LIBRTE_FM10K_PMD=n
-CONFIG_RTE_LIBRTE_I40E_PMD=n
+CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n
 
 CONFIG_RTE_SCHED_VECTOR=n
diff --git a/doc/guides/nics/features/i40e.ini b/doc/guides/nics/features/i40e.ini
index fb3fb60..0d143bc 100644
--- a/doc/guides/nics/features/i40e.ini
+++ b/doc/guides/nics/features/i40e.ini
@@ -45,3 +45,4 @@ Linux UIO            = Y
 Linux VFIO           = Y
 x86-32               = Y
 x86-64               = Y
+ARMv8                = Y
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c
index 554d167..57825fb 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -994,6 +994,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
 					I40E_RXD_QW1_STATUS_SHIFT;
 		}
 
+		rte_smp_rmb();
+
 		/* Compute how many status bits were set */
 		for (j = 0, nb_dd = 0; j < I40E_LOOK_AHEAD; j++)
 			nb_dd += s[j] & (1 << I40E_RX_DESC_STATUS_DD_SHIFT);
-- 
2.4.11

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH v3] i40e: enable i40e pmd on ARM platform
  2016-08-05  9:06 ` [dpdk-dev] [PATCH v3] " Jianbo Liu
@ 2016-09-23  1:13   ` Zhang, Qi Z
  2016-09-27 13:39     ` Bruce Richardson
  0 siblings, 1 reply; 12+ messages in thread
From: Zhang, Qi Z @ 2016-09-23  1:13 UTC (permalink / raw)
  To: Jianbo Liu, dev; +Cc: Zhang, Helin, Wu, Jingjing

Hi

> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jianbo Liu
> Sent: Friday, August 5, 2016 5:06 PM
> To: dev@dpdk.org; Zhang, Helin <helin.zhang@intel.com>; Wu, Jingjing
> <jingjing.wu@intel.com>
> Cc: Jianbo Liu <jianbo.liu@linaro.org>
> Subject: [dpdk-dev] [PATCH v3] i40e: enable i40e pmd on ARM platform
> 
> And add read memory barrier to avoid status inconsistency between two RX
> descriptors readings.
> 
> Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>

Acted-by: Zhang Qi <qi.z.zhang@intel.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH v3] i40e: enable i40e pmd on ARM platform
  2016-09-23  1:13   ` Zhang, Qi Z
@ 2016-09-27 13:39     ` Bruce Richardson
  0 siblings, 0 replies; 12+ messages in thread
From: Bruce Richardson @ 2016-09-27 13:39 UTC (permalink / raw)
  To: Zhang, Qi Z; +Cc: Jianbo Liu, dev, Zhang, Helin, Wu, Jingjing

On Fri, Sep 23, 2016 at 01:13:17AM +0000, Zhang, Qi Z wrote:
> Hi
> 
> > -----Original Message-----
> > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Jianbo Liu
> > Sent: Friday, August 5, 2016 5:06 PM
> > To: dev@dpdk.org; Zhang, Helin <helin.zhang@intel.com>; Wu, Jingjing
> > <jingjing.wu@intel.com>
> > Cc: Jianbo Liu <jianbo.liu@linaro.org>
> > Subject: [dpdk-dev] [PATCH v3] i40e: enable i40e pmd on ARM platform
> > 
> > And add read memory barrier to avoid status inconsistency between two RX
> > descriptors readings.
> > 
> > Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
> 
> Acted-by: Zhang Qi <qi.z.zhang@intel.com>
> 
Applied to dpdk-next-net/rel_16_11

/Bruce

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [dpdk-dev] [PATCH v3] i40e: enable i40e pmd on ARM platform
@ 2016-08-10  4:42 Yao, Lei A
  0 siblings, 0 replies; 12+ messages in thread
From: Yao, Lei A @ 2016-08-10  4:42 UTC (permalink / raw)
  To: Jianbo Liu, Xu, Qian Q, Wu, Jingjing; +Cc: dev

Hi, Jianbo

I have tested you patch , this v3 patch didn't impact the performance on X86 platform. 
Non-vector PMD single core performance with patch               :  ~35 Mpps
Non-vector PMD single core performance without patch        :  ~35 Mpps

BRs
Lei

-----Original Message-----
Date: Fri,  5 Aug 2016 14:36:23 +0530
From: Jianbo Liu <jianbo.liu@linaro.org>
To: dev@dpdk.org,	helin.zhang@intel.com,	jingjing.wu@intel.com
Cc: Jianbo Liu <jianbo.liu@linaro.org>
Subject: [dpdk-dev] [PATCH v3] i40e: enable i40e pmd on ARM platform
Message-ID: <1470387983-12713-1-git-send-email-jianbo.liu@linaro.org>

And add read memory barrier to avoid status inconsistency between two RX descriptors readings.

Signed-off-by: Jianbo Liu <jianbo.liu@linaro.org>
---
 config/defconfig_arm64-armv8a-linuxapp-gcc | 2 +-
 doc/guides/nics/features/i40e.ini          | 1 +
 drivers/net/i40e/i40e_rxtx.c               | 2 ++
 3 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/config/defconfig_arm64-armv8a-linuxapp-gcc b/config/defconfig_arm64-armv8a-linuxapp-gcc
index 1a17126..08f282b 100644
--- a/config/defconfig_arm64-armv8a-linuxapp-gcc
+++ b/config/defconfig_arm64-armv8a-linuxapp-gcc
@@ -46,6 +46,6 @@ CONFIG_RTE_EAL_IGB_UIO=n
 
 CONFIG_RTE_LIBRTE_IVSHMEM=n
 CONFIG_RTE_LIBRTE_FM10K_PMD=n
-CONFIG_RTE_LIBRTE_I40E_PMD=n
+CONFIG_RTE_LIBRTE_I40E_INC_VECTOR=n
 
 CONFIG_RTE_SCHED_VECTOR=n
diff --git a/doc/guides/nics/features/i40e.ini b/doc/guides/nics/features/i40e.ini
index fb3fb60..0d143bc 100644
--- a/doc/guides/nics/features/i40e.ini
+++ b/doc/guides/nics/features/i40e.ini
@@ -45,3 +45,4 @@ Linux UIO            = Y
 Linux VFIO           = Y
 x86-32               = Y
 x86-64               = Y
+ARMv8                = Y
diff --git a/drivers/net/i40e/i40e_rxtx.c b/drivers/net/i40e/i40e_rxtx.c index 554d167..57825fb 100644
--- a/drivers/net/i40e/i40e_rxtx.c
+++ b/drivers/net/i40e/i40e_rxtx.c
@@ -994,6 +994,8 @@ i40e_rx_scan_hw_ring(struct i40e_rx_queue *rxq)
 					I40E_RXD_QW1_STATUS_SHIFT;
 		}
 
+		rte_smp_rmb();
+
 		/* Compute how many status bits were set */
 		for (j = 0, nb_dd = 0; j < I40E_LOOK_AHEAD; j++)
 			nb_dd += s[j] & (1 << I40E_RX_DESC_STATUS_DD_SHIFT);
--
2.4.11

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-09-27 13:40 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-08-02  6:58 [dpdk-dev] [PATCH] i40e: enable i40e pmd on ARM platform Jianbo Liu
     [not found] ` <82F45D86ADE5454A95A89742C8D1410E0330A4B6@shsmsx102.ccr.corp.intel.com>
2016-08-03  3:26   ` Yao, Lei A
2016-08-03  6:02     ` Jianbo Liu
2016-08-03  7:58       ` Thomas Monjalon
2016-08-03  9:33         ` Jianbo Liu
2016-08-03  8:29       ` Ananyev, Konstantin
2016-08-03  9:36         ` Jianbo Liu
2016-08-03 10:12 ` [dpdk-dev] [PATCH v2] " Jianbo Liu
2016-08-05  9:06 ` [dpdk-dev] [PATCH v3] " Jianbo Liu
2016-09-23  1:13   ` Zhang, Qi Z
2016-09-27 13:39     ` Bruce Richardson
2016-08-10  4:42 Yao, Lei A

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).