From patchwork Fri Mar 1 15:47:44 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 1050248 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=pass (p=none dis=none) header.from=nxp.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=nxp.com header.i=@nxp.com header.b="FJ0POM/P"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 449v2L2mVMz9sCJ for ; Sat, 2 Mar 2019 02:47:54 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2388108AbfCAPrw (ORCPT ); Fri, 1 Mar 2019 10:47:52 -0500 Received: from mail-eopbgr20054.outbound.protection.outlook.com ([40.107.2.54]:42178 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1728383AbfCAPrv (ORCPT ); Fri, 1 Mar 2019 10:47:51 -0500 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=OZc5D3BG2Qf72NI4BE/96CzPe9A66BmZriYFvWXDGdM=; b=FJ0POM/PG5lV9ipLGgm3+Pe8agjIye/4aJWRAUwVrVojkjgD6ZjdMkjxCvS2LCbguvz3F81CB2K3AEm8a8WX2lcBGcV8jIetxGE5vNGGIJ74f4fh0k0kK0s1qABDjtLyi5kZmX83Zu3BX8ZWGfXjFiWbBtaBevWykJeQu+bHQ4U= Received: from VI1PR0402MB2800.eurprd04.prod.outlook.com (10.172.255.18) by VI1PR0402MB2862.eurprd04.prod.outlook.com (10.175.23.143) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.18; Fri, 1 Mar 2019 15:47:45 +0000 Received: from VI1PR0402MB2800.eurprd04.prod.outlook.com ([fe80::74fe:7d24:1e75:3477]) by VI1PR0402MB2800.eurprd04.prod.outlook.com ([fe80::74fe:7d24:1e75:3477%5]) with mapi id 15.20.1665.015; Fri, 1 Mar 2019 15:47:45 +0000 From: Ioana Ciornei To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciocoi Radulescu , "brouer@redhat.com" , "ilias.apalodimas@linaro.org" , Ioana Ciornei Subject: [PATCH 1/2] dpaa2-eth: Add software annotation types Thread-Topic: [PATCH 1/2] dpaa2-eth: Add software annotation types Thread-Index: AQHU0EYcdR4vLydQ+EqS9t9BSLZYrQ== Date: Fri, 1 Mar 2019 15:47:44 +0000 Message-ID: <1551455248-26405-2-git-send-email-ioana.ciornei@nxp.com> References: <1551455248-26405-1-git-send-email-ioana.ciornei@nxp.com> In-Reply-To: <1551455248-26405-1-git-send-email-ioana.ciornei@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1P18901CA0024.EURP189.PROD.OUTLOOK.COM (2603:10a6:801::34) To VI1PR0402MB2800.eurprd04.prod.outlook.com (2603:10a6:800:ad::18) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ioana.ciornei@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-mailer: git-send-email 1.9.1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: fb7ceb02-ce75-4327-b9eb-08d69e5d3f13 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600127)(711020)(4605104)(4618075)(2017052603328)(7153060)(7193020); SRVR:VI1PR0402MB2862; x-ms-traffictypediagnostic: VI1PR0402MB2862: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BVI1PR0402MB2862=3B23?= =?iso-8859-1?q?=3ADMj7O/CM1MTdllyl2uXNbmOHulji1/zuJyDVGtZxOR0l1xm2?= =?iso-8859-1?q?EwfQpBMc3vmZbl5+PEyeB4vKHjMszgBBvOIGmW01wW+NTqgd1DV?= =?iso-8859-1?q?zUFyZ55xGgiXa9as2P4sJd6rKKl/U+MaEyG80DKvWUIzKAqwXoK?= =?iso-8859-1?q?YN0AZZ9EmBGxLr6kFM2nc8S0E1HuqCe4eLM72YZVtwxRBtFkec9?= =?iso-8859-1?q?joEyBfXkjjXHa3Rn8sQYU6J8aQQOMV/IaZkGjO2Eei8t+skLWQx?= =?iso-8859-1?q?f+iDqrkwOgVEaS8S5RBNmVFB5594sau7AvxWILrmzgSs0pGDF3y?= =?iso-8859-1?q?yFzfqXHoO92FeepMwxGKAtxPlsBvMKCuwWiWdkoxof3Khxq40d9?= =?iso-8859-1?q?vgfht4UQotFe7drHvJa/7YklPrI522yBdmBumvz/3lxCIbxQclN?= =?iso-8859-1?q?aPdiZmYclpKs4RqeG8BruMMgBgOvXFd5BalQuXq2oWc+55DoHN5?= =?iso-8859-1?q?X9KLtZtVl4C5u+4qgf434fHudzlKozZ9979npUmE/h0nV0ui1A0?= =?iso-8859-1?q?Sqh4HPYoyPXQvXHV1op6fbVge6vn/ce6EAgsAlGzl7p16LiqsG8?= =?iso-8859-1?q?cqDXybPBEGBU5F09Y+Q1DITFug4meUDmJDkJnDy+9NW9qIO8P+K?= =?iso-8859-1?q?3ay5KOWousePgY49t4OvbZ3FyfX+TGYiYxr23un/mklh8WeGH5f?= =?iso-8859-1?q?GsNo/0tTZ+ITnhTZkGFC4fBpMK8eg7JsR8xLwWXH6zO5XFCFEBF?= =?iso-8859-1?q?aBYGZ/BVu4zdo1OO36Wxp2E4Cf6yxvPZZWCxB5QWf184ivyMgA/?= =?iso-8859-1?q?CXwxghlzQjwAFVSMk3aYpmoCQEyFWyngAHlfO8LffZS6tVWpl2E?= =?iso-8859-1?q?71G6vs53o0rElTeR9EnPHjF/3eRAUwg6gYk2EQ8D+0Yex3XodxS?= =?iso-8859-1?q?E9jLcotoRIQbBGQ4fwKqBf1Pa3ZSrhcYSZLZipFlfD/3UOdOA2f?= =?iso-8859-1?q?VJRSPXXfjTFCHw874ydHerrEL6+Af5B672UIX69t9AfcRNQ+gzu?= =?iso-8859-1?q?jJIzpj1eY1TJWc6NPszcLWk9fkRGBxtA4lEgBXHV7fj0pq8bubZ?= =?iso-8859-1?q?VLO8YdsOYNWM4U9FIWSiqPqGZq/mBqa8UD5OdmGwQKMeBUwFsLv?= =?iso-8859-1?q?Gxw77nKujY8HFd08smdM34VFrFmxyo/U9RoDZCXfbl3b5Yitrr/?= =?iso-8859-1?q?Nr6JdQFxZZzxwiPsL4lIDaHwSOEz9hj0mUTZggt+slYRz4NJfCK?= =?iso-8859-1?q?Zy1yocbQI9cAfbUYrRX5BcR/ZoRS0Z86zoCsadqg5FIqrpXkaQX?= =?iso-8859-1?q?51yRVEWoQgecZijwtqLpR+DVSLAT1HI+cc/3EM=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 09634B1196 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(346002)(366004)(376002)(136003)(396003)(189003)(199004)(6512007)(6436002)(97736004)(50226002)(25786009)(4326008)(66066001)(105586002)(2501003)(36756003)(106356001)(68736007)(446003)(11346002)(486006)(2616005)(476003)(6486002)(44832011)(478600001)(5660300002)(76176011)(71200400001)(71190400001)(102836004)(8936002)(256004)(26005)(6506007)(386003)(14454004)(110136005)(52116002)(81166006)(2906002)(86362001)(54906003)(186003)(8676002)(81156014)(6116002)(3846002)(7736002)(305945005)(99286004)(316002)(53936002)(14444005); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0402MB2862; H:VI1PR0402MB2800.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: GSx32S6SMP8syz3ZOpuCfq7bBgygMKLTYdMn4L+R6niyBgsj1WVVIFg/+tViceNI0D9FF4qnv3atDeRVh+nK8j/QX4KS9Vbyz8kXBACSii7FjLsLxnyfnrc/q2BH+6UG2edHervQKEmvgO/DJjES+KIZCo/HPzZPnViMElOV2DvWMsuSqZp1V+cPzFvj4gsSbbPfgP3WnvxngN0a1Dc8uT9/XC8osFrfFzoVD2rXOzlblYTbn9CHnOJ2lBd8dKf7wC7HRIX16vT0wTsno/eGGXC/xwIbcf59df2FZVOXHV0ccCORWuhG5l/0bs8l6P1dW1qo8NfzOiD9+dTuo5h2LdpaRmU3Eh1g01cpu/Hjak3lbjUtn/bpx/zCULVfxdmk9vKoLI7FeX2u0OXnCbHHpKhhU3dsFqGxtYaxwJMy1vE= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: fb7ceb02-ce75-4327-b9eb-08d69e5d3f13 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2019 15:47:44.9710 (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: VI1PR0402MB2862 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Ioana Radulescu We write different metadata information in the software annotation area of Tx frames, depending on frame type. Make this more explicit by introducing a type field and separate structures for single buffer and scatter-gather frames. Signed-off-by: Ioana Radulescu Signed-off-by: Ioana Ciornei --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 38 +++++++++++++----------- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 24 ++++++++++++--- 2 files changed, 40 insertions(+), 22 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 87777b0..3acfd8c 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -571,10 +571,11 @@ static int build_sg_fd(struct dpaa2_eth_priv *priv, * all of them on Tx Conf. */ swa = (struct dpaa2_eth_swa *)sgt_buf; - swa->skb = skb; - swa->scl = scl; - swa->num_sg = num_sg; - swa->sgt_size = sgt_buf_size; + swa->type = DPAA2_ETH_SWA_SG; + swa->sg.skb = skb; + swa->sg.scl = scl; + swa->sg.num_sg = num_sg; + swa->sg.sgt_size = sgt_buf_size; /* Separately map the SGT buffer */ addr = dma_map_single(dev, sgt_buf, sgt_buf_size, DMA_BIDIRECTIONAL); @@ -609,7 +610,7 @@ static int build_single_fd(struct dpaa2_eth_priv *priv, { struct device *dev = priv->net_dev->dev.parent; u8 *buffer_start, *aligned_start; - struct sk_buff **skbh; + struct dpaa2_eth_swa *swa; dma_addr_t addr; buffer_start = skb->data - dpaa2_eth_needed_headroom(priv, skb); @@ -626,8 +627,9 @@ static int build_single_fd(struct dpaa2_eth_priv *priv, * (in the private data area) such that we can release it * on Tx confirm */ - skbh = (struct sk_buff **)buffer_start; - *skbh = skb; + swa = (struct dpaa2_eth_swa *)buffer_start; + swa->type = DPAA2_ETH_SWA_SINGLE; + swa->single.skb = skb; addr = dma_map_single(dev, buffer_start, skb_tail_pointer(skb) - buffer_start, @@ -659,17 +661,17 @@ static void free_tx_fd(const struct dpaa2_eth_priv *priv, { struct device *dev = priv->net_dev->dev.parent; dma_addr_t fd_addr; - struct sk_buff **skbh, *skb; + struct sk_buff *skb; unsigned char *buffer_start; struct dpaa2_eth_swa *swa; u8 fd_format = dpaa2_fd_get_format(fd); fd_addr = dpaa2_fd_get_addr(fd); - skbh = dpaa2_iova_to_virt(priv->iommu_domain, fd_addr); + buffer_start = dpaa2_iova_to_virt(priv->iommu_domain, fd_addr); + swa = (struct dpaa2_eth_swa *)buffer_start; if (fd_format == dpaa2_fd_single) { - skb = *skbh; - buffer_start = (unsigned char *)skbh; + skb = swa->single.skb; /* Accessing the skb buffer is safe before dma unmap, because * we didn't map the actual skb shell. */ @@ -677,15 +679,15 @@ static void free_tx_fd(const struct dpaa2_eth_priv *priv, skb_tail_pointer(skb) - buffer_start, DMA_BIDIRECTIONAL); } else if (fd_format == dpaa2_fd_sg) { - swa = (struct dpaa2_eth_swa *)skbh; - skb = swa->skb; + skb = swa->sg.skb; /* Unmap the scatterlist */ - dma_unmap_sg(dev, swa->scl, swa->num_sg, DMA_BIDIRECTIONAL); - kfree(swa->scl); + dma_unmap_sg(dev, swa->sg.scl, swa->sg.num_sg, + DMA_BIDIRECTIONAL); + kfree(swa->sg.scl); /* Unmap the SGT buffer */ - dma_unmap_single(dev, fd_addr, swa->sgt_size, + dma_unmap_single(dev, fd_addr, swa->sg.sgt_size, DMA_BIDIRECTIONAL); } else { netdev_dbg(priv->net_dev, "Invalid FD format\n"); @@ -695,7 +697,7 @@ static void free_tx_fd(const struct dpaa2_eth_priv *priv, /* Get the timestamp value */ if (priv->tx_tstamp && skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) { struct skb_shared_hwtstamps shhwtstamps; - __le64 *ts = dpaa2_get_ts(skbh, true); + __le64 *ts = dpaa2_get_ts(buffer_start, true); u64 ns; memset(&shhwtstamps, 0, sizeof(shhwtstamps)); @@ -707,7 +709,7 @@ static void free_tx_fd(const struct dpaa2_eth_priv *priv, /* Free SGT buffer allocated on tx */ if (fd_format != dpaa2_fd_single) - skb_free_frag(skbh); + skb_free_frag(buffer_start); /* Move on with skb release */ napi_consume_skb(skb, in_napi); diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 9510928..423976d 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -89,12 +89,28 @@ */ #define DPAA2_ETH_SWA_SIZE 64 +/* We store different information in the software annotation area of a Tx frame + * based on what type of frame it is + */ +enum dpaa2_eth_swa_type { + DPAA2_ETH_SWA_SINGLE, + DPAA2_ETH_SWA_SG, +}; + /* Must keep this struct smaller than DPAA2_ETH_SWA_SIZE */ struct dpaa2_eth_swa { - struct sk_buff *skb; - struct scatterlist *scl; - int num_sg; - int sgt_size; + enum dpaa2_eth_swa_type type; + union { + struct { + struct sk_buff *skb; + } single; + struct { + struct sk_buff *skb; + struct scatterlist *scl; + int num_sg; + int sgt_size; + } sg; + }; }; /* Annotation valid bits in FD FRC */