From patchwork Fri Mar 1 17:47:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 1050316 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="QkdROJZG"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 449xhP3RK8z9s4V for ; Sat, 2 Mar 2019 04:47:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2389456AbfCARrb (ORCPT ); Fri, 1 Mar 2019 12:47:31 -0500 Received: from mail-eopbgr130073.outbound.protection.outlook.com ([40.107.13.73]:32643 "EHLO EUR01-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2388730AbfCARra (ORCPT ); Fri, 1 Mar 2019 12:47:30 -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=CpjyThria8zHm6rEGm86ON3BMq+ptumtNzBUYZvNtSc=; b=QkdROJZGC/AKICADolN4BggmqymiSegV9X9ZVaqGqvtII0GoO6ekY5Qiq+ycw0h73HnGpaBhwjT5xR4NzOPsuz/vwWfz6pZyjeA794UYI2psl2KG4T8IqQ7K3G+MfScv7p9MiA1be8TE+1pjo5qmpe2N3MP5uGxX1gqIttJSuR8= Received: from VI1PR0402MB2800.eurprd04.prod.outlook.com (10.172.255.18) by VI1PR0402MB3407.eurprd04.prod.outlook.com (52.134.2.153) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1643.16; Fri, 1 Mar 2019 17:47:23 +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 17:47:23 +0000 From: Ioana Ciornei To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciocoi Radulescu , "brouer@redhat.com" , "ilias.apalodimas@linaro.org" , "toke@redhat.com" , Ioana Ciornei Subject: [PATCH v2 1/2] dpaa2-eth: Add software annotation types Thread-Topic: [PATCH v2 1/2] dpaa2-eth: Add software annotation types Thread-Index: AQHU0FbT+gSYZxGuXEWMjWJ85/uPkQ== Date: Fri, 1 Mar 2019 17:47:23 +0000 Message-ID: <1551462396-5115-2-git-send-email-ioana.ciornei@nxp.com> References: <1551462396-5115-1-git-send-email-ioana.ciornei@nxp.com> In-Reply-To: <1551462396-5115-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: VI1PR10CA0095.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:803:28::24) 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: bb2a32c7-77c2-4021-d9a5-08d69e6df5d9 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:VI1PR0402MB3407; x-ms-traffictypediagnostic: VI1PR0402MB3407: x-microsoft-exchange-diagnostics: =?iso-8859-1?q?1=3BVI1PR0402MB3407=3B23?= =?iso-8859-1?q?=3AScub3rwb+r6mJhBpApwvRxnEjPENz3W2TnhCyvBGAKL26KeN?= =?iso-8859-1?q?+Q0HSRHB2KVqg1G9ZO2d+uTs5rLp8fHdbSbGzpoD6Q++Ie9NEvk?= =?iso-8859-1?q?bLLdugDkizO9E9PueeuE4icfmLLtayT0/L9gUoyY15ZAeFFhIQw?= =?iso-8859-1?q?J9K9mXnOKa+MtcvUuhlV9+JYgkuE1G67P4IdWXMOndW/xIW7NPa?= =?iso-8859-1?q?TthPS6dLEoF1o4sK60jfrWIV71YISnMx/ElvLcwHe7QkJR160//?= =?iso-8859-1?q?SF+NBYEEWLBgb4Ys1ViyPuFviIkS1mjI9QqwCQMOSGHCKO0PK8B?= =?iso-8859-1?q?8N67J520wBi8b8ni300QHr09w8sdMQNpmNwb3TpVMSKCx0tHvVN?= =?iso-8859-1?q?NC/WgelnGHuBlQSXzT7xZPfAf5J5b9iVi3xczQKD5NRUzPdg32/?= =?iso-8859-1?q?CbChFCku3zlr+G06EqHAXtb+FbZPFcQQsNo+IYvrgpoQC/nkP4E?= =?iso-8859-1?q?3jzEokxUuHN1MZF9204iI+1QP/tr7wgyKwiMadSOatOQCIhG1wY?= =?iso-8859-1?q?9HQcS+IUVWBkgfVwQD2A1EcbfJaQ3NFCdW7ykN65SAHVceKN6IE?= =?iso-8859-1?q?4C5JT05Ab9DITKP+dDK5SxTjB5/Cf9k+5AiZFdjWB9jewHyPt81?= =?iso-8859-1?q?Q4rh7xLNDZIa0ZiMmmSxXKLz7t23YGoYkblLAVDNBLAPb6c9bKo?= =?iso-8859-1?q?QDTnbnbBxNcHOkiyJLCRywoLc5v3OiJdWyp3ZeusgxG7uGGxVhm?= =?iso-8859-1?q?YX3IVceFMHDwSw6qQWKNfbA0c9zNDEwcKLbj7ePEMHWoFdDAhz9?= =?iso-8859-1?q?O5X9ia6EDFyQizmxy0MK7mycnw429DVKOBve/wYdksHnLnW7O41?= =?iso-8859-1?q?otOqusGDfFEh/eU7rzx0dlRx7BRtEJn3zvVBROILT1ZzsmIvsrf?= =?iso-8859-1?q?/rl4z1RWO+NVr0MLxgyF+nOfF98GIx3K/Res9nbe4SHRDQTFz4n?= =?iso-8859-1?q?eH41cUA0b02dFa2DyffYd+t2kx7KV5dF8zo+yCKTpUktQNW43KR?= =?iso-8859-1?q?zz13ZaRt1dWyNAghX4YdI1eAd+4G+VsF/IPI/5ZWqAarDAXvB+m?= =?iso-8859-1?q?jF04zOFkOyUhcNfoWPoaJt4GIKgJ+B+oh9ltKqIa3V+YaSukYr9?= =?iso-8859-1?q?/uKKzNBf0aBB44cQSANe+XHdflFn4lak6gI+YAkLYBS2/BYU+yp?= =?iso-8859-1?q?2DqxBOXHeS7TEqkomZC2HiNBALoFiePFOF/TAdz+OuT3PO3++si?= =?iso-8859-1?q?v7JrjKpQxRxrmfgJxLoy/MNWrXpoJWmRFHH5PdYAKHi+WtJ5+/g?= =?iso-8859-1?q?achpIz1QG5WM8TwzCCe+1lalxaLQSvrjNVLaMw=3D?= x-microsoft-antispam-prvs: x-forefront-prvs: 09634B1196 x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(366004)(396003)(346002)(39860400002)(376002)(136003)(199004)(189003)(4326008)(26005)(7736002)(478600001)(71200400001)(81156014)(66066001)(8676002)(5660300002)(2616005)(68736007)(446003)(476003)(305945005)(486006)(71190400001)(81166006)(25786009)(14454004)(316002)(2906002)(11346002)(256004)(14444005)(44832011)(99286004)(2501003)(6116002)(3846002)(106356001)(36756003)(76176011)(6512007)(97736004)(386003)(6436002)(86362001)(52116002)(102836004)(54906003)(110136005)(8936002)(6506007)(105586002)(53936002)(186003)(6486002)(50226002); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0402MB3407; H:VI1PR0402MB2800.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: HRNSsp9K4pdXfYZtPZqrJyF7jE6cjDN04Krwvdz2GcLhHWAIShjvji4QKTqlX/MHg74IqZzQuGvLhWbZSo8H34huswXDuIrgj4kk//w4qVj7apUaouZO/2WCfuhFJf3QrCuzL6upPsw4aEs5WK+tJL24XSk+FLry5uMhWPkir8vnvthl4ljfWCcr2L5E7B7QxW6sPS6u9DD2ZbziusP9HdUwfZFc/ZztYuQtj1o0i5rFzToplTCa/+LOboIslkSwbibroWIKUuzP+LKdzsM1YIxKMHx6XSGLE1VEvv0UIRsDh3/FDsqxSgPvfhKSRpsqNpEf5D4ioAzwSdA4/09fJPld9H+/3h72FLx0Zhy06BYgfRfvcTG0oaabvuGenjG6RPKITwjf5NMZfbudHFR7Bro6A2Aa5lwjbBkgznGxEes= MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: bb2a32c7-77c2-4021-d9a5-08d69e6df5d9 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2019 17:47:23.5645 (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: VI1PR0402MB3407 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 --- Changes in v2: - none 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 */