From patchwork Fri Nov 23 16:56:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002474 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="MH8IpQ67"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jBx2Jg2z9s7T for ; Sat, 24 Nov 2018 03:56:41 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633128AbeKXDlk (ORCPT ); Fri, 23 Nov 2018 22:41:40 -0500 Received: from mail-eopbgr10064.outbound.protection.outlook.com ([40.107.1.64]:22029 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633119AbeKXDlk (ORCPT ); Fri, 23 Nov 2018 22:41:40 -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=y0/kQ03iDw8huPPBclcRBRxJgv7n+1DqXVFiKHxADDM=; b=MH8IpQ67Q0viFu1l00Sb72lzZdVVxAP9OO80hmoHXHXLd6LS86J981lTwHfQ9Wv3mVrAor4TtYXQwpBivIi6M1UNfyldhi0W+CrUxzVUB3UUEMpdxyJFMBpxy86zl+UXBgsyybpmSAH1lhuJTqwoTk0wn0bwGkl5kGpkMWivT7w= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB5041.eurprd04.prod.outlook.com (20.177.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.27; Fri, 23 Nov 2018 16:56:32 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:32 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 1/8] dpaa2-eth: Add basic XDP support Thread-Topic: [PATCH net-next 1/8] dpaa2-eth: Add basic XDP support Thread-Index: AQHUg0186LDqPEUCf0GUGA4wHQ5JDA== Date: Fri, 23 Nov 2018 16:56:32 +0000 Message-ID: <1542992186-26028-2-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB5041; 6:1IdnKbRbnfmSkMv2Jg+Mr+bO4M5WWjDSvPMZK8PEvqM9pzXpOedZZ4UAUF2HiaGXtq/PGQ3Yda4A5/k5gQcLGNwgTPykuAmImHFMtkugNLlbrQTRVoQO4ntZchelmovwKpFVJ0HX1b/CU3K/dzmdpWA+3n/9vJzeiVg0SFxV2HBEl7eWbu1Coc8oWFdja5h0qo32WuMb9SNthxn/nyZlr7fDl6//F6xboQIEey31jEZY/uGj9u2P3u6pndo6nARnBCbv+NslRZgQPe5pdz0Zc7MrT9rg0lcAquQ83jH8dbhTF6HIcTTFHtwpI3vURhnvQYhpXL9f1c/E1kZRC3VzeM0NLgd8m0SzDXfSYSRaHRz37anJKGgI658pS8cYVyXcetF1V+oCeqmn5RCsW5vWTY1+V7I5wuJLa1pNNDvhEHWjGMzwzbAB0Slu8twVfRV/pEW/Cg9Rsb2Xbuu7z1CTGg==; 5:VL0jbBWQnAJizO5lfmPjI43dPDr5WYcs9Xf0PBI6QKYxDb7AgsZ7thkDidcFx77tf3409qEX+IWW1XlQlFtSYpRxLPSEpQ+3lwrUrzIWdkyER90Z/yG6uGexp4MpeDzOKMpi/tv8rX+wpw5+Y1ZmgoHlv4hLQ+FZJmt6UqlN+dU=; 7:eLyhC9D8K2L0v/N/VChKzpvxNjvQKe7aDI16bRRPjzn0RY6k4BrUZb2fyC/KxFcXWbnt3EM32PhLzmM3NgN3dm43QGbz1nJDAGZfsZedUdjfS0/7g/Btebqi53vrXF7ZzxzO11xd4akNfkYuzjgYCg== x-ms-office365-filtering-correlation-id: 18bbbe10-72ee-4d89-12eb-08d651649ebe x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB5041; x-ms-traffictypediagnostic: AM0PR04MB5041: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(185117386973197); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231442)(944501410)(52105112)(93006095)(93001095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB5041; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB5041; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(346002)(376002)(396003)(39860400002)(366004)(189003)(199004)(68736007)(8676002)(66066001)(81166006)(2616005)(446003)(11346002)(486006)(476003)(2906002)(3846002)(7736002)(6116002)(305945005)(25786009)(110136005)(6486002)(81156014)(14444005)(5024004)(53936002)(316002)(6512007)(478600001)(8936002)(2900100001)(71200400001)(71190400001)(4326008)(5660300001)(86362001)(256004)(186003)(106356001)(52116002)(76176011)(386003)(6436002)(97736004)(102836004)(2501003)(6506007)(105586002)(36756003)(99286004)(26005)(14454004)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5041; H:AM0PR04MB4994.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-microsoft-antispam-message-info: wXzVCafrl/CNIq/5zuS58XpCbjC9/KmU0rgiLHe+dGkchhb6V8TaLqLCrBz/FLgRqWWxIhd8HlST/OSAE6eBALOS79tExpGA4T/Ss3khjLVW4IR0PTEDHI4uJHh+rxVw/P+6oM42oUcAEf5o7KJiE7gMkX33SAG28uqVXK53nND/euEChBuKjEI1z7eYjByQSFRmV7fdRzCQf+QjmntvpTLMTNZRHwhBIh1DZRCwcFgEMSSnDhiw/gS23tH486sGKdsUnq70zsVtAxgEMBy2QKWOqMV5IKn6Bi7295sYhzBcu/vQJhVdBab5PxjhlNWqs5MeQVwPeNhAJhB09ITa6t7gBLBtv/GNs7QHe+RdX2o= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 18bbbe10-72ee-4d89-12eb-08d651649ebe X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:32.3996 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5041 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We keep one XDP program reference per channel. The only actions supported for now are XDP_DROP and XDP_PASS. Until now we didn't enforce a maximum size for Rx frames based on MTU value. Change that, since for XDP mode we must ensure no scatter-gather frames can be received. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 182 ++++++++++++++++++++++- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 6 + 2 files changed, 187 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 640967a..5340ac9 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -13,7 +13,8 @@ #include #include #include - +#include +#include #include #include "dpaa2-eth.h" @@ -199,6 +200,45 @@ static struct sk_buff *build_frag_skb(struct dpaa2_eth_priv *priv, return skb; } +static u32 run_xdp(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + struct dpaa2_fd *fd, void *vaddr) +{ + struct bpf_prog *xdp_prog; + struct xdp_buff xdp; + u32 xdp_act = XDP_PASS; + + rcu_read_lock(); + + xdp_prog = READ_ONCE(ch->xdp.prog); + if (!xdp_prog) + goto out; + + xdp.data = vaddr + dpaa2_fd_get_offset(fd); + xdp.data_end = xdp.data + dpaa2_fd_get_len(fd); + xdp.data_hard_start = xdp.data; + xdp_set_data_meta_invalid(&xdp); + + xdp_act = bpf_prog_run_xdp(xdp_prog, &xdp); + + switch (xdp_act) { + case XDP_PASS: + break; + default: + bpf_warn_invalid_xdp_action(xdp_act); + case XDP_ABORTED: + trace_xdp_exception(priv->net_dev, xdp_prog, xdp_act); + case XDP_DROP: + ch->buf_count--; + free_rx_fd(priv, fd, vaddr); + break; + } + +out: + rcu_read_unlock(); + return xdp_act; +} + /* Main Rx frame processing routine */ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, @@ -215,6 +255,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, struct dpaa2_fas *fas; void *buf_data; u32 status = 0; + u32 xdp_act; /* Tracing point */ trace_dpaa2_rx_fd(priv->net_dev, fd); @@ -231,8 +272,14 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, percpu_extras = this_cpu_ptr(priv->percpu_extras); if (fd_format == dpaa2_fd_single) { + xdp_act = run_xdp(priv, ch, (struct dpaa2_fd *)fd, vaddr); + if (xdp_act != XDP_PASS) + return; + skb = build_linear_skb(ch, fd, vaddr); } else if (fd_format == dpaa2_fd_sg) { + WARN_ON(priv->xdp_prog); + skb = build_frag_skb(priv, ch, buf_data); skb_free_frag(vaddr); percpu_extras->rx_sg_frames++; @@ -1427,6 +1474,137 @@ static int dpaa2_eth_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) return -EINVAL; } +static bool xdp_mtu_valid(struct dpaa2_eth_priv *priv, int mtu) +{ + int mfl, linear_mfl; + + mfl = DPAA2_ETH_L2_MAX_FRM(mtu); + linear_mfl = DPAA2_ETH_RX_BUF_SIZE - DPAA2_ETH_RX_HWA_SIZE - + dpaa2_eth_rx_head_room(priv); + + return (mfl <= linear_mfl); +} + +static int set_rx_mfl(struct dpaa2_eth_priv *priv, int mtu, bool has_xdp) +{ + int mfl, err; + + /* We enforce a maximum Rx frame length based on MTU only if we have + * an XDP program attached (in order to avoid Rx S/G frames). + * Otherwise, we accept all incoming frames as long as they are not + * larger than maximum size supported in hardware + */ + if (has_xdp) + mfl = DPAA2_ETH_L2_MAX_FRM(mtu); + else + mfl = DPAA2_ETH_MFL; + + err = dpni_set_max_frame_length(priv->mc_io, 0, priv->mc_token, mfl); + if (err) { + netdev_err(priv->net_dev, "dpni_set_max_frame_length failed\n"); + return err; + } + + return 0; +} + +static int dpaa2_eth_change_mtu(struct net_device *dev, int new_mtu) +{ + struct dpaa2_eth_priv *priv = netdev_priv(dev); + int err; + + if (!priv->xdp_prog) + goto out; + + if (!xdp_mtu_valid(priv, new_mtu)) + return -EINVAL; + + err = set_rx_mfl(priv, new_mtu, true); + if (err) + return err; + +out: + dev->mtu = new_mtu; + return 0; +} + +static int setup_xdp(struct net_device *dev, struct bpf_prog *prog) +{ + struct dpaa2_eth_priv *priv = netdev_priv(dev); + struct dpaa2_eth_channel *ch; + struct bpf_prog *old; + bool up, update_settings; + int i, err; + + if (prog && !xdp_mtu_valid(priv, dev->mtu)) { + netdev_warn(dev, "XDP not supported for MTU %d\n", dev->mtu); + return -EINVAL; + } + + if (prog) { + prog = bpf_prog_add(prog, priv->num_channels); + if (IS_ERR(prog)) + return PTR_ERR(prog); + } + + up = netif_running(dev); + update_settings = (!!priv->xdp_prog != !!prog); + + if (up) + dpaa2_eth_stop(dev); + + /* While in xdp mode, enforce a maximum Rx frame size based on MTU */ + if (update_settings) { + err = set_rx_mfl(priv, dev->mtu, !!prog); + if (err) + goto out_err; + } + + old = xchg(&priv->xdp_prog, prog); + if (old) + bpf_prog_put(old); + + for (i = 0; i < priv->num_channels; i++) { + ch = priv->channel[i]; + old = xchg(&ch->xdp.prog, prog); + if (old) + bpf_prog_put(old); + } + + if (up) { + err = dpaa2_eth_open(dev); + if (err) + return err; + } + + return 0; + +out_err: + if (prog) + bpf_prog_sub(prog, priv->num_channels); + if (up) + dpaa2_eth_open(dev); + + return err; +} + +static int dpaa2_eth_xdp(struct net_device *dev, struct netdev_bpf *xdp) +{ + struct dpaa2_eth_priv *priv = netdev_priv(dev); + + switch (xdp->command) { + case XDP_SETUP_PROG: + return setup_xdp(dev, xdp->prog); + case XDP_QUERY_PROG: + xdp->prog_id = priv->xdp_prog ? priv->xdp_prog->aux->id : 0; + break; + default: + return -EINVAL; + } + + return 0; +} + static const struct net_device_ops dpaa2_eth_ops = { .ndo_open = dpaa2_eth_open, .ndo_start_xmit = dpaa2_eth_tx, @@ -1436,6 +1614,8 @@ static const struct net_device_ops dpaa2_eth_ops = { .ndo_set_rx_mode = dpaa2_eth_set_rx_mode, .ndo_set_features = dpaa2_eth_set_features, .ndo_do_ioctl = dpaa2_eth_ioctl, + .ndo_change_mtu = dpaa2_eth_change_mtu, + .ndo_bpf = dpaa2_eth_xdp, }; static void cdan_cb(struct dpaa2_io_notification_ctx *ctx) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 16545e9..2873a15 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -283,6 +283,10 @@ struct dpaa2_eth_fq { struct dpaa2_eth_fq_stats stats; }; +struct dpaa2_eth_ch_xdp { + struct bpf_prog *prog; +}; + struct dpaa2_eth_channel { struct dpaa2_io_notification_ctx nctx; struct fsl_mc_device *dpcon; @@ -294,6 +298,7 @@ struct dpaa2_eth_channel { struct dpaa2_eth_priv *priv; int buf_count; struct dpaa2_eth_ch_stats stats; + struct dpaa2_eth_ch_xdp xdp; }; struct dpaa2_eth_dist_fields { @@ -353,6 +358,7 @@ struct dpaa2_eth_priv { u64 rx_hash_fields; struct dpaa2_eth_cls_rule *cls_rules; u8 rx_cls_enabled; + struct bpf_prog *xdp_prog; }; #define DPAA2_RXH_SUPPORTED (RXH_L2DA | RXH_VLAN | RXH_L3_PROTO \ From patchwork Fri Nov 23 16:56:32 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002476 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="lxayNycg"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jC26pTjz9s7T for ; Sat, 24 Nov 2018 03:56:46 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633136AbeKXDlr (ORCPT ); Fri, 23 Nov 2018 22:41:47 -0500 Received: from mail-eopbgr10064.outbound.protection.outlook.com ([40.107.1.64]:22029 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633124AbeKXDln (ORCPT ); Fri, 23 Nov 2018 22:41:43 -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=KQbvSvK7jy00Tj0+GwvQ2Q/4dBe0bDXAesvUEytDK3E=; b=lxayNycgCKZQapCWlcSh6cDe1hxphdpn6RNyYGatAryIAemPIJ0jTXyCx0CJTqyuSYJigptnhgNie68yhIq1mAUDvaswROy2EASOUIeSW6t3Y6tvA4fv3cDM4y5zR1XsjQVzmOkQhLEuyVd5JDMPCAkYvH6AOpLyvAA7c6qLF+k= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB5041.eurprd04.prod.outlook.com (20.177.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.27; Fri, 23 Nov 2018 16:56:33 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:33 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 2/8] dpaa2-eth: Allow XDP header adjustments Thread-Topic: [PATCH net-next 2/8] dpaa2-eth: Allow XDP header adjustments Thread-Index: AQHUg018br1o5C0Y7U2XO/1/SeuD6g== Date: Fri, 23 Nov 2018 16:56:32 +0000 Message-ID: <1542992186-26028-3-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB5041; 6:N2VFG/854cYEjISzaxfm8NZlbmjNm58ycGF6VfecwjjsUDDK1zQz7i1/iqSMZnz/EFxvkvIlbzqh8hgvLfOOIZWmA/3Ar49Safct8xWzFoNV9jBvZgO0TwWpK4Rt/u3nUZNCJiNUJWprrVFXZWWdR3LSa5v+3ufTpsHGinE8PkPfM0imWn+F1MNFOA2m8B7KqqUd/NcLw0Nyq2N4UwQt5FwM1UO697I5CjOe49uU0ivsOUy134RCFugEZLLWx0W36c+zrIj1l9V5in35z6U9SCbN9Ljc63QMKGn3kd1t3b3yAZ9dxkb08UUsLfowmOVL+WBJqIffzpIjBhDLtIKFRiCG8RAlUbrsGjneM90QS7nhPtQ3t7gl/8ZXQNyfTlz902tu5uCUROrn1u4jR6mdyPDKTLouLmXuC5e4n44jsdadEFy6jtMBwy61OtCneOOaKX40lyPOt2Cc5ZbjqUpn0Q==; 5:NAeCFbNYdqr/0HO0ACPtPrSp6dV8vXSz1Ko0fhsZCmiLLheLw9XhxxNvPR4yuP1LZLbZqyZq2M11k+A248PeGdzJ9sRaHVuz1eT1T9vxkUFoX8Z4PjUrs/O5L9J1qZLgJonY0qpBbTPQOzSBKHgQFn0Y1Fxoi8X2qwCuKJ7/0Ws=; 7:bBXy82G0ugATRxbQO4zIvTSiCcBeRApikoU0aMVZRqYg/PjqR6xJeCQAD2JQATWY8gfTNxfMe21EsqpyKlUshkfJ1JmyXULJV7PRX/Zc2InS/M7SqZ2553H8G2r8n2kwkpcOL5hzTAOZ0nABzTgIjA== x-ms-office365-filtering-correlation-id: c3821053-b0e0-4abb-ac30-08d651649f18 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB5041; x-ms-traffictypediagnostic: AM0PR04MB5041: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(185117386973197); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231442)(944501410)(52105112)(93006095)(93001095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB5041; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB5041; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(346002)(376002)(396003)(39860400002)(366004)(189003)(199004)(68736007)(8676002)(66066001)(81166006)(2616005)(446003)(11346002)(486006)(476003)(2906002)(3846002)(7736002)(6116002)(305945005)(25786009)(110136005)(6486002)(81156014)(14444005)(53936002)(316002)(6512007)(478600001)(8936002)(2900100001)(71200400001)(71190400001)(4326008)(5660300001)(86362001)(256004)(186003)(106356001)(52116002)(76176011)(386003)(6436002)(97736004)(102836004)(2501003)(6506007)(105586002)(36756003)(99286004)(26005)(14454004)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5041; H:AM0PR04MB4994.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-microsoft-antispam-message-info: 3DL5qQWJFvQk7S+qa9+LoMXQuuvEDDHGRzW3yqedT9ovU9mkLMP5rj2LgGLkgdISJrEl86YkKuzseGhRl1ThBiRVyqOhejur3cHzQGCujHoCLF7tI3rW4qlhCT+KzlklP0tambZ38Ux1P/40JZTzhytc1yp2h0BEq/Viq//jdi3z6AQ9/MknEmsqjB/gW2pI93k9nW5XOk349XZxgg3P0v+IJPmow2UewaOrCdL2lGHjpwEQ5WJiHIgVTT2gbrx33qjddwm1DyIuPra2ylv4FUkOVS3+YIQ061vxdzq3TGVHcANILDTB7Xm1qkBk2c9AH5UMadbANcims4j4rhIagkmqWi7UJcpZKQW9XUmZBeQ= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: c3821053-b0e0-4abb-ac30-08d651649f18 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:32.9621 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5041 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Reserve XDP_PACKET_HEADROOM bytes in Rx buffers to allow XDP programs to increase frame header size. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 43 ++++++++++++++++++++++-- 1 file changed, 40 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 5340ac9..5be3008 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -216,11 +216,15 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv, xdp.data = vaddr + dpaa2_fd_get_offset(fd); xdp.data_end = xdp.data + dpaa2_fd_get_len(fd); - xdp.data_hard_start = xdp.data; + xdp.data_hard_start = xdp.data - XDP_PACKET_HEADROOM; xdp_set_data_meta_invalid(&xdp); xdp_act = bpf_prog_run_xdp(xdp_prog, &xdp); + /* xdp.data pointer may have changed */ + dpaa2_fd_set_offset(fd, xdp.data - vaddr); + dpaa2_fd_set_len(fd, xdp.data_end - xdp.data); + switch (xdp_act) { case XDP_PASS: break; @@ -1480,7 +1484,7 @@ static bool xdp_mtu_valid(struct dpaa2_eth_priv *priv, int mtu) mfl = DPAA2_ETH_L2_MAX_FRM(mtu); linear_mfl = DPAA2_ETH_RX_BUF_SIZE - DPAA2_ETH_RX_HWA_SIZE - - dpaa2_eth_rx_head_room(priv); + dpaa2_eth_rx_head_room(priv) - XDP_PACKET_HEADROOM; return (mfl <= linear_mfl); } @@ -1528,6 +1532,32 @@ static int dpaa2_eth_change_mtu(struct net_device *dev, int new_mtu) return 0; } +static int update_rx_buffer_headroom(struct dpaa2_eth_priv *priv, bool has_xdp) +{ + struct dpni_buffer_layout buf_layout = {0}; + int err; + + err = dpni_get_buffer_layout(priv->mc_io, 0, priv->mc_token, + DPNI_QUEUE_RX, &buf_layout); + if (err) { + netdev_err(priv->net_dev, "dpni_get_buffer_layout failed\n"); + return err; + } + + /* Reserve extra headroom for XDP header size changes */ + buf_layout.data_head_room = dpaa2_eth_rx_head_room(priv) + + (has_xdp ? XDP_PACKET_HEADROOM : 0); + buf_layout.options = DPNI_BUF_LAYOUT_OPT_DATA_HEAD_ROOM; + err = dpni_set_buffer_layout(priv->mc_io, 0, priv->mc_token, + DPNI_QUEUE_RX, &buf_layout); + if (err) { + netdev_err(priv->net_dev, "dpni_set_buffer_layout failed\n"); + return err; + } + + return 0; +} + static int setup_xdp(struct net_device *dev, struct bpf_prog *prog) { struct dpaa2_eth_priv *priv = netdev_priv(dev); @@ -1553,11 +1583,18 @@ static int setup_xdp(struct net_device *dev, struct bpf_prog *prog) if (up) dpaa2_eth_stop(dev); - /* While in xdp mode, enforce a maximum Rx frame size based on MTU */ + /* While in xdp mode, enforce a maximum Rx frame size based on MTU. + * Also, when switching between xdp/non-xdp modes we need to reconfigure + * our Rx buffer layout. Buffer pool was drained on dpaa2_eth_stop, + * so we are sure no old format buffers will be used from now on. + */ if (update_settings) { err = set_rx_mfl(priv, dev->mtu, !!prog); if (err) goto out_err; + err = update_rx_buffer_headroom(priv, !!prog); + if (err) + goto out_err; } old = xchg(&priv->xdp_prog, prog); From patchwork Fri Nov 23 16:56:33 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002477 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="m4OvvRuJ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jC64QWyz9s1c for ; Sat, 24 Nov 2018 03:56:50 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633142AbeKXDlu (ORCPT ); Fri, 23 Nov 2018 22:41:50 -0500 Received: from mail-eopbgr10064.outbound.protection.outlook.com ([40.107.1.64]:22029 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633124AbeKXDlt (ORCPT ); Fri, 23 Nov 2018 22:41:49 -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=D/yXeRB9rpvUip3LzFbIcBVthEQgQEntyEtYAQDHdTw=; b=m4OvvRuJRlTGkJagA7KyGra/lYrCXkm+tE1mqt4qlZUpI68+3WJo6ZatA5+H+RJmyV1MyOwJi9vk0q4NqAbo59pfMB5GDXOOCxyVVxzIu9Sf+xfeyFpyKrAF6DghRHVd122Oprs0MjfuSpLmR1LuEPmPmJm7IHCzDdxNj7vLO9s= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB5041.eurprd04.prod.outlook.com (20.177.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.27; Fri, 23 Nov 2018 16:56:33 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:33 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 3/8] dpaa2-eth: Move function Thread-Topic: [PATCH net-next 3/8] dpaa2-eth: Move function Thread-Index: AQHUg019dPJFohq1JkaDSzCPmh3aIw== Date: Fri, 23 Nov 2018 16:56:33 +0000 Message-ID: <1542992186-26028-4-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB5041; 6:6ZspRYXU37KKCq/7Ji+JYY3QRMUZhYhkIyHvr6ld1qkFAL4CSIeb8irCxUfms/rqUAz9t4Zfm1XmZWYOSJPS+ClJ+UgVUHLoMOZQVm6tifDqjy3hUpKFOXGxjkSFHhE8Vi0CXjPmTpl8syyicAztZO1pcTq7fKYMM+k7b2LaJA3k3eTlcwnm2m5Q80hkYRaDoAV6ZB5db6mdermjSy7+UC8P0KcfaX9n7CeQHFb85CBlq+CHBNogGkEcRwjiW8yGCZXASg5BtFUFNnRAEOLIRZDylNrlK3DVqHfmQKd+hAEXquxUzJlQS3ZsWsTEGY01VhHPKASlH1EvzstvcYzYO7dUS1rQSiUuDcJ6QxPVxW7OxCHJS5Re/1oA3eRXAWtwD1rdXIC9XLR0fwRmW3OCtfFfaUZJ7YL/cOgVF8UcjLcX4E5zd+Z8WTNYFdcUc8P7qp8oAVVft4yKkmfrsu2H6w==; 5:BCQSy2f1NidqWCCuCxR0bjBn2VH3kBqiZOloTw4A+QxajXIGeDULy+V1r+OwAERi5sEbgfkZqrG7rmgMzXoVgXGphVnn/s1XBkFHOsncTQEpbNuxExKXYpRx+H7hSruUEiDAC1U4BdJ9Pc6QyV4qErrwsKL9ER/XMeUmxsDmEuQ=; 7:ASyMvxJKfwIkj/cc8TTYoFIkNDeYgmLm50c1UbD8bFCF/3bsZEmxXczycZcg0hT5gVWsanOQTDF5P6PcFxOoeJp7yNlz0rxW4w/G90mzZp/zRyZNLjMjtGh/GiIZFIwRkeVxDpigY09dtLSKOoBAKg== x-ms-office365-filtering-correlation-id: 770752e9-d00d-4b47-80c4-08d651649f6e x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB5041; x-ms-traffictypediagnostic: AM0PR04MB5041: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(185117386973197); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231442)(944501410)(52105112)(93006095)(93001095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB5041; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB5041; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(346002)(376002)(396003)(39860400002)(366004)(189003)(199004)(68736007)(8676002)(66066001)(81166006)(2616005)(446003)(11346002)(486006)(476003)(2906002)(3846002)(7736002)(6116002)(305945005)(25786009)(110136005)(6486002)(81156014)(14444005)(53936002)(316002)(6512007)(478600001)(8936002)(2900100001)(71200400001)(71190400001)(4326008)(5660300001)(86362001)(256004)(186003)(106356001)(52116002)(76176011)(386003)(6436002)(97736004)(102836004)(2501003)(6506007)(105586002)(36756003)(99286004)(26005)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5041; H:AM0PR04MB4994.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-microsoft-antispam-message-info: D+YCX31a7XpRW87u9xnQCY2F4lYQj+XPM7EYvgxZZT3b9IN3JQK/ApDE/wRAN4x9rrczMzPdvkzJjows1dKzJWc+XN0RfLPu8b4uT5gFxR07uzWgMB0X58xWdL9j07q4hOiWMqSAL/ANo23U17yqvFQ3+guCw/1l2rHnZ6QZQCJ+jn46RShQ/HM6jFlcPf4u3r/Z4dXdo05AhCsLUPhzU/JoKYYsypX8kN+qx0T47fNL/762bDMhjwBIHeji7zqSHr9hJTOd1/8wlFjPf+gWnHYAem0cbIkfSt939VY09vgglCA2wI1ZO9hsFjkJSoGXvGMmTAtxU4lA104qB3ffAblJuYtuXYJzhfCKqXjGsf4= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 770752e9-d00d-4b47-80c4-08d651649f6e X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:33.5558 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5041 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org We'll use function free_bufs() on the XDP path as well, so move it higher in order to avoid a forward declaration. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 34 ++++++++++++------------ 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 5be3008..9ed4d8e 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -200,6 +200,23 @@ static struct sk_buff *build_frag_skb(struct dpaa2_eth_priv *priv, return skb; } +/* Free buffers acquired from the buffer pool or which were meant to + * be released in the pool + */ +static void free_bufs(struct dpaa2_eth_priv *priv, u64 *buf_array, int count) +{ + struct device *dev = priv->net_dev->dev.parent; + void *vaddr; + int i; + + for (i = 0; i < count; i++) { + vaddr = dpaa2_iova_to_virt(priv->iommu_domain, buf_array[i]); + dma_unmap_single(dev, buf_array[i], DPAA2_ETH_RX_BUF_SIZE, + DMA_FROM_DEVICE); + skb_free_frag(vaddr); + } +} + static u32 run_xdp(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, struct dpaa2_fd *fd, void *vaddr) @@ -794,23 +811,6 @@ static int set_tx_csum(struct dpaa2_eth_priv *priv, bool enable) return 0; } -/* Free buffers acquired from the buffer pool or which were meant to - * be released in the pool - */ -static void free_bufs(struct dpaa2_eth_priv *priv, u64 *buf_array, int count) -{ - struct device *dev = priv->net_dev->dev.parent; - void *vaddr; - int i; - - for (i = 0; i < count; i++) { - vaddr = dpaa2_iova_to_virt(priv->iommu_domain, buf_array[i]); - dma_unmap_single(dev, buf_array[i], DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); - skb_free_frag(vaddr); - } -} - /* Perform a single release command to add buffers * to the specified buffer pool */ From patchwork Fri Nov 23 16:56:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002478 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="CZH50WJW"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jC915zPz9s1c for ; Sat, 24 Nov 2018 03:56:53 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633150AbeKXDlx (ORCPT ); Fri, 23 Nov 2018 22:41:53 -0500 Received: from mail-eopbgr140051.outbound.protection.outlook.com ([40.107.14.51]:16356 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633116AbeKXDlw (ORCPT ); Fri, 23 Nov 2018 22:41:52 -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=Dv/tM91oO5gUUbd08tkwmBWm5vgRkRe03RoRptbmK3w=; b=CZH50WJWXVkcFKOh1fpG5kiE+YVWEwigC4RGVGjlWy9uE3e3ISsFItHUa/pSflgDrVuGknrMi/3xZtu4myvCXI6J1KOndL3k4xFzBPX4Y8PqxJlSGahMheW0eX0c1uKkip/fbzS7Ol3ONnSXrHkQ9k6kAzeDRGKsYLtVmYunvgM= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB5379.eurprd04.prod.outlook.com (20.178.115.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1339.28; Fri, 23 Nov 2018 16:56:34 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:34 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 4/8] dpaa2-eth: Release buffers back to pool on XDP_DROP Thread-Topic: [PATCH net-next 4/8] dpaa2-eth: Release buffers back to pool on XDP_DROP Thread-Index: AQHUg019ZXaBFF05aEqzk31P2ujhMw== Date: Fri, 23 Nov 2018 16:56:34 +0000 Message-ID: <1542992186-26028-5-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB5379; 6:V1Kz+50ryzbSQ6FOIbWEzrTg471sYPhzaujohD7bYNX7t/Tg4odulTYL11lh8kogvyP9TLx3qzo95xH+9pjTwB607DXuF12tISDysRyEcEo1rwk1/zbELJiSv/aS2beHG+eZsh+/9wodFCPqVdmMZhUv27lZFAVX1gz5aIqPrv+ayGGThGa8gKSQJMEUG6Qyf9BSe2lxcAfVxPXQ8/H59dNdjI/NvImdY5T20VKPxgHsGnp8aZCAMXahBEwGHebQPUcmnvkfIg4N886km8kPfkEjATg5IIZys6FQPXmyHq1IHgfbitgC4qemhPAsViXyRyfy6cbarl8eefYYiRbauvPRjGPK3aNSrTtj6fcwLEI8DK/DJqHTTweQExUeScPebASVyGkBpOqo0rm9eov24SHVS5gcdG0yMRiS2UYtCG6Ty/gV0qLpYTlyDMkFk8h8vKNDGzo3ItCiWidxLJgcmw==; 5:+mo3GiQn/99Uiagw21OEOmSwEldLJfInurAuDtvHoICFIlGn9xwCqQIhYJzMkFuk7eLponRLSptFhfj7wbano3LScGhEFd4/OyNPrmlg39iRcAy28hBG7qFuYNi2TAX29NFwffAfe90nvrP8t6JtP9Y223+S0dwRHn+p8SJ+tTA=; 7:ggFTtoRAk1fnv3hDzXqLP2O9tyf9MKIvgl7Y8HzQmimujTGjOKdZffmD8DRaLdqI3Ql2byKrM5ovNkhI4j9OPZO3TkckVxECaxDzgi7ZXG+fGQ07XhyQ++dSKFcvIJZ13fletyVJvd6ZfldKYjQ/0A== x-ms-office365-filtering-correlation-id: 5a34ec43-03f9-45bf-1a09-08d651649fc9 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB5379; x-ms-traffictypediagnostic: AM0PR04MB5379: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231442)(944501410)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB5379; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB5379; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(376002)(366004)(346002)(136003)(39860400002)(189003)(199004)(6512007)(53936002)(5660300001)(2501003)(6436002)(86362001)(7736002)(305945005)(8676002)(106356001)(8936002)(81156014)(81166006)(105586002)(36756003)(66066001)(26005)(6486002)(71190400001)(99286004)(25786009)(110136005)(2900100001)(97736004)(478600001)(486006)(4326008)(3846002)(6116002)(186003)(316002)(6506007)(446003)(68736007)(2906002)(2616005)(476003)(102836004)(11346002)(256004)(386003)(14454004)(76176011)(52116002)(71200400001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5379; H:AM0PR04MB4994.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-microsoft-antispam-message-info: DuGpcXU2dtW767hcHwEk/zNlsT+8qrMVqlkIQpOKG1+116IpSy1S57sJcjIfaAJO89bTRZAUPWQ0NhiPwJFjE6KalohONNZLlsFeuFbrNL45eSayed/zWhFT67ZnqjJjXSca2lXp/QqoMslg5t3IZaeSM89QzWTExxV/vOGayqf750r/BFIUWUVFAT9aelTyoH2f0MehZgMZ92n1GlY04qQT0c2Ucc/p3SPU4uyBQLkJ61YlNIj00U88A5V8bfK5H2ZxprycnQqyAfuKpvupQldwu9zeAJ/08urofSONhvPxFWYOms59NvMZz1GWWnx1hgw7rbHQErP7GN+p7jfPgYfhwAq51eBnPripMSo8TuM= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5a34ec43-03f9-45bf-1a09-08d651649fc9 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:34.3371 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5379 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Instead of freeing the RX buffers, release them back into the pool. We wait for the maximum number of buffers supported by a single release command to accumulate before issuing the command. Also, don't unmap the Rx buffers at the beginning of the Rx routine anymore, since that would require remapping them before release. Instead, just do a DMA sync at first and only unmap if the frame is meant for the stack. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 34 +++++++++++++++++++++--- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 2 ++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 9ed4d8e..6256154 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -217,10 +217,34 @@ static void free_bufs(struct dpaa2_eth_priv *priv, u64 *buf_array, int count) } } +static void xdp_release_buf(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + dma_addr_t addr) +{ + int err; + + ch->xdp.drop_bufs[ch->xdp.drop_cnt++] = addr; + if (ch->xdp.drop_cnt < DPAA2_ETH_BUFS_PER_CMD) + return; + + while ((err = dpaa2_io_service_release(ch->dpio, priv->bpid, + ch->xdp.drop_bufs, + ch->xdp.drop_cnt)) == -EBUSY) + cpu_relax(); + + if (err) { + free_bufs(priv, ch->xdp.drop_bufs, ch->xdp.drop_cnt); + ch->buf_count -= ch->xdp.drop_cnt; + } + + ch->xdp.drop_cnt = 0; +} + static u32 run_xdp(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, struct dpaa2_fd *fd, void *vaddr) { + dma_addr_t addr = dpaa2_fd_get_addr(fd); struct bpf_prog *xdp_prog; struct xdp_buff xdp; u32 xdp_act = XDP_PASS; @@ -250,8 +274,7 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv, case XDP_ABORTED: trace_xdp_exception(priv->net_dev, xdp_prog, xdp_act); case XDP_DROP: - ch->buf_count--; - free_rx_fd(priv, fd, vaddr); + xdp_release_buf(priv, ch, addr); break; } @@ -282,7 +305,8 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, trace_dpaa2_rx_fd(priv->net_dev, fd); vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr); - dma_unmap_single(dev, addr, DPAA2_ETH_RX_BUF_SIZE, DMA_FROM_DEVICE); + dma_sync_single_for_cpu(dev, addr, DPAA2_ETH_RX_BUF_SIZE, + DMA_FROM_DEVICE); fas = dpaa2_get_fas(vaddr, false); prefetch(fas); @@ -297,10 +321,14 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, if (xdp_act != XDP_PASS) return; + dma_unmap_single(dev, addr, DPAA2_ETH_RX_BUF_SIZE, + DMA_FROM_DEVICE); skb = build_linear_skb(ch, fd, vaddr); } else if (fd_format == dpaa2_fd_sg) { WARN_ON(priv->xdp_prog); + dma_unmap_single(dev, addr, DPAA2_ETH_RX_BUF_SIZE, + DMA_FROM_DEVICE); skb = build_frag_skb(priv, ch, buf_data); skb_free_frag(vaddr); percpu_extras->rx_sg_frames++; diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 2873a15..23cf9d9 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -285,6 +285,8 @@ struct dpaa2_eth_fq { struct dpaa2_eth_ch_xdp { struct bpf_prog *prog; + u64 drop_bufs[DPAA2_ETH_BUFS_PER_CMD]; + int drop_cnt; }; struct dpaa2_eth_channel { From patchwork Fri Nov 23 16:56:34 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002479 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="ptrEYhcL"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jCB4k4gz9s1c for ; Sat, 24 Nov 2018 03:56:54 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633157AbeKXDlz (ORCPT ); Fri, 23 Nov 2018 22:41:55 -0500 Received: from mail-eopbgr140051.outbound.protection.outlook.com ([40.107.14.51]:16356 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633116AbeKXDly (ORCPT ); Fri, 23 Nov 2018 22:41:54 -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=58n1LtyHGW29b7xaGPgnWXbTAWdA7dftQHjWN1Z3PWA=; b=ptrEYhcLjfaR1vEJuECOwu7UTdMLor2R1iKFnNH/zhGbYUiT3LhvdLGjIe4LfBhiiangCgg1Lq/KOujY+iI+40NABuci5elP+DpQB0Tkup5TYDAdjFp31YUykd9TdeS7TyTutJ7H8LhdnJJFoIXR84+wenQExuyvfZ1ojLuPQQM= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB5379.eurprd04.prod.outlook.com (20.178.115.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1339.28; Fri, 23 Nov 2018 16:56:35 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:34 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 5/8] dpaa2-eth: Map Rx buffers as bidirectional Thread-Topic: [PATCH net-next 5/8] dpaa2-eth: Map Rx buffers as bidirectional Thread-Index: AQHUg019Ys5CMqvRrUqW7DuN55bu+Q== Date: Fri, 23 Nov 2018 16:56:34 +0000 Message-ID: <1542992186-26028-6-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB5379; 6:rltQtTPXgw7VEduk/pd+3ntJIxNLwu5NNA63Xhj+gTwDiiDSoCVajf9u7AaEkRrLr02XpqCaZ5bq9NnrW/Nb44KTDCe98GkVa1PQYo287rtgVQmiSfbHwThBAJxDGBbUhitg6TclCxkcCS0Vnh8aWE4CVFxd8G9E0L2uSi9HDUuTgit3sqwlqipDg9E+z++rxQ8UbYMKPWZObdpa5PhX9ZbXtdo0n6E1yqDXcIItbmUCfJW8iP1/vx0bwNMtWQw0J4JaP7em+qGfQEwkL24aGtxdQO7AJe4zzMtaCFHF5PdkUiih/6LHTi8eVUMe027YLpqjnZeZcKKtN5D66hfwydJOc9hgCVDzT7tVwiztgDezGjRjggbJ1cP2PFUHykMvpobXdHXD+Trdn12klTAp4TzhKXVIaGBEW0mLAETI0EwQIDmjFAOHv93rYkk/zcS23VoiOlNHvCBy1BskH6FPNQ==; 5:O+ZLnZOMmA+U+cFyeW2Tq8umtFS3VCgejGToVDCb3L5woRU5eKxaABpu/5iyJvNlg4tcbK3oZqTdCAzTTQrdxgojknD1jJ7v7IK2VCXD6N4WDyfovqhT1d7KVxEAPanwQW/E+Bg2xJwsos+8tk+MzGU5I4G57zxvO7O8v9sysqc=; 7:eBbVmpWe6f7Au76xWqWNROTt+tuV0LQA91us8bSHBSGzn86eGPk6GijZlJW8VCtL4g2oWRq4vdNUAGZKaXfxZJMcZq/tg13zRUAXgBdNcjoYpfwUOahXQA8Foyhsklb0TKgPnRZjuLQ7fS8CBV8HfQ== x-ms-office365-filtering-correlation-id: 4aa2ee2d-e0f2-41c0-b1dc-08d65164a042 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB5379; x-ms-traffictypediagnostic: AM0PR04MB5379: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231442)(944501410)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB5379; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB5379; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(376002)(366004)(346002)(136003)(39860400002)(189003)(199004)(6512007)(53936002)(5660300001)(2501003)(6436002)(86362001)(7736002)(305945005)(8676002)(106356001)(8936002)(81156014)(81166006)(105586002)(36756003)(66066001)(26005)(6486002)(71190400001)(99286004)(25786009)(110136005)(2900100001)(97736004)(478600001)(486006)(4326008)(3846002)(6116002)(186003)(316002)(6506007)(446003)(68736007)(2906002)(2616005)(476003)(102836004)(11346002)(256004)(386003)(14454004)(76176011)(14444005)(52116002)(71200400001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5379; H:AM0PR04MB4994.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-microsoft-antispam-message-info: 7SN0kC3Q4n4sVYtNPvf2NByzN+DM9nG9RehxnTtyoPlwSbaVjwJ9KSGmfcBldrswbDptlSrH+Bc2ln7jgc0fRTwZPqrYWxkIEa4f3FTJetcd4GAvQGmWgbWI084LFFWdkOgFfl6P84YyuYi45LKuqJRW/cb87mHlxGY7mFdzZJCUVKbCSb2nCm+ufxcD0My9edWZNjWYDu88cTFgnpm2Y5ptrEsytyjx8d08bBMsYNaSGh8rHaXb8G2Cl4QSbqbbxR4dkcwmCPwVfWMkULU1QYMVRXnMIWj8XO97kpPnuOliJIzxBzvup/3jtWRXcph0JUq7aps6xg71KJVn3XOXZLaOGQaPtkNFxnMR/s7UpXc= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4aa2ee2d-e0f2-41c0-b1dc-08d65164a042 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:34.9308 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5379 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org In order to support enqueueing Rx FDs back to hardware, we need to DMA map Rx buffers as bidirectional. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 6256154..1bdcd71 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -87,7 +87,7 @@ static void free_rx_fd(struct dpaa2_eth_priv *priv, addr = dpaa2_sg_get_addr(&sgt[i]); sg_vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr); dma_unmap_single(dev, addr, DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); skb_free_frag(sg_vaddr); if (dpaa2_sg_is_final(&sgt[i])) @@ -145,7 +145,7 @@ static struct sk_buff *build_frag_skb(struct dpaa2_eth_priv *priv, sg_addr = dpaa2_sg_get_addr(sge); sg_vaddr = dpaa2_iova_to_virt(priv->iommu_domain, sg_addr); dma_unmap_single(dev, sg_addr, DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); sg_length = dpaa2_sg_get_len(sge); @@ -212,7 +212,7 @@ static void free_bufs(struct dpaa2_eth_priv *priv, u64 *buf_array, int count) for (i = 0; i < count; i++) { vaddr = dpaa2_iova_to_virt(priv->iommu_domain, buf_array[i]); dma_unmap_single(dev, buf_array[i], DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); skb_free_frag(vaddr); } } @@ -306,7 +306,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr); dma_sync_single_for_cpu(dev, addr, DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); fas = dpaa2_get_fas(vaddr, false); prefetch(fas); @@ -322,13 +322,13 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, return; dma_unmap_single(dev, addr, DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); skb = build_linear_skb(ch, fd, vaddr); } else if (fd_format == dpaa2_fd_sg) { WARN_ON(priv->xdp_prog); dma_unmap_single(dev, addr, DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); skb = build_frag_skb(priv, ch, buf_data); skb_free_frag(vaddr); percpu_extras->rx_sg_frames++; @@ -862,7 +862,7 @@ static int add_bufs(struct dpaa2_eth_priv *priv, buf = PTR_ALIGN(buf, priv->rx_buf_align); addr = dma_map_single(dev, buf, DPAA2_ETH_RX_BUF_SIZE, - DMA_FROM_DEVICE); + DMA_BIDIRECTIONAL); if (unlikely(dma_mapping_error(dev, addr))) goto err_map; From patchwork Fri Nov 23 16:56:35 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002481 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="X+qX23ur"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jCG3TY6z9s1c for ; Sat, 24 Nov 2018 03:56:58 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633160AbeKXDl7 (ORCPT ); Fri, 23 Nov 2018 22:41:59 -0500 Received: from mail-eopbgr140051.outbound.protection.outlook.com ([40.107.14.51]:16356 "EHLO EUR01-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633153AbeKXDl6 (ORCPT ); Fri, 23 Nov 2018 22:41:58 -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=bo1MXBoee6C4RpnDJ8SqO2NUIyK+5Xk+QgwfwVa2Uws=; b=X+qX23ur5mPnLmIO/oKj/4LJyIHjqmz29F8TW4Kyd/qFk3M3GaVWHZG8bgtn2mxh3UIS0Ua9nrGpSSJDdpScNnpAHvN5I2G3pcCdBdzwwWrqoeaOlWUpjwIX8TXTcfzkukWmbwh9Gcg/MYLF2/+VKkV+LHqHMhtQm3kdX/jz2iU= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB5379.eurprd04.prod.outlook.com (20.178.115.211) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1339.28; Fri, 23 Nov 2018 16:56:35 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:35 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 6/8] dpaa2-eth: Add support for XDP_TX Thread-Topic: [PATCH net-next 6/8] dpaa2-eth: Add support for XDP_TX Thread-Index: AQHUg01+QWuYFsCETECk+AY3pSJ++A== Date: Fri, 23 Nov 2018 16:56:35 +0000 Message-ID: <1542992186-26028-7-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB5379; 6:pieL45HtlMx0hkdD7+Y1OoSA3kXjPqqiwbtAw4ukvhPdX06wC5DYE7McLo4ypvZM79WOIWX8xHm2UKkRtMvrt1/r7dVXP9J7Da+2TlxJk45P5dYpaEFtviLsWps+hKhGCp5YtfY9cpZH1RPbu7FjiD3ZTtdWmchMhKkXdAO5+t+qTzQVsSGIarQsOBCIcXBeLhzPmNMaDN32bvdcCu+81oy47QDbuyhDBNP5m/ww0dmMtj2lJJX4YaeIzczskq+PUPvySLTim3weBdQ1n0W4GQ8VcmachnJxQGST87xubxeoYcvHGUWB1IqCRuc7tOa/4wsvU57PaV7rvHRKnXZg59Rk36Q/a1x4g+PYbCl4QKIAB9B3iMB5rvuBg9yfWiiY5xnH0uWM/sECV6p8b13YEZewtpNrXz+MaDmbaN1+tp+RpA3IiNOSgCbAvz/MeTaBnDGA1/d6mOUGTawM1VeW8g==; 5:mgrJqI07NYX2i//ebOROnPkEL5ayY/x3B1RU0JIeDr7QR4a+1HEJd0WXbKMVK3WD/600UPoxcCNASYQCzKZM4tZRkOfMfOFveeOuiMQuYkAgmJNjN68Z8OUT/KVPVflf8XpQ3+BOqY1yI47/wa5ZOng/bMNGfTcAEsiCno/P/Hs=; 7:tBcmliFnY23rjv0x3WOhuqjRNQ9l2PL6cIzSMlGUtV3cT0DX4LBmqt4/INMSvEcZAdPwaqaXPPQ6HLmaF7CaW7ntKAVGxc3zskvqYqE9nVoyjR+b8MsUagvq1aQOqHc54tMSU+qDf5pn1BbAAZGVeg== x-ms-office365-filtering-correlation-id: 7c19026f-cd66-4c48-e8c6-08d65164a09a x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB5379; x-ms-traffictypediagnostic: AM0PR04MB5379: x-microsoft-antispam-prvs: x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3231442)(944501410)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123562045)(20161123564045)(20161123558120)(20161123560045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB5379; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB5379; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(396003)(376002)(366004)(346002)(136003)(39860400002)(189003)(199004)(6512007)(53936002)(5660300001)(2501003)(6436002)(575784001)(86362001)(7736002)(305945005)(8676002)(106356001)(8936002)(81156014)(81166006)(105586002)(36756003)(66066001)(26005)(6486002)(71190400001)(99286004)(25786009)(110136005)(2900100001)(97736004)(478600001)(486006)(4326008)(3846002)(6116002)(186003)(316002)(6506007)(446003)(68736007)(2906002)(2616005)(476003)(102836004)(11346002)(256004)(386003)(14454004)(76176011)(14444005)(52116002)(71200400001); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5379; H:AM0PR04MB4994.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-microsoft-antispam-message-info: FQ2XpR/AUMYfiZr1PItYUinqGtrxcfFjQesXOXxYSWpjF1+7/a8Af7KKJs8NkEA/ZUczy9py7yL6p+R9YQL8EqIWTap9IBbtd/7dua/4PNVS751QMFi7cYy6stxnAF4g4qDPuI23wwfDvaxNWwoQfEa+BMBw4CWXGztlkJjTp+pAFw082Noleis5vR9Xdq8QUEN9m69FWZUStnYEMsQ67DrrOJROQJtoSwnHL+nSCFGKuViyJw6OavRWYWjSfhPAs5mw5j3n3icbuO9lVLdLRP7xrBk6Gq0agDdo/6z4CSUrktpMBfBl3IVgEb4WtkNQpw7S04Xok/ZW5O9Szht719UVuhgbziZOncpkmjQ9X0A= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 7c19026f-cd66-4c48-e8c6-08d65164a09a X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:35.4621 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5379 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Send frames back on the same port for XDP_TX action. Since the frame buffers have been allocated by us, we can recycle them directly into the Rx buffer pool instead of requesting a confirmation frame upon transmission complete. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 43 +++++++++++++++++++++++- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 2 ++ 2 files changed, 44 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 1bdcd71..3dabee0 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -240,14 +240,50 @@ static void xdp_release_buf(struct dpaa2_eth_priv *priv, ch->xdp.drop_cnt = 0; } +static int xdp_enqueue(struct dpaa2_eth_priv *priv, struct dpaa2_fd *fd, + void *buf_start, u16 queue_id) +{ + struct dpaa2_eth_fq *fq; + struct dpaa2_faead *faead; + u32 ctrl, frc; + int i, err; + + /* Mark the egress frame hardware annotation area as valid */ + frc = dpaa2_fd_get_frc(fd); + dpaa2_fd_set_frc(fd, frc | DPAA2_FD_FRC_FAEADV); + dpaa2_fd_set_ctrl(fd, DPAA2_FD_CTRL_ASAL); + + /* Instruct hardware to release the FD buffer directly into + * the buffer pool once transmission is completed, instead of + * sending a Tx confirmation frame to us + */ + ctrl = DPAA2_FAEAD_A4V | DPAA2_FAEAD_A2V | DPAA2_FAEAD_EBDDV; + faead = dpaa2_get_faead(buf_start, false); + faead->ctrl = cpu_to_le32(ctrl); + faead->conf_fqid = 0; + + fq = &priv->fq[queue_id]; + for (i = 0; i < DPAA2_ETH_ENQUEUE_RETRIES; i++) { + err = dpaa2_io_service_enqueue_qd(fq->channel->dpio, + priv->tx_qdid, 0, + fq->tx_qdbin, fd); + if (err != -EBUSY) + break; + } + + return err; +} + static u32 run_xdp(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, + struct dpaa2_eth_fq *rx_fq, struct dpaa2_fd *fd, void *vaddr) { dma_addr_t addr = dpaa2_fd_get_addr(fd); struct bpf_prog *xdp_prog; struct xdp_buff xdp; u32 xdp_act = XDP_PASS; + int err; rcu_read_lock(); @@ -269,6 +305,11 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv, switch (xdp_act) { case XDP_PASS: break; + case XDP_TX: + err = xdp_enqueue(priv, fd, vaddr, rx_fq->flowid); + if (err) + xdp_release_buf(priv, ch, addr); + break; default: bpf_warn_invalid_xdp_action(xdp_act); case XDP_ABORTED: @@ -317,7 +358,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, percpu_extras = this_cpu_ptr(priv->percpu_extras); if (fd_format == dpaa2_fd_single) { - xdp_act = run_xdp(priv, ch, (struct dpaa2_fd *)fd, vaddr); + xdp_act = run_xdp(priv, ch, fq, (struct dpaa2_fd *)fd, vaddr); if (xdp_act != XDP_PASS) return; diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 23cf9d9..5530a0e 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -139,7 +139,9 @@ struct dpaa2_faead { }; #define DPAA2_FAEAD_A2V 0x20000000 +#define DPAA2_FAEAD_A4V 0x08000000 #define DPAA2_FAEAD_UPDV 0x00001000 +#define DPAA2_FAEAD_EBDDV 0x00002000 #define DPAA2_FAEAD_UPD 0x00000010 /* Accessors for the hardware annotation fields that we use */ From patchwork Fri Nov 23 16:56:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002480 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="u9y9XTVo"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jCF00ymz9s7T for ; Sat, 24 Nov 2018 03:56:56 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633146AbeKXDlx (ORCPT ); Fri, 23 Nov 2018 22:41:53 -0500 Received: from mail-eopbgr10064.outbound.protection.outlook.com ([40.107.1.64]:22029 "EHLO EUR02-HE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2633139AbeKXDlw (ORCPT ); Fri, 23 Nov 2018 22:41:52 -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=R0LZx/jAWbLtXAZRWGzovLV0rXYN8Rp3OfIKW8DnnJI=; b=u9y9XTVoNqHtcTW++DRAv8ffpyzkAbmfRpfT1F3acFB23WvHz9boY69jIE/4pXMXQQ/YNwKyjnO+caQfhVgIMKCpjZ0pn4vKrEGczROGaPFo99dIog2KboJr9xP1dnxEVG4x09nZgVONPHK7/5kDWFpCXYk/u3taTHm5CAo/ofY= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB5041.eurprd04.prod.outlook.com (20.177.40.146) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.27; Fri, 23 Nov 2018 16:56:36 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:36 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 7/8] dpaa2-eth: Cleanup channel stats Thread-Topic: [PATCH net-next 7/8] dpaa2-eth: Cleanup channel stats Thread-Index: AQHUg01+KYmhm3BVz0ey4WWmqD9Jyg== Date: Fri, 23 Nov 2018 16:56:36 +0000 Message-ID: <1542992186-26028-8-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB5041; 6:75ouz8qXQ/6eJVFrSV+jvnbZM5gfIUOqbZXX1b9QGrv2GTFJYSinmCShij+Xaj767GmfSK6HNY+UjuG2R7qe7o8ZN7RQ+bqHVVkGo0TslN+sq33epKmb23getPvV1gVoQxwGcJHGZxJtmsaJFCwbbTcu8bXW9YlbVjfOhy3khw/Amns0z6xboaRIemrbmCnpiz4YT8pb462RtJa1xk8CXyUt0tXMhfSI0kspoMVdJyp2OCeeKLeRj7PcC/lH+Cq5dKU/kSn26OEeZ3Zy2002j8Q0laFD72NwFDLiRdtC7rnEkkZpgshX7g244racc5HiFerSoVJWE9fUKrz7Ld99p4o/W7n0Y7LvhsMYAsGue83d344f9CP0zgNZ9JIBp4EhrYBUFuP991K1O9l/QHstWAFNABbkYax3gioHEIOdvAoNN21gaw0hfqznZrQhwRSTJr1VzzZKZx2E1P0fu7lrdg==; 5:c8+g/56T24xa0XCIgFHCKhsUm7S8lmlQujE3el7QIQCxsDSE0vJiY0SFpBI3JLwSFttVB7ylNmIGb5oXFY7QI4uGIQLOlyej1VBYxsRPEGTJenKiLhMWH/s+6MhblDjmkLGVaC67b1OY+O6jukA5ek7PzVBgyly3n5JbXACnGTc=; 7:VRKIshCMD89pD/ojJIg0jT2RfSywutnMrhpmsDH8KPN4aFFMMJgUHosL+rRe5KhID3Z9p6ad+ZxY5s+ZIEGGhgWMss8KDVqQBQe6JenZHa6MNZ/iqBtXn7AazO2+hFaQSyuZfak5uJa5jySNotlnnQ== x-ms-office365-filtering-correlation-id: 9671b934-7e8c-4d13-bd55-08d65164a0f0 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(5600074)(711020)(4618075)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB5041; x-ms-traffictypediagnostic: AM0PR04MB5041: x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(275809806118684)(185117386973197); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(3002001)(3231442)(944501410)(52105112)(93006095)(93001095)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(20161123564045)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123558120)(20161123562045)(20161123560045)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB5041; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB5041; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(346002)(376002)(396003)(39860400002)(366004)(189003)(199004)(68736007)(8676002)(66066001)(81166006)(2616005)(446003)(11346002)(486006)(476003)(2906002)(3846002)(7736002)(6116002)(305945005)(25786009)(110136005)(6486002)(81156014)(14444005)(53936002)(316002)(6512007)(478600001)(8936002)(2900100001)(71200400001)(71190400001)(4326008)(5660300001)(86362001)(256004)(186003)(575784001)(106356001)(52116002)(76176011)(386003)(6436002)(97736004)(102836004)(2501003)(6506007)(105586002)(36756003)(99286004)(26005)(14454004); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB5041; H:AM0PR04MB4994.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-microsoft-antispam-message-info: IrUwplTip5VT4ukLdub/K5USQdrICyyHoLjSqnT7dI6+HSSgXzYkoMBWmRPesPmwJn2Pk5MPZUcYtMgNqTZcHHoiY5sj62Xg8UPUICF7/nP5LQEElIOHWoDJXizvD4pRAqggP8hDuYpb2HK3UFFSzxLI1ApNBQCJW2Le99sqg9bWMS1vxqVG2S9lv5v3ZAQEMMK8Mxqlh+xOXwHK2j3nSgPFtDAufq1ZOmQLrgtuSn+4GE4hk7EaRPR4/qQa800xE/de60jKWLgkMSWVC8rUJMLNb4XRb4Yhzh9UBsY7uKBY5mcVeqpkvlzVhVVL1BwOXC+w15s36a3As92PMGqGt4EfbLA5u+zz+Bw10yvxFyw= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9671b934-7e8c-4d13-bd55-08d65164a0f0 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:36.0246 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB5041 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Remove one unused counter. Move the Tx portal busy counter to the channel stats, since it logically belongs here. Reorder fields in channel stats structure to match the ethtool strings order and make it easier to print them with ethtool -S. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 3 +-- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 10 ++++------ drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c | 18 ++++++------------ 3 files changed, 11 insertions(+), 20 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 3dabee0..995a17d 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -456,7 +456,6 @@ static int consume_frames(struct dpaa2_eth_channel *ch, return 0; fq->stats.frames += cleaned; - ch->stats.frames += cleaned; /* A dequeue operation only pulls frames from a single queue * into the store. Return the frame queue as an out param. @@ -776,7 +775,7 @@ static netdev_tx_t dpaa2_eth_tx(struct sk_buff *skb, struct net_device *net_dev) if (err != -EBUSY) break; } - percpu_extras->tx_portal_busy += i; + fq->channel->stats.tx_portal_busy += i; if (unlikely(err < 0)) { percpu_stats->tx_errors++; /* Clean up everything, including freeing the skb */ diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 5530a0e..320c0d0 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -231,8 +231,6 @@ struct dpaa2_eth_drv_stats { __u64 tx_reallocs; __u64 rx_sg_frames; __u64 rx_sg_bytes; - /* Enqueues retried due to portal busy */ - __u64 tx_portal_busy; }; /* Per-FQ statistics */ @@ -243,14 +241,14 @@ struct dpaa2_eth_fq_stats { /* Per-channel statistics */ struct dpaa2_eth_ch_stats { + /* Enqueues retried due to portal busy */ + __u64 tx_portal_busy; /* Volatile dequeues retried due to portal busy */ __u64 dequeue_portal_busy; - /* Number of CDANs; useful to estimate avg NAPI len */ - __u64 cdan; - /* Number of frames received on queues from this channel */ - __u64 frames; /* Pull errors */ __u64 pull_err; + /* Number of CDANs; useful to estimate avg NAPI len */ + __u64 cdan; }; /* Maximum number of queues associated with a DPNI */ diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c index 26bd5a2..3aa7885 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c @@ -40,8 +40,8 @@ static char dpaa2_ethtool_extras[][ETH_GSTRING_LEN] = { "[drv] tx realloc frames", "[drv] rx sg frames", "[drv] rx sg bytes", - "[drv] enqueue portal busy", /* Channel stats */ + "[drv] enqueue portal busy", "[drv] dequeue portal busy", "[drv] channel pull errors", "[drv] cdan", @@ -174,8 +174,6 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev, int j, k, err; int num_cnt; union dpni_statistics dpni_stats; - u64 cdan = 0; - u64 portal_busy = 0, pull_err = 0; struct dpaa2_eth_priv *priv = netdev_priv(net_dev); struct dpaa2_eth_drv_stats *extras; struct dpaa2_eth_ch_stats *ch_stats; @@ -212,16 +210,12 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev, } i += j; - for (j = 0; j < priv->num_channels; j++) { - ch_stats = &priv->channel[j]->stats; - cdan += ch_stats->cdan; - portal_busy += ch_stats->dequeue_portal_busy; - pull_err += ch_stats->pull_err; + /* Per-channel stats */ + for (k = 0; k < priv->num_channels; k++) { + ch_stats = &priv->channel[k]->stats; + for (j = 0; j < sizeof(*ch_stats) / sizeof(__u64); j++) + *((__u64 *)data + i + j) += *((__u64 *)ch_stats + j); } - - *(data + i++) = portal_busy; - *(data + i++) = pull_err; - *(data + i++) = cdan; } static int prep_eth_rule(struct ethhdr *eth_value, struct ethhdr *eth_mask, From patchwork Fri Nov 23 16:56:36 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Radulescu X-Patchwork-Id: 1002475 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="nEiNXIEU"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 431jBy4VjDz9s1c for ; Sat, 24 Nov 2018 03:56:42 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2633132AbeKXDlm (ORCPT ); Fri, 23 Nov 2018 22:41:42 -0500 Received: from mail-eopbgr20050.outbound.protection.outlook.com ([40.107.2.50]:44768 "EHLO EUR02-VE1-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S2391260AbeKXDll (ORCPT ); Fri, 23 Nov 2018 22:41:41 -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=GpvPtVbslUPl0KVKsO2OJOuBwl3MepMmkNn6CGol1JI=; b=nEiNXIEU6Xkei+HUEA7JdhrE2uXFq12seZJMuIwNVJLm/3MyeM8TwxO6zV2I5TVjLJAFHRhNo/Ocxpv/ub9UFvVfCSZW1R6FNpOBz2htMpc7YzByJbLa1uOctPhQjBxjeln+7klz7Fvqpck/eIepdcpoK5spyii99/y3046DLOA= Received: from AM0PR04MB4994.eurprd04.prod.outlook.com (20.177.40.15) by AM0PR04MB4307.eurprd04.prod.outlook.com (52.134.126.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1294.31; Fri, 23 Nov 2018 16:56:36 +0000 Received: from AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2]) by AM0PR04MB4994.eurprd04.prod.outlook.com ([fe80::c426:6b56:b6d2:c8f2%3]) with mapi id 15.20.1339.030; Fri, 23 Nov 2018 16:56:36 +0000 From: Ioana Ciocoi Radulescu To: "netdev@vger.kernel.org" , "davem@davemloft.net" CC: Ioana Ciornei Subject: [PATCH net-next 8/8] dpaa2-eth: Add xdp counters Thread-Topic: [PATCH net-next 8/8] dpaa2-eth: Add xdp counters Thread-Index: AQHUg01+qmAGmOXOKEaxpzsy3YQpnA== Date: Fri, 23 Nov 2018 16:56:36 +0000 Message-ID: <1542992186-26028-9-git-send-email-ruxandra.radulescu@nxp.com> References: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> In-Reply-To: <1542992186-26028-1-git-send-email-ruxandra.radulescu@nxp.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-clientproxiedby: VI1PR0802CA0024.eurprd08.prod.outlook.com (2603:10a6:800:aa::34) To AM0PR04MB4994.eurprd04.prod.outlook.com (2603:10a6:208:c7::15) x-ms-exchange-messagesentrepresentingtype: 1 x-originating-ip: [86.34.165.90] x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1; AM0PR04MB4307; 6:HYCNTNiwmTPawrmpMAnemJyxjd+RqmXTDv3R7DXz+2bwo9d/J/KWb3+NazEGwUc9rZAu1b6GUCIu4F5C/bdXf0KQ9PUT2Z4jRwFE/QrLCwR06+EN2VIFUb6zjnwTiCCj4IuBu1iYo1wepetQ2Dre/IsJAPW0TnBnttnxJmAD0L6Cpko1jRaeUdB/oc0EcV27j2hAGYWqdQ+RCB0Ec0DSJpCUkBvX8dKy2gyVrMzOSIPEp/tO03yYAa/bjnx4DWRPufeLY/fCnoSxBt3CtVA03Gtw04zU5hAhg8zRVitvEdz95XheLzWoA7sWJsyT/TTvROE/BpIeBiW7Fh20KbayvZ2ajqzSq+wvRWNQ5gA362+wfzXQ6ilHH1ZQ67FdQPiSgHMxbvpBFBRiSQlyZKQpoIpRwsd3O/uM+4eb/hYqT3DhnQi7nwR/hjIisVSC6gxohhIMK0XieDfjsF5VnMCzZA==; 5:lKi0YiToXIAppvt+2pBDWzCz/wRt5QUCeS+DDPcoGQsN/+RoKnl1l3/nNBlDudoXZLjORYuP0I+8rHUauo28gZ7oMbQ/+sowrL82nHZaonfgOFBmQFdKapl19/366E7teQOzN8lY8Va7LrKoopw8S/79W1KMg54+JsHbqJyer1s=; 7:0CXy9bLWYS4wq18eUY4rov0pgwljbgj47d1fxu1zYwnsgtuxcij/V0ZX93vtsMwUAqJP9QMwsDLixfeTDCoansnXkbvJYhpfD0ZXGXd7OdZsE7z2F8A0qVZzAjJomPTI/GH48Vpt6Tgkz87lqjdHMw== x-ms-office365-filtering-correlation-id: 5ccfc102-ddec-4c39-2f89-08d65164a144 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390098)(7020095)(4652040)(8989299)(4534185)(4627221)(201703031133081)(201702281549075)(8990200)(5600074)(711020)(4618075)(2017052603328)(7153060)(7193020); SRVR:AM0PR04MB4307; x-ms-traffictypediagnostic: AM0PR04MB4307: authentication-results: spf=none (sender IP is ) smtp.mailfrom=ruxandra.radulescu@nxp.com; x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(275809806118684)(185117386973197); x-ms-exchange-senderadcheck: 1 x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(8211001083)(6040522)(2401047)(5005006)(8121501046)(93006095)(93001095)(3231442)(944501410)(52105112)(3002001)(10201501046)(6055026)(148016)(149066)(150057)(6041310)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(20161123562045)(20161123560045)(20161123564045)(20161123558120)(201708071742011)(7699051)(76991095); SRVR:AM0PR04MB4307; BCL:0; PCL:0; RULEID:; SRVR:AM0PR04MB4307; x-forefront-prvs: 086597191B x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(39860400002)(376002)(136003)(346002)(396003)(366004)(189003)(199004)(68736007)(7736002)(81156014)(6512007)(25786009)(6436002)(8936002)(26005)(186003)(110136005)(52116002)(5660300001)(66066001)(99286004)(106356001)(76176011)(4326008)(8676002)(81166006)(386003)(478600001)(105586002)(575784001)(476003)(486006)(6506007)(2906002)(53936002)(316002)(2616005)(11346002)(446003)(2501003)(102836004)(256004)(305945005)(71190400001)(14444005)(36756003)(97736004)(3846002)(6486002)(71200400001)(2900100001)(86362001)(14454004)(6116002); DIR:OUT; SFP:1101; SCL:1; SRVR:AM0PR04MB4307; H:AM0PR04MB4994.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-microsoft-antispam-message-info: GTd0aq2Y5YmZxN6JrTBt4w3ZXuplwcQaes/aAMz6SArkM5dXC6bSAkz/92NKp04KeFknTAl0503NHcIotdhRmV0isNwlbBTwjvrEM4lvZUQv8lGWkmTX/piGWumE/RbqeamrYP6kXOJ3ZGGUOHUrev5vCn+lbxn4e+h0hRr7FysWymfJt2AK2B+RXT3mhH4JczGNC6JLGRwehzxW7eEqSy7cT5XhxzxT5Kl0/2zxdfkNtMGPSCu/CVq2J2z/oa4cKai/eL3JtNklQFmdP+wjJBnKvXUBjP3IjmsfrCNsvtKI7/VHLqk0kIEUM69EJJdj5VGpyA/zXghRLjf7BrwM6CzDGYVkQWaQyhS9bOgEAJY= spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5ccfc102-ddec-4c39-2f89-08d65164a144 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Nov 2018 16:56:36.5871 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 686ea1d3-bc2b-4c6f-a92c-d99c5c301635 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR04MB4307 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Add counters for xdp processed frames to the channel statistics. Signed-off-by: Ioana Radulescu --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 7 ++++++- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h | 4 ++++ drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c | 3 +++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 995a17d..4305e76 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -307,8 +307,12 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv, break; case XDP_TX: err = xdp_enqueue(priv, fd, vaddr, rx_fq->flowid); - if (err) + if (err) { xdp_release_buf(priv, ch, addr); + ch->stats.xdp_tx_err++; + } else { + ch->stats.xdp_tx++; + } break; default: bpf_warn_invalid_xdp_action(xdp_act); @@ -316,6 +320,7 @@ static u32 run_xdp(struct dpaa2_eth_priv *priv, trace_xdp_exception(priv->net_dev, xdp_prog, xdp_act); case XDP_DROP: xdp_release_buf(priv, ch, addr); + ch->stats.xdp_drop++; break; } diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 320c0d0..1690fc1 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -249,6 +249,10 @@ struct dpaa2_eth_ch_stats { __u64 pull_err; /* Number of CDANs; useful to estimate avg NAPI len */ __u64 cdan; + /* XDP counters */ + __u64 xdp_drop; + __u64 xdp_tx; + __u64 xdp_tx_err; }; /* Maximum number of queues associated with a DPNI */ diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c index 3aa7885..dddc437 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c @@ -45,6 +45,9 @@ static char dpaa2_ethtool_extras[][ETH_GSTRING_LEN] = { "[drv] dequeue portal busy", "[drv] channel pull errors", "[drv] cdan", + "[drv] xdp drop", + "[drv] xdp tx", + "[drv] xdp tx errors", }; #define DPAA2_ETH_NUM_EXTRA_STATS ARRAY_SIZE(dpaa2_ethtool_extras)