test/mbuf: skip field registration at busy offset

Message ID 20201031143658.1182715-1-thomas@monjalon.net (mailing list archive)
State Accepted, archived
Headers
Series test/mbuf: skip field registration at busy offset |

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK
ci/iol-broadcom-Functional success Functional Testing PASS
ci/iol-broadcom-Performance success Performance Testing PASS
ci/iol-intel-Functional success Functional Testing PASS
ci/iol-intel-Performance success Performance Testing PASS
ci/travis-robot success Travis build: passed
ci/iol-mellanox-Performance success Performance Testing PASS
ci/iol-testing success Testing PASS

Commit Message

Thomas Monjalon Oct. 31, 2020, 2:36 p.m. UTC
  There is a test for dynamic field registration at a specific offset.
Depending on which driver is probed, some dynamic fields may be
already registered at this offset.
This failure is skipped with a warning.

Fixes: 4958ca3a443a ("mbuf: support dynamic fields and flags")
Cc: stable@dpdk.org

Reported-by: David Marchand <david.marchand@redhat.com>
Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
---
 app/test/test_mbuf.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)
  

Comments

David Marchand Oct. 31, 2020, 2:57 p.m. UTC | #1
On Sat, Oct 31, 2020 at 3:37 PM Thomas Monjalon <thomas@monjalon.net> wrote:
>
> There is a test for dynamic field registration at a specific offset.
> Depending on which driver is probed, some dynamic fields may be
> already registered at this offset.
> This failure is skipped with a warning.
>
> Fixes: 4958ca3a443a ("mbuf: support dynamic fields and flags")
> Cc: stable@dpdk.org
>
> Reported-by: David Marchand <david.marchand@redhat.com>
> Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> ---
>  app/test/test_mbuf.c | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c
> index 80d1850da9..3a13cf4e1f 100644
> --- a/app/test/test_mbuf.c
> +++ b/app/test/test_mbuf.c
> @@ -2608,9 +2608,13 @@ test_mbuf_dyn(struct rte_mempool *pktmbuf_pool)
>
>         offset3 = rte_mbuf_dynfield_register_offset(&dynfield3,
>                                 offsetof(struct rte_mbuf, dynfield1[1]));
> -       if (offset3 != offsetof(struct rte_mbuf, dynfield1[1]))
> -               GOTO_FAIL("failed to register dynamic field 3, offset=%d: %s",
> -                       offset3, strerror(errno));
> +       if (offset3 != offsetof(struct rte_mbuf, dynfield1[1])) {
> +               if (rte_errno == EBUSY)
> +                       printf("mbuf test error skipped: dynfield is busy\n");
> +               else
> +                       GOTO_FAIL("failed to register dynamic field 3, offset="
> +                               "%d: %s", offset3, strerror(errno));
> +       }
>
>         printf("dynfield: offset=%d, offset2=%d, offset3=%d\n",
>                 offset, offset2, offset3);
> --
> 2.28.0
>

Reviewed-by: David Marchand <david.marchand@redhat.com>
  
Thomas Monjalon Oct. 31, 2020, 3:04 p.m. UTC | #2
31/10/2020 15:57, David Marchand:
> On Sat, Oct 31, 2020 at 3:37 PM Thomas Monjalon <thomas@monjalon.net> wrote:
> >
> > There is a test for dynamic field registration at a specific offset.
> > Depending on which driver is probed, some dynamic fields may be
> > already registered at this offset.
> > This failure is skipped with a warning.
> >
> > Fixes: 4958ca3a443a ("mbuf: support dynamic fields and flags")
> > Cc: stable@dpdk.org
> >
> > Reported-by: David Marchand <david.marchand@redhat.com>
> > Signed-off-by: Thomas Monjalon <thomas@monjalon.net>
> 
> Reviewed-by: David Marchand <david.marchand@redhat.com>

Applied, thanks
  

Patch

diff --git a/app/test/test_mbuf.c b/app/test/test_mbuf.c
index 80d1850da9..3a13cf4e1f 100644
--- a/app/test/test_mbuf.c
+++ b/app/test/test_mbuf.c
@@ -2608,9 +2608,13 @@  test_mbuf_dyn(struct rte_mempool *pktmbuf_pool)
 
 	offset3 = rte_mbuf_dynfield_register_offset(&dynfield3,
 				offsetof(struct rte_mbuf, dynfield1[1]));
-	if (offset3 != offsetof(struct rte_mbuf, dynfield1[1]))
-		GOTO_FAIL("failed to register dynamic field 3, offset=%d: %s",
-			offset3, strerror(errno));
+	if (offset3 != offsetof(struct rte_mbuf, dynfield1[1])) {
+		if (rte_errno == EBUSY)
+			printf("mbuf test error skipped: dynfield is busy\n");
+		else
+			GOTO_FAIL("failed to register dynamic field 3, offset="
+				"%d: %s", offset3, strerror(errno));
+	}
 
 	printf("dynfield: offset=%d, offset2=%d, offset3=%d\n",
 		offset, offset2, offset3);