From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 4D98BA04C9; Mon, 14 Sep 2020 12:57:52 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 248FCE07; Mon, 14 Sep 2020 12:57:51 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70053.outbound.protection.outlook.com [40.107.7.53]) by dpdk.org (Postfix) with ESMTP id 732E2160 for ; Mon, 14 Sep 2020 12:57:49 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=C6cy5nFkprdgY1ytXso0QRskPyHEMAwkH5IMWuFvQKLAfYWWcy5bvBqZxYcHboKoFJj6vGCzwZzcq3H8OzDBbRcH44r7f1KYCshgsmbJNsBnBxUacj7eG65Di0NFIKzIkSuc9JXL7RbUEtdqkW/E2Plh1dnTDutfr7c3vX8zDdWA4g6gtVx0kT4DebAxRc4BOwiTxbxP2hB+IsYwbwAg4Y2457fDnFBconlhkhDmFIebKbNLnstAAkJhtY6TihRQK84/RFo8/4mZbVLveaFXkalmQvqLBvARxdyLz+ChKUz5Bw2vMpVIgAK0o5X/yL6AU9keOg9JU7EuHOdrNCHDwA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p1MeFXK9uFJzAvfJMNTFeA/AhNT7ldSyBi4hnHhVBzo=; b=Mwoi+IFkqh8FhzALa4N5wF2nrwqi2LYwvOCjuFi0CpEax5wKaklExgiWmKM8+BeQn05P+vzPHnCwCttAuD4960tiBC8628psmxUeotO8y27+8HKfeAjcmNaxtcG4pWNUh7X1x7nOE9UySGbTVRf8bV6ssEsXgmx2sEWsyzZoi5QwRZxNaBujSIjpfSK7dH6scUoVn5/t60xVQ+JeVjjHj0uWxsu8NIxDILeyP0YyI+vNZGkeUh5Bj4eIArZqx4lf0KR+fFouV3xL/s0jwGayFEpl9/ds7OrYQ45iXwBafqeNs+BuYF+ojJPh6sOMf5i8qN6tCIZFFnnR1lNJfvj1bg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p1MeFXK9uFJzAvfJMNTFeA/AhNT7ldSyBi4hnHhVBzo=; b=EaWVA+UW5+i36s4jFjOq9b1VLGWuS6ceRu/dWd/909nYo9JYEf4+ziuNFFFStoIcOaXw0+RYmquNYKHmLnG0NTM8N8k7sO6KMSCVLRs2UirSBot1jWspAyKYD0hMiZHImXCgSizZ4mzYRo+RJtLg9PADg6lz3j26p5V5/d8NVfs= Received: from AM6PR04MB4456.eurprd04.prod.outlook.com (2603:10a6:20b:22::25) by AM6PR04MB4037.eurprd04.prod.outlook.com (2603:10a6:209:49::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3370.17; Mon, 14 Sep 2020 10:57:48 +0000 Received: from AM6PR04MB4456.eurprd04.prod.outlook.com ([fe80::e024:2be5:29c3:31b0]) by AM6PR04MB4456.eurprd04.prod.outlook.com ([fe80::e024:2be5:29c3:31b0%7]) with mapi id 15.20.3370.019; Mon, 14 Sep 2020 10:57:48 +0000 From: Hemant Agrawal To: "Sachin Saxena (OSS)" , "dev@dpdk.org" , "ferruh.yigit@intel.com" Thread-Topic: [PATCH v2 4/8] bus/dpaa: RX/TX error queues Thread-Index: AQHWiBaIh2szZSQqBEKe+7of4WKMaaln+iUw Date: Mon, 14 Sep 2020 10:57:47 +0000 Message-ID: References: <20200911083520.24020-1-sachin.saxena@oss.nxp.com> <20200911083520.24020-5-sachin.saxena@oss.nxp.com> In-Reply-To: <20200911083520.24020-5-sachin.saxena@oss.nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: oss.nxp.com; dkim=none (message not signed) header.d=none;oss.nxp.com; dmarc=none action=none header.from=nxp.com; x-originating-ip: [122.176.3.89] x-ms-publictraffictype: Email x-ms-office365-filtering-ht: Tenant x-ms-office365-filtering-correlation-id: 13d62977-b6ce-4944-80cb-08d8589d046e x-ms-traffictypediagnostic: AM6PR04MB4037: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6430; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MLuIUf+nFJGVj+pISMkNv3Wcdm8CGbMzT8IuuPjVnJjFv2NMYl/dEr+99YDwzMHyB71I9axMK2IDZypN+rBCkyL4MFzSHymSKyaGQkgZyzFNHnRJcodiesyxMpmDiVXV08ah4DH5uxlNPq8gsMdW0mVvMkd0KT6lDaeo3E55cp2cxEyDv4Zn3m6mznRI7YD44rNbSndNmb8Iu3Bk+QjotkSDhcJjXU8SBt/MmVLe8V2OdTYGumDnY1tfr5OBn5bLE283WYV+zJ+Ff7T3piMnBecCAWJRReK0j1b3v5MDKIDw6e2OXCkkrqpjGGDJTzsVWrOHtk7FmwzYQOW9MTq1yA== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:AM6PR04MB4456.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(136003)(366004)(39860400002)(396003)(346002)(376002)(26005)(186003)(316002)(30864003)(71200400001)(8676002)(52536014)(7696005)(83380400001)(86362001)(8936002)(5660300002)(9686003)(2906002)(44832011)(55016002)(110136005)(64756008)(66476007)(76116006)(6506007)(55236004)(53546011)(66446008)(66556008)(33656002)(478600001)(66946007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: pWfTUR6Z18MOgTcWsjRqwrqS1NerI4jeos/o1kOv8rZRg40pvH0ET2HXcLmM9IBHk6+Xry77cQgJE/9W+4QONI++g/uzSYfIA+vrIWahzV0pQkNZZgmvtcaV7G3afJ1VcbSt22dtidg4EAY971+C3RVeCck8oiuqSBDmgEKErIGTVAf84WXBzw4Q6HQ+6f0griv11V/5R1U/BAaSZWiJ8gbNWOHSEcvWmzvtAfdo2SLIuB+WCOhuYgxRsLmIrAvVato+9wLsVAxDFAFwRkj3BoUYG5xQYr1YF6ByeeZuZoS96rwHPFxGG6NUWdNsfXyWCKg15P48XL7TQWIRnFGioLfaAYU4IGuOVpePfMb0Y9/+znAlHxoJzc9cYr/04Hf8a4pZfYB8U5kOT4Bah0J2nMp+Dw6eI3C9iXLmeTDbJ7s9X2ETIAcbejIe9lXGwEAjjRfvOR+QJhi2y0yQr8hnflf9pSx2uZApLWDg7yqPt63RW5Vr3cz0ftMnSTWHnfrQ5R8jOT9yi89N2UjXfiyLnz6x/mYMigiraHqEMw8ESjPDku0Us37J4s6dcCIU9wrVdgzhAKp44CgXthCjMC2b/y1kuCqFEjxRm0eNGs9dXfSzikAzfaKPJUnVDyTHZQu8n5/MywqD6IluPHbKP+NDZA== Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: AM6PR04MB4456.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 13d62977-b6ce-4944-80cb-08d8589d046e X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Sep 2020 10:57:47.9176 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: FJvidmoi7v7HhBdU0g0/SGNzV0vNZZokiNHIRaYkjf5bvgjDF7mUTNBliF5CSMiV1f0SfDX17b4HyY3b/4oM4w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM6PR04MB4037 Subject: Re: [dpdk-dev] [PATCH v2 4/8] bus/dpaa: RX/TX error queues X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" HI,=20 > -----Original Message----- > From: Sachin Saxena (OSS) > Sent: Friday, September 11, 2020 2:05 PM > To: dev@dpdk.org; ferruh.yigit@intel.com > Subject: [PATCH v2 4/8] bus/dpaa: RX/TX error queues >=20 > From: Sachin Saxena >=20 > CONFIG_RTE_LIBRTE_DPAA_DEBUG_DRIVER=3Dy >=20 > 1) Enable TX/RX error queues to check the errors. > 2) Display error frame information(payload, status, paresr result). >=20 [Hemant] The patch description is not clear. Please add clear description= about the patch What is the meaning of CONFIG_RTE_LIBRTE_DPAA_DEBUG_DRIVER=3Dy in descripti= on?=20 What will be equivalent for meson build now?=20 > Signed-off-by: Jun Yang > Signed-off-by: Rohit Raj > Signed-off-by: Sachin Saxena > --- > drivers/bus/dpaa/base/fman/fman_hw.c | 19 ++++ > drivers/bus/dpaa/include/fman.h | 2 + > drivers/bus/dpaa/include/fsl_fman.h | 4 + > drivers/bus/dpaa/rte_bus_dpaa_version.map | 1 + > drivers/net/dpaa/dpaa_ethdev.c | 22 ++++- > drivers/net/dpaa/dpaa_rxtx.c | 109 ++++++++++++++++++---- > 6 files changed, 137 insertions(+), 20 deletions(-) >=20 > diff --git a/drivers/bus/dpaa/base/fman/fman_hw.c > b/drivers/bus/dpaa/base/fman/fman_hw.c > index 9ab8e835d..4ab49f785 100644 > --- a/drivers/bus/dpaa/base/fman/fman_hw.c > +++ b/drivers/bus/dpaa/base/fman/fman_hw.c > @@ -609,3 +609,22 @@ fman_if_discard_rx_errors(struct fman_if *fm_if) > fmbm_rfsdm =3D &((struct rx_bmi_regs *)__if->bmi_map)- > >fmbm_rfsdm; > out_be32(fmbm_rfsdm, 0x010EE3F0); > } > + > +void > +fman_if_receive_rx_errors(struct fman_if *fm_if, > + unsigned int err_eq) > +{ > + struct __fman_if *__if =3D container_of(fm_if, struct __fman_if, __if); > + unsigned int *fmbm_rcfg, *fmbm_rfsdm, *fmbm_rfsem; > + unsigned int val; > + > + fmbm_rcfg =3D &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_rcfg; > + fmbm_rfsdm =3D &((struct rx_bmi_regs *)__if->bmi_map)- > >fmbm_rfsdm; > + fmbm_rfsem =3D &((struct rx_bmi_regs *)__if->bmi_map)- > >fmbm_rfsem; > + > + val =3D in_be32(fmbm_rcfg); > + out_be32(fmbm_rcfg, val | BMI_PORT_CFG_FDOVR); > + > + out_be32(fmbm_rfsdm, 0); > + out_be32(fmbm_rfsem, err_eq); > +} > diff --git a/drivers/bus/dpaa/include/fman.h > b/drivers/bus/dpaa/include/fman.h > index dcf408372..f2b0bf91e 100644 > --- a/drivers/bus/dpaa/include/fman.h > +++ b/drivers/bus/dpaa/include/fman.h > @@ -226,6 +226,8 @@ struct memac_regs { > uint32_t thm; /**< 0x37C tx messages counter */ > }; >=20 > +#define BMI_PORT_CFG_FDOVR 0x02000000 [Hemant] Is it for all kind of error packets or specific type of error pac= kets.=20 > + > struct rx_bmi_regs { > uint32_t fmbm_rcfg; /**< Rx Configuration */ > uint32_t fmbm_rst; /**< Rx Status */ > diff --git a/drivers/bus/dpaa/include/fsl_fman.h > b/drivers/bus/dpaa/include/fsl_fman.h > index 6c87c8db0..3b759c365 100644 > --- a/drivers/bus/dpaa/include/fsl_fman.h > +++ b/drivers/bus/dpaa/include/fsl_fman.h > @@ -151,6 +151,10 @@ void fman_if_set_dnia(struct fman_if *fm_if, > uint32_t nia); > __rte_internal > void fman_if_discard_rx_errors(struct fman_if *fm_if); >=20 > +__rte_internal > +void fman_if_receive_rx_errors(struct fman_if *fm_if, > + unsigned int err_eq); > + > __rte_internal > void fman_if_set_mcast_filter_table(struct fman_if *p); >=20 > diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map > b/drivers/bus/dpaa/rte_bus_dpaa_version.map > index f47922c6a..5b97b6eb2 100644 > --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map > +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map > @@ -44,6 +44,7 @@ INTERNAL { > fman_if_stats_get_all; > fman_if_stats_reset; > fman_ip_rev; > + fman_if_receive_rx_errors; > fsl_qman_fq_portal_create; > netcfg_acquire; > netcfg_release; > diff --git a/drivers/net/dpaa/dpaa_ethdev.c > b/drivers/net/dpaa/dpaa_ethdev.c > index a077b98c3..d5eeb280a 100644 > --- a/drivers/net/dpaa/dpaa_ethdev.c > +++ b/drivers/net/dpaa/dpaa_ethdev.c > @@ -47,6 +47,7 @@ > #include > #include > #include > +#include >=20 > /* Supported Rx offloads */ > static uint64_t dev_rx_offloads_sup =3D > @@ -1895,11 +1896,19 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) > dpaa_intf->nb_tx_queues =3D MAX_DPAA_CORES; >=20 > #ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER > - dpaa_debug_queue_init(&dpaa_intf->debug_queues[ > - DPAA_DEBUG_FQ_RX_ERROR], fman_intf->fqid_rx_err); > + ret =3D dpaa_debug_queue_init(&dpaa_intf->debug_queues > + [DPAA_DEBUG_FQ_RX_ERROR], fman_intf- > >fqid_rx_err); > + if (ret) { > + DPAA_PMD_ERR("DPAA RX ERROR queue init failed!"); > + goto free_tx; > + } > dpaa_intf->debug_queues[DPAA_DEBUG_FQ_RX_ERROR].dpaa_intf > =3D dpaa_intf; > - dpaa_debug_queue_init(&dpaa_intf->debug_queues[ > - DPAA_DEBUG_FQ_TX_ERROR], fman_intf->fqid_tx_err); > + ret =3D dpaa_debug_queue_init(&dpaa_intf->debug_queues > + [DPAA_DEBUG_FQ_TX_ERROR], fman_intf- > >fqid_tx_err); > + if (ret) { > + DPAA_PMD_ERR("DPAA TX ERROR queue init failed!"); > + goto free_tx; > + } > dpaa_intf->debug_queues[DPAA_DEBUG_FQ_TX_ERROR].dpaa_intf > =3D dpaa_intf; > #endif >=20 > @@ -1945,7 +1954,12 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) >=20 > if (!fman_intf->is_shared_mac) { > /* Disable RX mode */ > +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER > + fman_if_receive_rx_errors(fman_intf, > + FM_FD_RX_STATUS_ERR_MASK); > +#else > fman_if_discard_rx_errors(fman_intf); > +#endif > fman_if_disable_rx(fman_intf); > /* Disable promiscuous mode */ > fman_if_promiscuous_disable(fman_intf); > diff --git a/drivers/net/dpaa/dpaa_rxtx.c b/drivers/net/dpaa/dpaa_rxtx.c > index 5303c9b76..6eadbfa14 100644 > --- a/drivers/net/dpaa/dpaa_rxtx.c > +++ b/drivers/net/dpaa/dpaa_rxtx.c > @@ -58,29 +58,57 @@ > (_fd)->bpid =3D _bpid; \ > } while (0) >=20 > -#if (defined RTE_LIBRTE_DPAA_DEBUG_DRIVER) > -static void dpaa_display_frame(const struct qm_fd *fd) > +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER > +#define DISPLAY_PRINT printf [Hemant] is it possible to use rte_log macros here instead of printf?=20 > +static void dpaa_display_frame_info(const struct qm_fd *fd, > + uint32_t fqid, bool rx) > { > int ii; > char *ptr; > + struct annotations_t *annot =3D rte_dpaa_mem_ptov(fd->addr); > + uint8_t format; > + > + if (!fd->status) { > + /* Do not display correct packets.*/ > + return; > + } > + > + format =3D (fd->opaque & DPAA_FD_FORMAT_MASK) >> > + DPAA_FD_FORMAT_SHIFT; > + > + DISPLAY_PRINT("fqid %d bpid %d addr 0x%lx, format %d\r\n", > + fqid, fd->bpid, (unsigned long)fd->addr, fd->format); > + DISPLAY_PRINT("off %d, len %d stat 0x%x\r\n", > + fd->offset, fd->length20, fd->status); > + if (rx) { > + ptr =3D (char *)&annot->parse; > + DISPLAY_PRINT("RX parser result:\r\n"); > + for (ii =3D 0; ii < (int)sizeof(struct dpaa_eth_parse_results_t); > + ii++) { > + DISPLAY_PRINT("%02x ", ptr[ii]); > + if (((ii + 1) % 16) =3D=3D 0) > + DISPLAY_PRINT("\n"); > + } > + DISPLAY_PRINT("\n"); > + } >=20 > - printf("%s::bpid %x addr %08x%08x, format %d off %d, len %d > stat %x\n", > - __func__, fd->bpid, fd->addr_hi, fd->addr_lo, fd->format, > - fd->offset, fd->length20, fd->status); > + if (unlikely(format =3D=3D qm_fd_sg)) { > + /*TBD:S/G display: to be implemented*/ > + return; > + } >=20 > - ptr =3D (char *)rte_dpaa_mem_ptov(fd->addr); > + DISPLAY_PRINT("Frame payload:\r\n"); > + ptr =3D (char *)annot; > ptr +=3D fd->offset; > - printf("%02x ", *ptr); > - for (ii =3D 1; ii < fd->length20; ii++) { > - printf("%02x ", *ptr); > - if ((ii % 16) =3D=3D 0) > + for (ii =3D 0; ii < fd->length20; ii++) { > + DISPLAY_PRINT("%02x ", ptr[ii]); > + if (((ii + 1) % 16) =3D=3D 0) > printf("\n"); > - ptr++; > } > - printf("\n"); > + DISPLAY_PRINT("\n"); > } > #else > -#define dpaa_display_frame(a) > +#define dpaa_display_frame_info(a, b, c) > #endif >=20 > static inline void dpaa_slow_parsing(struct rte_mbuf *m __rte_unused, > @@ -377,7 +405,6 @@ dpaa_eth_fd_to_mbuf(const struct qm_fd *fd, > uint32_t ifid) > DPAA_DP_LOG(DEBUG, " FD--->MBUF off %d len =3D %d", offset, > length); >=20 > /* Ignoring case when format !=3D qm_fd_contig */ > - dpaa_display_frame(fd); > ptr =3D DPAA_MEMPOOL_PTOV(bp_info, qm_fd_addr(fd)); >=20 > mbuf =3D (struct rte_mbuf *)((char *)ptr - bp_info->meta_data_size); > @@ -492,7 +519,6 @@ dpaa_rx_cb_no_prefetch(struct qman_fq **fq, > struct qm_dqrr_entry **dqrr, >=20 > fd =3D &dqrr[i]->fd; > dpaa_intf =3D fq[0]->dpaa_intf; > - > format =3D (fd->opaque & DPAA_FD_FORMAT_MASK) >> > DPAA_FD_FORMAT_SHIFT; > if (unlikely(format =3D=3D qm_fd_sg)) { > @@ -515,6 +541,7 @@ dpaa_rx_cb_no_prefetch(struct qman_fq **fq, > struct qm_dqrr_entry **dqrr, > mbuf->next =3D NULL; > rte_mbuf_refcnt_set(mbuf, 1); > dpaa_eth_packet_info(mbuf, mbuf->buf_addr); > + dpaa_display_frame_info(fd, fq[0]->fqid, true); > } > } >=20 > @@ -532,7 +559,6 @@ dpaa_rx_cb(struct qman_fq **fq, struct > qm_dqrr_entry **dqrr, > for (i =3D 0; i < num_bufs; i++) { > fd =3D &dqrr[i]->fd; > dpaa_intf =3D fq[0]->dpaa_intf; > - > format =3D (fd->opaque & DPAA_FD_FORMAT_MASK) >> > DPAA_FD_FORMAT_SHIFT; > if (unlikely(format =3D=3D qm_fd_sg)) { > @@ -555,6 +581,7 @@ dpaa_rx_cb(struct qman_fq **fq, struct > qm_dqrr_entry **dqrr, > mbuf->next =3D NULL; > rte_mbuf_refcnt_set(mbuf, 1); > dpaa_eth_packet_info(mbuf, mbuf->buf_addr); > + dpaa_display_frame_info(fd, fq[0]->fqid, true); > } > } >=20 > @@ -653,6 +680,50 @@ dpaa_rx_cb_atomic(void *event, > return qman_cb_dqrr_defer; > } >=20 > +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER > +static inline void dpaa_eth_err_queue(struct dpaa_if *dpaa_intf) > +{ > + struct rte_mbuf *mbuf; > + struct qman_fq *debug_fq; > + int ret, i; > + struct qm_dqrr_entry *dq; > + struct qm_fd *fd; > + > + if (unlikely(!RTE_PER_LCORE(dpaa_io))) { > + ret =3D rte_dpaa_portal_init((void *)0); > + if (ret) { > + DPAA_PMD_ERR("Failure in affining portal"); > + return; > + } > + } > + for (i =3D 0; i <=3D DPAA_DEBUG_FQ_TX_ERROR; i++) { > + debug_fq =3D &dpaa_intf->debug_queues[i]; > + ret =3D qman_set_vdq(debug_fq, 4, QM_VDQCR_EXACT); > + if (ret) > + return; > + > + do { > + dq =3D qman_dequeue(debug_fq); > + if (!dq) > + continue; > + fd =3D &dq->fd; > + if (i =3D=3D DPAA_DEBUG_FQ_RX_ERROR) > + DPAA_PMD_ERR("RX ERROR status: > 0x%08x", > + fd->status); > + else > + DPAA_PMD_ERR("TX ERROR status: > 0x%08x", > + fd->status); > + dpaa_display_frame_info(fd, debug_fq->fqid, > + i =3D=3D DPAA_DEBUG_FQ_RX_ERROR); > + > + mbuf =3D dpaa_eth_fd_to_mbuf(fd, dpaa_intf->ifid); > + rte_pktmbuf_free(mbuf); > + qman_dqrr_consume(debug_fq, dq); > + } while (debug_fq->flags & QMAN_FQ_STATE_VDQCR); > + } > +} > +#endif > + > uint16_t dpaa_eth_queue_rx(void *q, > struct rte_mbuf **bufs, > uint16_t nb_bufs) > @@ -667,6 +738,11 @@ uint16_t dpaa_eth_queue_rx(void *q, > rte_eal_process_type() =3D=3D > RTE_PROC_SECONDARY)) > rte_dpaa_bpid_info =3D fq->bp_array; >=20 > +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER > + if (fq->fqid =3D=3D ((struct dpaa_if *)fq->dpaa_intf)->rx_queues[0].fqi= d) > + dpaa_eth_err_queue((struct dpaa_if *)fq->dpaa_intf); > +#endif > + > if (likely(fq->is_static)) > return dpaa_eth_queue_portal_rx(fq, bufs, nb_bufs); >=20 > @@ -699,6 +775,7 @@ uint16_t dpaa_eth_queue_rx(void *q, > if (!dq) > continue; > bufs[num_rx++] =3D dpaa_eth_fd_to_mbuf(&dq->fd, ifid); > + dpaa_display_frame_info(&dq->fd, fq->fqid, true); > qman_dqrr_consume(fq, dq); > } while (fq->flags & QMAN_FQ_STATE_VDQCR); >=20 > -- > 2.28.0