From patchwork Fri Apr 12 07:04:05 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52666 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 544CE54AE; Fri, 12 Apr 2019 09:04:10 +0200 (CEST) Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-eopbgr30087.outbound.protection.outlook.com [40.107.3.87]) by dpdk.org (Postfix) with ESMTP id 21B965398 for ; Fri, 12 Apr 2019 09:04:07 +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=aPzpMHj1W4nwBHFvCZZMEr0bHsOwBKsAdPFpH4z5cxpUlb88m7/zBzFgWtyNajLeEJz9wH+khhvCiaY4vkbsDPfdFa/wuh3lh525dw+17Q6vCO7HwFHIg5Nc7Cpz3t3DwflVMLRMmnHDj6gVa21jwHzE5aR2lwHUN6pHmtw/pk8= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6592.eurprd04.prod.outlook.com (20.179.234.208) 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 07:04:05 +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 07:04:05 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 01/13] net/enetc: support physical addressing mode Thread-Index: AQHU8P3qAR6Pee0cQE21Kw6NppGZpQ== Date: Fri, 12 Apr 2019 07:04:05 +0000 Message-ID: <1555075598-4988-2-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: b921d821-b21b-4843-d35f-08d6bf150c99 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:VE1PR04MB6592; x-ms-traffictypediagnostic: VE1PR04MB6592: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(346002)(39860400002)(136003)(376002)(366004)(396003)(199004)(189003)(71190400001)(446003)(52116002)(6512007)(53936002)(14454004)(72206003)(86362001)(478600001)(316002)(4326008)(110136005)(256004)(25786009)(54906003)(50226002)(68736007)(8936002)(2906002)(97736004)(81156014)(81166006)(36756003)(8676002)(7736002)(305945005)(6116002)(5660300002)(3846002)(6486002)(106356001)(26005)(105586002)(2616005)(386003)(186003)(71200400001)(476003)(2501003)(76176011)(11346002)(6436002)(102836004)(6506007)(486006)(66066001)(99286004); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6592; H:VE1PR04MB6365.eurprd04.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; A:1; MX: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: Ea/rGCxBgFvT/09eJkWBRIiHkEOHqIPw9aOuxY6V4V88m8XPWdJX6XFwzlHYFZPV8A1tXYegzRn5/ejZb+6QnvdbiOZ6CQbq3BnT0AeyQv7jOT7q/huuZdTJ2H//AUtpjg1Vh+vCeM+JDTIVi7uW9IHMDWq2xgialF+gfkn+GV6Lu8g7r55kANjTdaC2dZtV4KI8aKyDqe2+WXfLvOc0kiw14Dzyf3oopNi157aXzseSqfSNykkJ8MB+4oLNZqe0O5wO/dkdjAvzlKUf/pl5ybehzA9bhgV7DHNzNgQ6G3hTO/zPNNZNEJPpljxsFLtZX7KVNkLssg0ygW6A1+dqdWIdKiJ1NHzHFMBFwnxr5vfGi4K+ke1/+lmkbnNvToWodiNOECCAh6unJEYIvlBqxmTi8e8O6mtZgANhHCf6Vv4= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: b921d821-b21b-4843-d35f-08d6bf150c99 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:05.5256 (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: VE1PR04MB6592 Subject: [dpdk-dev] [PATCH v2 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 07:04:07 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52667 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 952D4559A; Fri, 12 Apr 2019 09:04:14 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70088.outbound.protection.outlook.com [40.107.7.88]) by dpdk.org (Postfix) with ESMTP id D35C9548B for ; Fri, 12 Apr 2019 09:04:08 +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=xOJiFbZ5u7FlO3uXyDV9evs9i4tARulN2v58yih8M4A=; b=vqj62hyBblhxTN/Q/iZX672aM0r/za0CIixKxxl+/vwuSuyN3HT662X50TRxEWQygFY5YeI8AMVUPtr/zi5VpMClGmg+Fu+Ia2pQehZKoSTCvxXaGOFnqyHQwVJiESiuzn+7rtpfaIK1pddRd9iguZZk6EctyaPIyvKWLOr5hO8= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:07 +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 07:04:07 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 02/13] net/enetc: fix SMMU unhandled context fault Thread-Index: AQHU8P3rVzSwHYNCxka9du/9wj6eyA== Date: Fri, 12 Apr 2019 07:04:07 +0000 Message-ID: <1555075598-4988-3-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 21bfa09a-af5f-466b-0d58-08d6bf150de1 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: WPIkcrOAC26ksiyBL4+7OTxUoDfle0s2uNdIY1VUkJ2WcRfyraInhldwWdKw9QC3LgCw9OGGtO6LaXKtAYeSp9eByItz4kf6oV03p/QNB1Ttl0pP535+K+p49cAwc94viQSmZCGsjDC7O+vbCo2kXPS3oHumzMfb6wCGazDQwmGfRY7WpcmaaNRYC5UX5eBIU95qRU0BT7x2ZvF1uy6GzKO6YXDekts95nkAT5EAbIHaY6EWi88XnTj8+SXWNPfbshpgNPOjRn8cbOcqumWINXoqmhFOdKFqhm8d4IJkhSa3MNM6m/PCeXv6CV7ww6WrnML/IEG5+GnWnKaFkgURXbk7jjNuI8T5UoQ5zAudNoNgdmDynzqzQwTtdFo30Ia9pME8pv+ARSXqgR5NsAnWNYr4FBCJOu6c/bOnaRplnDg= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 21bfa09a-af5f-466b-0d58-08d6bf150de1 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:07.2398 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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: g.singh@nxp.com 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 07:04:08 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52668 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 2F1BC58CB; Fri, 12 Apr 2019 09:04:19 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70041.outbound.protection.outlook.com [40.107.7.41]) by dpdk.org (Postfix) with ESMTP id 33BDB4F9A for ; Fri, 12 Apr 2019 09:04:10 +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=Mh5ubX/e5iIJjLSR4B8UTjgyZK+pE03Pen5kx+OLpOc=; b=TiXycE1+pVVBgHuRT1GP985sYGxKOEFfzgUtziRAbw5hjiXzx5dcocQNPLa9EdCxzKckPwdhpbBghISfjzswKvK6K5fSoYfXtL0zOBa663K0q1dwc7zaad6xXWRgqm6Z5eHoQHs6g+74UJNUdDvmhu5/niQkRN3c5FRWUqY+eQA= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:09 +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 07:04:09 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 03/13] net/enetc: use correct buffer allocation API Thread-Index: AQHU8P3sKTVIRuj6kUS1XV5sCI7SFg== Date: Fri, 12 Apr 2019 07:04:08 +0000 Message-ID: <1555075598-4988-4-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 50f8caaf-e200-47e7-892a-08d6bf150ee7 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(4744005)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: pgkBDHClvKE1PG6ZD+zVhCt/IqfxccShMCB3gGihascBdvvJhZABKflDP2imojbbeh2wLQIhG8r1risd3YJNBcBd8wEn2rmOiIw+slt0hE6IzuP0krbL2IEuT6IF8C0iNZ+6vpAlp2PLOLCZCvyDBLEJ+rC+6OaNUnxBgqynlOWnepifXI4L8PvWaIptHsdmTry78EC8COQP034Li8Kdk60LlbtMBPoxpXin1KXY+hNphg5SeRC5C1auij6Fbg2AkmmVQ9ar3YUOEeNizcVw/wxglk76AJyy9Hrb1TOuw9fbvCoUchJmOb2ELxj8vcDI4IBd7R5hAIrWfgJLCtpgpHqpkwptvR3bL4hrqC4Lhj15ct+x8EzIcSc4Nz4zFgqzgajZrgdqq/HPzqI7x74U2C9ctHI3K74R8cE7xZr61oc= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 50f8caaf-e200-47e7-892a-08d6bf150ee7 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:08.9820 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 03/13] net/enetc: use correct buffer allocation API 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" 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: g.singh@nxp.com 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 07:04:10 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52669 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 D2BF2569B; Fri, 12 Apr 2019 09:04:23 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70080.outbound.protection.outlook.com [40.107.7.80]) by dpdk.org (Postfix) with ESMTP id 6C8E744C3 for ; Fri, 12 Apr 2019 09:04:12 +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=o/+pqacnUaGjT0TjG+JAZQKw+3D/sgwE7AO6inf+7X4AIJbotibgSzdthkugQOfXW9pEsNQ0ENhfkq9eALU89WxFVHCMrzVfelY0WuX0hxo8B0aCBWk5loEMaASGaBeW/OQifizpJ+FEHYzgFakC2VEt7qPUUK28P2chbtsX9Sk= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:10 +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 07:04:10 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 04/13] net/enetc: set interface mode for SXGMII Thread-Index: AQHU8P3tVCsjIyq+r0yhdjv+M5kYkg== Date: Fri, 12 Apr 2019 07:04:10 +0000 Message-ID: <1555075598-4988-5-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d48670fd-91da-466b-4b81-08d6bf150ff2 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: u5gRzF+folBaIgaTA9PsxVHyarWgQEc96AR5pMmO2YegNgGRWMRY2aH+o2kCwitbU0psGaPxuViRpVK84Dh1k/VgzEeuLuZhqRknc54lxddJf7arFUtDXx9Zmx781peaHrVyGXkOWxjWgST4F5uU9wqQF55wr+LmAokUtupuViyOJnYTTsw6hfBxH8F+kVrzhixgsj5OVf+nEN8EypUpnr0qaq5i2CqsA7n/Ca/K1Xewtyh2abI9Q0meuyfD+2B6Z2I0B9oN9Y1lnGkWGB+r/Qxfe6VEVycJCfKVpd/HgDASyEpeu86b6NAhoLFZcHuf9tz189iSDUs6TkKf5fD6CWC4XyZhC26H5V5CTHioNlhD5yA5G0/lALWSx9J5tUdSPFtk3kzUQPJ22CRt6vAYZRuwJdZWPMOMfY0UbMDW/HI= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d48670fd-91da-466b-4b81-08d6bf150ff2 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:10.7913 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52670 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 D3C8F5A44; Fri, 12 Apr 2019 09:04:27 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70051.outbound.protection.outlook.com [40.107.7.51]) by dpdk.org (Postfix) with ESMTP id DDAD244C3 for ; Fri, 12 Apr 2019 09:04:13 +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=k0rgJo6e4ASg7yceb78i3Gc+FL8iuzx7p2qyWpZvZNFDCkAjEZZfBabkgwRMo+lD3B6S8v0RZEOGv+VPhkhfiQGIM4ZAtlfeveKTRHjUUKNQQimRVql6QkA7zXJlFlofqrbIaZAOVDih8V3cIelVe50AbJtZKm4eoa1LUC+fMWM= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:12 +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 07:04:12 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 05/13] net/enetc: add basic statistics Thread-Index: AQHU8P3utw10wBIwL0W9Z3w9oj9a6A== Date: Fri, 12 Apr 2019 07:04:12 +0000 Message-ID: <1555075598-4988-6-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 5cb51f95-e005-4a37-373c-08d6bf151106 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: l6Kq/nlMRczrXRDLVxPNdP+t6EBZyuusWpK/YYkuqzpsAfpYUyUUds7iJr0k+bHT2sssrvBAmNgzU8PBQ7fbYwEfIYYT5+UvuOmubvMVPl/EkGIqJv4SMiOJVCTJRxi7NUXTB5YsCULv6T068Hil02HKrmGHfZ/EMc2msMUX+P2qWCfefaphx8zC8NjwfXYKluCuGdu24P6L0IYVXhgcF93L6XTjSHMRPdWcJuYcaa+uIpvh5lt6Lpj8iUbOjH0pb26VH1HxUfH2+mxZYzF6cH1oLFzQI7VGBA/ZEoWtItSVwiXpxE3TgfrraVif5cmVQpRaiISpXJJKSstpigu/Egno4QKyVAhcrPMX0vSezjM8TDTjyPl7Px23rQOPSdftuif5JHTpHsy8b9W+/VZtcGoXIgZHRnoI7On36Lp0U+s= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5cb51f95-e005-4a37-373c-08d6bf151106 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:12.5315 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04: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: 52671 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 F00BB5B1C; Fri, 12 Apr 2019 09:04:32 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80078.outbound.protection.outlook.com [40.107.8.78]) by dpdk.org (Postfix) with ESMTP id D50974C8F for ; Fri, 12 Apr 2019 09:04:15 +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=gqOVTxqfRQkLq64HOOtuW+WhOdf69mgYVmtznnmyR5dMYtEw0avoOs/C09y4yAtKV3bgxD9yJ6KT/EbtHXU0j0OcCTj69BBO4NrvSRe+/Du/O93TT144QkxdVbG4Wp6tevlWvDOnZPaUVbGWSoDKKp1LqgQzCVIIDWW4wvBWcq8= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:14 +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 07:04:14 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 06/13] net/enetc: replace register read/write macros with functions Thread-Index: AQHU8P3v3rqTZtNCPU6fNYmlTaAeUw== Date: Fri, 12 Apr 2019 07:04:14 +0000 Message-ID: <1555075598-4988-7-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0d3f8f8b-e99b-4c91-af37-08d6bf15120e 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: XSQ2abpOMnHlc5Qzza01KToLF+cMpC7SD6e0L1YXn09STR8Fu30Omv6XHaLNFTpl+4WhHsnhGL0KVWvRXTyhJe9yGtBKIZIkET91iE9zB9zvhCBI0/Ppfi56JLGYhUCm2R7MNmkH3gHmUFVEYbKD91pTll7Y0i0zks1FnOKhnZfJYBuAQkkTp7wSWhLEaSNwJGI8bzv186PKRyMt+o35jWA82IWzkdck7URicqg4coTlSEEQaaEokoLseCs2hrxxN7MGKWX+Dj9RjQIdeq4TMmV5f/JQlrYj58mpMLcXvFMSdLTl5Lgw7bW8BKoUTmu7iwdDzrKCuVbGU9pcGPErRfON1P1i0FMlSlIhAUUyWaDefX/U1b90I744CAVs+pXDUMngGs2sygBbkBRbJ7x6o6UUATUKEi2UOH6QpbF+CvQ= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0d3f8f8b-e99b-4c91-af37-08d6bf15120e X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:14.2768 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52672 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 3AF135B26; Fri, 12 Apr 2019 09:04:37 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80052.outbound.protection.outlook.com [40.107.8.52]) by dpdk.org (Postfix) with ESMTP id A02985689 for ; Fri, 12 Apr 2019 09:04:17 +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=hysS/rywAJkM4XApcsvFAcOVN2cxMyke9OvnMZT1WavXwJIbfD5awbr/eogk/ZHlnSOVqxa6jncCb/iNUxzIBco7caedehLLd+ypqUDXmhzrWr2pshmfJpA0pR3jcCeQX+W/UN5Gp9CbT5thhsn6+OYxWIAh9ekfD2R7RrW6ZLE= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:16 +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 07:04:16 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 07/13] net/enetc: remove forward declarations Thread-Index: AQHU8P3wl/7IGf9gaESOe5qrgwBOCw== Date: Fri, 12 Apr 2019 07:04:16 +0000 Message-ID: <1555075598-4988-8-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 9c75cf07-b52c-4128-94d2-08d6bf15131b 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: CNvEjR6V9LUymaEypvkbsCZDTV+Ta9oRmF9636bagftJ71IrsLNsNxDeF+Aykgxuc8Da038gqe4GzQMcgiZVltiX7EA4MWGQF9f4nJawY2uJMngioqKeoMTEmAZe1foX+xmLlHeSYvVHnqNhGQ/UKBhvl2/nmCqHrPW+c4qpXVVGQI5x4FzkzvlOCRg84Rv9hIE99KDSwUDNmA8d1PANwIVfbSqa4iHVvRziH4AiePjJVM0PqovMjj+JD9nDCVpZfrTnaylM0jtUsYXs+dGLsTiEez5tZio36vmQ791uypcpmKbIo0CJd+EzSvr3s/VvTRJmIN4UCLKK8eGtsnCASfEhTthkB7zMvjQtItSJoD4ZHJGXYFFJ8i1E/ZAwEnm421uEgTp0DjIVqrUC/VOUNg0Y+H+qAeuZdO9uHMlulIE= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9c75cf07-b52c-4128-94d2-08d6bf15131b X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:16.1321 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52673 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 D9FA55B38; Fri, 12 Apr 2019 09:04:41 +0200 (CEST) Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80059.outbound.protection.outlook.com [40.107.8.59]) by dpdk.org (Postfix) with ESMTP id 6435F58F6 for ; Fri, 12 Apr 2019 09:04: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=iVklB46Ye+BrxVKg1PdY50VmM195mQU9KZv22hDwfzw=; b=F+RPro7SgMfD1tzgTtMsGMqIsq8/xYT+BoEi/gRHMae5R1ZNozwWUHphrKJ87/aNbu02gklK3TA6hbUhzrE4m2fRelBkgRd3+pAjvo/EES2ArlW6I13BjmZd3iwMT6rcJiwgBbcejH0YYe2/vFEAerJQ6Fut1Pgaj8r3+TJZY5A= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04: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 07:04:18 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 08/13] net/enetc: enable promiscuous and allmulticast feature Thread-Index: AQHU8P3yKkM505MGokSOmNhrFDjtcQ== Date: Fri, 12 Apr 2019 07:04:17 +0000 Message-ID: <1555075598-4988-9-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 00218d8c-0fc1-4def-3c55-08d6bf151434 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: jm/+MRFlpzc9joNnwgJwsaWJhgA0hjj5M8hspFuR91vpZs1C2d1R/b8qXpmk1l0zXve+mrrb+V5HJAEx46nNMYs0BjbDFJbMsdlvBtYUCAX2qXb4lkODQQlLOkg4WrnIyaCEXeF1DOI8g6Sb/hmP8J4C2f2ClfKxOxwkg3VP3prfhfW6ig2jyAKJ/h3GCV4oGSYJScmBkXkEkyavsAGOAZaV+9QPJQTyitNECkOZGl9rB72zDpM8rJLxIc6C+s4Ov1oTcsNw24qjnjTt9ftPU3Aq1XNx9Px9PNb2TtQaaUmAKIMrszFPr5cyhnp6eme84xnW38R3r+vD82gGfgi2PyVOtjXz1Ecg/e09ymAG6XwfmpE33FLhWDYSGooMRxa5xqdLzGZJCAFKM7+MX0cdYK9A3KKT4MKOAx0U+hX6+IQ= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 00218d8c-0fc1-4def-3c55-08d6bf151434 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:17.9103 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04:19 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52674 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 DC1C05B36; Fri, 12 Apr 2019 09:04:45 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70040.outbound.protection.outlook.com [40.107.7.40]) by dpdk.org (Postfix) with ESMTP id 73720569B for ; Fri, 12 Apr 2019 09:04:21 +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=tYn0gFT1U3neLg6JJJ5RO+WldZoBzI7aUbRVGG0hzQ4Q6KkOABYLWqponOIYU374sAAgvP1qIAO5syk+mcKW9nLTQZgJjA0+ZrlHgI3SAuNuSh9o6GUR5XXDvzo44EFhLPwTFVD8WDWoLo0DThZ/iAMoR9DoFodHfc08Y17CKtY= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:19 +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 07:04:19 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 09/13] net/enetc: add MTU update and jumbo frames support Thread-Index: AQHU8P3zvKL8HIxv2kaico3T+kF7Mw== Date: Fri, 12 Apr 2019 07:04:19 +0000 Message-ID: <1555075598-4988-10-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: efa77791-4fb1-443d-ba79-08d6bf151543 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(15650500001)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: z3pMDgfHFje3zFyiJR79L8p+AGZ8lOTQPfKXvxQF3CtM6kbUVdwDH/MgQZrcgnS30o1uRkUTRtuHlZwYXwzhEUdx3DTTh2nndSRgJlnIGK9vXNXR9i2Z/IwATKec0WF1EuwHa07MLstNTE8oZfk9yqDLW5k7mYXKMi37U4q1BshifVE3pWeVj+w5WolBhYoAf0qQGzkYZ30URbBRSUAaoG3OihzgBJqkzbC3GRkrJZJl4+/GVjSztE3XWaBdGhczfUK02kO6+l5IlpiMb/yJJN6HXojxjAOc0Sf/ScZDv2ZUgkFeWvGWVtmmAprpv6FrtbcxyheuDoqdGc+kjRpVnRu3XPq6tZu/EZ/nSH1DQ3tEGH3iPOxFoIXOyrqUjquXOyg8yShoU3Cf0Pj+OZGMMZ1Emfgk94x2nJyILUs/ZXY= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: efa77791-4fb1-443d-ba79-08d6bf151543 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:19.5855 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04:21 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52675 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 723F65F16; Fri, 12 Apr 2019 09:04:49 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70047.outbound.protection.outlook.com [40.107.7.47]) by dpdk.org (Postfix) with ESMTP id 5D21A568A for ; Fri, 12 Apr 2019 09:04:23 +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=dwxcXSmmqShF62hKtMgPNEUlbwH99OPjYFDvFALLFhzdeR9O1+8yIc+W5A7j4Il5AKOvTIllDS+Z2NwoMu27MieMidtxEreDqReD1h190TkO/fduM87XkCHQGWH0QCt6PB6kqiDwCWMC8Z0zVKk8CrkGTeQfRbaq9rcmtqOwGjY= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:21 +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 07:04:21 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 10/13] net/enetc: enable Rx-Tx queue start/stop feature Thread-Index: AQHU8P30Enam4Bbv8Emcqsdd3WHIBQ== Date: Fri, 12 Apr 2019 07:04:21 +0000 Message-ID: <1555075598-4988-11-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 042616d2-5402-40b2-3a1d-08d6bf151648 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: xx6w2rIoeu8KE7s8C6r2HMSRKliz2d1hd8B8ux5jRCHWHoCuMBeaxiM3CXTQ846BMCbZb8k1tfgaXHOHLmkZm1XHcoe+wUoTKh+3qIAOh5eo2wPadODUseLAQbSG/QlBg6FhpMIpiQRWpUt47dLgDBj4iCId9jkcTM0t9NnWKLJrfIBo8Thf17uc420RiH8tMPLvaGUMcGGXNEfOaY3YpcMC1Eh15rbe8v9aYMMGXxKWtbZS9Y51325gNw4AbAywYu0LRyCUh0a/iWkZ1k9Pqch9FDxr7yAQj5KI0jId89TqcUbhuZAlGKIST2ELM0nV+HJFWy+bolXUaTnUe1VWUOGvkMbluEZHWaFM4fENrt2WdJphAbRegaBita+QOJ87bn9648WX7djANRlzWf5ALg/2PIdrBvCc9GVepmyqHbo= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 042616d2-5402-40b2-3a1d-08d6bf151648 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:21.3668 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04: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: 52676 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 472FF5F11; Fri, 12 Apr 2019 09:04:53 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70043.outbound.protection.outlook.com [40.107.7.43]) by dpdk.org (Postfix) with ESMTP id 9BD41568A for ; Fri, 12 Apr 2019 09:04: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=GRszbgTBblG2qUsNml0WJOLvK1uH2a8lEuvGp7EUVFs=; b=YCgUEyWgYz1yMDTz44morDU76v+v7C8hXvjAPEAYizelJ499kvfAmTM4pAYao5+oW9i/zXzFMOaN4AN3iUU8QABGnGJwvym7Paajy7la7ADvfbGowit5hKIEa4iw1xakz2LB41JBFl7+EMdvm4YU8m3V9BsYXM1OdhMVuyRTBPs= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04: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 07:04:23 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 11/13] net/enetc: enable CRC offload feature Thread-Index: AQHU8P31Nf+OHoJg6Ee+1Q0eram+Dg== Date: Fri, 12 Apr 2019 07:04:23 +0000 Message-ID: <1555075598-4988-12-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 25901520-e8d1-4361-4a9e-08d6bf151753 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: DxO5FgJzEcsmPqwtBGMXQMirGosKSH2giszJ/qdLPlCtJtzt1hix/jlHKzXxPAYTyq05C89OQG8eQIi6oR+I2yq/oxlMI0JQl4LXGuDTz+ulnjk8TwGzD26yvJF7346ZQYtTh1BIjdYeFuJcawEfe/sHy5tGpAhRgZa6hvwBQRbNLIXg95Gd0lMMTEX4iwH7a8XMeXOCnbvwCA4uMCRj1gYmQN/09B5F7ERWVUHXOUDSetdT3/UoZYXv4cotDL5yktikSXquaMNrIqZsSr8UpAN1nwy6lJT1+ww+n7S2EtksFLEmV9vtDNxjQpOElf0cQNbBKSRDd52xRs8e+j060YJ7tRnLJjF3FjONS5bplDmMg9MCgvlvp7fYqdjwRQBibrplBC4wtjWr3qDiSXW6Gh1pr7tj8sYSd47UmU4E8NA= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 25901520-e8d1-4361-4a9e-08d6bf151753 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:23.1760 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04:24 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gagandeep Singh X-Patchwork-Id: 52677 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 BA04A5F1C; Fri, 12 Apr 2019 09:04:55 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70088.outbound.protection.outlook.com [40.107.7.88]) by dpdk.org (Postfix) with ESMTP id 888965942 for ; Fri, 12 Apr 2019 09:04:26 +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=sROYH5a19HFVyc6ahgo9kaAUWuStzElOwJeexiMhOfr4qCPTdDzst4x3s8o66JCN6qCJZIyb89tKrG93mqOt2XyPmWdfwQOZK1wBsPujxQUA6LKgC5g/7IdKxhtW0agnbUqjS1Genn84F4V7FuNXtjZZ8cP24VSbRcA+zhJ9b+4= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04:25 +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 07:04:25 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 12/13] net/enetc: enable Rx checksum offload validation Thread-Index: AQHU8P3270TxvZQ3JU++/RDrUXeLUQ== Date: Fri, 12 Apr 2019 07:04:24 +0000 Message-ID: <1555075598-4988-13-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: d8930116-2fd7-4703-c11a-08d6bf151866 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: fzw+DWL8x7DM4mY78CXGMHWJ2cDC4R80AAXPRPCk8zNKWGGAD7hBGm333wo09MMlOTyEbN7K+aklTbwrD40u6dKoEn4Kx3OR3UHpViosAWMC6Hgq3nM1Bpvxk3oaPCLdO8psFCzLLJ1ZKIYO23TduhpvWr56d7DOUqc2qng5FDjkWuT7ZrQ3m3ui4cLsSBkIarOmoixMD36lmTQAkn+KlU4Z8wyNTcPbitDuzk9L4lEsRiG5rMN0+BSkYSB5WcOeql3FmyPSUciPbLMoc8Oo+iihq2E7cDidq1YunBJbc8jmgv7NPP21s9x8TGKdRuZRSWDHTmcgCoGLZNdErISjrdjAqwccsFmSz1bxYOMXOfhmd/6O7B7v4XG8CShfW95izg5bpAgw+UCmtNmxW3DfsWk+BJzNrv9amm4ZtU59RoA= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: d8930116-2fd7-4703-c11a-08d6bf151866 X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:24.8963 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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 07:04: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: 52678 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 4D5525F34; Fri, 12 Apr 2019 09:04:59 +0200 (CEST) Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-eopbgr70081.outbound.protection.outlook.com [40.107.7.81]) by dpdk.org (Postfix) with ESMTP id 3B0095A6A for ; Fri, 12 Apr 2019 09:04:28 +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=w+tnVTuK68FdH5PRxRwOlYwgERH2sbADMbCTQJIkKr0=; b=e2yTiW6Zsdzo2kdTkDkyb2ENDJ4LWcW+lblzEiqccVJD/yJ771dKnRO/H1rom38wMDzOEwyHzEVbhAB6ZPQHQIAmQPCtMMlx5l8/Rst2nNxMh+2CDlrD2hC8fjfDL5DMFgUcUTdvb7Cu4msSOWmHmISBMBfwgiA4VHWgLGFrX6U= Received: from VE1PR04MB6365.eurprd04.prod.outlook.com (10.255.118.78) by VE1PR04MB6461.eurprd04.prod.outlook.com (20.179.233.18) 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 07:04: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 07:04:26 +0000 From: Gagandeep Singh To: "dev@dpdk.org" , "ferruh.yigit@intel.com" CC: "thomas@monjalon.net" , Gagandeep Singh Thread-Topic: [PATCH v2 13/13] net/enetc: fix crash at high speed traffic Thread-Index: AQHU8P33b8d72F613kKQV/DCbMWl8w== Date: Fri, 12 Apr 2019 07:04:26 +0000 Message-ID: <1555075598-4988-14-git-send-email-g.singh@nxp.com> References: <1554745507-15089-1-git-send-email-g.singh@nxp.com> <1555075598-4988-1-git-send-email-g.singh@nxp.com> In-Reply-To: <1555075598-4988-1-git-send-email-g.singh@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: BM1PR0101CA0038.INDPRD01.PROD.OUTLOOK.COM (2603:1096:b00:1a::24) To VE1PR04MB6365.eurprd04.prod.outlook.com (2603:10a6:803:12a::14) x-mailer: git-send-email 1.9.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.67] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 59e45108-07a4-4076-6026-08d6bf15196f 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:VE1PR04MB6461; x-ms-traffictypediagnostic: VE1PR04MB6461: x-microsoft-antispam-prvs: x-forefront-prvs: 0005B05917 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(39860400002)(376002)(366004)(396003)(346002)(189003)(199004)(6512007)(102836004)(256004)(86362001)(36756003)(14444005)(486006)(25786009)(6486002)(2501003)(26005)(386003)(2906002)(66066001)(7736002)(71190400001)(14454004)(71200400001)(6506007)(53936002)(97736004)(186003)(76176011)(8676002)(52116002)(105586002)(106356001)(99286004)(446003)(81166006)(81156014)(72206003)(478600001)(50226002)(11346002)(476003)(2616005)(6116002)(54906003)(5660300002)(110136005)(4326008)(316002)(8936002)(6436002)(4744005)(68736007)(3846002)(305945005); DIR:OUT; SFP:1101; SCL:1; SRVR:VE1PR04MB6461; 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: UgxJ1K8kaOmzBi66WIasIU/KQVQm45SvkFlSl4VTck9vpPrC5iFx21XCzzpmKPPnkoneP9hE0j/ajJ82ZufbBzE2lGTgsPoQ+Dx1+la5JbwaYDE8ASGKwwzfFq/1Wy1RoYAjwH/YmBO2fF+EjwDbLyZUfF9f+srl//EureA7iw6gNj5Ej0lbBjfRS0R0QHW72IR57DjW8+qj5WYX2r9PVMhi+PTHeRNhq79PiVaK8duTzxyTJBgpEUfXnkNms9NyKqccgR+o6sQPVchO2NPIhzcGhLmhe/qiQICRtrMfBd8thO4UmdUlfeZYIr6tez5W1VNFhXD+hpYj8RPfxyB/5/ce56OJJ2pWdDYr5hm0tuyhFoVO6q1Ndi7oxLnx9565LsNH0gD6b/23PWISTv0xPRcecplq5nnMUGVJZGcvuFg= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59e45108-07a4-4076-6026-08d6bf15196f X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Apr 2019 07:04:26.6595 (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: VE1PR04MB6461 Subject: [dpdk-dev] [PATCH v2 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: g.singh@nxp.com 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);