diff --git a/target/linux/layerscape/patches-5.4/701-net-0221-soc-fsl-dpio-Adding-QMAN-multiple-enqueue-interface.patch b/target/linux/layerscape/patches-5.4/701-net-0221-soc-fsl-dpio-Adding-QMAN-multiple-enqueue-interface.patch
new file mode 100644
index 0000000..3c76eef
--- /dev/null
+++ b/target/linux/layerscape/patches-5.4/701-net-0221-soc-fsl-dpio-Adding-QMAN-multiple-enqueue-interface.patch
@@ -0,0 +1,304 @@
+From 1da6ba0350da068295d5bc5556193b21da38a388 Mon Sep 17 00:00:00 2001
+From: Youri Querry <youri.querry_1@nxp.com>
+Date: Mon, 4 Nov 2019 10:32:37 -0500
+Subject: [PATCH] soc: fsl: dpio: Adding QMAN multiple enqueue interface.
+
+Update of QMAN the interface to enqueue frame. We now support multiple
+enqueue (qbman_swp_enqueue_multiple) and multiple enqueue with
+a table of descriptor (qbman_swp_enqueue_multiple_desc).
+
+Signed-off-by: Youri Querry <youri.querry_1@nxp.com>
+---
+ drivers/soc/fsl/dpio/dpio-service.c | 69 ++++++++++++++++++++++++++++++++--
+ drivers/soc/fsl/dpio/qbman-portal.c | 75 +++++++++++++++++++++++++++++++------
+ drivers/soc/fsl/dpio/qbman-portal.h | 17 +++++++++
+ include/soc/fsl/dpaa2-io.h          |  6 ++-
+ 4 files changed, 152 insertions(+), 15 deletions(-)
+
+--- a/drivers/soc/fsl/dpio/dpio-service.c
++++ b/drivers/soc/fsl/dpio/dpio-service.c
+@@ -1,7 +1,7 @@
+ // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+ /*
+  * Copyright 2014-2016 Freescale Semiconductor Inc.
+- * Copyright 2016 NXP
++ * Copyright 2016-2019 NXP
+  *
+  */
+ #include <linux/types.h>
+@@ -437,6 +437,69 @@ int dpaa2_io_service_enqueue_fq(struct d
+ EXPORT_SYMBOL(dpaa2_io_service_enqueue_fq);
+ 
+ /**
++ * dpaa2_io_service_enqueue_multiple_fq() - Enqueue multiple frames
++ * to a frame queue using one fqid.
++ * @d: the given DPIO service.
++ * @fqid: the given frame queue id.
++ * @fd: the frame descriptor which is enqueued.
++ * @nb: number of frames to be enqueud
++ *
++ * Return 0 for successful enqueue, -EBUSY if the enqueue ring is not ready,
++ * or -ENODEV if there is no dpio service.
++ */
++int dpaa2_io_service_enqueue_multiple_fq(struct dpaa2_io *d,
++				u32 fqid,
++				const struct dpaa2_fd *fd,
++				int nb)
++{
++	struct qbman_eq_desc ed;
++
++	d = service_select(d);
++	if (!d)
++		return -ENODEV;
++
++	qbman_eq_desc_clear(&ed);
++	qbman_eq_desc_set_no_orp(&ed, 0);
++	qbman_eq_desc_set_fq(&ed, fqid);
++
++	return qbman_swp_enqueue_multiple(d->swp, &ed, fd, 0, nb);
++}
++EXPORT_SYMBOL(dpaa2_io_service_enqueue_multiple_fq);
++
++/**
++ * dpaa2_io_service_enqueue_multiple_desc_fq() - Enqueue multiple frames
++ * to different frame queue using a list of fqids.
++ * @d: the given DPIO service.
++ * @fqid: the given list of frame queue ids.
++ * @fd: the frame descriptor which is enqueued.
++ * @nb: number of frames to be enqueud
++ *
++ * Return 0 for successful enqueue, -EBUSY if the enqueue ring is not ready,
++ * or -ENODEV if there is no dpio service.
++ */
++int dpaa2_io_service_enqueue_multiple_desc_fq(struct dpaa2_io *d,
++				u32 *fqid,
++				const struct dpaa2_fd *fd,
++				int nb)
++{
++	int i;
++	struct qbman_eq_desc ed[32];
++
++	d = service_select(d);
++	if (!d)
++		return -ENODEV;
++
++	for (i = 0; i < nb; i++) {
++		qbman_eq_desc_clear(&ed[i]);
++		qbman_eq_desc_set_no_orp(&ed[i], 0);
++		qbman_eq_desc_set_fq(&ed[i], fqid[i]);
++	}
++
++	return qbman_swp_enqueue_multiple_desc(d->swp, &ed[0], fd, nb);
++}
++EXPORT_SYMBOL(dpaa2_io_service_enqueue_multiple_desc_fq);
++
++/**
+  * dpaa2_io_service_enqueue_qd() - Enqueue a frame to a QD.
+  * @d: the given DPIO service.
+  * @qdid: the given queuing destination id.
+@@ -530,7 +593,7 @@ EXPORT_SYMBOL_GPL(dpaa2_io_service_acqui
+ 
+ /**
+  * dpaa2_io_store_create() - Create the dma memory storage for dequeue result.
+- * @max_frames: the maximum number of dequeued result for frames, must be <= 16.
++ * @max_frames: the maximum number of dequeued result for frames, must be <= 32.
+  * @dev:        the device to allow mapping/unmapping the DMAable region.
+  *
+  * The size of the storage is "max_frames*sizeof(struct dpaa2_dq)".
+@@ -545,7 +608,7 @@ struct dpaa2_io_store *dpaa2_io_store_cr
+ 	struct dpaa2_io_store *ret;
+ 	size_t size;
+ 
+-	if (!max_frames || (max_frames > 16))
++	if (!max_frames || (max_frames > 32))
+ 		return NULL;
+ 
+ 	ret = kmalloc(sizeof(*ret), GFP_KERNEL);
+--- a/drivers/soc/fsl/dpio/qbman-portal.c
++++ b/drivers/soc/fsl/dpio/qbman-portal.c
+@@ -1,7 +1,7 @@
+ // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause)
+ /*
+  * Copyright (C) 2014-2016 Freescale Semiconductor, Inc.
+- * Copyright 2016 NXP
++ * Copyright 2016-2019 NXP
+  *
+  */
+ 
+@@ -86,7 +86,7 @@ enum qbman_sdqcr_fc {
+ 
+ #define dccvac(p) { asm volatile("dc cvac, %0;" : : "r" (p) : "memory"); }
+ #define dcivac(p) { asm volatile("dc ivac, %0" : : "r"(p) : "memory"); }
+-static inline void qbman_inval_prefetch(struct qbman_swp *p, uint32_t offset)
++static inline void qbman_inval_prefetch(struct qbman_swp *p, u32 offset)
+ {
+ 	dcivac(p->addr_cena + offset);
+ 	prefetch(p->addr_cena + offset);
+@@ -158,7 +158,7 @@ static inline u32 qbman_set_swp_cfg(u8 m
+  */
+ struct qbman_swp *qbman_swp_init(const struct qbman_swp_desc *d)
+ {
+-	struct qbman_swp *p = kmalloc(sizeof(*p), GFP_KERNEL);
++	struct qbman_swp *p = kzalloc(sizeof(*p), GFP_KERNEL);
+ 	u32 reg;
+ 
+ 	if (!p)
+@@ -380,7 +380,6 @@ enum qb_enqueue_commands {
+ };
+ 
+ #define QB_ENQUEUE_CMD_ORP_ENABLE_SHIFT      2
+-#define QB_ENQUEUE_CMD_IRQ_ON_DISPATCH_SHIFT 3
+ #define QB_ENQUEUE_CMD_TARGET_TYPE_SHIFT     4
+ 
+ /**
+@@ -508,7 +507,7 @@ static inline void qbman_write_eqcr_am_r
+ int qbman_swp_enqueue(struct qbman_swp *s, const struct qbman_eq_desc *d,
+ 		      const struct dpaa2_fd *fd)
+ {
+-	struct qbman_eq_desc *p;
++	struct qbman_eq_desc_with_fd *p;
+ 	u32 eqar = qbman_read_register(s, QBMAN_CINH_SWP_EQAR);
+ 
+ 	if (!EQAR_SUCCESS(eqar))
+@@ -522,19 +521,19 @@ int qbman_swp_enqueue(struct qbman_swp *
+ 	 * desc.orpid address alignment = 4
+ 	 * desc.tgtid address alignment = 8
+ 	 */
+-	p->dca = d->dca;
+-	p->seqnum = d->seqnum;
+-	p->orpid = d->orpid;
+-	memcpy(&p->tgtid, &d->tgtid, 24);
++	p->desc.dca = d->dca;
++	p->desc.seqnum = d->seqnum;
++	p->desc.orpid = d->orpid;
++	memcpy(&p->desc.tgtid, &d->tgtid, 24);
+ 	memcpy(&p->fd, fd, sizeof(*fd));
+ 
+ 	if ((s->desc->qman_version & QMAN_REV_MASK) < QMAN_REV_5000) {
+ 		/* Set the verb byte, have to substitute in the valid-bit */
+ 		dma_wmb();
+-		p->verb = d->verb | EQAR_VB(eqar);
++		p->desc.verb = d->verb | EQAR_VB(eqar);
+ 		dccvac(p);
+ 	} else {
+-		p->verb = d->verb | EQAR_VB(eqar);
++		p->desc.verb = d->verb | EQAR_VB(eqar);
+ 		dma_wmb();
+ 		qbman_write_eqcr_am_rt_register(s, EQAR_IDX(eqar));
+ 	}
+@@ -542,6 +541,60 @@ int qbman_swp_enqueue(struct qbman_swp *
+ 	return 0;
+ }
+ 
++/**
++ * qbman_swp_enqueue_multiple() - Issue a multi enqueue command
++ * using one enqueue descriptor
++ * @s:  the software portal used for enqueue
++ * @d:  the enqueue descriptor
++ * @fd: table pointer of frame descriptor table to be enqueued
++ * @flags: table pointer of flags, not used for the moment
++ * @num_frames: number of fd to be enqueued
++ *
++ * Return the number of fd enqueued, or a negative error number.
++ */
++int qbman_swp_enqueue_multiple(struct qbman_swp *s,
++			       const struct qbman_eq_desc *d,
++			       const struct dpaa2_fd *fd,
++			       uint32_t *flags,
++			       int num_frames)
++{
++	int count = 0;
++
++	while (count < num_frames) {
++		if (qbman_swp_enqueue(s, d, fd) != 0)
++			break;
++		count++;
++	}
++
++	return count;
++}
++
++/**
++ * qbman_swp_enqueue_multiple_desc() - Issue a multi enqueue command
++ * using multiple enqueue descriptor
++ * @s:  the software portal used for enqueue
++ * @d:  table of minimal enqueue descriptor
++ * @fd: table pointer of frame descriptor table to be enqueued
++ * @num_frames: number of fd to be enqueued
++ *
++ * Return the number of fd enqueued, or a negative error number.
++ */
++int qbman_swp_enqueue_multiple_desc(struct qbman_swp *s,
++				    const struct qbman_eq_desc *d,
++				    const struct dpaa2_fd *fd,
++				    int num_frames)
++{
++	int count = 0;
++
++	while (count < num_frames) {
++		if (qbman_swp_enqueue(s, &(d[count]), fd) != 0)
++			break;
++		count++;
++	}
++
++	return count;
++}
++
+ /* Static (push) dequeue */
+ 
+ /**
+--- a/drivers/soc/fsl/dpio/qbman-portal.h
++++ b/drivers/soc/fsl/dpio/qbman-portal.h
+@@ -88,6 +88,10 @@ struct qbman_eq_desc {
+ 	u8 wae;
+ 	u8 rspid;
+ 	__le64 rsp_addr;
++};
++
++struct qbman_eq_desc_with_fd {
++	struct qbman_eq_desc desc;
+ 	u8 fd[32];
+ };
+ 
+@@ -205,6 +209,19 @@ void *qbman_swp_mc_start(struct qbman_sw
+ void qbman_swp_mc_submit(struct qbman_swp *p, void *cmd, u8 cmd_verb);
+ void *qbman_swp_mc_result(struct qbman_swp *p);
+ 
++int
++qbman_swp_enqueue_multiple(struct qbman_swp *s,
++			   const struct qbman_eq_desc *d,
++			   const struct dpaa2_fd *fd,
++			   uint32_t *flags,
++			   int num_frames);
++
++int
++qbman_swp_enqueue_multiple_desc(struct qbman_swp *s,
++				const struct qbman_eq_desc *d,
++				const struct dpaa2_fd *fd,
++				int num_frames);
++
+ /**
+  * qbman_result_is_DQ() - check if the dequeue result is a dequeue response
+  * @dq: the dequeue result to be checked
+--- a/include/soc/fsl/dpaa2-io.h
++++ b/include/soc/fsl/dpaa2-io.h
+@@ -1,7 +1,7 @@
+ /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */
+ /*
+  * Copyright 2014-2016 Freescale Semiconductor Inc.
+- * Copyright 2017 NXP
++ * Copyright 2017-2019 NXP
+  *
+  */
+ #ifndef __FSL_DPAA2_IO_H
+@@ -109,6 +109,10 @@ int dpaa2_io_service_pull_channel(struct
+ 
+ int dpaa2_io_service_enqueue_fq(struct dpaa2_io *d, u32 fqid,
+ 				const struct dpaa2_fd *fd);
++int dpaa2_io_service_enqueue_multiple_fq(struct dpaa2_io *d, u32 fqid,
++				const struct dpaa2_fd *fd, int number_of_frame);
++int dpaa2_io_service_enqueue_multiple_desc_fq(struct dpaa2_io *d, u32 *fqid,
++				const struct dpaa2_fd *fd, int number_of_frame);
+ int dpaa2_io_service_enqueue_qd(struct dpaa2_io *d, u32 qdid, u8 prio,
+ 				u16 qdbin, const struct dpaa2_fd *fd);
+ int dpaa2_io_service_release(struct dpaa2_io *d, u16 bpid,
