From patchwork Thu Sep 24 04:02:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Sachin Saxena (OSS)" X-Patchwork-Id: 78633 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id AC322A04B1; Thu, 24 Sep 2020 06:03:06 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7E2201DCF9; Thu, 24 Sep 2020 06:02:44 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70083.outbound.protection.outlook.com [40.107.7.83]) by dpdk.org (Postfix) with ESMTP id 5A2C41DCFD for ; Thu, 24 Sep 2020 06:02:30 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ThZzZ86blE5jKDOZDmoCCLOYxtIRbDknMjvGr0Q00QcTPwVvUtbm0BYfh3Wh2iPphznj7zftScwnksVxlGf3GF2rNoN1oJrr8Ua0Gcb5HMBfkJXeAbFGfDYAu35SyiZ18v50xnCVFA7/L5qNRyhZoKEPgropR0LHMCnpwyLYHC/A87+FtROWeCPS+a1nAE86D7fijgRtQERuPf3V0vaTspxjrZh/ETKTPoc4hH0uTlVElEbPB/9pivcwdCd/98rzV8Iaoru+bMIWMTlWxDfUfQQ4VHHWS2scwRbCeF5A5d5SUTTzsHyoqgbf7NIxsTfYphb5trApHbOjXCm+sFtvMg== 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=YeGkjEzBiS8LdZ1xUjHxZfpt34VfgZeeTLP7F/mZSM8=; b=KPOd8shx9MBrk1AOCrqnBjmKJ8KovTO0O4nGx7rZlvjFTfXybi2z9oR3q2ixOwD21U6SZca406lu5hFDYQ87W+1imD3TmEqsdVjgAlsdMZmRaAKRJRg4QKcxL/XWcR+KTCUYexykxtXHOwmeAwEG7zCUG21iFXOH3vRMJWsFO/kQjMKrVGdZdp3CdlHUCnO2QLIOBau+ZS0afM2Rgj5fN4YwcIgU3uvLqqK9qW8KzBx9b0YnVRqGdx0INXa4vLpYcS4P5UK8ZpRDpnC7RdAiU39u5Tj4ezYOM7w+HDshYP8J6rxiJG7MZ8J+3xJT930nOcJm9EWS0iNtFUtHObs5+g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oss.nxp.com; dmarc=pass action=none header.from=oss.nxp.com; dkim=pass header.d=oss.nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=NXP1.onmicrosoft.com; s=selector2-NXP1-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=YeGkjEzBiS8LdZ1xUjHxZfpt34VfgZeeTLP7F/mZSM8=; b=NibgFJXumxwp5JV9mDDMp9hqvPjxROGvCP6M5yvpQFrGWxgLS2/v+Nbn3D79YmmnMs5szk6YJBxU3bOPVUHwrjdN0d01wEYdXjNk+uYNxJmgQbXHh/CCa6uuc9nFeHZNOuoWk3zjsTmT2KETJx2S10+yjpH2cFzuqGN2rdMcHME= Authentication-Results: dpdk.org; dkim=none (message not signed) header.d=none;dpdk.org; dmarc=none action=none header.from=oss.nxp.com; Received: from VI1PR04MB5837.eurprd04.prod.outlook.com (2603:10a6:803:ec::28) by VI1PR04MB5839.eurprd04.prod.outlook.com (2603:10a6:803:e0::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3391.11; Thu, 24 Sep 2020 04:02:29 +0000 Received: from VI1PR04MB5837.eurprd04.prod.outlook.com ([fe80::cc01:9fe2:2544:8a4b]) by VI1PR04MB5837.eurprd04.prod.outlook.com ([fe80::cc01:9fe2:2544:8a4b%7]) with mapi id 15.20.3391.013; Thu, 24 Sep 2020 04:02:29 +0000 From: "Sachin Saxena (OSS)" To: dev@dpdk.org, ferruh.yigit@intel.com Date: Thu, 24 Sep 2020 09:32:07 +0530 Message-Id: <20200924040209.32719-5-sachin.saxena@oss.nxp.com> X-Mailer: git-send-email 2.28.0 In-Reply-To: <20200924040209.32719-1-sachin.saxena@oss.nxp.com> References: <20200911083520.24020-1-sachin.saxena@oss.nxp.com> <20200924040209.32719-1-sachin.saxena@oss.nxp.com> X-ClientProxiedBy: SG2PR02CA0010.apcprd02.prod.outlook.com (2603:1096:3:17::22) To VI1PR04MB5837.eurprd04.prod.outlook.com (2603:10a6:803:ec::28) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from lsv03161.swis.in-blr01.nxp.com (14.142.151.118) by SG2PR02CA0010.apcprd02.prod.outlook.com (2603:1096:3:17::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256) id 15.20.3412.22 via Frontend Transport; Thu, 24 Sep 2020 04:02:27 +0000 X-Mailer: git-send-email 2.28.0 X-Originating-IP: [14.142.151.118] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-HT: Tenant X-MS-Office365-Filtering-Correlation-Id: f3fbe1be-2461-4b01-443f-08d8603ea77e X-MS-TrafficTypeDiagnostic: VI1PR04MB5839: X-MS-Exchange-SharedMailbox-RoutingAgent-Processed: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:2000; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: w4dG3meEzvwUdVT4b4qrILhKgdJ2DHeP+mARCHIUDUGrVUSV5PLFBY9fSZTJFlR4zh7+hrUUvryy+U/DONV5XSu9YJmaByDNVlrf99MZFX3beMjcdzKABVrnj/ufA2Pdb+hfrXRYn4bG3TFmda8X8nzEPai0B+op4pDXesHQ9v7ILwu16qCdpvsmnhMbXhWuUhXwFOOmjhyOePWKpOz0RoIi0qXmClVs7HfEBk3fQP1CM8/wrgi+UrbS2JQ115sauOXJryfaXnfD59WgpYk7Dl3iZp1QzEIhmiPbZctmtnpZtjuAd30vYwP8cViwoGccrqKlg0hIOCI2/Xx8VWFBqMqZoaoxgdHD7Eu67SkVcfXmB9nUASFAh7WEGFe2UQUe X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VI1PR04MB5837.eurprd04.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(396003)(366004)(346002)(136003)(376002)(39860400002)(2616005)(16526019)(83380400001)(186003)(6666004)(478600001)(26005)(316002)(6486002)(8936002)(1006002)(6512007)(66556008)(55236004)(66946007)(52116002)(1076003)(956004)(86362001)(2906002)(66476007)(8676002)(6506007)(30864003)(5660300002)(110426005); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: x+wk6OUTmxL+NJ7kHR3crBu6YOOQePVepHJCtqJSW9gMMjDnqQZyrqpQu8V2RfLxzxKoszB3y0ahMXE+JR9IGmba9liBA9K7KD1XWf7HBvkHXZDluVulbIGe7UQgWpvf7qB60KnCvoyaoHrIsj1+mjL4OODO1ZwF2rdroKMKoCtpubg8LOFjY+TuwQ37yRTDpY4E4hPR1jqkalqt3d6GOMUjW7iVlfJookyoCelmUHO9N8bSCNq6OjvSogHHOL0fEnZXR+r6qC3WL1adl30NtE2RJadXuFjFKCvsCwqeJiDEGS7TOA+l2Q/Fjj53+ARxFfZ9McpuSqdPYj7iuDBoIG8kCvZX9mWUUvrn1IOZ78pgsotxe9DmThWBc4UUkzaxpOTuggYoMW82SHxROCWJ6+uqiNZW3pwVkkDZJGT8T5KhYhoSAVzO0oKQNZH90ybX5ugwaEm2pipXEcwo8vZ5nERetlhaoJzyoa6jrQoUmSWY0+gbv7ZHmatAfWhxi8N8toFYpgQREEAmqoBIx8ZDom5RLH2XlYM99Zkv77qOXXnM6tjKJ5v70ARY1cNunWZF8b5W0Bma6ISLVk2PZHgn54VD9obdkrmqI2bkuBkuctp60okYAjbAXm3e7olGmjE03hZckzB8neCiBQWIiywDGA== X-OriginatorOrg: oss.nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f3fbe1be-2461-4b01-443f-08d8603ea77e X-MS-Exchange-CrossTenant-AuthSource: VI1PR04MB5837.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2020 04:02:29.0272 (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: Zol1bxQu1/eWHDE2Ktfz0fTspFt0JQ9CH50BY1pnjlxvvk8WTxsVypEFYw5ohI0JhMD4GftdOgF24O2/STxxGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR04MB5839 Subject: [dpdk-dev] [PATCH v3 4/6] bus/dpaa: enables 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" From: Sachin Saxena Enables a debugging queue to fetch error (Rx/Tx) packets to user space. Earlier all packets with L3/L4 checksum errors were getting dropped by the hardware. Setting CONFIG_RTE_LIBRTE_DPAA_DEBUG_DRIVER=y is required which enables following enhancements. 1) Enable TX/RX error queues to check the errors packet. 2) Display error frame information(payload, status, paresr result). 3) Send error packets to application Signed-off-by: Jun Yang Signed-off-by: Rohit Raj Signed-off-by: Nipun Gupta 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 | 5 + drivers/bus/dpaa/rte_bus_dpaa_version.map | 2 + drivers/net/dpaa/dpaa_ethdev.c | 22 ++++- drivers/net/dpaa/dpaa_rxtx.c | 109 ++++++++++++++++++---- 6 files changed, 139 insertions(+), 20 deletions(-) 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 = &((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 = container_of(fm_if, struct __fman_if, __if); + unsigned int *fmbm_rcfg, *fmbm_rfsdm, *fmbm_rfsem; + unsigned int val; + + fmbm_rcfg = &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_rcfg; + fmbm_rfsdm = &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_rfsdm; + fmbm_rfsem = &((struct rx_bmi_regs *)__if->bmi_map)->fmbm_rfsem; + + val = 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 */ }; +#define BMI_PORT_CFG_FDOVR 0x02000000 + 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..a3cf77f0e 100644 --- a/drivers/bus/dpaa/include/fsl_fman.h +++ b/drivers/bus/dpaa/include/fsl_fman.h @@ -111,6 +111,7 @@ __rte_internal int fman_if_set_fc_quanta(struct fman_if *fm_if, u16 pause_quanta); /* Set default error fqid on specific interface */ +__rte_internal void fman_if_set_err_fqid(struct fman_if *fm_if, uint32_t err_fqid); /* Get IC transfer params */ @@ -151,6 +152,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); +__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); diff --git a/drivers/bus/dpaa/rte_bus_dpaa_version.map b/drivers/bus/dpaa/rte_bus_dpaa_version.map index f47922c6a..f6028b82d 100644 --- a/drivers/bus/dpaa/rte_bus_dpaa_version.map +++ b/drivers/bus/dpaa/rte_bus_dpaa_version.map @@ -33,6 +33,7 @@ INTERNAL { fman_if_promiscuous_enable; fman_if_reset_mcast_filter_table; fman_if_set_bp; + fman_if_set_err_fqid; fman_if_set_fc_quanta; fman_if_set_fc_threshold; fman_if_set_fdoff; @@ -44,6 +45,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 /* Supported Rx offloads */ static uint64_t dev_rx_offloads_sup = @@ -1895,11 +1896,19 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) dpaa_intf->nb_tx_queues = MAX_DPAA_CORES; #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 = 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 = dpaa_intf; - dpaa_debug_queue_init(&dpaa_intf->debug_queues[ - DPAA_DEBUG_FQ_TX_ERROR], fman_intf->fqid_tx_err); + ret = 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 = dpaa_intf; #endif @@ -1945,7 +1954,12 @@ dpaa_dev_init(struct rte_eth_dev *eth_dev) 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 = _bpid; \ } while (0) -#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 +static void dpaa_display_frame_info(const struct qm_fd *fd, + uint32_t fqid, bool rx) { int ii; char *ptr; + struct annotations_t *annot = rte_dpaa_mem_ptov(fd->addr); + uint8_t format; + + if (!fd->status) { + /* Do not display correct packets.*/ + return; + } + + format = (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 = (char *)&annot->parse; + DISPLAY_PRINT("RX parser result:\r\n"); + for (ii = 0; ii < (int)sizeof(struct dpaa_eth_parse_results_t); + ii++) { + DISPLAY_PRINT("%02x ", ptr[ii]); + if (((ii + 1) % 16) == 0) + DISPLAY_PRINT("\n"); + } + DISPLAY_PRINT("\n"); + } - 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 == qm_fd_sg)) { + /*TBD:S/G display: to be implemented*/ + return; + } - ptr = (char *)rte_dpaa_mem_ptov(fd->addr); + DISPLAY_PRINT("Frame payload:\r\n"); + ptr = (char *)annot; ptr += fd->offset; - printf("%02x ", *ptr); - for (ii = 1; ii < fd->length20; ii++) { - printf("%02x ", *ptr); - if ((ii % 16) == 0) + for (ii = 0; ii < fd->length20; ii++) { + DISPLAY_PRINT("%02x ", ptr[ii]); + if (((ii + 1) % 16) == 0) printf("\n"); - ptr++; } - printf("\n"); + DISPLAY_PRINT("\n"); } #else -#define dpaa_display_frame(a) +#define dpaa_display_frame_info(a, b, c) #endif 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 = %d", offset, length); /* Ignoring case when format != qm_fd_contig */ - dpaa_display_frame(fd); ptr = DPAA_MEMPOOL_PTOV(bp_info, qm_fd_addr(fd)); mbuf = (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, fd = &dqrr[i]->fd; dpaa_intf = fq[0]->dpaa_intf; - format = (fd->opaque & DPAA_FD_FORMAT_MASK) >> DPAA_FD_FORMAT_SHIFT; if (unlikely(format == qm_fd_sg)) { @@ -515,6 +541,7 @@ dpaa_rx_cb_no_prefetch(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, mbuf->next = NULL; rte_mbuf_refcnt_set(mbuf, 1); dpaa_eth_packet_info(mbuf, mbuf->buf_addr); + dpaa_display_frame_info(fd, fq[0]->fqid, true); } } @@ -532,7 +559,6 @@ dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, for (i = 0; i < num_bufs; i++) { fd = &dqrr[i]->fd; dpaa_intf = fq[0]->dpaa_intf; - format = (fd->opaque & DPAA_FD_FORMAT_MASK) >> DPAA_FD_FORMAT_SHIFT; if (unlikely(format == qm_fd_sg)) { @@ -555,6 +581,7 @@ dpaa_rx_cb(struct qman_fq **fq, struct qm_dqrr_entry **dqrr, mbuf->next = NULL; rte_mbuf_refcnt_set(mbuf, 1); dpaa_eth_packet_info(mbuf, mbuf->buf_addr); + dpaa_display_frame_info(fd, fq[0]->fqid, true); } } @@ -653,6 +680,50 @@ dpaa_rx_cb_atomic(void *event, return qman_cb_dqrr_defer; } +#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 = rte_dpaa_portal_init((void *)0); + if (ret) { + DPAA_PMD_ERR("Failure in affining portal"); + return; + } + } + for (i = 0; i <= DPAA_DEBUG_FQ_TX_ERROR; i++) { + debug_fq = &dpaa_intf->debug_queues[i]; + ret = qman_set_vdq(debug_fq, 4, QM_VDQCR_EXACT); + if (ret) + return; + + do { + dq = qman_dequeue(debug_fq); + if (!dq) + continue; + fd = &dq->fd; + if (i == 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 == DPAA_DEBUG_FQ_RX_ERROR); + + mbuf = 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() == RTE_PROC_SECONDARY)) rte_dpaa_bpid_info = fq->bp_array; +#ifdef RTE_LIBRTE_DPAA_DEBUG_DRIVER + if (fq->fqid == ((struct dpaa_if *)fq->dpaa_intf)->rx_queues[0].fqid) + 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); @@ -699,6 +775,7 @@ uint16_t dpaa_eth_queue_rx(void *q, if (!dq) continue; bufs[num_rx++] = 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);