From patchwork Fri Apr 12 11:01:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52685 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 108AC5F2A; Fri, 12 Apr 2019 13:01:19 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50082.outbound.protection.outlook.com [40.107.5.82]) by dpdk.org (Postfix) with ESMTP id 89B815F1F for ; Fri, 12 Apr 2019 13:01:16 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aMeL2NkgOJztQsfiUW90o3whi1/DaKlNeFIddYr1z8A=; b=Er7kdn/A1tYfkzGLZFtp+TIGoqajHyTYV3iYfT5xYygnxr0aW+gR3J8A/9H23n6d4pI9m9GWOKrdRkKYtbxQZk00yEmcxnG9ge5c9E/GG2QR4UYS8LQKByY2VH7AsZlFGzn98BCHtIOskOyuXJ8C/6aQIACNO5g2+ncfUm1pXXs= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6510.eurprd04.prod.outlook.com (20.179.233.160) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.17; Fri, 12 Apr 2019 11:01:15 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:15 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 01/13] net/enetc: support physical addressing mode Thread-Index: AQHU8R8MXs3069Jby0uwgRBpIrd3Eg== Date: Fri, 12 Apr 2019 11:01:14 +0000 Message-ID: <20190412105105.24351-2-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: ad436cb3-5c77-408b-faeb-08d6bf362e28 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6510; x-ms-traffictypediagnostic: VE1PR04MB6510: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(396003)(346002)(136003)(376002)(39860400002)(189003)(199004)(4326008)(14454004)(6486002)(2501003)(71200400001)(53936002)(6512007)(71190400001)(5660300002)(86362001)(6436002)(106356001)(52116002)(105586002)(2906002)(97736004)(3846002)(99286004)(6116002)(446003)(68736007)(316002)(50226002)(476003)(2616005)(11346002)(81156014)(81166006)(6506007)(478600001)(186003)(26005)(102836004)(8676002)(386003)(36756003)(110136005)(486006)(7736002)(8936002)(305945005)(76176011)(1076003)(25786009)(72206003)(256004)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6510; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: VLAtWqj46RczCVzd2IaTnkv1WRmrx+c4z/d3ku9b55dZBX8cGJ4EaCrSQvfMBqs4twwGUa4RWxJ8ccAXi0qf3ggjbrAvPicyUs2NdnHT6kKLrZWfXTdVz4Tu9BUcMvK1fsGwh+8HHkQX4lAx2JAOMXGLetNgOf+XrnYzVNRzQSl60ytkK3GrKpbpK6Dn8EV1aAmi2fv0PyD5vIOcxSiFeWd5zGter8KKZAkRkyx0IWD8MD+moz//Z5B0YY8j2u0lD02VDFnvvuwOy7JdV5+sZTAOmCz2G2dbIN0s48GVCrAWzTXNQMaMfL4qfyBxiQNDp83SX6RrdR71N3lu7stvAVOQO85pRU+19BNRuhiunXcljH3j2nuRNECoqu3KQ+7k89DxxXvy3mu+tbuXy4Q7KD3gvhrlSTsIHS3kYj722/s= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: ad436cb3-5c77-408b-faeb-08d6bf362e28 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:14.9595 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6510 Subject: [dpdk-dev] [PATCH v3 01/13] net/enetc: support physical addressing mode 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" Support added for physical addressing mode and change driver flags to don't care. Signed-off-by: Gagandeep Singh --- drivers/net/enetc/enetc_ethdev.c | 22 ++++++++++++---------- drivers/net/enetc/enetc_rxtx.c | 6 +++--- 2 files changed, 15 insertions(+), 13 deletions(-) diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index 023fe75..7a9a97d 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2018 NXP + * Copyright 2018-2019 NXP */ #include @@ -334,14 +334,15 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, enetc_setup_txbdr(struct enetc_hw *hw, struct enetc_bdr *tx_ring) { int idx = tx_ring->index; - uintptr_t base_addr; uint32_t tbmr; + phys_addr_t bd_address; - base_addr = (uintptr_t)tx_ring->bd_base; + bd_address = (phys_addr_t) + rte_mem_virt2iova((const void *)tx_ring->bd_base); enetc_txbdr_wr(hw, idx, ENETC_TBBAR0, - lower_32_bits((uint64_t)base_addr)); + lower_32_bits((uint64_t)bd_address)); enetc_txbdr_wr(hw, idx, ENETC_TBBAR1, - upper_32_bits((uint64_t)base_addr)); + upper_32_bits((uint64_t)bd_address)); enetc_txbdr_wr(hw, idx, ENETC_TBLENR, ENETC_RTBLENR_LEN(tx_ring->bd_count)); @@ -478,14 +479,15 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, struct rte_mempool *mb_pool) { int idx = rx_ring->index; - uintptr_t base_addr; uint16_t buf_size; + phys_addr_t bd_address; - base_addr = (uintptr_t)rx_ring->bd_base; + bd_address = (phys_addr_t) + rte_mem_virt2iova((const void *)rx_ring->bd_base); enetc_rxbdr_wr(hw, idx, ENETC_RBBAR0, - lower_32_bits((uint64_t)base_addr)); + lower_32_bits((uint64_t)bd_address)); enetc_rxbdr_wr(hw, idx, ENETC_RBBAR1, - upper_32_bits((uint64_t)base_addr)); + upper_32_bits((uint64_t)bd_address)); enetc_rxbdr_wr(hw, idx, ENETC_RBLENR, ENETC_RTBLENR_LEN(rx_ring->bd_count)); @@ -612,7 +614,7 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, static struct rte_pci_driver rte_enetc_pmd = { .id_table = pci_id_enetc_map, - .drv_flags = RTE_PCI_DRV_NEED_MAPPING | RTE_PCI_DRV_IOVA_AS_VA, + .drv_flags = RTE_PCI_DRV_NEED_MAPPING, .probe = enetc_pci_probe, .remove = enetc_pci_remove, }; diff --git a/drivers/net/enetc/enetc_rxtx.c b/drivers/net/enetc/enetc_rxtx.c index 631e243..a31a387 100644 --- a/drivers/net/enetc/enetc_rxtx.c +++ b/drivers/net/enetc/enetc_rxtx.c @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2018 NXP + * Copyright 2018-2019 NXP */ #include @@ -64,7 +64,7 @@ txbd->buf_len = txbd->frm_len; txbd->flags = rte_cpu_to_le_16(ENETC_TXBD_FLAGS_F); txbd->addr = (uint64_t)(uintptr_t) - rte_cpu_to_le_64((size_t)tx_swbd->buffer_addr->buf_addr + + rte_cpu_to_le_64((size_t)tx_swbd->buffer_addr->buf_iova + tx_swbd->buffer_addr->data_off); i++; start++; @@ -91,7 +91,7 @@ rx_swbd->buffer_addr = rte_cpu_to_le_64(rte_mbuf_raw_alloc(rx_ring->mb_pool)); rxbd->w.addr = (uint64_t)(uintptr_t) - rx_swbd->buffer_addr->buf_addr + + rx_swbd->buffer_addr->buf_iova + rx_swbd->buffer_addr->data_off; /* clear 'R" as well */ rxbd->r.lstatus = 0; From patchwork Fri Apr 12 11:01:18 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52686 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id AF34E5F36; Fri, 12 Apr 2019 13:01:23 +0200 (CEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-eopbgr60051.outbound.protection.outlook.com [40.107.6.51]) by dpdk.org (Postfix) with ESMTP id DC9435F2E; Fri, 12 Apr 2019 13:01:19 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LdndbigwSJ4N1aKDZnR7kgB4LdQTvSTAowQ+vgENn5Y=; b=cIJuxUOq9cECN5CDqThlfoM4NB5vBN/WtfbTacfc8SbkwvMpk9qXAnMnhVb4Ekpxl0whkUmQpFJL4rqKZHkxwQUy+nhLYfemd5F5xyLBK1Gqm//yzTY10q9gUkrbpeSEeYf1ER9jIVOyzX8UJcdnxYjDRoDFhFxLRVX7oYzZMxE= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6510.eurprd04.prod.outlook.com (20.179.233.160) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.17; Fri, 12 Apr 2019 11:01:18 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:18 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh , "stable@dpdk.org" Thread-Topic: [PATCH v3 02/13] net/enetc: fix SMMU unhandled context fault Thread-Index: AQHU8R8OE/C5LXfbgkqetnQXmGnoAA== Date: Fri, 12 Apr 2019 11:01:18 +0000 Message-ID: <20190412105105.24351-3-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 59f61dd9-167b-43c1-0655-08d6bf363073 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6510; x-ms-traffictypediagnostic: VE1PR04MB6510: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(396003)(346002)(136003)(376002)(39860400002)(189003)(199004)(4326008)(14454004)(6486002)(2501003)(71200400001)(53936002)(6512007)(71190400001)(5660300002)(86362001)(6436002)(106356001)(52116002)(105586002)(2906002)(97736004)(3846002)(99286004)(6116002)(446003)(54906003)(68736007)(316002)(50226002)(476003)(2616005)(11346002)(81156014)(81166006)(6506007)(478600001)(186003)(26005)(102836004)(8676002)(386003)(36756003)(110136005)(486006)(7736002)(8936002)(305945005)(76176011)(1076003)(25786009)(72206003)(256004)(66066001); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6510; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: oZLfbKhrkdwL1WLl68QXcp8b5h5oXrRsYUg3nqnRuRsmKYY1m/diUU8pUa1B7OMigQtWEKD+aK0EFDmN4U5X0JNQ9O6YEl+SWvtYmqbn+LC34Yy3npZxB1oQLoQNhZ8YUP7vJPtjuuMNcyVP1oVjLN7m6vwGskMDHnO3PFmbsrafjgSgEtAiahHnnbNYnUXAAhQ8h50Laf5F8EJZKy3wu1p53bBs1Nnsj+5Djhxlby6BSBOTGvV7HTapbV15uW9bN1gA6icx1oeAzSqJq2dZledSOh505XtIKgD6QqAPEy9hMWKNscyUaw4GzgomIFdtBfHAakMvkfG7orwgQ+7596iwpB0Xh4wGLr9QIiuJCIdrNuTPcolyCfADMh/VhPHUAmIDrwh2ufl1ZgH2MI93x6Ric+aERmyB9w+kNDIaT5k= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59f61dd9-167b-43c1-0655-08d6bf363073 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:18.8112 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6510 Subject: [dpdk-dev] [PATCH v3 02/13] net/enetc: fix SMMU unhandled context fault 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" First configure ring with BDs properly then enable the ring. Fixes: 469c6111a799 ("net/enetc: enable Rx and Tx") Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh --- drivers/net/enetc/enetc_ethdev.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index 7a9a97d..f1807b9 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -492,15 +492,15 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, ENETC_RTBLENR_LEN(rx_ring->bd_count)); rx_ring->mb_pool = mb_pool; - /* enable ring */ - enetc_rxbdr_wr(hw, idx, ENETC_RBMR, ENETC_RBMR_EN); - enetc_rxbdr_wr(hw, idx, ENETC_RBPIR, 0); rx_ring->rcir = (void *)((size_t)hw->reg + ENETC_BDR(RX, idx, ENETC_RBCIR)); enetc_refill_rx_ring(rx_ring, (enetc_bd_unused(rx_ring))); buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rx_ring->mb_pool) - RTE_PKTMBUF_HEADROOM); enetc_rxbdr_wr(hw, idx, ENETC_RBBSR, buf_size); + /* enable ring */ + enetc_rxbdr_wr(hw, idx, ENETC_RBMR, ENETC_RBMR_EN); + enetc_rxbdr_wr(hw, idx, ENETC_RBPIR, 0); } static int From patchwork Fri Apr 12 11:01:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52687 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 09A25683E; Fri, 12 Apr 2019 13:01:28 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30058.outbound.protection.outlook.com [40.107.3.58]) by dpdk.org (Postfix) with ESMTP id 6FFB15F3C; Fri, 12 Apr 2019 13:01:24 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=TT6/SM0c4ndT25L7i1l2S5YoAgcpYSTVCcL332orcgA=; b=mbt/zMgguEW0I6Q+pyehaYH4oHIxvy3/nNVyXPrVdHNUZVMgc5/srcY9Jd3kMjkQnUopo7D8Aulb5XGHL7W5mrQ+ZaqPWy7QEPfpP/j15K8HPg4IN0My61bZMxV4+3Whc9oyB2b0351mNTW7+Z4+U+QTIUo/Mk60tylM/e+ffoM= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6462.eurprd04.prod.outlook.com (20.179.233.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.21; Fri, 12 Apr 2019 11:01:23 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:23 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh , "thomas@monjalon.net" , "stable@dpdk.org" Thread-Topic: [PATCH v3 03/13] net/enetc: fix big endian build and correct buffer allocation Thread-Index: AQHU8R8Qe8S/Y7ZtWUWVFziBgjJKnA== Date: Fri, 12 Apr 2019 11:01:23 +0000 Message-ID: <20190412105105.24351-4-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 2f35eff2-50cb-4cc3-4948-08d6bf3632fc x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6462; x-ms-traffictypediagnostic: VE1PR04MB6462: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(366004)(396003)(346002)(39860400002)(189003)(199004)(2501003)(186003)(97736004)(7736002)(3846002)(110136005)(99286004)(6116002)(54906003)(102836004)(86362001)(316002)(2616005)(11346002)(476003)(6506007)(446003)(76176011)(305945005)(26005)(1076003)(106356001)(66066001)(486006)(4326008)(105586002)(386003)(478600001)(52116002)(72206003)(50226002)(5660300002)(6436002)(81156014)(6512007)(71200400001)(8936002)(71190400001)(6486002)(68736007)(53936002)(256004)(25786009)(8676002)(81166006)(36756003)(14454004)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6462; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: /q+8jAx7I/yjXGM6l7TqGQSk0MtxEv7bpsM3H9TWaw2k7a2rfU1k8pgGqZUh/PBV5AxuBs04XOoMRYmxcPMA+1rnGd7GFKI0kyG87bW5vd46hFGfn3qb12LMhlk2kjTxdaRUmmpeb3u+WE4jd4/iag1Uaj7kxlLy7T73rZgILt4T+WaWUwMPBjKh49DUVpObHMujbT8DJiNFmYTdjljzI5X1owPHl0fQMjSimn+AKUm1UgF3nB3WncAj0S3JpW3jGMoyZoyhKpJavPPQ0l2bvxGfKLysaMhIHVy3putrhK1y/HTyVPF/KwEJYX/Xfm9z2W9HAizQkrCBuHP5q0TQPak0QWoX+tOStPhA5SpdcEYz5Pbxa3ss3X/+qIm00E5xNGGKmQkbnwenFCbM6EpwgG7AREVEoYnTPTAUyjqnbmI= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f35eff2-50cb-4cc3-4948-08d6bf3632fc X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:23.1763 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6462 Subject: [dpdk-dev] [PATCH v3 03/13] net/enetc: fix big endian build and correct buffer allocation 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" There was an error at rte_constant_bswap64 while compiling with big endian toolchain. so fixing it by adding type cast. Also, rte_pktmbuf_alloc API should be used to allocate mbuf instead of rte_pktmbuf_raw_alloc to avoid use of stale mbuf information. Fixes: 469c6111a799 ("net/enetc: enable Rx and Tx") Cc: thomas@monjalon.net Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh --- drivers/net/enetc/enetc_rxtx.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/drivers/net/enetc/enetc_rxtx.c b/drivers/net/enetc/enetc_rxtx.c index a31a387..42f16ca 100644 --- a/drivers/net/enetc/enetc_rxtx.c +++ b/drivers/net/enetc/enetc_rxtx.c @@ -88,8 +88,9 @@ rx_swbd = &rx_ring->q_swbd[i]; rxbd = ENETC_RXBD(*rx_ring, i); for (j = 0; j < buff_cnt; j++) { - rx_swbd->buffer_addr = - rte_cpu_to_le_64(rte_mbuf_raw_alloc(rx_ring->mb_pool)); + rx_swbd->buffer_addr = (void *)(uintptr_t) + rte_cpu_to_le_64((uint64_t)(uintptr_t) + rte_pktmbuf_alloc(rx_ring->mb_pool)); rxbd->w.addr = (uint64_t)(uintptr_t) rx_swbd->buffer_addr->buf_iova + rx_swbd->buffer_addr->data_off; From patchwork Fri Apr 12 11:01:26 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52688 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 21E6B7CDA; Fri, 12 Apr 2019 13:01:32 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140081.outbound.protection.outlook.com [40.107.14.81]) by dpdk.org (Postfix) with ESMTP id C48105F62 for ; Fri, 12 Apr 2019 13:01:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Lc7XlH8L2S42CEp6+ahSTJHWjNnLX8i3/wdUswTKs8w=; b=sTCi1cRtUAS9EBlcz+y5RcRk6Nf+VTZzv2ZEQaowI0R4J7GqmhVtZjibzUCVvjQfaNZaB+V9wKsc05ChsSiahv9WbJBG1YdHGNcKf7g/DssICBRyhCj2u2HEPzTz/7pQ2OONR1dSiB0UBU/hOEgeG3xmFX8iL3Vjn1nGbtz8AbY= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6462.eurprd04.prod.outlook.com (20.179.233.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.21; Fri, 12 Apr 2019 11:01:26 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:26 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 04/13] net/enetc: set interface mode for SXGMII Thread-Index: AQHU8R8St6HBnR6je0Cc2vB1a9ayIg== Date: Fri, 12 Apr 2019 11:01:26 +0000 Message-ID: <20190412105105.24351-5-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d9cdf23a-5293-4143-5350-08d6bf36351e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6462; x-ms-traffictypediagnostic: VE1PR04MB6462: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(366004)(396003)(346002)(39860400002)(189003)(199004)(14444005)(2501003)(186003)(97736004)(7736002)(3846002)(110136005)(99286004)(6116002)(102836004)(86362001)(316002)(2616005)(11346002)(476003)(6506007)(446003)(76176011)(305945005)(26005)(1076003)(106356001)(66066001)(486006)(4326008)(105586002)(386003)(478600001)(52116002)(72206003)(50226002)(5660300002)(6436002)(81156014)(6512007)(71200400001)(8936002)(71190400001)(6486002)(68736007)(53936002)(256004)(25786009)(8676002)(81166006)(36756003)(14454004)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6462; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: UJQNW4wceBpC/F1a5lRerXGtU6nNDrk9XFRf2AQdV2XiQoHW3Xr/cd7L1jc5uuaoHgm9ol6JBGN2NLbCjLhnYz0Pdo6pZdeXi6cWl2sWd34MS+bXfbAhGqSdEpeQ+/OJY1GMyNT0Y3Q+hjiwSS91BduVvJe/RCIA+GvkD354LUucCPtWC+wy60i9bQxl/jr9Gcx6zRkNL0mJZkTv37yf7BZDpnC3kj7e3PrvYssc9eKrhd2Fi1jZg9+5ddIPd8j0JtMP4nZEFeLBwjKmfqcPhQjxxPkFecQaIGwvhb5siOJPIx5KhnHXiK1iz5MQ6/F7/ugW1Bf+k6mTirh3uAhDpYrBS4qKi5WHOewYqFnbgQc7+EWMQQnWXj5hMIj6tQfhEoxczxqnGcFdsMpiRK/9x3fMZKiJjWzEyWOw6PLDZfY= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d9cdf23a-5293-4143-5350-08d6bf36351e X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:26.5657 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6462 Subject: [dpdk-dev] [PATCH v3 04/13] net/enetc: set interface mode for SXGMII 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" Support for SXGMII port has been enabled. It will depends on boot loader information passed through IERB. Signed-off-by: Gagandeep Singh --- drivers/net/enetc/base/enetc_hw.h | 13 ++++++++++++- drivers/net/enetc/enetc_ethdev.c | 11 +++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/drivers/net/enetc/base/enetc_hw.h b/drivers/net/enetc/base/enetc_hw.h index f36fa11..e3738a6 100644 --- a/drivers/net/enetc/base/enetc_hw.h +++ b/drivers/net/enetc/base/enetc_hw.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2018 NXP + * Copyright 2018-2019 NXP */ #ifndef _ENETC_HW_H_ @@ -84,6 +84,12 @@ #define ENETC_PSIPMAR1(n) (0x00104 + (n) * 0x20) #define ENETC_PCAPR0 0x00900 #define ENETC_PCAPR1 0x00904 +#define ENETC_PM0_IF_MODE 0x8300 +#define ENETC_PM1_IF_MODE 0x9300 +#define ENETC_PMO_IFM_RG BIT(2) +#define ENETC_PM0_IFM_RLP (BIT(5) | BIT(11)) +#define ENETC_PM0_IFM_RGAUTO (BIT(15) | ENETC_PMO_IFM_RG | BIT(1)) +#define ENETC_PM0_IFM_XGMII BIT(12) #define ENETC_PV0CFGR(n) (0x00920 + (n) * 0x10) #define ENETC_PVCFGR_SET_TXBDR(val) ((val) & 0xff) @@ -109,6 +115,11 @@ #define ENETC_G_EIPBRR0 0x00bf8 #define ENETC_G_EIPBRR1 0x00bfc + +/* MAC Counters */ +#define ENETC_G_EPFBLPR(n) (0xd00 + 4 * (n)) +#define ENETC_G_EPFBLPR1_XGMII 0x80000000 + /* general register accessors */ #define enetc_rd_reg(reg) rte_read32((void *)(reg)) #define enetc_wr_reg(reg, val) rte_write32((val), (void *)(reg)) diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index f1807b9..91e9692 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -139,6 +139,17 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PMR), val | ENETC_PMR_EN); + /* set auto-speed for RGMII */ + if (enetc_port_rd(&hw->hw, ENETC_PM0_IF_MODE) & ENETC_PMO_IFM_RG) { + enetc_port_wr(&hw->hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_RGAUTO); + enetc_port_wr(&hw->hw, ENETC_PM1_IF_MODE, ENETC_PM0_IFM_RGAUTO); + } + if (enetc_global_rd(&hw->hw, + ENETC_G_EPFBLPR(1)) == ENETC_G_EPFBLPR1_XGMII) { + enetc_port_wr(&hw->hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_XGMII); + enetc_port_wr(&hw->hw, ENETC_PM1_IF_MODE, ENETC_PM0_IFM_XGMII); + } + return 0; } From patchwork Fri Apr 12 11:01:29 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52689 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 72F931B0F8; Fri, 12 Apr 2019 13:01:37 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140049.outbound.protection.outlook.com [40.107.14.49]) by dpdk.org (Postfix) with ESMTP id 3B35169D4 for ; Fri, 12 Apr 2019 13:01:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9rGb+RUnXyk2sWepr6xgGJoTfW1WEvOV2gwNxnYRsT4=; b=vn0NCbjBvDkU0ka6CjRx8Qw804bbQ+1A/bo7P/capgi82eTkGagzw79typxnXPIAKrB4zJCRehIrhL6KkYPrkpkrK0odJTmGH5Zro6+B8MRxkhmzaCi/Ek6DnSGGkuNMyeGQuTi4Bmc0zWSDWCTOYyFlnv4xceZG+hDfoSacD0s= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6462.eurprd04.prod.outlook.com (20.179.233.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.21; Fri, 12 Apr 2019 11:01:30 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:30 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 05/13] net/enetc: add basic statistics Thread-Index: AQHU8R8UdCBaM8zXskSUUPAGt2Qf7w== Date: Fri, 12 Apr 2019 11:01:29 +0000 Message-ID: <20190412105105.24351-6-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: f98d64b4-59f1-41ce-3082-08d6bf363723 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6462; x-ms-traffictypediagnostic: VE1PR04MB6462: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(366004)(396003)(346002)(39860400002)(189003)(199004)(14444005)(2501003)(186003)(97736004)(7736002)(3846002)(110136005)(99286004)(6116002)(102836004)(86362001)(316002)(2616005)(11346002)(476003)(6506007)(446003)(76176011)(305945005)(26005)(1076003)(106356001)(66066001)(486006)(4326008)(105586002)(386003)(478600001)(52116002)(72206003)(50226002)(5660300002)(6436002)(81156014)(6512007)(71200400001)(8936002)(71190400001)(6486002)(68736007)(53936002)(256004)(25786009)(8676002)(81166006)(36756003)(14454004)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6462; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: z0fLkbAifzhx4nGP+mmvwH65t9Rq9G2EsV/BGtDMSfcDqiBJpKBsZq/8PhKW+rwnbFek/ElIQkbFdCoKgz7v233SSEnwINPxctMM0eMJIEhcvRhF2NWW+B1g2iPhgRiNQ//hDBp+e892LXtEst4BKnRIYbQZc13/DZoOdHRNAT6UiJdl/qEyHaoat8ERoE3k+dcRQ+a70PkC53nbYMIiOrPhu7rqUNFnSZ91EyTHtk3GBoScTjSnk5XYmO6d9UkaGid1MS8+eqNZOuC4d/hnVLmLUl2se3xuCLT48c1TMhmHCQTxAzPZVOn4QNnyNncvjSGUt8Nu9DVYNmmhj8THmU8JYYEl3izjTx0w1oQG3d3dOCpKipUWVxE/W8gOTmOXpxbb5VYmbpE0IE5MkBJCBGqXC3vKbju/MOxImXK+j0A= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f98d64b4-59f1-41ce-3082-08d6bf363723 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:29.8479 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6462 Subject: [dpdk-dev] [PATCH v3 05/13] net/enetc: add basic statistics 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" Enable basic statistics APIs enetc_stats_get and enetc_stats_reset. Signed-off-by: Gagandeep Singh --- doc/guides/nics/enetc.rst | 1 + doc/guides/nics/features/enetc.ini | 1 + drivers/net/enetc/base/enetc_hw.h | 27 ++++++++++++++++++++++++- drivers/net/enetc/enetc_ethdev.c | 41 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 69 insertions(+), 1 deletion(-) diff --git a/doc/guides/nics/enetc.rst b/doc/guides/nics/enetc.rst index 8038bf2..9f575d2 100644 --- a/doc/guides/nics/enetc.rst +++ b/doc/guides/nics/enetc.rst @@ -46,6 +46,7 @@ ENETC Features - Link Status - Packet type information +- Basic stats NIC Driver (PMD) ~~~~~~~~~~~~~~~~ diff --git a/doc/guides/nics/features/enetc.ini b/doc/guides/nics/features/enetc.ini index 69476a2..d8bd567 100644 --- a/doc/guides/nics/features/enetc.ini +++ b/doc/guides/nics/features/enetc.ini @@ -6,6 +6,7 @@ [Features] Packet type parsing = Y Link status = Y +Basic stats = Y Linux VFIO = Y ARMv8 = Y Usage doc = Y diff --git a/drivers/net/enetc/base/enetc_hw.h b/drivers/net/enetc/base/enetc_hw.h index e3738a6..3f0a2a9 100644 --- a/drivers/net/enetc/base/enetc_hw.h +++ b/drivers/net/enetc/base/enetc_hw.h @@ -115,8 +115,33 @@ #define ENETC_G_EIPBRR0 0x00bf8 #define ENETC_G_EIPBRR1 0x00bfc - /* MAC Counters */ +/* Config register to reset counters*/ +#define ENETC_PM0_STAT_CONFIG 0x080E0 +/* Receive frames counter without error */ +#define ENETC_PM0_RFRM 0x08120 +/* Receive packets counter, good + bad */ +#define ENETC_PM0_RPKT 0x08160 +/* Received octets, good + bad */ +#define ENETC_PM0_REOCT 0x08120 +/* Transmit octets, good + bad */ +#define ENETC_PM0_TEOCT 0x08200 +/* Transmit frames counter without error */ +#define ENETC_PM0_TFRM 0x08220 +/* Transmit packets counter, good + bad */ +#define ENETC_PM0_TPKT 0x08260 +/* Dropped not Truncated packets counter */ +#define ENETC_PM0_RDRNTP 0x081C8 +/* Dropped + trucated packets counter */ +#define ENETC_PM0_RDRP 0x08158 +/* Receive packets error counter */ +#define ENETC_PM0_RERR 0x08138 +/* Transmit packets error counter */ +#define ENETC_PM0_TERR 0x08238 + +/* Stats Reset Bit*/ +#define ENETC_CLEAR_STATS BIT(2) + #define ENETC_G_EPFBLPR(n) (0xd00 + 4 * (n)) #define ENETC_G_EPFBLPR1_XGMII 0x80000000 diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index 91e9692..10b2b39 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -29,6 +29,9 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, const struct rte_eth_txconf *tx_conf); static void enetc_tx_queue_release(void *txq); static const uint32_t *enetc_supported_ptypes_get(struct rte_eth_dev *dev); +static int enetc_stats_get(struct rte_eth_dev *dev, + struct rte_eth_stats *stats); +static void enetc_stats_reset(struct rte_eth_dev *dev); /* * The set of PCI devices this driver supports @@ -46,6 +49,8 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, .dev_stop = enetc_dev_stop, .dev_close = enetc_dev_close, .link_update = enetc_link_update, + .stats_get = enetc_stats_get, + .stats_reset = enetc_stats_reset, .dev_infos_get = enetc_dev_infos_get, .rx_queue_setup = enetc_rx_queue_setup, .rx_queue_release = enetc_rx_queue_release, @@ -608,6 +613,42 @@ static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, rte_free(rx_ring); } +static +int enetc_stats_get(struct rte_eth_dev *dev, + struct rte_eth_stats *stats) +{ + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + + /* Total received packets, bad + good, if we want to get counters of + * only good received packets then use ENETC_PM0_RFRM, + * ENETC_PM0_TFRM registers. + */ + stats->ipackets = enetc_port_rd(enetc_hw, ENETC_PM0_RPKT); + stats->opackets = enetc_port_rd(enetc_hw, ENETC_PM0_TPKT); + stats->ibytes = enetc_port_rd(enetc_hw, ENETC_PM0_REOCT); + stats->obytes = enetc_port_rd(enetc_hw, ENETC_PM0_TEOCT); + /* Dropped + Truncated packets, use ENETC_PM0_RDRNTP for without + * truncated packets + */ + stats->imissed = enetc_port_rd(enetc_hw, ENETC_PM0_RDRP); + stats->ierrors = enetc_port_rd(enetc_hw, ENETC_PM0_RERR); + stats->oerrors = enetc_port_rd(enetc_hw, ENETC_PM0_TERR); + + return 0; +} + +static void +enetc_stats_reset(struct rte_eth_dev *dev) +{ + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + + enetc_port_wr(enetc_hw, ENETC_PM0_STAT_CONFIG, ENETC_CLEAR_STATS); +} + static int enetc_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct rte_pci_device *pci_dev) From patchwork Fri Apr 12 11:01:33 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52690 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2FEA81B0FF; Fri, 12 Apr 2019 13:01:40 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140049.outbound.protection.outlook.com [40.107.14.49]) by dpdk.org (Postfix) with ESMTP id 925D87D52 for ; Fri, 12 Apr 2019 13:01:34 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aqCl+0c5enr2SVKrmXPkybgaE7Exio66vOZgzaphGn0=; b=q2yPYG1XRQqkyf7KU2BIl5VkOeYr5ZurGNmQPfYCytjr1FnVfbam2xkpaPaxA5RMySf6mSjivesJEvWURt2/42IU82bLssJ4/hgSmqSkG1TMghIieEVD2IRDnEwav4pHpaDHMCKinAKml16T2c95h0mWv8/p2FkzNKUXIofAunE= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6462.eurprd04.prod.outlook.com (20.179.233.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.21; Fri, 12 Apr 2019 11:01:33 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:33 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 06/13] net/enetc: replace register read/write macros with functions Thread-Index: AQHU8R8WdFE5Vc3pLEWqVPR0Fuzfuw== Date: Fri, 12 Apr 2019 11:01:33 +0000 Message-ID: <20190412105105.24351-7-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 7ad141bc-6ffc-4359-ef2d-08d6bf363918 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6462; x-ms-traffictypediagnostic: VE1PR04MB6462: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(366004)(396003)(346002)(39860400002)(189003)(199004)(2501003)(186003)(97736004)(7736002)(3846002)(110136005)(99286004)(6116002)(102836004)(86362001)(316002)(2616005)(11346002)(476003)(6506007)(446003)(76176011)(305945005)(26005)(1076003)(106356001)(66066001)(486006)(4326008)(105586002)(386003)(478600001)(52116002)(72206003)(50226002)(5660300002)(6436002)(81156014)(6512007)(71200400001)(8936002)(71190400001)(6486002)(68736007)(53936002)(256004)(25786009)(8676002)(81166006)(36756003)(14454004)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6462; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: CLsm9QugAl/62TbuNPwcQUG4AhSwIT3Q1MtYmtXcBOmYx69RB7bQeM67IkySlA9A6D1dyrMlZzWlRxvLBjyW74Nd6YYZwNtF8Xq2Y21A1Zf1tnCcA0zsb9kf+166k+zGeK+JNEVoUOttxROeFlQr3cp6CIrcT4+rbkLDKLtfSJomVq/Jk+36eoGHePXMS0GXI3yO3xxoMRG+xkASbppqJ6OQR9GnEw/v/XLIVqCpcR7zAfsso5DQto23V2LqNv99EG9Rbv9wo/lGMjqqstY1wF8S4F10zeQGBze6YlvKnGuyr/adRu0PMH/jLoVBR6RU793b7whaiIFRjE2XeXUiHZ/brXbno7OPBSNmBVUJ/HmFvkjJDattPXErDMQYhY1fmOjAzMboNCR9s5l5JHgOEmOXgpb45FrG8a+Rd/fTn6U= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7ad141bc-6ffc-4359-ef2d-08d6bf363918 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:33.1111 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6462 Subject: [dpdk-dev] [PATCH v3 06/13] net/enetc: replace register read/write macros with functions 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" Replacing read-write macros with already available read-write functions. Signed-off-by: Gagandeep Singh --- drivers/net/enetc/enetc.h | 7 +---- drivers/net/enetc/enetc_ethdev.c | 61 ++++++++++++++++++++-------------------- 2 files changed, 31 insertions(+), 37 deletions(-) diff --git a/drivers/net/enetc/enetc.h b/drivers/net/enetc/enetc.h index 0e80d1c..56454dc 100644 --- a/drivers/net/enetc/enetc.h +++ b/drivers/net/enetc/enetc.h @@ -1,5 +1,5 @@ /* SPDX-License-Identifier: BSD-3-Clause - * Copyright 2018 NXP + * Copyright 2018-2019 NXP */ #ifndef _ENETC_H_ @@ -86,11 +86,6 @@ struct enetc_eth_adapter { #define ENETC_DEV_PRIVATE_TO_INTR(adapter) \ (&((struct enetc_eth_adapter *)adapter)->intr) -#define ENETC_GET_HW_ADDR(reg, addr) ((void *)(((size_t)reg) + (addr))) -#define ENETC_REG_READ(addr) (*(uint32_t *)addr) -#define ENETC_REG_WRITE(addr, val) (*(uint32_t *)addr = val) -#define ENETC_REG_WRITE_RELAXED(addr, val) (*(uint32_t *)addr = val) - /* * RX/TX ENETC function prototypes */ diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index 10b2b39..2d8c4e6 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -131,28 +131,31 @@ static int enetc_stats_get(struct rte_eth_dev *dev, { struct enetc_eth_hw *hw = ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; uint32_t val; PMD_INIT_FUNC_TRACE(); - val = ENETC_REG_READ(ENETC_GET_HW_ADDR(hw->hw.port, - ENETC_PM0_CMD_CFG)); - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PM0_CMD_CFG), - val | ENETC_PM0_TX_EN | ENETC_PM0_RX_EN); + val = enetc_port_rd(enetc_hw, ENETC_PM0_CMD_CFG); + enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG, + val | ENETC_PM0_TX_EN | ENETC_PM0_RX_EN); /* Enable port */ - val = ENETC_REG_READ(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PMR)); - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PMR), - val | ENETC_PMR_EN); + val = enetc_port_rd(enetc_hw, ENETC_PMR); + enetc_port_wr(enetc_hw, ENETC_PMR, val | ENETC_PMR_EN); /* set auto-speed for RGMII */ - if (enetc_port_rd(&hw->hw, ENETC_PM0_IF_MODE) & ENETC_PMO_IFM_RG) { - enetc_port_wr(&hw->hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_RGAUTO); - enetc_port_wr(&hw->hw, ENETC_PM1_IF_MODE, ENETC_PM0_IFM_RGAUTO); + if (enetc_port_rd(enetc_hw, ENETC_PM0_IF_MODE) & ENETC_PMO_IFM_RG) { + enetc_port_wr(enetc_hw, ENETC_PM0_IF_MODE, + ENETC_PM0_IFM_RGAUTO); + enetc_port_wr(enetc_hw, ENETC_PM1_IF_MODE, + ENETC_PM0_IFM_RGAUTO); } - if (enetc_global_rd(&hw->hw, + if (enetc_global_rd(enetc_hw, ENETC_G_EPFBLPR(1)) == ENETC_G_EPFBLPR1_XGMII) { - enetc_port_wr(&hw->hw, ENETC_PM0_IF_MODE, ENETC_PM0_IFM_XGMII); - enetc_port_wr(&hw->hw, ENETC_PM1_IF_MODE, ENETC_PM0_IFM_XGMII); + enetc_port_wr(enetc_hw, ENETC_PM0_IF_MODE, + ENETC_PM0_IFM_XGMII); + enetc_port_wr(enetc_hw, ENETC_PM1_IF_MODE, + ENETC_PM0_IFM_XGMII); } return 0; @@ -163,18 +166,17 @@ static int enetc_stats_get(struct rte_eth_dev *dev, { struct enetc_eth_hw *hw = ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; uint32_t val; PMD_INIT_FUNC_TRACE(); /* Disable port */ - val = ENETC_REG_READ(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PMR)); - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PMR), - val & (~ENETC_PMR_EN)); - - val = ENETC_REG_READ(ENETC_GET_HW_ADDR(hw->hw.port, - ENETC_PM0_CMD_CFG)); - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PM0_CMD_CFG), - val & (~(ENETC_PM0_TX_EN | ENETC_PM0_RX_EN))); + val = enetc_port_rd(enetc_hw, ENETC_PMR); + enetc_port_wr(enetc_hw, ENETC_PMR, val & (~ENETC_PMR_EN)); + + val = enetc_port_rd(enetc_hw, ENETC_PM0_CMD_CFG); + enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG, + val & (~(ENETC_PM0_TX_EN | ENETC_PM0_RX_EN))); } static void @@ -221,6 +223,7 @@ static int enetc_stats_get(struct rte_eth_dev *dev, { struct enetc_eth_hw *hw = ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; struct rte_eth_link link; uint32_t status; @@ -228,8 +231,7 @@ static int enetc_stats_get(struct rte_eth_dev *dev, memset(&link, 0, sizeof(link)); - status = ENETC_REG_READ(ENETC_GET_HW_ADDR(hw->hw.port, - ENETC_PM0_STATUS)); + status = enetc_port_rd(enetc_hw, ENETC_PM0_STATUS); if (status & ENETC_LINK_MODE) link.link_duplex = ETH_LINK_FULL_DUPLEX; @@ -262,6 +264,7 @@ static int enetc_stats_get(struct rte_eth_dev *dev, enetc_hardware_init(struct enetc_eth_hw *hw) { uint32_t psipmr = 0; + struct enetc_hw *enetc_hw = &hw->hw; PMD_INIT_FUNC_TRACE(); /* Calculating and storing the base HW addresses */ @@ -269,8 +272,7 @@ static int enetc_stats_get(struct rte_eth_dev *dev, hw->hw.global = (void *)((size_t)hw->hw.reg + ENETC_GLOBAL_BASE); /* Enabling Station Interface */ - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.reg, ENETC_SIMR), - ENETC_SIMR_EN); + enetc_wr(enetc_hw, ENETC_SIMR, ENETC_SIMR_EN); /* Setting to accept broadcast packets for each inetrface */ psipmr |= ENETC_PSIPMR_SET_UP(0) | ENETC_PSIPMR_SET_MP(0) | @@ -280,14 +282,11 @@ static int enetc_stats_get(struct rte_eth_dev *dev, psipmr |= ENETC_PSIPMR_SET_UP(2) | ENETC_PSIPMR_SET_MP(2) | ENETC_PSIPMR_SET_VLAN_MP(2); - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PSIPMR), - psipmr); + enetc_port_wr(enetc_hw, ENETC_PSIPMR, psipmr); /* Enabling broadcast address */ - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PSIPMAR0(0)), - 0xFFFFFFFF); - ENETC_REG_WRITE(ENETC_GET_HW_ADDR(hw->hw.port, ENETC_PSIPMAR1(0)), - 0xFFFF << 16); + enetc_port_wr(enetc_hw, ENETC_PSIPMAR0(0), 0xFFFFFFFF); + enetc_port_wr(enetc_hw, ENETC_PSIPMAR1(0), 0xFFFF << 16); return 0; } From patchwork Fri Apr 12 11:01:36 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52691 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 011881B10D; Fri, 12 Apr 2019 13:01:45 +0200 (CEST) Received: from EUR01-VE1-obe.outbound.protection.outlook.com (mail-eopbgr140077.outbound.protection.outlook.com [40.107.14.77]) by dpdk.org (Postfix) with ESMTP id BE5F01B0FB for ; Fri, 12 Apr 2019 13:01:37 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=9TMPQPbW5mYIjPdh23PDablmzdyM0KnVEyOSGaEnCAU=; b=XK/cXaiqhqvB8aGUPaNpXL8qoMerKM3II0xHTWwmYzl6iQzU3yN8t6lqifGYaplY12G6H84OFtFEYedAXlBaLbt7eSeYwdwb9PMEtzgt/Fv2kTqSOEE0dbv6SU/lhtosMjMZgmrz12sUuM9RJcX+kj8jjnTjxBIyIFCXZNBHrQk= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6462.eurprd04.prod.outlook.com (20.179.233.19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1771.21; Fri, 12 Apr 2019 11:01:36 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:36 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 07/13] net/enetc: remove forward declarations Thread-Index: AQHU8R8Ys9R9u3r9mkWgzBWZ0oXYqg== Date: Fri, 12 Apr 2019 11:01:36 +0000 Message-ID: <20190412105105.24351-8-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c1ee1d2a-a161-494f-ea64-08d6bf363b0d x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6462; x-ms-traffictypediagnostic: VE1PR04MB6462: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(376002)(366004)(396003)(346002)(39860400002)(189003)(199004)(14444005)(2501003)(186003)(97736004)(7736002)(3846002)(110136005)(99286004)(6116002)(102836004)(86362001)(316002)(2616005)(11346002)(476003)(6506007)(446003)(76176011)(305945005)(26005)(1076003)(106356001)(66066001)(486006)(4326008)(105586002)(386003)(478600001)(52116002)(72206003)(50226002)(5660300002)(6436002)(81156014)(6512007)(71200400001)(8936002)(71190400001)(6486002)(68736007)(53936002)(256004)(25786009)(8676002)(81166006)(36756003)(14454004)(2906002); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6462; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: ysUOULu/SzknGgLad1i5LpPRxGxzbw5ZJnDzTzqzoKuGZ/oV+zDQALuuM/1/GAt03LjGRtxRgx2FKrW9BvEVNEpbDA3Q02lKA81Kw/eLatwhOSYi1/CAHttfzo73YtbrxnN+yJU7ne7FfSPCHwJTT2v7XkfsUqzqE0tJjrkeL9AMWYeomYdbcyb0W+92aK4CeKg38Fd0EBVOnJUrjXSCIsfexwm3cqMY6c24kOLe1wqf6tOpT3DhxNEmCWlkYydjmhm4zJy2KBaTMQf1glpFTvY67u5eu0OGrYCFqExTFiIInoh5klMaiRDkidSAD+lAhbhf59+0Tr9y02JYKDyYFVl712Op1SGUM5LJ5BYc8ZpZHlQ2IVmzC1GL33iZKyjraxE3edgCZj+P4g1TJCUvX07hc9SNAX+x23vDCwNgq3w= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1ee1d2a-a161-494f-ea64-08d6bf363b0d X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:36.4444 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6462 Subject: [dpdk-dev] [PATCH v3 07/13] net/enetc: remove forward declarations 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" Remove unneeded forward declarations and re-order the code. Signed-off-by: Gagandeep Singh --- drivers/net/enetc/enetc_ethdev.c | 237 ++++++++++++++++++--------------------- 1 file changed, 107 insertions(+), 130 deletions(-) diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index 2d8c4e6..d0f9e2b 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -10,115 +10,6 @@ int enetc_logtype_pmd; -/* Functions Prototypes */ -static int enetc_dev_configure(struct rte_eth_dev *dev); -static int enetc_dev_start(struct rte_eth_dev *dev); -static void enetc_dev_stop(struct rte_eth_dev *dev); -static void enetc_dev_close(struct rte_eth_dev *dev); -static void enetc_dev_infos_get(struct rte_eth_dev *dev, - struct rte_eth_dev_info *dev_info); -static int enetc_link_update(struct rte_eth_dev *dev, int wait_to_complete); -static int enetc_hardware_init(struct enetc_eth_hw *hw); -static int enetc_rx_queue_setup(struct rte_eth_dev *dev, uint16_t rx_queue_id, - uint16_t nb_rx_desc, unsigned int socket_id, - const struct rte_eth_rxconf *rx_conf, - struct rte_mempool *mb_pool); -static void enetc_rx_queue_release(void *rxq); -static int enetc_tx_queue_setup(struct rte_eth_dev *dev, uint16_t tx_queue_id, - uint16_t nb_tx_desc, unsigned int socket_id, - const struct rte_eth_txconf *tx_conf); -static void enetc_tx_queue_release(void *txq); -static const uint32_t *enetc_supported_ptypes_get(struct rte_eth_dev *dev); -static int enetc_stats_get(struct rte_eth_dev *dev, - struct rte_eth_stats *stats); -static void enetc_stats_reset(struct rte_eth_dev *dev); - -/* - * The set of PCI devices this driver supports - */ -static const struct rte_pci_id pci_id_enetc_map[] = { - { RTE_PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, ENETC_DEV_ID) }, - { RTE_PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, ENETC_DEV_ID_VF) }, - { .vendor_id = 0, /* sentinel */ }, -}; - -/* Features supported by this driver */ -static const struct eth_dev_ops enetc_ops = { - .dev_configure = enetc_dev_configure, - .dev_start = enetc_dev_start, - .dev_stop = enetc_dev_stop, - .dev_close = enetc_dev_close, - .link_update = enetc_link_update, - .stats_get = enetc_stats_get, - .stats_reset = enetc_stats_reset, - .dev_infos_get = enetc_dev_infos_get, - .rx_queue_setup = enetc_rx_queue_setup, - .rx_queue_release = enetc_rx_queue_release, - .tx_queue_setup = enetc_tx_queue_setup, - .tx_queue_release = enetc_tx_queue_release, - .dev_supported_ptypes_get = enetc_supported_ptypes_get, -}; - -/** - * Initialisation of the enetc device - * - * @param eth_dev - * - Pointer to the structure rte_eth_dev - * - * @return - * - On success, zero. - * - On failure, negative value. - */ -static int -enetc_dev_init(struct rte_eth_dev *eth_dev) -{ - int error = 0; - struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); - struct enetc_eth_hw *hw = - ENETC_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); - - PMD_INIT_FUNC_TRACE(); - eth_dev->dev_ops = &enetc_ops; - eth_dev->rx_pkt_burst = &enetc_recv_pkts; - eth_dev->tx_pkt_burst = &enetc_xmit_pkts; - - /* Retrieving and storing the HW base address of device */ - hw->hw.reg = (void *)pci_dev->mem_resource[0].addr; - hw->device_id = pci_dev->id.device_id; - - error = enetc_hardware_init(hw); - if (error != 0) { - ENETC_PMD_ERR("Hardware initialization failed"); - return -1; - } - - /* Allocate memory for storing MAC addresses */ - eth_dev->data->mac_addrs = rte_zmalloc("enetc_eth", ETHER_ADDR_LEN, 0); - if (!eth_dev->data->mac_addrs) { - ENETC_PMD_ERR("Failed to allocate %d bytes needed to " - "store MAC addresses", - ETHER_ADDR_LEN * 1); - error = -ENOMEM; - return -1; - } - - /* Copy the permanent MAC address */ - ether_addr_copy((struct ether_addr *)hw->mac.addr, - ð_dev->data->mac_addrs[0]); - - ENETC_PMD_DEBUG("port_id %d vendorID=0x%x deviceID=0x%x", - eth_dev->data->port_id, pci_dev->id.vendor_id, - pci_dev->id.device_id); - return 0; -} - -static int -enetc_dev_uninit(struct rte_eth_dev *eth_dev __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - return 0; -} - static int enetc_dev_configure(struct rte_eth_dev *dev __rte_unused) { @@ -179,27 +70,6 @@ static int enetc_stats_get(struct rte_eth_dev *dev, val & (~(ENETC_PM0_TX_EN | ENETC_PM0_RX_EN))); } -static void -enetc_dev_close(struct rte_eth_dev *dev) -{ - uint16_t i; - - PMD_INIT_FUNC_TRACE(); - enetc_dev_stop(dev); - - for (i = 0; i < dev->data->nb_rx_queues; i++) { - enetc_rx_queue_release(dev->data->rx_queues[i]); - dev->data->rx_queues[i] = NULL; - } - dev->data->nb_rx_queues = 0; - - for (i = 0; i < dev->data->nb_tx_queues; i++) { - enetc_tx_queue_release(dev->data->tx_queues[i]); - dev->data->tx_queues[i] = NULL; - } - dev->data->nb_tx_queues = 0; -} - static const uint32_t * enetc_supported_ptypes_get(struct rte_eth_dev *dev __rte_unused) { @@ -648,6 +518,113 @@ int enetc_stats_get(struct rte_eth_dev *dev, enetc_port_wr(enetc_hw, ENETC_PM0_STAT_CONFIG, ENETC_CLEAR_STATS); } +static void +enetc_dev_close(struct rte_eth_dev *dev) +{ + uint16_t i; + + PMD_INIT_FUNC_TRACE(); + enetc_dev_stop(dev); + + for (i = 0; i < dev->data->nb_rx_queues; i++) { + enetc_rx_queue_release(dev->data->rx_queues[i]); + dev->data->rx_queues[i] = NULL; + } + dev->data->nb_rx_queues = 0; + + for (i = 0; i < dev->data->nb_tx_queues; i++) { + enetc_tx_queue_release(dev->data->tx_queues[i]); + dev->data->tx_queues[i] = NULL; + } + dev->data->nb_tx_queues = 0; +} + +/* + * The set of PCI devices this driver supports + */ +static const struct rte_pci_id pci_id_enetc_map[] = { + { RTE_PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, ENETC_DEV_ID) }, + { RTE_PCI_DEVICE(PCI_VENDOR_ID_FREESCALE, ENETC_DEV_ID_VF) }, + { .vendor_id = 0, /* sentinel */ }, +}; + +/* Features supported by this driver */ +static const struct eth_dev_ops enetc_ops = { + .dev_configure = enetc_dev_configure, + .dev_start = enetc_dev_start, + .dev_stop = enetc_dev_stop, + .dev_close = enetc_dev_close, + .link_update = enetc_link_update, + .stats_get = enetc_stats_get, + .stats_reset = enetc_stats_reset, + .dev_infos_get = enetc_dev_infos_get, + .rx_queue_setup = enetc_rx_queue_setup, + .rx_queue_release = enetc_rx_queue_release, + .tx_queue_setup = enetc_tx_queue_setup, + .tx_queue_release = enetc_tx_queue_release, + .dev_supported_ptypes_get = enetc_supported_ptypes_get, +}; + +/** + * Initialisation of the enetc device + * + * @param eth_dev + * - Pointer to the structure rte_eth_dev + * + * @return + * - On success, zero. + * - On failure, negative value. + */ +static int +enetc_dev_init(struct rte_eth_dev *eth_dev) +{ + int error = 0; + struct rte_pci_device *pci_dev = RTE_ETH_DEV_TO_PCI(eth_dev); + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(eth_dev->data->dev_private); + + PMD_INIT_FUNC_TRACE(); + eth_dev->dev_ops = &enetc_ops; + eth_dev->rx_pkt_burst = &enetc_recv_pkts; + eth_dev->tx_pkt_burst = &enetc_xmit_pkts; + + /* Retrieving and storing the HW base address of device */ + hw->hw.reg = (void *)pci_dev->mem_resource[0].addr; + hw->device_id = pci_dev->id.device_id; + + error = enetc_hardware_init(hw); + if (error != 0) { + ENETC_PMD_ERR("Hardware initialization failed"); + return -1; + } + + /* Allocate memory for storing MAC addresses */ + eth_dev->data->mac_addrs = rte_zmalloc("enetc_eth", ETHER_ADDR_LEN, 0); + if (!eth_dev->data->mac_addrs) { + ENETC_PMD_ERR("Failed to allocate %d bytes needed to " + "store MAC addresses", + ETHER_ADDR_LEN * 1); + error = -ENOMEM; + return -1; + } + + /* Copy the permanent MAC address */ + ether_addr_copy((struct ether_addr *)hw->mac.addr, + ð_dev->data->mac_addrs[0]); + + ENETC_PMD_DEBUG("port_id %d vendorID=0x%x deviceID=0x%x", + eth_dev->data->port_id, pci_dev->id.vendor_id, + pci_dev->id.device_id); + return 0; +} + +static int +enetc_dev_uninit(struct rte_eth_dev *eth_dev __rte_unused) +{ + PMD_INIT_FUNC_TRACE(); + return 0; +} + static int enetc_pci_probe(struct rte_pci_driver *pci_drv __rte_unused, struct rte_pci_device *pci_dev) From patchwork Fri Apr 12 11:01:39 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52692 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0C9EA1B11F; Fri, 12 Apr 2019 13:01:50 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50059.outbound.protection.outlook.com [40.107.5.59]) by dpdk.org (Postfix) with ESMTP id 93D0D1B108 for ; Fri, 12 Apr 2019 13:01:41 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=iVklB46Ye+BrxVKg1PdY50VmM195mQU9KZv22hDwfzw=; b=HI4l3s2/+cc/aKC8b7naPL3mZ0CwE+m80CoFhUsA+Xb1PUcXRnyUC8UTEogamdfgqE8R44wtkKtHSyjVZyHoxUO/27/aUZIOcmAKYIWac3HH13DpU0KlsPf/gxUuA9EVM2NdCUWuBnaqDlG3YujL9Ug2XkZiKPU0jBiZ8lORKiw= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6384.eurprd04.prod.outlook.com (20.179.232.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.18; Fri, 12 Apr 2019 11:01:40 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:39 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 08/13] net/enetc: enable promiscuous and allmulticast feature Thread-Index: AQHU8R8aU8La/2WrkUCax3rtSnwGHQ== Date: Fri, 12 Apr 2019 11:01:39 +0000 Message-ID: <20190412105105.24351-9-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9089402d-322c-4c5e-da1a-08d6bf363d08 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6384; x-ms-traffictypediagnostic: VE1PR04MB6384: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(8676002)(8936002)(14454004)(186003)(446003)(478600001)(476003)(11346002)(72206003)(81166006)(81156014)(50226002)(2616005)(66066001)(4326008)(2501003)(26005)(305945005)(2906002)(5660300002)(3846002)(6116002)(486006)(386003)(6506007)(7736002)(102836004)(1076003)(68736007)(99286004)(76176011)(14444005)(86362001)(6486002)(25786009)(97736004)(110136005)(6436002)(316002)(52116002)(105586002)(6512007)(256004)(71200400001)(71190400001)(106356001)(53936002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6384; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: pxULCJzy3UyX4N5z6bMjzYrXPKuD+tJrnLurBB6t+wlkNyNpeUCB79SoTrJBOYggxNmAzLjy7153xwgw73razPt2xhuE+OFEcgyMnGdOsLpBOU+eTdAjshLOtIxjpWGZ4AYQR+Cjk51kOspukW6CClwEMsz7ta2kKE9lZG1/xczby/gj5aH+xXSCdgk8uliQW6AHeWzPlL01sZNRYP+7ht47455YyhvO85SL8cxg997bHCB8CvPIooK9rbrSq6Jccx7UtVwDS6FTU6prTeIBhVlS37zTz0aTbUE4PPDzA8eIpkJCBEWAQOUok9w+rK0fsQ8T4Gqbq/OJnyylJlfk9My1GyxRqFQBbehd0UTanFPgDQJ9uulFz9+8Y6zoubeqtD4W+87zcqw1RdYqz+6xuB02mXpQowk73t/GtxL9vRk= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9089402d-322c-4c5e-da1a-08d6bf363d08 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:39.7706 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6384 Subject: [dpdk-dev] [PATCH v3 08/13] net/enetc: enable promiscuous and allmulticast feature 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" Promiscuous and allmulticast enable/disable APIs added. Signed-off-by: Gagandeep Singh --- doc/guides/nics/enetc.rst | 2 + doc/guides/nics/features/enetc.ini | 2 + drivers/net/enetc/base/enetc_hw.h | 3 +- drivers/net/enetc/enetc_ethdev.c | 90 ++++++++++++++++++++++++++++++++------ 4 files changed, 81 insertions(+), 16 deletions(-) diff --git a/doc/guides/nics/enetc.rst b/doc/guides/nics/enetc.rst index 9f575d2..ab13211 100644 --- a/doc/guides/nics/enetc.rst +++ b/doc/guides/nics/enetc.rst @@ -47,6 +47,8 @@ ENETC Features - Link Status - Packet type information - Basic stats +- Promiscuous +- Multicast NIC Driver (PMD) ~~~~~~~~~~~~~~~~ diff --git a/doc/guides/nics/features/enetc.ini b/doc/guides/nics/features/enetc.ini index d8bd567..6b7bbfb 100644 --- a/doc/guides/nics/features/enetc.ini +++ b/doc/guides/nics/features/enetc.ini @@ -7,6 +7,8 @@ Packet type parsing = Y Link status = Y Basic stats = Y +Promiscuous mode = Y +Allmulticast mode = Y Linux VFIO = Y ARMv8 = Y Usage doc = Y diff --git a/drivers/net/enetc/base/enetc_hw.h b/drivers/net/enetc/base/enetc_hw.h index 3f0a2a9..90a383a 100644 --- a/drivers/net/enetc/base/enetc_hw.h +++ b/drivers/net/enetc/base/enetc_hw.h @@ -78,8 +78,7 @@ #define ENETC_PSR 0x00004 /* RO */ #define ENETC_PSIPMR 0x00018 #define ENETC_PSIPMR_SET_UP(n) (0x1 << (n)) /* n = SI index */ -#define ENETC_PSIPMR_SET_MP(n) (0x1 << ((n) + 8)) -#define ENETC_PSIPMR_SET_VLAN_MP(n) (0x1 << ((n) + 16)) +#define ENETC_PSIPMR_SET_MP(n) (0x1 << ((n) + 16)) #define ENETC_PSIPMAR0(n) (0x00100 + (n) * 0x20) #define ENETC_PSIPMAR1(n) (0x00104 + (n) * 0x20) #define ENETC_PCAPR0 0x00900 diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index d0f9e2b..a7dddc5 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -133,8 +133,8 @@ static int enetc_hardware_init(struct enetc_eth_hw *hw) { - uint32_t psipmr = 0; struct enetc_hw *enetc_hw = &hw->hw; + uint32_t *mac = (uint32_t *)hw->mac.addr; PMD_INIT_FUNC_TRACE(); /* Calculating and storing the base HW addresses */ @@ -144,19 +144,9 @@ /* Enabling Station Interface */ enetc_wr(enetc_hw, ENETC_SIMR, ENETC_SIMR_EN); - /* Setting to accept broadcast packets for each inetrface */ - psipmr |= ENETC_PSIPMR_SET_UP(0) | ENETC_PSIPMR_SET_MP(0) | - ENETC_PSIPMR_SET_VLAN_MP(0); - psipmr |= ENETC_PSIPMR_SET_UP(1) | ENETC_PSIPMR_SET_MP(1) | - ENETC_PSIPMR_SET_VLAN_MP(1); - psipmr |= ENETC_PSIPMR_SET_UP(2) | ENETC_PSIPMR_SET_MP(2) | - ENETC_PSIPMR_SET_VLAN_MP(2); - - enetc_port_wr(enetc_hw, ENETC_PSIPMR, psipmr); - - /* Enabling broadcast address */ - enetc_port_wr(enetc_hw, ENETC_PSIPMAR0(0), 0xFFFFFFFF); - enetc_port_wr(enetc_hw, ENETC_PSIPMAR1(0), 0xFFFF << 16); + *mac = (uint32_t)enetc_port_rd(enetc_hw, ENETC_PSIPMAR0(0)); + mac++; + *mac = (uint16_t)enetc_port_rd(enetc_hw, ENETC_PSIPMAR1(0)); return 0; } @@ -539,6 +529,74 @@ int enetc_stats_get(struct rte_eth_dev *dev, dev->data->nb_tx_queues = 0; } +static void +enetc_promiscuous_enable(struct rte_eth_dev *dev) +{ + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + uint32_t psipmr = 0; + + psipmr = enetc_port_rd(enetc_hw, ENETC_PSIPMR); + + /* Setting to enable promiscuous mode*/ + psipmr |= ENETC_PSIPMR_SET_UP(0) | ENETC_PSIPMR_SET_MP(0); + + enetc_port_wr(enetc_hw, ENETC_PSIPMR, psipmr); +} + +static void +enetc_promiscuous_disable(struct rte_eth_dev *dev) +{ + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + uint32_t psipmr = 0; + + /* Setting to disable promiscuous mode for SI0*/ + psipmr = enetc_port_rd(enetc_hw, ENETC_PSIPMR); + psipmr &= (~ENETC_PSIPMR_SET_UP(0)); + + if (dev->data->all_multicast == 0) + psipmr &= (~ENETC_PSIPMR_SET_MP(0)); + + enetc_port_wr(enetc_hw, ENETC_PSIPMR, psipmr); +} + +static void +enetc_allmulticast_enable(struct rte_eth_dev *dev) +{ + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + uint32_t psipmr = 0; + + psipmr = enetc_port_rd(enetc_hw, ENETC_PSIPMR); + + /* Setting to enable allmulticast mode for SI0*/ + psipmr |= ENETC_PSIPMR_SET_MP(0); + + enetc_port_wr(enetc_hw, ENETC_PSIPMR, psipmr); +} + +static void +enetc_allmulticast_disable(struct rte_eth_dev *dev) +{ + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + uint32_t psipmr = 0; + + if (dev->data->promiscuous == 1) + return; /* must remain in all_multicast mode */ + + /* Setting to disable all multicast mode for SI0*/ + psipmr = enetc_port_rd(enetc_hw, ENETC_PSIPMR) & + ~(ENETC_PSIPMR_SET_MP(0)); + + enetc_port_wr(enetc_hw, ENETC_PSIPMR, psipmr); +} + /* * The set of PCI devices this driver supports */ @@ -557,6 +615,10 @@ int enetc_stats_get(struct rte_eth_dev *dev, .link_update = enetc_link_update, .stats_get = enetc_stats_get, .stats_reset = enetc_stats_reset, + .promiscuous_enable = enetc_promiscuous_enable, + .promiscuous_disable = enetc_promiscuous_disable, + .allmulticast_enable = enetc_allmulticast_enable, + .allmulticast_disable = enetc_allmulticast_disable, .dev_infos_get = enetc_dev_infos_get, .rx_queue_setup = enetc_rx_queue_setup, .rx_queue_release = enetc_rx_queue_release, From patchwork Fri Apr 12 11:01:43 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52693 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 955B71B127; Fri, 12 Apr 2019 13:01:54 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30063.outbound.protection.outlook.com [40.107.3.63]) by dpdk.org (Postfix) with ESMTP id 4EA6A1B10E for ; Fri, 12 Apr 2019 13:01:44 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=c0sUSyOk2YB9znDYYcxBSni+ZQPHcrwTXI7aEEIeusg=; b=XJ5jqQSSO8KnKrcOW3904Uw/SjzpQA8CoZ930S6ILKyRRxCg3wELF/7HApYMsUJZxs4telhjcRhAh7ucl/QlwXAlcbRV3B57Nvf3iVhusoq2m3UEWaV5I5nFWHAwe6FIssyYM803+caZ56TFroIYImYGSQ65z5OZxSPS/+VLB8M= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6384.eurprd04.prod.outlook.com (20.179.232.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.18; Fri, 12 Apr 2019 11:01:43 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:43 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 09/13] net/enetc: add MTU update and jumbo frames support Thread-Index: AQHU8R8clQdNpkB6GE+OH0Uk50Z8+w== Date: Fri, 12 Apr 2019 11:01:43 +0000 Message-ID: <20190412105105.24351-10-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d72c96cf-cfd0-46c5-f0e1-08d6bf363f03 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6384; x-ms-traffictypediagnostic: VE1PR04MB6384: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(8676002)(8936002)(14454004)(186003)(446003)(478600001)(476003)(11346002)(72206003)(81166006)(81156014)(50226002)(2616005)(66066001)(4326008)(2501003)(26005)(305945005)(2906002)(5660300002)(3846002)(6116002)(486006)(386003)(6506007)(7736002)(102836004)(1076003)(68736007)(99286004)(76176011)(14444005)(86362001)(6486002)(25786009)(97736004)(110136005)(6436002)(316002)(52116002)(105586002)(6512007)(256004)(71200400001)(71190400001)(15650500001)(106356001)(53936002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6384; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: WELBMVNDzbzAo2jEhvzYSDp0tHg4fSck3yZ1KDsQhWzDrlZ0wP+bRtLeMKSY0CwdOT7+tE6HDIjRodTcK2PDHqHXiH6cWdhoV3C6XSWkCStGhNMtFh2jYTQjjDQPYUtCZ5G00u976byX+ZDNgl7+RfLAClyaVkGQEiVNtfdCFZp/SNujEtKcAVUUrVyUQ1u6kutfXSZMdBFJgbRZT9BU7PBhKgfk3xDgNE1NCEzPxzeqwz8k25pSJmuWRY/lBYH5E+BBgaJ+4zIMEwSnAFsX045bWGu/P7noj1GxjFiqYLgijLvDHOlcNfSNWvhqqFqQIbdmu4xV2mN1x2GxGjQpN9v0ENhASfiuwYgbctqgkB/BdlR/Z6vK0Wn6zqmztIrdkHkLtkSctREZqCDicEcX72q3IuiNd/MpX22Cq/bp+VE= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d72c96cf-cfd0-46c5-f0e1-08d6bf363f03 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:43.1119 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6384 Subject: [dpdk-dev] [PATCH v3 09/13] net/enetc: add MTU update and jumbo frames support 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" Enable the jumbo frames and mtu update feature. Signed-off-by: Gagandeep Singh --- doc/guides/nics/enetc.rst | 1 + doc/guides/nics/features/enetc.ini | 2 + drivers/net/enetc/base/enetc_hw.h | 6 ++- drivers/net/enetc/enetc.h | 5 +++ drivers/net/enetc/enetc_ethdev.c | 86 ++++++++++++++++++++++++++++++++++---- 5 files changed, 91 insertions(+), 9 deletions(-) diff --git a/doc/guides/nics/enetc.rst b/doc/guides/nics/enetc.rst index ab13211..eeb0752 100644 --- a/doc/guides/nics/enetc.rst +++ b/doc/guides/nics/enetc.rst @@ -49,6 +49,7 @@ ENETC Features - Basic stats - Promiscuous - Multicast +- Jumbo packets NIC Driver (PMD) ~~~~~~~~~~~~~~~~ diff --git a/doc/guides/nics/features/enetc.ini b/doc/guides/nics/features/enetc.ini index 6b7bbfb..0eed2cb 100644 --- a/doc/guides/nics/features/enetc.ini +++ b/doc/guides/nics/features/enetc.ini @@ -9,6 +9,8 @@ Link status = Y Basic stats = Y Promiscuous mode = Y Allmulticast mode = Y +MTU update = Y +Jumbo frame = Y Linux VFIO = Y ARMv8 = Y Usage doc = Y diff --git a/drivers/net/enetc/base/enetc_hw.h b/drivers/net/enetc/base/enetc_hw.h index 90a383a..2eb1df3 100644 --- a/drivers/net/enetc/base/enetc_hw.h +++ b/drivers/net/enetc/base/enetc_hw.h @@ -99,7 +99,11 @@ #define ENETC_PM0_RX_EN BIT(1) #define ENETC_PM0_MAXFRM 0x08014 -#define ENETC_SET_MAXFRM(val) ((val) << 16) +#define ENETC_SET_TX_MTU(val) ((val) << 16) +#define ENETC_SET_MAXFRM(val) ((val) & 0xffff) +#define ENETC_PTXMBAR 0x0608 +/* n = TC index [0..7] */ +#define ENETC_PTCMSDUR(n) (0x2020 + (n) * 4) #define ENETC_PM0_STATUS 0x08304 #define ENETC_LINK_MODE 0x0000000000080000ULL diff --git a/drivers/net/enetc/enetc.h b/drivers/net/enetc/enetc.h index 56454dc..e494eb8 100644 --- a/drivers/net/enetc/enetc.h +++ b/drivers/net/enetc/enetc.h @@ -24,6 +24,11 @@ /* BD ALIGN */ #define BD_ALIGN 8 +/* minimum frame size supported */ +#define ENETC_MAC_MINFRM_SIZE 68 +/* maximum frame size supported */ +#define ENETC_MAC_MAXFRM_SIZE 9600 + /* * upper_32_bits - return bits 32-63 of a number * @n: the number we're accessing diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index a7dddc5..66cbf74 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -11,13 +11,6 @@ int enetc_logtype_pmd; static int -enetc_dev_configure(struct rte_eth_dev *dev __rte_unused) -{ - PMD_INIT_FUNC_TRACE(); - return 0; -} - -static int enetc_dev_start(struct rte_eth_dev *dev) { struct enetc_eth_hw *hw = @@ -168,7 +161,8 @@ }; dev_info->max_rx_queues = MAX_RX_RINGS; dev_info->max_tx_queues = MAX_TX_RINGS; - dev_info->max_rx_pktlen = 1500; + dev_info->max_rx_pktlen = ENETC_MAC_MAXFRM_SIZE; + dev_info->rx_offload_capa = DEV_RX_OFFLOAD_JUMBO_FRAME; } static int @@ -597,6 +591,76 @@ int enetc_stats_get(struct rte_eth_dev *dev, enetc_port_wr(enetc_hw, ENETC_PSIPMR, psipmr); } +static int +enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) +{ + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + uint32_t frame_size = mtu + ETHER_HDR_LEN + ETHER_CRC_LEN; + + /* check that mtu is within the allowed range */ + if (mtu < ENETC_MAC_MINFRM_SIZE || frame_size > ENETC_MAC_MAXFRM_SIZE) + return -EINVAL; + + /* + * Refuse mtu that requires the support of scattered packets + * when this feature has not been enabled before. + */ + if (dev->data->min_rx_buf_size && + !dev->data->scattered_rx && frame_size > + dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM) { + ENETC_PMD_ERR("SG not enabled, will not fit in one buffer"); + return -EINVAL; + } + + if (frame_size > ETHER_MAX_LEN) + dev->data->dev_conf.rxmode.offloads &= + DEV_RX_OFFLOAD_JUMBO_FRAME; + else + dev->data->dev_conf.rxmode.offloads &= + ~DEV_RX_OFFLOAD_JUMBO_FRAME; + + enetc_port_wr(enetc_hw, ENETC_PTCMSDUR(0), ENETC_MAC_MAXFRM_SIZE); + enetc_port_wr(enetc_hw, ENETC_PTXMBAR, 2 * ENETC_MAC_MAXFRM_SIZE); + + dev->data->dev_conf.rxmode.max_rx_pkt_len = frame_size; + + /*setting the MTU*/ + enetc_port_wr(enetc_hw, ENETC_PM0_MAXFRM, ENETC_SET_MAXFRM(frame_size) | + ENETC_SET_TX_MTU(ENETC_MAC_MAXFRM_SIZE)); + + return 0; +} + +static int +enetc_dev_configure(struct rte_eth_dev *dev) +{ + struct rte_eth_conf *eth_conf = &dev->data->dev_conf; + uint64_t rx_offloads = eth_conf->rxmode.offloads; + struct enetc_eth_hw *hw = + ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); + struct enetc_hw *enetc_hw = &hw->hw; + + PMD_INIT_FUNC_TRACE(); + + if (rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) { + uint32_t max_len; + + max_len = dev->data->dev_conf.rxmode.max_rx_pkt_len; + + enetc_port_wr(enetc_hw, ENETC_PM0_MAXFRM, + ENETC_SET_MAXFRM(max_len)); + enetc_port_wr(enetc_hw, ENETC_PTCMSDUR(0), + ENETC_MAC_MAXFRM_SIZE); + enetc_port_wr(enetc_hw, ENETC_PTXMBAR, + 2 * ENETC_MAC_MAXFRM_SIZE); + dev->data->mtu = ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN; + } + + return 0; +} + /* * The set of PCI devices this driver supports */ @@ -620,6 +684,7 @@ int enetc_stats_get(struct rte_eth_dev *dev, .allmulticast_enable = enetc_allmulticast_enable, .allmulticast_disable = enetc_allmulticast_disable, .dev_infos_get = enetc_dev_infos_get, + .mtu_set = enetc_mtu_set, .rx_queue_setup = enetc_rx_queue_setup, .rx_queue_release = enetc_rx_queue_release, .tx_queue_setup = enetc_tx_queue_setup, @@ -674,6 +739,11 @@ int enetc_stats_get(struct rte_eth_dev *dev, ether_addr_copy((struct ether_addr *)hw->mac.addr, ð_dev->data->mac_addrs[0]); + /* Set MTU */ + enetc_port_wr(&hw->hw, ENETC_PM0_MAXFRM, + ENETC_SET_MAXFRM(ETHER_MAX_LEN)); + eth_dev->data->mtu = ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN; + ENETC_PMD_DEBUG("port_id %d vendorID=0x%x deviceID=0x%x", eth_dev->data->port_id, pci_dev->id.vendor_id, pci_dev->id.device_id); From patchwork Fri Apr 12 11:01:46 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52694 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0EEC41B12D; Fri, 12 Apr 2019 13:01:58 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50040.outbound.protection.outlook.com [40.107.5.40]) by dpdk.org (Postfix) with ESMTP id 026905F2C for ; Fri, 12 Apr 2019 13:01:47 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=fcjELVAI2tp6iN6v5l0oNgfE+fOEp7TbWUkmCqAzhLE=; b=few4V84loWDFHO4xtIzsP8r5/v5QROwCXtHeDKBCArAXA/d8or0niXlCGEjTq0GVqezuVSt9ubJKwNy8nkuKyhnbGMBAWDsZpWJuP5WNDyLDygy22GZcuTj2M/CX+OW8uPCKOOXlTAsN/lMMxSKm+JhD9yOc5LspFmBVApB3NUI= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6384.eurprd04.prod.outlook.com (20.179.232.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.18; Fri, 12 Apr 2019 11:01:46 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:46 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 10/13] net/enetc: enable Rx-Tx queue start/stop feature Thread-Index: AQHU8R8e+oQ9Fpb6HEKwrNHsl1uLNg== Date: Fri, 12 Apr 2019 11:01:46 +0000 Message-ID: <20190412105105.24351-11-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 75afa1d9-ac48-456f-ea86-08d6bf364103 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6384; x-ms-traffictypediagnostic: VE1PR04MB6384: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(8676002)(8936002)(14454004)(186003)(446003)(478600001)(476003)(11346002)(72206003)(81166006)(81156014)(50226002)(2616005)(66066001)(4326008)(2501003)(26005)(305945005)(2906002)(5660300002)(3846002)(6116002)(486006)(386003)(6506007)(7736002)(102836004)(1076003)(68736007)(99286004)(76176011)(14444005)(86362001)(6486002)(25786009)(97736004)(110136005)(6436002)(316002)(52116002)(105586002)(6512007)(256004)(71200400001)(71190400001)(106356001)(53936002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6384; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: zHd+K0ejoO8T0mq07DaC1p87knRhZ58m3g0BlwGJOs2R9qXE88i7BeB4X0XLIwUL/NxwbOK//oufFPrEgmwedtRjgCY1ywc8FiUdBYvPIGFDBldfHOtFMpLsLzEUD67uyre0iBKnUvAE3t/fpJLitYCGAHVxwcvhz4qEfQIhJqJxQKTTkx670GX9xCZLAaAh4ftQ4dc7e15IrbPlWfIy6JzJtXCWRO1EHgq4tm222p+9ecQ1rgKe0y917DrXXuu4doyVcK7u/VldAROSd2fvsg6oQ9vUShuWxEfC/wVGmus/HJm1nxpdCajEGl0mY3IRUCckaeREVI8DvUi/eyQb0zLmR/8vn/sbTVz5vfVdNpRU82uZy6+o5M2Ws26ZFkCpTO/MfZytz0wKOHLVFcWqq1Kh+Q7XgROZMzh9tAXsxo4= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 75afa1d9-ac48-456f-ea86-08d6bf364103 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:46.6773 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6384 Subject: [dpdk-dev] [PATCH v3 10/13] net/enetc: enable Rx-Tx queue start/stop feature 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" Rx and Tx queue start-stop and deferred queue start features enabled. Signed-off-by: Gagandeep Singh --- doc/guides/nics/enetc.rst | 2 + doc/guides/nics/features/enetc.ini | 1 + drivers/net/enetc/enetc_ethdev.c | 185 ++++++++++++++++++++++++++----------- 3 files changed, 134 insertions(+), 54 deletions(-) diff --git a/doc/guides/nics/enetc.rst b/doc/guides/nics/enetc.rst index eeb0752..26d61f6 100644 --- a/doc/guides/nics/enetc.rst +++ b/doc/guides/nics/enetc.rst @@ -50,6 +50,8 @@ ENETC Features - Promiscuous - Multicast - Jumbo packets +- Queue Start/Stop +- Deferred Queue Start NIC Driver (PMD) ~~~~~~~~~~~~~~~~ diff --git a/doc/guides/nics/features/enetc.ini b/doc/guides/nics/features/enetc.ini index 0eed2cb..bd901fa 100644 --- a/doc/guides/nics/features/enetc.ini +++ b/doc/guides/nics/features/enetc.ini @@ -11,6 +11,7 @@ Promiscuous mode = Y Allmulticast mode = Y MTU update = Y Jumbo frame = Y +Queue start/stop = Y Linux VFIO = Y ARMv8 = Y Usage doc = Y diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index 66cbf74..ff9301e 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -203,7 +203,6 @@ enetc_setup_txbdr(struct enetc_hw *hw, struct enetc_bdr *tx_ring) { int idx = tx_ring->index; - uint32_t tbmr; phys_addr_t bd_address; bd_address = (phys_addr_t) @@ -215,9 +214,6 @@ enetc_txbdr_wr(hw, idx, ENETC_TBLENR, ENETC_RTBLENR_LEN(tx_ring->bd_count)); - tbmr = ENETC_TBMR_EN; - /* enable ring */ - enetc_txbdr_wr(hw, idx, ENETC_TBMR, tbmr); enetc_txbdr_wr(hw, idx, ENETC_TBCIR, 0); enetc_txbdr_wr(hw, idx, ENETC_TBCISR, 0); tx_ring->tcir = (void *)((size_t)hw->reg + @@ -227,16 +223,22 @@ } static int -enetc_alloc_tx_resources(struct rte_eth_dev *dev, - uint16_t queue_idx, - uint16_t nb_desc) +enetc_tx_queue_setup(struct rte_eth_dev *dev, + uint16_t queue_idx, + uint16_t nb_desc, + unsigned int socket_id __rte_unused, + const struct rte_eth_txconf *tx_conf) { - int err; + int err = 0; struct enetc_bdr *tx_ring; struct rte_eth_dev_data *data = dev->data; struct enetc_eth_adapter *priv = ENETC_DEV_PRIVATE(data->dev_private); + PMD_INIT_FUNC_TRACE(); + if (nb_desc > MAX_BD_COUNT) + return -1; + tx_ring = rte_zmalloc(NULL, sizeof(struct enetc_bdr), 0); if (tx_ring == NULL) { ENETC_PMD_ERR("Failed to allocate TX ring memory"); @@ -253,6 +255,17 @@ enetc_setup_txbdr(&priv->hw.hw, tx_ring); data->tx_queues[queue_idx] = tx_ring; + if (!tx_conf->tx_deferred_start) { + /* enable ring */ + enetc_txbdr_wr(&priv->hw.hw, tx_ring->index, + ENETC_TBMR, ENETC_TBMR_EN); + dev->data->tx_queue_state[tx_ring->index] = + RTE_ETH_QUEUE_STATE_STARTED; + } else { + dev->data->tx_queue_state[tx_ring->index] = + RTE_ETH_QUEUE_STATE_STOPPED; + } + return 0; fail: rte_free(tx_ring); @@ -260,24 +273,6 @@ return err; } -static int -enetc_tx_queue_setup(struct rte_eth_dev *dev, - uint16_t queue_idx, - uint16_t nb_desc, - unsigned int socket_id __rte_unused, - const struct rte_eth_txconf *tx_conf __rte_unused) -{ - int err = 0; - - PMD_INIT_FUNC_TRACE(); - if (nb_desc > MAX_BD_COUNT) - return -1; - - err = enetc_alloc_tx_resources(dev, queue_idx, nb_desc); - - return err; -} - static void enetc_tx_queue_release(void *txq) { @@ -367,23 +362,27 @@ buf_size = (uint16_t)(rte_pktmbuf_data_room_size(rx_ring->mb_pool) - RTE_PKTMBUF_HEADROOM); enetc_rxbdr_wr(hw, idx, ENETC_RBBSR, buf_size); - /* enable ring */ - enetc_rxbdr_wr(hw, idx, ENETC_RBMR, ENETC_RBMR_EN); enetc_rxbdr_wr(hw, idx, ENETC_RBPIR, 0); } static int -enetc_alloc_rx_resources(struct rte_eth_dev *dev, - uint16_t rx_queue_id, - uint16_t nb_rx_desc, - struct rte_mempool *mb_pool) +enetc_rx_queue_setup(struct rte_eth_dev *dev, + uint16_t rx_queue_id, + uint16_t nb_rx_desc, + unsigned int socket_id __rte_unused, + const struct rte_eth_rxconf *rx_conf, + struct rte_mempool *mb_pool) { - int err; + int err = 0; struct enetc_bdr *rx_ring; struct rte_eth_dev_data *data = dev->data; struct enetc_eth_adapter *adapter = ENETC_DEV_PRIVATE(data->dev_private); + PMD_INIT_FUNC_TRACE(); + if (nb_rx_desc > MAX_BD_COUNT) + return -1; + rx_ring = rte_zmalloc(NULL, sizeof(struct enetc_bdr), 0); if (rx_ring == NULL) { ENETC_PMD_ERR("Failed to allocate RX ring memory"); @@ -400,6 +399,17 @@ enetc_setup_rxbdr(&adapter->hw.hw, rx_ring, mb_pool); data->rx_queues[rx_queue_id] = rx_ring; + if (!rx_conf->rx_deferred_start) { + /* enable ring */ + enetc_rxbdr_wr(&adapter->hw.hw, rx_ring->index, ENETC_RBMR, + ENETC_RBMR_EN); + dev->data->rx_queue_state[rx_ring->index] = + RTE_ETH_QUEUE_STATE_STARTED; + } else { + dev->data->rx_queue_state[rx_ring->index] = + RTE_ETH_QUEUE_STATE_STOPPED; + } + return 0; fail: rte_free(rx_ring); @@ -407,27 +417,6 @@ return err; } -static int -enetc_rx_queue_setup(struct rte_eth_dev *dev, - uint16_t rx_queue_id, - uint16_t nb_rx_desc, - unsigned int socket_id __rte_unused, - const struct rte_eth_rxconf *rx_conf __rte_unused, - struct rte_mempool *mb_pool) -{ - int err = 0; - - PMD_INIT_FUNC_TRACE(); - if (nb_rx_desc > MAX_BD_COUNT) - return -1; - - err = enetc_alloc_rx_resources(dev, rx_queue_id, - nb_rx_desc, - mb_pool); - - return err; -} - static void enetc_rx_queue_release(void *rxq) { @@ -661,6 +650,90 @@ int enetc_stats_get(struct rte_eth_dev *dev, return 0; } +static int +enetc_rx_queue_start(struct rte_eth_dev *dev, uint16_t qidx) +{ + struct enetc_eth_adapter *priv = + ENETC_DEV_PRIVATE(dev->data->dev_private); + struct enetc_bdr *rx_ring; + uint32_t rx_data; + + rx_ring = dev->data->rx_queues[qidx]; + if (dev->data->rx_queue_state[qidx] == RTE_ETH_QUEUE_STATE_STOPPED) { + rx_data = enetc_rxbdr_rd(&priv->hw.hw, rx_ring->index, + ENETC_RBMR); + rx_data = rx_data | ENETC_RBMR_EN; + enetc_rxbdr_wr(&priv->hw.hw, rx_ring->index, ENETC_RBMR, + rx_data); + dev->data->rx_queue_state[qidx] = RTE_ETH_QUEUE_STATE_STARTED; + } + + return 0; +} + +static int +enetc_rx_queue_stop(struct rte_eth_dev *dev, uint16_t qidx) +{ + struct enetc_eth_adapter *priv = + ENETC_DEV_PRIVATE(dev->data->dev_private); + struct enetc_bdr *rx_ring; + uint32_t rx_data; + + rx_ring = dev->data->rx_queues[qidx]; + if (dev->data->rx_queue_state[qidx] == RTE_ETH_QUEUE_STATE_STARTED) { + rx_data = enetc_rxbdr_rd(&priv->hw.hw, rx_ring->index, + ENETC_RBMR); + rx_data = rx_data & (~ENETC_RBMR_EN); + enetc_rxbdr_wr(&priv->hw.hw, rx_ring->index, ENETC_RBMR, + rx_data); + dev->data->rx_queue_state[qidx] = RTE_ETH_QUEUE_STATE_STOPPED; + } + + return 0; +} + +static int +enetc_tx_queue_start(struct rte_eth_dev *dev, uint16_t qidx) +{ + struct enetc_eth_adapter *priv = + ENETC_DEV_PRIVATE(dev->data->dev_private); + struct enetc_bdr *tx_ring; + uint32_t tx_data; + + tx_ring = dev->data->tx_queues[qidx]; + if (dev->data->tx_queue_state[qidx] == RTE_ETH_QUEUE_STATE_STOPPED) { + tx_data = enetc_txbdr_rd(&priv->hw.hw, tx_ring->index, + ENETC_TBMR); + tx_data = tx_data | ENETC_TBMR_EN; + enetc_txbdr_wr(&priv->hw.hw, tx_ring->index, ENETC_TBMR, + tx_data); + dev->data->tx_queue_state[qidx] = RTE_ETH_QUEUE_STATE_STARTED; + } + + return 0; +} + +static int +enetc_tx_queue_stop(struct rte_eth_dev *dev, uint16_t qidx) +{ + struct enetc_eth_adapter *priv = + ENETC_DEV_PRIVATE(dev->data->dev_private); + struct enetc_bdr *tx_ring; + uint32_t tx_data; + + tx_ring = dev->data->tx_queues[qidx]; + if (dev->data->tx_queue_state[qidx] == RTE_ETH_QUEUE_STATE_STARTED) { + tx_data = enetc_txbdr_rd(&priv->hw.hw, tx_ring->index, + ENETC_TBMR); + tx_data = tx_data & (~ENETC_TBMR_EN); + enetc_txbdr_wr(&priv->hw.hw, tx_ring->index, ENETC_TBMR, + tx_data); + dev->data->tx_queue_state[qidx] = RTE_ETH_QUEUE_STATE_STOPPED; + } + + return 0; +} + /* * The set of PCI devices this driver supports */ @@ -686,8 +759,12 @@ int enetc_stats_get(struct rte_eth_dev *dev, .dev_infos_get = enetc_dev_infos_get, .mtu_set = enetc_mtu_set, .rx_queue_setup = enetc_rx_queue_setup, + .rx_queue_start = enetc_rx_queue_start, + .rx_queue_stop = enetc_rx_queue_stop, .rx_queue_release = enetc_rx_queue_release, .tx_queue_setup = enetc_tx_queue_setup, + .tx_queue_start = enetc_tx_queue_start, + .tx_queue_stop = enetc_tx_queue_stop, .tx_queue_release = enetc_tx_queue_release, .dev_supported_ptypes_get = enetc_supported_ptypes_get, }; From patchwork Fri Apr 12 11:01:50 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52695 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 707081B131; Fri, 12 Apr 2019 13:02:02 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50044.outbound.protection.outlook.com [40.107.5.44]) by dpdk.org (Postfix) with ESMTP id BF4895F34 for ; Fri, 12 Apr 2019 13:01:51 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=GRszbgTBblG2qUsNml0WJOLvK1uH2a8lEuvGp7EUVFs=; b=vbibkuyOFZ9/Jxluou4FoFiaoBAsQJKYvhdWGdP3IovJUXKtq6CPLy6j6hj9979p69z14oJa7eEAnMl386JlZReH//aYuK8fkcSkPkBCfmSw0bbDKsI5Px9aBSxTEmXKQFMjRrWL6jE2wK856Fw4a3PSYk0ibhAkTAU/YO9amQ0= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6384.eurprd04.prod.outlook.com (20.179.232.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.18; Fri, 12 Apr 2019 11:01:50 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:50 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 11/13] net/enetc: enable CRC offload feature Thread-Index: AQHU8R8hnJ0kBD1a6UuXA7meUEk/YQ== Date: Fri, 12 Apr 2019 11:01:50 +0000 Message-ID: <20190412105105.24351-12-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 63ffbc65-ed6b-4f2c-316a-08d6bf364323 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6384; x-ms-traffictypediagnostic: VE1PR04MB6384: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(8676002)(8936002)(14454004)(186003)(446003)(478600001)(476003)(11346002)(72206003)(81166006)(81156014)(50226002)(2616005)(66066001)(4326008)(2501003)(26005)(305945005)(2906002)(5660300002)(3846002)(6116002)(486006)(386003)(6506007)(7736002)(102836004)(1076003)(68736007)(99286004)(76176011)(14444005)(86362001)(6486002)(25786009)(97736004)(110136005)(6436002)(316002)(52116002)(105586002)(6512007)(256004)(71200400001)(71190400001)(106356001)(53936002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6384; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: RnxOGA5cZFfXObt1O4Xhr3LXvlf/mcSYLsThVmQt7RwRXslgGPE2JjxdXMQERJxdM66rXLAihmCH++E/DsbRl2HExJAMHe+/RwPjwBypYIvcHiXtHZKFeG/5C7HxxF43g9q12YEhEHcVpytqAZx8d/g1dwuXhMul/LvkC9e3bO5zAGqryjEuUHdlf/xGBwQ7ObK3+liM2ts1WXI3XHaBQmXNQOWjnpXZMYY9a7KrIw6kRLtgQdqdbKGladsWKI0ELHyz8aFh4UPOnENiwZsfx+kyty3ki0UvGJGLBLM6o/uhwNJg7ra4GZlFOLYOAo95HxohdRUG6Tc8TCI0XmAuXDix+K+wIXDd7IdVcSuuK6aHsBzk94vK36Ewa/yv7gsKZtujO0/7TmDh8WJpmv2LKwV0/ohF686jfsNp7bYoM9w= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 63ffbc65-ed6b-4f2c-316a-08d6bf364323 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:50.3258 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6384 Subject: [dpdk-dev] [PATCH v3 11/13] net/enetc: enable CRC offload feature 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" CRC offload keep feature supported Signed-off-by: Gagandeep Singh --- doc/guides/nics/enetc.rst | 1 + doc/guides/nics/features/enetc.ini | 1 + drivers/net/enetc/base/enetc_hw.h | 1 + drivers/net/enetc/enetc.h | 1 + drivers/net/enetc/enetc_ethdev.c | 20 +++++++++++++++++--- drivers/net/enetc/enetc_rxtx.c | 6 ++++-- 6 files changed, 25 insertions(+), 5 deletions(-) diff --git a/doc/guides/nics/enetc.rst b/doc/guides/nics/enetc.rst index 26d61f6..2620460 100644 --- a/doc/guides/nics/enetc.rst +++ b/doc/guides/nics/enetc.rst @@ -52,6 +52,7 @@ ENETC Features - Jumbo packets - Queue Start/Stop - Deferred Queue Start +- CRC offload NIC Driver (PMD) ~~~~~~~~~~~~~~~~ diff --git a/doc/guides/nics/features/enetc.ini b/doc/guides/nics/features/enetc.ini index bd901fa..101dc0a 100644 --- a/doc/guides/nics/features/enetc.ini +++ b/doc/guides/nics/features/enetc.ini @@ -12,6 +12,7 @@ Allmulticast mode = Y MTU update = Y Jumbo frame = Y Queue start/stop = Y +CRC offload = Y Linux VFIO = Y ARMv8 = Y Usage doc = Y diff --git a/drivers/net/enetc/base/enetc_hw.h b/drivers/net/enetc/base/enetc_hw.h index 2eb1df3..261ad15 100644 --- a/drivers/net/enetc/base/enetc_hw.h +++ b/drivers/net/enetc/base/enetc_hw.h @@ -97,6 +97,7 @@ #define ENETC_PM0_CMD_CFG 0x08008 #define ENETC_PM0_TX_EN BIT(0) #define ENETC_PM0_RX_EN BIT(1) +#define ENETC_PM0_CRC BIT(6) #define ENETC_PM0_MAXFRM 0x08014 #define ENETC_SET_TX_MTU(val) ((val) << 16) diff --git a/drivers/net/enetc/enetc.h b/drivers/net/enetc/enetc.h index e494eb8..8c830a5 100644 --- a/drivers/net/enetc/enetc.h +++ b/drivers/net/enetc/enetc.h @@ -69,6 +69,7 @@ struct enetc_bdr { void *tcisr; /* Tx */ int next_to_alloc; /* Rx */ }; + uint8_t crc_len; /* 0 if CRC stripped, 4 otherwise */ }; /* diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index ff9301e..ffae8ae 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -162,7 +162,9 @@ dev_info->max_rx_queues = MAX_RX_RINGS; dev_info->max_tx_queues = MAX_TX_RINGS; dev_info->max_rx_pktlen = ENETC_MAC_MAXFRM_SIZE; - dev_info->rx_offload_capa = DEV_RX_OFFLOAD_JUMBO_FRAME; + dev_info->rx_offload_capa = + (DEV_RX_OFFLOAD_KEEP_CRC | + DEV_RX_OFFLOAD_JUMBO_FRAME); } static int @@ -378,6 +380,7 @@ struct rte_eth_dev_data *data = dev->data; struct enetc_eth_adapter *adapter = ENETC_DEV_PRIVATE(data->dev_private); + uint64_t rx_offloads = data->dev_conf.rxmode.offloads; PMD_INIT_FUNC_TRACE(); if (nb_rx_desc > MAX_BD_COUNT) @@ -410,6 +413,9 @@ RTE_ETH_QUEUE_STATE_STOPPED; } + rx_ring->crc_len = (uint8_t)((rx_offloads & DEV_RX_OFFLOAD_KEEP_CRC) ? + ETHER_CRC_LEN : 0); + return 0; fail: rte_free(rx_ring); @@ -625,11 +631,11 @@ int enetc_stats_get(struct rte_eth_dev *dev, static int enetc_dev_configure(struct rte_eth_dev *dev) { - struct rte_eth_conf *eth_conf = &dev->data->dev_conf; - uint64_t rx_offloads = eth_conf->rxmode.offloads; struct enetc_eth_hw *hw = ENETC_DEV_PRIVATE_TO_HW(dev->data->dev_private); struct enetc_hw *enetc_hw = &hw->hw; + struct rte_eth_conf *eth_conf = &dev->data->dev_conf; + uint64_t rx_offloads = eth_conf->rxmode.offloads; PMD_INIT_FUNC_TRACE(); @@ -647,6 +653,14 @@ int enetc_stats_get(struct rte_eth_dev *dev, dev->data->mtu = ETHER_MAX_LEN - ETHER_HDR_LEN - ETHER_CRC_LEN; } + if (rx_offloads & DEV_RX_OFFLOAD_KEEP_CRC) { + int config; + + config = enetc_port_rd(enetc_hw, ENETC_PM0_CMD_CFG); + config |= ENETC_PM0_CRC; + enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG, config); + } + return 0; } diff --git a/drivers/net/enetc/enetc_rxtx.c b/drivers/net/enetc/enetc_rxtx.c index 42f16ca..4a758d2 100644 --- a/drivers/net/enetc/enetc_rxtx.c +++ b/drivers/net/enetc/enetc_rxtx.c @@ -208,8 +208,10 @@ static inline void __attribute__((hot)) if (!bd_status) break; - rx_swbd->buffer_addr->pkt_len = rxbd->r.buf_len; - rx_swbd->buffer_addr->data_len = rxbd->r.buf_len; + rx_swbd->buffer_addr->pkt_len = rxbd->r.buf_len - + rx_ring->crc_len; + rx_swbd->buffer_addr->data_len = rxbd->r.buf_len - + rx_ring->crc_len; rx_swbd->buffer_addr->hash.rss = rxbd->r.rss_hash; rx_swbd->buffer_addr->ol_flags = 0; enetc_dev_rx_parse(rx_swbd->buffer_addr, From patchwork Fri Apr 12 11:01:53 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52696 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 7675B1B13B; Fri, 12 Apr 2019 13:02:06 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30077.outbound.protection.outlook.com [40.107.3.77]) by dpdk.org (Postfix) with ESMTP id 0CA531B129 for ; Fri, 12 Apr 2019 13:01:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=Y7nQFTq06j4Ivnilqpc+nCc3z+QBHBTiXZpKMRFz/cU=; b=sI3EnnuzfG8Y23/Dh7iJOdlns/bleg8gRiwX3DIhbAUPTM8QIaIX+I0ywtwivYnw6Sg3NUugOCu+w6tkDWhk3JEnTwSnAT5zskRC0PRn5xGgzaPHRdwDzCOD8uguGCjpDYyIhB8JFF+Ma+BDi+kHzmMRhoKsbmkP44m0ZVvDLng= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6384.eurprd04.prod.outlook.com (20.179.232.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.18; Fri, 12 Apr 2019 11:01:53 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:53 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh Thread-Topic: [PATCH v3 12/13] net/enetc: enable Rx checksum offload validation Thread-Index: AQHU8R8jvrs1dzL1VEuKdKmB5MaFdg== Date: Fri, 12 Apr 2019 11:01:53 +0000 Message-ID: <20190412105105.24351-13-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 166a97e7-5e46-4f1a-af6f-08d6bf36454e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6384; x-ms-traffictypediagnostic: VE1PR04MB6384: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(8676002)(8936002)(14454004)(186003)(446003)(478600001)(476003)(11346002)(72206003)(81166006)(81156014)(50226002)(2616005)(66066001)(4326008)(2501003)(26005)(305945005)(2906002)(5660300002)(3846002)(6116002)(486006)(386003)(6506007)(7736002)(102836004)(1076003)(68736007)(99286004)(76176011)(14444005)(86362001)(6486002)(25786009)(97736004)(110136005)(6436002)(316002)(52116002)(105586002)(6512007)(256004)(71200400001)(71190400001)(106356001)(53936002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6384; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Oeb28tgnmfVsd402mzvAaWlRDd/cmhlPV6YzWxYWQJ9gx1YKpeIvlAApXTh/hHwgUwQjkYlLgwAyI8ZmCB2ftumHI9yFhIXYoSBLCMyCmdJk+Gc+WIk0SY9voIx8J27VjhDqnG0cVCe7jFX3Ma/P4G8PutQvzQHqP9JSfWPLOZW3QsQPlhvbAeFDEVwGuQCiNKZ3AkNWEk6nxsdTnde3b8VgJpg5TaE00vUUyB0wKtnavQaatcHxE9Kr627teK+l+b9rloFREwrO3l7EVY1RKRhuTocl7yCHjj8pGGUbHiWlpIXouHJsJxuslBfjeDq1tsiPaqXDLo1E+8ougXuzvplOQ4jKCEm65Okv1VqndF8vgc2UFTXO4JNiz09rm2c2LsEzgSDTaOpO7/Eg+3HzYLqKZTGPvLgosx8pTruXE5M= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 166a97e7-5e46-4f1a-af6f-08d6bf36454e X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:53.6501 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6384 Subject: [dpdk-dev] [PATCH v3 12/13] net/enetc: enable Rx checksum offload validation 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" Checksum Validation on Rx is supported. Signed-off-by: Gagandeep Singh --- doc/guides/nics/features/enetc.ini | 2 + drivers/net/enetc/base/enetc_hw.h | 5 ++ drivers/net/enetc/enetc_ethdev.c | 15 +++++- drivers/net/enetc/enetc_rxtx.c | 107 ++++++++++++++++++++++++++++++++----- 4 files changed, 115 insertions(+), 14 deletions(-) diff --git a/doc/guides/nics/features/enetc.ini b/doc/guides/nics/features/enetc.ini index 101dc0a..39a5201 100644 --- a/doc/guides/nics/features/enetc.ini +++ b/doc/guides/nics/features/enetc.ini @@ -13,6 +13,8 @@ MTU update = Y Jumbo frame = Y Queue start/stop = Y CRC offload = Y +L3 checksum offload = P +L4 checksum offload = P Linux VFIO = Y ARMv8 = Y Usage doc = Y diff --git a/drivers/net/enetc/base/enetc_hw.h b/drivers/net/enetc/base/enetc_hw.h index 261ad15..ff2bda5 100644 --- a/drivers/net/enetc/base/enetc_hw.h +++ b/drivers/net/enetc/base/enetc_hw.h @@ -99,6 +99,10 @@ #define ENETC_PM0_RX_EN BIT(1) #define ENETC_PM0_CRC BIT(6) +#define ENETC_PAR_PORT_CFG 0x03050 +#define L3_CKSUM BIT(0) +#define L4_CKSUM BIT(1) + #define ENETC_PM0_MAXFRM 0x08014 #define ENETC_SET_TX_MTU(val) ((val) << 16) #define ENETC_SET_MAXFRM(val) ((val) & 0xffff) @@ -182,6 +186,7 @@ #define ENETC_TXBD_FLAGS_F BIT(15) /* ENETC Parsed values (Little Endian) */ +#define ENETC_PARSE_ERROR 0x8000 #define ENETC_PKT_TYPE_ETHER 0x0060 #define ENETC_PKT_TYPE_IPV4 0x0000 #define ENETC_PKT_TYPE_IPV6 0x0020 diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c index ffae8ae..362e074 100644 --- a/drivers/net/enetc/enetc_ethdev.c +++ b/drivers/net/enetc/enetc_ethdev.c @@ -163,7 +163,10 @@ dev_info->max_tx_queues = MAX_TX_RINGS; dev_info->max_rx_pktlen = ENETC_MAC_MAXFRM_SIZE; dev_info->rx_offload_capa = - (DEV_RX_OFFLOAD_KEEP_CRC | + (DEV_RX_OFFLOAD_IPV4_CKSUM | + DEV_RX_OFFLOAD_UDP_CKSUM | + DEV_RX_OFFLOAD_TCP_CKSUM | + DEV_RX_OFFLOAD_KEEP_CRC | DEV_RX_OFFLOAD_JUMBO_FRAME); } @@ -636,6 +639,7 @@ int enetc_stats_get(struct rte_eth_dev *dev, struct enetc_hw *enetc_hw = &hw->hw; struct rte_eth_conf *eth_conf = &dev->data->dev_conf; uint64_t rx_offloads = eth_conf->rxmode.offloads; + uint32_t checksum = L3_CKSUM | L4_CKSUM; PMD_INIT_FUNC_TRACE(); @@ -661,6 +665,15 @@ int enetc_stats_get(struct rte_eth_dev *dev, enetc_port_wr(enetc_hw, ENETC_PM0_CMD_CFG, config); } + if (rx_offloads & DEV_RX_OFFLOAD_IPV4_CKSUM) + checksum &= ~L3_CKSUM; + + if (rx_offloads & (DEV_RX_OFFLOAD_UDP_CKSUM | DEV_RX_OFFLOAD_TCP_CKSUM)) + checksum &= ~L4_CKSUM; + + enetc_port_wr(enetc_hw, ENETC_PAR_PORT_CFG, checksum); + + return 0; } diff --git a/drivers/net/enetc/enetc_rxtx.c b/drivers/net/enetc/enetc_rxtx.c index 4a758d2..0ce7dbe 100644 --- a/drivers/net/enetc/enetc_rxtx.c +++ b/drivers/net/enetc/enetc_rxtx.c @@ -115,69 +115,150 @@ return j; } +static inline void enetc_slow_parsing(struct rte_mbuf *m, + uint64_t parse_results) +{ + m->ol_flags &= ~(PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_GOOD); + + switch (parse_results) { + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV4: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV4; + m->ol_flags |= PKT_RX_IP_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV6: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV6; + m->ol_flags |= PKT_RX_IP_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV4_TCP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV4 | + RTE_PTYPE_L4_TCP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV6_TCP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV6 | + RTE_PTYPE_L4_TCP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV4_UDP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV4 | + RTE_PTYPE_L4_UDP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV6_UDP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV6 | + RTE_PTYPE_L4_UDP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV4_SCTP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV4 | + RTE_PTYPE_L4_SCTP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV6_SCTP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV6 | + RTE_PTYPE_L4_SCTP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV4_ICMP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV4 | + RTE_PTYPE_L4_ICMP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + case ENETC_PARSE_ERROR | ENETC_PKT_TYPE_IPV6_ICMP: + m->packet_type = RTE_PTYPE_L2_ETHER | + RTE_PTYPE_L3_IPV6 | + RTE_PTYPE_L4_ICMP; + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | + PKT_RX_L4_CKSUM_BAD; + return; + /* More switch cases can be added */ + default: + m->packet_type = RTE_PTYPE_UNKNOWN; + m->ol_flags |= PKT_RX_IP_CKSUM_UNKNOWN | + PKT_RX_L4_CKSUM_UNKNOWN; + } +} + static inline void __attribute__((hot)) enetc_dev_rx_parse(struct rte_mbuf *m, uint16_t parse_results) { ENETC_PMD_DP_DEBUG("parse summary = 0x%x ", parse_results); + m->ol_flags |= PKT_RX_IP_CKSUM_GOOD | PKT_RX_L4_CKSUM_GOOD; - m->packet_type = RTE_PTYPE_UNKNOWN; switch (parse_results) { case ENETC_PKT_TYPE_ETHER: m->packet_type = RTE_PTYPE_L2_ETHER; - break; + return; case ENETC_PKT_TYPE_IPV4: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4; - break; + return; case ENETC_PKT_TYPE_IPV6: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6; - break; + return; case ENETC_PKT_TYPE_IPV4_TCP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_TCP; - break; + return; case ENETC_PKT_TYPE_IPV6_TCP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_TCP; - break; + return; case ENETC_PKT_TYPE_IPV4_UDP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_UDP; - break; + return; case ENETC_PKT_TYPE_IPV6_UDP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_UDP; - break; + return; case ENETC_PKT_TYPE_IPV4_SCTP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_SCTP; - break; + return; case ENETC_PKT_TYPE_IPV6_SCTP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_SCTP; - break; + return; case ENETC_PKT_TYPE_IPV4_ICMP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV4 | RTE_PTYPE_L4_ICMP; - break; + return; case ENETC_PKT_TYPE_IPV6_ICMP: m->packet_type = RTE_PTYPE_L2_ETHER | RTE_PTYPE_L3_IPV6 | RTE_PTYPE_L4_ICMP; - break; + return; /* More switch cases can be added */ default: - m->packet_type = RTE_PTYPE_UNKNOWN; + enetc_slow_parsing(m, parse_results); } + } static int From patchwork Fri Apr 12 11:01:57 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52697 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1AF3F1B140; Fri, 12 Apr 2019 13:02:10 +0200 (CEST) Received: from EUR03-VE1-obe.outbound.protection.outlook.com (mail-eopbgr50078.outbound.protection.outlook.com [40.107.5.78]) by dpdk.org (Postfix) with ESMTP id EF3265F20; Fri, 12 Apr 2019 13:01:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zL/fUD3o6w67QBHFZjUeaBj4pxVV8URfNEB9yX9OI38=; b=bJsGAbyb9XV1ydzYJvuyTHCYP8uf77DzBdTz4OSqjaWvriMezbGaweyD7EYrzWRlfC+NnbL/U3KvzMCR/ELZRs9RwIPfxhksEAO0zLq4qRwW+wmyBsHtJRConXMeCh6XFZfFX56n2IWmWRGaRdjzE/FNyvSVlqYeGtw0ezTrD2I= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6384.eurprd04.prod.outlook.com (20.179.232.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1792.18; Fri, 12 Apr 2019 11:01:57 +0000 Received: from VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0]) by VE1PR04MB6365.eurprd04.prod.outlook.com ([fe80::f5ad:f178:4c55:13e0%3]) with mapi id 15.20.1792.016; Fri, 12 Apr 2019 11:01:57 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: Gagandeep Singh , "stable@dpdk.org" Thread-Topic: [PATCH v3 13/13] net/enetc: fix crash at high speed traffic Thread-Index: AQHU8R8lmuj+KwCqIkWcM/rKt1jrOQ== Date: Fri, 12 Apr 2019 11:01:57 +0000 Message-ID: <20190412105105.24351-14-g.singh@nxp.com> References: <1555075598-4988-1-git-send-email-g.singh@nxp.com> <20190412105105.24351-1-g.singh@nxp.com> In-Reply-To: <20190412105105.24351-1-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: TYAPR01CA0204.jpnprd01.prod.outlook.com (2603:1096:404:29::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 2.17.1 authentication-results: spf=none (sender IP is ) smtp.mailfrom=G.Singh@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [92.120.1.68] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 34e92fe4-57c9-4f7e-d600-08d6bf364788 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600139)(711020)(4605104)(4618075)(2017052603328)(7193020); SRVR:VE1PR04MB6384; x-ms-traffictypediagnostic: VE1PR04MB6384: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(346002)(39860400002)(189003)(199004)(8676002)(8936002)(14454004)(186003)(446003)(478600001)(476003)(11346002)(72206003)(81166006)(81156014)(50226002)(2616005)(66066001)(4326008)(2501003)(26005)(305945005)(2906002)(5660300002)(3846002)(6116002)(486006)(386003)(6506007)(7736002)(102836004)(1076003)(68736007)(4744005)(99286004)(76176011)(14444005)(86362001)(6486002)(25786009)(97736004)(54906003)(110136005)(6436002)(316002)(52116002)(105586002)(6512007)(256004)(71200400001)(71190400001)(106356001)(53936002)(36756003); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6384; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: nxp.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: Wm0SNBk+b24d798CptJPul2U6WeFJa9584aQ65Tn0XjS8i8gcNVIEuHjtAaSZpUozdEqWsHBVAOqgTCUKwOM21rtMlE2SiTXXzM8b0vQtpW92b0chtXGPYrbWuLhbA1ARplMTLw+yQ6lICvhtZ5kZ1Jr8qCjbBC3FdIEWbZO81ilJVdirhAxXqSvbx/+s9AJlI0ls36TM+X5oPXdgjcHpZYROq9uNyEAtgPaAsA/IDTl4dm08UdrbcFJQZPmF8y6lQz13qSAKO+b2ENQq29hh8G85WIKASOwaM5wITKndFm/VUJ2kwm9NLUaTi9MftO2WJfsHvIkGxMWS1iuJrhICXG1si8pODf8qU+mSG2t7H598HnXnuaYVr9GYr2JTBIBJZL0OO5zF5eoT6m5zBhC/K7GZGo8CmAQM2P4g+unqVU= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 34e92fe4-57c9-4f7e-d600-08d6bf364788 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 11:01:57.6758 (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-Transport-CrossTenantHeadersStamped: VE1PR04MB6384 Subject: [dpdk-dev] [PATCH v3 13/13] net/enetc: fix crash at high speed traffic 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" On xmit side, there should be a check whether BD ring has free BDs available before transmit a packet to avoid data corruption and buffer leak issue. Fixes: 469c6111a799 ("net/enetc: enable Rx and Tx") Cc: stable@dpdk.org Signed-off-by: Gagandeep Singh --- drivers/net/enetc/enetc_rxtx.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/enetc/enetc_rxtx.c b/drivers/net/enetc/enetc_rxtx.c index 0ce7dbe..81b0ef3 100644 --- a/drivers/net/enetc/enetc_rxtx.c +++ b/drivers/net/enetc/enetc_rxtx.c @@ -49,11 +49,16 @@ uint16_t nb_pkts) { struct enetc_swbd *tx_swbd; - int i, start; + int i, start, bds_to_use; struct enetc_tx_bd *txbd; struct enetc_bdr *tx_ring = (struct enetc_bdr *)tx_queue; i = tx_ring->next_to_use; + + bds_to_use = enetc_bd_unused(tx_ring); + if (bds_to_use < nb_pkts) + nb_pkts = bds_to_use; + start = 0; while (nb_pkts--) { enetc_clean_tx_ring(tx_ring);