From patchwork Mon Sep 12 18:28:18 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974024 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 78459C6FA82 for ; Mon, 12 Sep 2022 18:35:35 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230431AbiILSfe (ORCPT ); Mon, 12 Sep 2022 14:35:34 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231364AbiILSdy (ORCPT ); Mon, 12 Sep 2022 14:33:54 -0400 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0611.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::611]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EE1DF42AD4 for ; Mon, 12 Sep 2022 11:30:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=OpuihbT1wePo5Bwf3vQODTmF5kiKUDMjmEgZx5bOZ3lC+anJ39lrL2w62UiQM+u2TFPaITLJ0r+OTTjm49ztdsOaw2Yut/Bls7f81G3qj7QmxgB7lniCCZybo32PChtQ+mtlUt3tFxwZakN1haGIr2wrHM2ixAS2x7vYAJhncIPwUyhE3V2GHWhiB3+Kf3ngOejnu7rh8Y1YA8KmYI2SqiDGpcVuluW4qRV8lSC+YIXLvjt9N+hOvzNbwkQJMmEC8ZuoKAZ6JX5XFMqMOGIlBESiRboVUNr0MkyyBht9RVtSiMtwMkBOo66oRZQ6I9ykKlE1eOTPpmnccdGcvZmW3A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=LlQsaPy+JqbPGd8lMEIb1Nd5K2mMKunKdG+KaqWEBZ4=; b=M+9YE46LV62OxnVQiO/NG9gODkuUQYliHJjn6i88bR4UPGzUYzFpYwK0AuHC/cv/oHXcHqR7dhIdCzGD8f5C1rDOG/SYh/Rcvh9sUo9zVJyT34hQj3L+TXQTuqJbVKuEwN9L9vuAb0L7Ic3TX1jIDjJJaMLYO0WfaNVXAgATMv87LxUSxiP1xdFpBH2ScRJqss/bKcXF7kXlsfNFCG9tfLUIvmleUZRx5WfuecpRy12sqr1aCUWdOfe9SnInM3rq5QDRWppUoFIN47+r+/Pzq2yP74DIwi8/KIjuncntj40ueDpGMepzI3NTKYRmB2DF78C0f0PaUMATKgSfMKUwKQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LlQsaPy+JqbPGd8lMEIb1Nd5K2mMKunKdG+KaqWEBZ4=; b=OeiT8Dyrd0UwBjZFgJu7VPYRASpEc5hB2nsTMxT5f3oxEZBBG3Ff62rmbQ0p+ZMa4Ae9brkfCpkuwmwxcIxZ966OccWbpE/ocKeR77u1TPPS5WCD2kl6jofUCxKYEWkwGOlHh5xHHou9/Wq+wE+BMeB9WqtJe2iRr02kmUtRBu8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:28:52 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:28:52 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 01/12] net: dpaa2-eth: add support to query the number of queues through ethtool Date: Mon, 12 Sep 2022 21:28:18 +0300 Message-Id: <20220912182829.160715-2-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: 5be6fb65-4013-4bc8-cf3a-08da94eca4a9 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xavm/3FfRbBC57PcO3hR0V8bI/7oYpXcXNOd1eHSqGP1j1RLaDZXTpz8G1KGGHjilVieCnZAujkwlp1iHUYRqH8n4Sv2x4RsIikVpKxdYEZF9CEjthftAER4gx6dwPdZEjNlKYEZtbrkuxiQK+MkXZ+cu5BpTS7oF8Kz4Wl72FYPWow7tqz6xZZGyDavJGJNOQsVAplhNyt4DeM9m9dyD4afF4zpbDNsPmR45twp5F24KwFlk7zFS5PQb5R0mfXqj3pxMdr8uG7stJw2o6LCjHKEno0WzbXZmdJ2oLi/qsa/IzSWGqOz0x+3QlqGLVJPuYFwZqRlvCWmJzPu6LUPr4UA+ONzsoRufOHR5ny1wl96ZKakUaQ6n9XE2L1GC7kGxpN8JgZvfaKCO/q7cKhDxN5RtOqCyjoT2fi8g9fAlMH6VyUhtmpT2N8wowGbIbLGT9Rg210J045a+TtQB0cEuJNbKVDM/SbhinTEPFr8r95oRIf8w6DbTYFT+x92OwSrppyVEy+EovUie2iOknkLtAb6hOAYsViID9JVsESeZQMykWKIzFUtjDLYu5tDOM3Rh8EmRY/4hRIkarPP/bkWGL/y1a5cYYQ86+DLyVu702Ll80ePcbzWGNqSFGAUDopEM6T267qa4XgOHMGqER2hbrlfYmKWvxCI7mqAQ42paqRD7A+g3FVi/5Ay1FQhcA2pD118KI51vCmZRzvMej+S+EE0d6hvvXTCf8HOa04+aS7VvV6uRK4vWdPagu06kSCpjqJ2OVLWXzkQyx2SoTYDkQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7kKNv02rAhlsty2eg4SCmA4VeOu1mCX06uMsqnISiFZkLvaS0HklqcUMUUJpNdftYvebYVN3LdR1vpIfH7ixlmyafCeKMEUBM7WYI4n4Kz5ATypPQ1pRR+HDwDoHpsQ95budjRWrX0s8v4hPtNIuJPzkQIuH9LV+Az/mYLF7o1O032Ijync1oXGrTDZSxSUJEi3SEMv2xVv8zy13H38AHMHGyqLtL6ctUXrPx0rp/OuhVUkjXF6rFXY9Lgf8G/gaV1ZDzjNKlUfA1I0qdhIta1f7XOJ3aGylfqIbz2DdCqsCrDMPd3zXBkIvgK0fGAQ57SDUCBZiWxSxDwk7EwRBhSSXP76zY4F6D8d2KygOFY40SFS5OFnxgthIDHbnwOj0Zlmwsq5tkZZuxlKDaoyCMDtQWO0WyETZHWymKqsjNBHLvu6kTl2/YGDa6PKCcuA67XB03Weyt3bGuSLyXkw/2hyjzNBpR5FADWk7VHKC/IN1WK0xsBOO6cVvJOhiy5MigNGq6EoJS5JhDOz6lAk/QlJgq1rw0p9BN2Cg2ULzMKX74gZOCwreQtcL6wrX3ZKOqrTX8jBbZyPuOr/3Y7b4NGKNqbnzWuLagrou2EmxdUEF5lpjjjj3Cxe+pNfq4fbv1tFQ+aOXwz8D4iAZ/nJ+Ih8f0X7K6uEYErhsxLupczzs5wbUUrt8KFFNsMduq7q1hzWbrrGQFmFoFWDQEnYHl468rDdUoy8qQgrEPseKP64Qx4ZTGCai9fMi/oOXm2GXB6sdyRUtKhfXiR4k5qyf8ZEOsx9fx5BFS0LFamISq2RKytuz8+Jc1LjvEWN1GAHTYabzvU7DCur28KGHW6zyK9eaAomxuX/aMvxfcccJbHTKblpR5tnc9humpaQkNSU6otMsI/CLznnkTY/qijSp4jlBF66IiCUE0xHEzj8rgUm4k0LQrVYvd7O1Z43ROBc8oIXLQs5/rHeZ948588n/HgW1EVzkMYRkWRUiY/w+NFgz/hcMZ5UlNjru4oy+FBXVEHR8cpJMnzKXGYeg9+YFl0CIMwNVEwJFrYWgcrHHi36engX7gapHPlsuvpEPW6QzV3Ia0hBTna3jVDUW6gTitC2JR0Sz4kwCRUImV45inGgKC9p0xRjokHmEbNeCkW/D7t/DRAauLcFZRIrB15J8Iwn1qU13B4bhPqcuUeyhKThgt2sSprpx+VuNQFoMjH9W+5qoBxWbFfP7SwCm2ALc8pCu+J43Wtz76kk+W/Lrlwy5CM+EtBHxrCyA3tguK6OVnB4I6USUeePAEJPtE0XFCG8plrSbgi6jamAo5HeH5fgNOzC+b28mBuw+pYv54i/FdS4mHtDNsaL2aTPk3kc8zHXvJrwJNU296Rs72Sa/+IRPa7jxzs/W2r6yCXGkL/OZdTpsbbbFG0WX5yWVsN7XFdtgaf0pxCkcD4eGjsNwoDmta32y+rBl78944wnpb+ZzIvFlhAHzIdkaAd2A0nvRLe3OpgdwLtXOtgr82Fl/AOUARMkDfOb/hVLck8M6cMKwhmnl4hvdF5j5lfIOhaMZUMfjkvY2Eb20X2Ii2DWoCOrMu+WyTF8att4uRaHAgaLN X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 5be6fb65-4013-4bc8-cf3a-08da94eca4a9 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:28:52.5736 (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-CrossTenant-UserPrincipalName: 5OIvyZnFiF9STd0d5fXZjFIP+tjoEamzZlJBTIgkJjJiECXC3LUMDQFy8AxVR9H2CTCsMuaD13N++4LfZvKN5Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa The .get_channels() ethtool_ops callback is implemented and exports the number of queues: Rx, Tx, Tx conf and Rx err. The last two ones, Tx confirmation and Rx err, are counted as 'others'. The .set_channels() callback is not implemented since the DPAA2 software/firmware architecture does not allow the dynamic reconfiguration of the number of queues. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei --- .../ethernet/freescale/dpaa2/dpaa2-ethtool.c | 27 +++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c index eea7d7a07c00..97ec2adf5dc5 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c @@ -1,7 +1,6 @@ // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) /* Copyright 2014-2016 Freescale Semiconductor Inc. - * Copyright 2016 NXP - * Copyright 2020 NXP + * Copyright 2016-2022 NXP */ #include @@ -876,6 +875,29 @@ static int dpaa2_eth_set_coalesce(struct net_device *dev, return err; } +static void dpaa2_eth_get_channels(struct net_device *net_dev, + struct ethtool_channels *channels) +{ + struct dpaa2_eth_priv *priv = netdev_priv(net_dev); + int queue_count = dpaa2_eth_queue_count(priv); + + channels->max_rx = queue_count; + channels->max_tx = queue_count; + channels->rx_count = queue_count; + channels->tx_count = queue_count; + + /* Tx confirmation and Rx error */ + channels->max_other = queue_count + 1; + channels->max_combined = channels->max_rx + + channels->max_tx + + channels->max_other; + /* Tx conf and Rx err */ + channels->other_count = queue_count + 1; + channels->combined_count = channels->rx_count + + channels->tx_count + + channels->other_count; +} + const struct ethtool_ops dpaa2_ethtool_ops = { .supported_coalesce_params = ETHTOOL_COALESCE_RX_USECS | ETHTOOL_COALESCE_USE_ADAPTIVE_RX, @@ -896,4 +918,5 @@ const struct ethtool_ops dpaa2_ethtool_ops = { .set_tunable = dpaa2_eth_set_tunable, .get_coalesce = dpaa2_eth_get_coalesce, .set_coalesce = dpaa2_eth_set_coalesce, + .get_channels = dpaa2_eth_get_channels, }; From patchwork Mon Sep 12 18:28:19 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974022 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81AF8C6FA83 for ; Mon, 12 Sep 2022 18:35:16 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230403AbiILSfO (ORCPT ); Mon, 12 Sep 2022 14:35:14 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231514AbiILSeL (ORCPT ); Mon, 12 Sep 2022 14:34:11 -0400 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20042.outbound.protection.outlook.com [40.107.2.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BCEB84623A for ; Mon, 12 Sep 2022 11:31:05 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VU+BazPb0BeRBS5VsdWQHn+MXWeHKnCnCDow8Dv/Z54OOIBM4Epnaa+XLS0sT0xju4Ve7VNZQlkpIavf9VoWKFGHUNZw9PwT96QHXAVkpDdWx+Q0O6IVAjZNwPV/edUe1uZKfwx3aRLRxvDLdA/HoDvFQZlG/RSGjhMI/fvRhQNRZzQ5yMhGCniyiQ1Kwczs+isVHySKvAgp2UuriRbGxNKUlFmfWgBejiay5PZmPFyS5Sl0ZhBHYJ8A05VEDxMLgHGENQNimlkZrTgkTGmhpmK1N8/SdQKl2wSAaL0p4gSsVcvXe7p9Kl7ybXk5FS+XegwTG+ND6TrJzNLhKNuXmg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HcjW3OOaF0p6yMlk4erDLBp2Jp0RsmFh2DqTHasZ2CA=; b=SXDRu7uxKaSjSXhwdms0PfldySSZHSqQ9WaIp4sEB87omfZcVlYUEesFyyPMfn+PKOVU89Vg+Ut8mvQPaCvp6/jMVQGvNmT5l55CeLHzam4b6R6L9E01kSTmW2DPsPNHXcAgSY2xK2NuhKuR/4MzVs7JGyO7YYucc8oEvnPp9WxYkFFmyX70DoMAW44uzEk8rZ9qT9x98rWrwsoExAk0OTtBWUQYSqZaToKKA8WMu6aVW5exkykt+JoXDobH9s0NGsrGmwwwafcPQweLTZfrxjQLcP2NnGDEPH4GYbpNnvYBVLVV4enqNUnW+i/AnKn/RDMQYT/BECf0OxsuX5KtUQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HcjW3OOaF0p6yMlk4erDLBp2Jp0RsmFh2DqTHasZ2CA=; b=WLMOmhmNgiJzHB/fRByz8a0LcOPtmO53Jl+CPpM43TIhzHFox8qu3a0xfWwlogzjNmYMapX+28Sy2vT8oj97ujjhYBY1OO3N+EX4OIdvxYNPomsy44RHwVb7zEyjdlE43OWjEhkW6erHvpm/FuEpjCPt+LrEtV7RiQgXHHHEwb4= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:28:54 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:28:54 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 02/12] net: dpaa2-eth: rearrange variable in dpaa2_eth_get_ethtool_stats Date: Mon, 12 Sep 2022 21:28:19 +0300 Message-Id: <20220912182829.160715-3-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: 856b54d9-d09c-42d5-ccb6-08da94eca593 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: cuOy9xgKJf5vh3Bo8ccWt+yHeD4K+5fUejMzRrN5o3xfC7POCY/ML504SdZg1qSMno5eGzRDoiHGYM3DLx7SXINIrBzVovV5pE/is651t5EzX7KsatVu4s7wBchswpU88LNvFfSuAlsGGJwHzoBCkbni0+kCZzNRNB+wfQinfw3zalLL9ugK2rq+PtK1jd+Hlpx0x2ybK/WNK3AThlCRyP/nV2+SG/JCYCRGoSjOcjMKawgOpK+SfiWDO33pfWsVwpMxR+Mzhw4sDMBPlLuM/MCwhioKKUw4xG1tIC1nipQfR5Ni0mF8fZdYgc1uXHuguJbZw1+Qur9atr8pMMhjCbCwTTAIhsyOZilK0lbRYRPEKl5E2voWvl51FAaOVZYICoB5s7Sh2i+R61Y4m6bpVAkgvfBSGL9K1sXOGDphmrGzPcjAvjVgPydSs9QPOwx10+co+SuuOJGlsPzdX1EqtJrI6bY5FwsQkKTuZ53H5g3IUAhj/3np+iVIHf4cJu8oNnsBgHzJ52qf8oc2yRLtF7Pq3Z2bjylStKtUBe+tiy8uoeWIr5O5Nn9tCOAv89QKyGqlI0MVZegvIrGcMiWAB/deLJ7+eyCnobxLSOA+mRvdN1HmZ5yHGOzEQZJOCE4gkswwRm8qQMxPrRI5jUj0x/n28jEsbbL7os5UIpv3pGjoYEGD/8o2FqdzDoyQc2uh2eEplyX+wQh8zhFN57FZpHZN/eLZJonA8RGyQOTmop3boaAMFVOzQdUcC4VX96l4e1T7Qu8Ucmtc0/U2+/dlyw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: XcrZaQ3K1GtTv1gPvlcoI+YEfYR0NZUjbGefuGPH+HIjBFZWfOyMwqDXC2BkEKTgf999Gjx7/Ovl8YiVjL/w7u8SFPm+7D+nvpxPD/omN14ySGH7Ol3rL6g3eb1Tqc9YBTOMut0kxAv/Ivn432HIJgrKdDrlr+On4OVEPrxnFm3u7+O1DNvoM0xU45+TODI0yKbJun72V87myMzu4Sr9enWG9eruisyObHtECI9toWf+JrG5u8btXnB0HLlHtya1bA7GLzDrwLKvqi3Nki0kTDnjIO+Fw0R0Qp7HdDSypYiCmzM34WKbLLN/Cf2J/KFAPlldKatOdvbIJ9fwN5PixVKbkYcBelJihcqvLeo3oe63V2YxkZ78YDZT6c1ENlRx9jv9vl5vtd13yVW+fL2M65M4hW0mAexyx4fIBRqZrjVybxg7fewA9urrnspojLtWiCJe44SrryzIgTjD+WIPfzd99QVDhztXetKCPPBE4/dfkdESdAAZz2SNvc/C9gPnX9YjjAjqFAbLfWHLpFvAePgZ+/ZRyveN5dwSJ/zvArjVG2g7LxW0mvhbvkJtow5/6Qo82OZhH1hDhM46bl757yWoxQ5d3D5UqbN9Wk9geA/Pcn1SHsSU008ETk4i0u/QwoKMtCw9Tfx4CsbRQwxQgbxX8pgnae2ZOaXp/LZ5pl0nPiH4nf2/CMXqj2UsCocO8oITiLeYKHdQMjdxvJ4XmKhaMf3KDnqcL2lj4SHp7blq5pr1shjeaVXx3CMe1k02kB8HnH95LCGaXE26aX9N/HKdV4xPj2Sdtq/T0Y2UW/i1+FQieuubMmoD93mH2aeFYtoke0FO32Xub7KWPuVPP/azeqcrR7TCJV9p7evSrkYtQfHSZscrgXNg9XRZCgdEaMgXKNd9Nge3mCQNIqhXqp3I1AoC7DxYnE3pAI+exStIna3jlQ80/iRYpMnAEPcrZpAcpNjLz4HHpcGP84NQ7qCY1mRriQYjbtR47zkvpk8fyC4PcypWSzSCASG7aPgMoGaz/VUr5Zs4gkqf1+We+/Sb9fx6km1RP2brQ/cx9E9bF0A5Ah4n5fpnkwNyrfWUDEH76d49W4d2gVQRmfBBxpTOnCcU331iNNjaBG7oQtzswJvaDxb3wLpBWa1xXpwlayE7Y4PMsvmkip8OlNxQIZwe0cuAlEh/4bvCwp+gpcwxrnWI7L4MTPybhZQhzbJF1BK4apTZVmFX+rZ1xE75GaFh0IHC8VPffsE//nR9hmmf0qi778k0ivuoB2ZjhJChZ9xOlSfBexRPVoGROW07hBYXlIAtLiw4er/ZyDJ6XvM1+xbI1MaHQWrUVCbKbjmYkxoCO952rRbzKrMV3Ao+L5KiecqhR/Bzn+hcxciCELm3xP0oo3AWSYeXSjXmJDMbqLI8hCIEU5ijd+M07rUDLdH+gkT3GQqILg8RFetrB43YrsVNiDakqZlTme52KIlIRY3ObUtP7jukJTKklUcZGqzHU4gxFNORTbyj9pt1uQ4aCgB0uHwtndVEp9q+YbjNMF84mI+8LxICjj8drnm+AG2MYRiRE3hEfKz8sk/EmInZ/o/3l3cC9l9sux9N/aF4 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 856b54d9-d09c-42d5-ccb6-08da94eca593 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:28:54.1205 (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-CrossTenant-UserPrincipalName: ozg5EnA9up6gzu5w0VHSx4xzI+BkNp11G79HQQmmfqOrXldyYVT38plYOr8QP8HYjG4FnYXv0ZwBWGQPbU+X2Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Rearrange the variables in the dpaa2_eth_get_ethtool_stats() function so that we adhere to the reverse Christmas tree rule. Also, in the next patch we are adding more variables and I didn't know where to place them with the current ordering. Signed-off-by: Ioana Ciornei --- .../ethernet/freescale/dpaa2/dpaa2-ethtool.c | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c index 97ec2adf5dc5..46b493892f3b 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c @@ -226,17 +226,8 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev, struct ethtool_stats *stats, u64 *data) { - int i = 0; - int j, k, err; - int num_cnt; - union dpni_statistics dpni_stats; - u32 fcnt, bcnt; - u32 fcnt_rx_total = 0, fcnt_tx_total = 0; - u32 bcnt_rx_total = 0, bcnt_tx_total = 0; - u32 buf_cnt; struct dpaa2_eth_priv *priv = netdev_priv(net_dev); - struct dpaa2_eth_drv_stats *extras; - struct dpaa2_eth_ch_stats *ch_stats; + union dpni_statistics dpni_stats; int dpni_stats_page_size[DPNI_STATISTICS_CNT] = { sizeof(dpni_stats.page_0), sizeof(dpni_stats.page_1), @@ -246,6 +237,13 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev, sizeof(dpni_stats.page_5), sizeof(dpni_stats.page_6), }; + u32 fcnt_rx_total = 0, fcnt_tx_total = 0; + u32 bcnt_rx_total = 0, bcnt_tx_total = 0; + struct dpaa2_eth_ch_stats *ch_stats; + struct dpaa2_eth_drv_stats *extras; + int j, k, err, num_cnt, i = 0; + u32 fcnt, bcnt; + u32 buf_cnt; memset(data, 0, sizeof(u64) * (DPAA2_ETH_NUM_STATS + DPAA2_ETH_NUM_EXTRA_STATS)); From patchwork Mon Sep 12 18:28:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974025 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 49A40C6FA83 for ; Mon, 12 Sep 2022 18:35:37 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230433AbiILSff (ORCPT ); Mon, 12 Sep 2022 14:35:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38350 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231636AbiILSeX (ORCPT ); Mon, 12 Sep 2022 14:34:23 -0400 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0631.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::631]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 19F7346DAF for ; Mon, 12 Sep 2022 11:31:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Ut+5ZATYC/KOPgjFE33JP6fc3R1gvUV7iYxG+dooCfrZUCedsLIBlmPQB/MzL/Gvrw0vc5ospKO0MuS/WHbnZEzZWC3B7JH05BNv8m1F9qMDMda3JnKfnsJIR+GVbV7DFWcP/4ojiivEN3aW/HkBsf61lFvV9DwaR9UD6LpRLWJHdItD84GzBGtvGx2GXF9xaG75TXlHRE/oPQJvUKL/YljUyCKm4uk9XF5gdNHDkgFruzNWJX5UHIqCC5lWXzduOaA6kSU/90VpePq7LDL/QvX7HgxTYdvLkt3378JRoUcQMiZaAWoTh+69UienTVxIv8OTgTNoQkxPWQbWZZYepQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=r7FcerZ03M3uWf8y8vtt5WbnUMjd1qy8avP13WsGfU4=; b=Yy4v3oEkcEJpuKbDh33TDqbJcPNntfrw1HzFVrDnMwcOc3UaGzXyDyuc/FJfVKcuCXszWkVpIQovxUjpDLi6OBTN8uawxKKtCoUmKLqOKhjpdLrhUsQi2gOQXMjpJCqOqINbGA3GhaMKoCU8bnRqXagwVuKg1b7L//8pJe36F4Rcrb8lGFdBTksNEZzwtnrBJDE/MqB6Ur81rBGHD0fyek1lBeuql5zvPNL5/zfV7EPiDD1PkVsA+tohnkTLkKMuzQuHtpi7uFUbfq0uaRHhjQqNW9L+Zyccby5/1zS0uxmFeOuvXo1qjqN+QDoSl0vkHgqB3gVXjEuSiFC/Ie/deA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=r7FcerZ03M3uWf8y8vtt5WbnUMjd1qy8avP13WsGfU4=; b=Zgqus2xYUiZaegcUldYuaG9XmLshQJTNJbeifkIDx3MzPA9gfxLx8mY3/4sRH54TanKaWYTpUQnj4QsatzBZCHkLdil01t6uukCTaPHRCez8nJTpqe6Vh7i397E7a90uY0yuo99JyHbZXr6f1+AwnzeDliQg73a518lFcD+pug0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:28:56 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:28:55 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 03/12] net: dpaa2-eth: add support for multiple buffer pools per DPNI Date: Mon, 12 Sep 2022 21:28:20 +0300 Message-Id: <20220912182829.160715-4-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: 70d02e6e-fb69-43a0-7ada-08da94eca67d X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qR1gZpx0DsJIe5mKlT8DaWNlICe3PY7g8fMjhF7WOF9rK30IOHEk5em0x3EFUm96pratT+iX0jOv12KDO92xF3BlXhIh9Du+FUmmKoz19wIlsGzMgqX2tO1bwfO8u1RjjsMyLLO4cGwf0F71gppmjYeuUqasksZQXl1uMykjaK2DjZt0oS1ytcnd/XVTdWC1ZXIbkshbH6n65bPIiO9ErsBz3UkJicuh9cIECNvjEKCP3ld/M20o2TVEJy7nAZBJSNfZeX34nWLje2i6oOBxtKEvFOGi5yfvufPc2ZnQ9XZgresCNlq9NkW/QLs0dgU8dwakjVou1PMFrQo+amFXtdErK5FtxwT84BYPJ7YBHqO1v3tJcSYNWkMRhMdPq7awulJwAWsmoA+cIQaFeCafaQ6ymPQl5x7IcPFGtmzvuPiA88C0DEU3JsUHYLtfCqwGMh+l/S1AznIJOz7iByM2lINK30p/6MObQGvaHI7IA/LzTFaJ1m5Yee6C4u2Le8eRGCu8IPHZ4jQ8VKXzL6P+L8AAlOhanepxj+58nGGmqF+ADEaCWO5q3Zsk4ENFwzaLdk1GpKmMmGxu3HU2ZEJYKe90EVwd8cjzPsHTSeD73pPBGVhtgqzXvhRuYT7YIOqpJITl+lej0jpUzR7HeN+2puTbfv9JQp6iz8BzZMx6Wt/1yQemlBC78fXRp3J6pzCR8Ij0ThtlzAx5Y5O6Lbum/06dWU+I+GwKMseUWQPExB9bLmBmUn0ePGhawz/eoOCSdffeJuLgik7DGz6N2QderQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(30864003)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: kx9B0x+HYSnivuRqxwEvleULjyixnezlVEgfu61uh0eI1RVPC5TWrLniRf8+vSJaV1r0QSYe0coV2keHkQ4CDUN2dTcUF49eEHsQW9Ji4jR1Dh5Qv209hJoK1OsZHkHUCilxQ6GhkHRK/eP891MNn4rvPJaH0J9PNFiy7Aitx5/td+QhY6LzRybJy55GH0rv2JFibhloSloBpMGl78Kc/pfZvoZNhMRWmDuN7K2Otw+LZaUxKk5HcYFfkUjdPZBW1lAUvDD/J5KMYvZqhOOwGpHJyDjLzrFuocvtqZ0d9tA068da1aknmlLwBBAVVJZ0tmvyVnv0Jlpqiypgtn/T/dmdvBbdwoyaIgEl5qypn0PimeKP2GcVPxiQaWoWRllXnf4xbSaNZ7i7VLvdO42+qkwqxre7g4YjAgryMYXBNAK1a61XyYs1Uc/Wg8lcdZfQqTqpX7Oz8rizVPyKhnKkQf1pbpmXhFB6nBD8A5KyqFB9uRfKELLtXNx+0AZT8ESWqSQv5EgclMB51qmmMCMrgrOeH4fleA+I5QFwmPGCIqIhkCZZECh9dRPnMMUkP6mwbCsVB4DVTowXW4raHbDMrPh2d6O2f/CDVCpc3u7EcO+qs7JAqu1xA36PvICvbiPrIPShlge+KH/f5oi2CSsO1oZd1nzW3ziGOEL3e6gSsTQ7omv1rdc0uNi7QdZsVfXibfttzoI87xLLmwd9NQNirMp1soHRzhCRA66Dehv8JzLiDaFTDGirMo7tnBfLlBjh/aBuZ/3UOg4H6yPtQiRMxIW7FvqJaDHAiK4bwyGA8BHxLzZX31hUGumkrF9FHdyGQgobxQvkcZ8HT7E4H/X1bJYCjrofZcFeKKOPumfJ6VaT7oObavcWRrW+R+ghshQ5QUviCGzpAUWd0FDiwzE3KLEVdXkPUjQLSXW8OuGR/DmTaFxfxbCFHFDcAX4ZnirbP1ikT1QKwXB67B/u29QMvFmsKuqk1YCXu5LclKm9GvRgBRFCPTNtKfegXETJRf0a3RJkjKKXA9JcJ1caY7Y/30RmKp/YIHrLYOoJqJaHqhqVp1Tm3XgQqyFSFzk5zV1TQAdT74VMMBm9wAg7Y0e7mPPcD1oxrSKuPFrup5LKGUGaQPvWeXR1FXZOptvhpTugVSK34c1JJi6T0gwaaeqPYlZ6CngObPlXW/aRMlk801zhT/7o8vwc5mcSLFc2eZqROFCzmVQiJ69Hmc3Zl8dvirR0Ir4FVgH5HxzllYBpiX4Me0UR4qRcuh4pTRu6C+he1NY247bWSYwIBu+cc/uz3pGWlCq/NqlSzB44E+OVvPkG2q6SyXLYLU65GJ26MMXodhITqQlcQf6CtjbjAj9JhmmZa6LzsBu0EVTgG0lMQ8FzWgGoaTPGtP9B9EyoO0EECGSUTGjmPzKyeDTC7+hKmR8ZcCby6eGIrObLxxut0m54BmxzljbEBAmdKUeP1Ogw/20CNnofJA82mogE4gZUb1/16qkNQ5x+PGmr06tuyHW3m73TCMupHBAU7KtA/viYxKiBnNFvrCeJ6L73MZmM0ft3beIiDBEQYaGBxu7+kPYADjc2cTGMTCtA6aHtLR0U X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 70d02e6e-fb69-43a0-7ada-08da94eca67d X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:28:55.8404 (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-CrossTenant-UserPrincipalName: Am+MUlT+O4TZ929NdGG3ODYehBt5e7AVbU2c+/H1I4hy10xi2p1lhfhmtx4wdIkyhP8GYoUIewUkODvyKgYvGQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa This patch allows the configuration of multiple buffer pools associated with a single DPNI object, each distinct DPBP object not necessarily shared among all queues. The user can interogate both the number of buffer pools and the buffer count in each buffer pool by using the .get_ethtool_stats() callback. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei --- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 184 ++++++++++++------ .../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 23 ++- .../ethernet/freescale/dpaa2/dpaa2-ethtool.c | 15 +- 3 files changed, 155 insertions(+), 67 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 75d51572693d..83b7c14bba53 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -1,6 +1,6 @@ // SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) /* Copyright 2014-2016 Freescale Semiconductor Inc. - * Copyright 2016-2020 NXP + * Copyright 2016-2022 NXP */ #include #include @@ -304,7 +304,7 @@ static void dpaa2_eth_recycle_buf(struct dpaa2_eth_priv *priv, if (ch->recycled_bufs_cnt < DPAA2_ETH_BUFS_PER_CMD) return; - while ((err = dpaa2_io_service_release(ch->dpio, priv->bpid, + while ((err = dpaa2_io_service_release(ch->dpio, ch->bp->bpid, ch->recycled_bufs, ch->recycled_bufs_cnt)) == -EBUSY) { if (retries++ >= DPAA2_ETH_SWP_BUSY_RETRIES) @@ -1631,7 +1631,7 @@ static int dpaa2_eth_set_tx_csum(struct dpaa2_eth_priv *priv, bool enable) * to the specified buffer pool */ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv, - struct dpaa2_eth_channel *ch, u16 bpid) + struct dpaa2_eth_channel *ch) { struct device *dev = priv->net_dev->dev.parent; u64 buf_array[DPAA2_ETH_BUFS_PER_CMD]; @@ -1663,12 +1663,12 @@ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv, trace_dpaa2_eth_buf_seed(priv->net_dev, page_address(page), DPAA2_ETH_RX_BUF_RAW_SIZE, addr, priv->rx_buf_size, - bpid); + ch->bp->bpid); } release_bufs: /* In case the portal is busy, retry until successful */ - while ((err = dpaa2_io_service_release(ch->dpio, bpid, + while ((err = dpaa2_io_service_release(ch->dpio, ch->bp->bpid, buf_array, i)) == -EBUSY) { if (retries++ >= DPAA2_ETH_SWP_BUSY_RETRIES) break; @@ -1697,39 +1697,55 @@ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv, return 0; } -static int dpaa2_eth_seed_pool(struct dpaa2_eth_priv *priv, u16 bpid) +static int dpaa2_eth_seed_pool(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch) { - int i, j; + int i; int new_count; - for (j = 0; j < priv->num_channels; j++) { - for (i = 0; i < DPAA2_ETH_NUM_BUFS; - i += DPAA2_ETH_BUFS_PER_CMD) { - new_count = dpaa2_eth_add_bufs(priv, priv->channel[j], bpid); - priv->channel[j]->buf_count += new_count; + for (i = 0; i < DPAA2_ETH_NUM_BUFS; i += DPAA2_ETH_BUFS_PER_CMD) { + new_count = dpaa2_eth_add_bufs(priv, ch); + ch->buf_count += new_count; - if (new_count < DPAA2_ETH_BUFS_PER_CMD) { - return -ENOMEM; - } - } + if (new_count < DPAA2_ETH_BUFS_PER_CMD) + return -ENOMEM; } return 0; } +static void dpaa2_eth_seed_pools(struct dpaa2_eth_priv *priv) +{ + struct net_device *net_dev = priv->net_dev; + struct dpaa2_eth_channel *channel; + int i, err = 0; + + for (i = 0; i < priv->num_channels; i++) { + channel = priv->channel[i]; + + err = dpaa2_eth_seed_pool(priv, channel); + + /* Not much to do; the buffer pool, though not filled up, + * may still contain some buffers which would enable us + * to limp on. + */ + if (err) + netdev_err(net_dev, "Buffer seeding failed for DPBP %d (bpid=%d)\n", + channel->bp->dev->obj_desc.id, channel->bp->bpid); + } +} + /* - * Drain the specified number of buffers from the DPNI's private buffer pool. + * Drain the specified number of buffers from one of the DPNI's private buffer pools. * @count must not exceeed DPAA2_ETH_BUFS_PER_CMD */ -static void dpaa2_eth_drain_bufs(struct dpaa2_eth_priv *priv, int count) +static void dpaa2_eth_drain_bufs(struct dpaa2_eth_priv *priv, int bpid, int count) { u64 buf_array[DPAA2_ETH_BUFS_PER_CMD]; int retries = 0; int ret; do { - ret = dpaa2_io_service_acquire(NULL, priv->bpid, - buf_array, count); + ret = dpaa2_io_service_acquire(NULL, bpid, buf_array, count); if (ret < 0) { if (ret == -EBUSY && retries++ < DPAA2_ETH_SWP_BUSY_RETRIES) @@ -1742,23 +1758,35 @@ static void dpaa2_eth_drain_bufs(struct dpaa2_eth_priv *priv, int count) } while (ret); } -static void dpaa2_eth_drain_pool(struct dpaa2_eth_priv *priv) +static void dpaa2_eth_drain_pool(struct dpaa2_eth_priv *priv, int bpid) { int i; - dpaa2_eth_drain_bufs(priv, DPAA2_ETH_BUFS_PER_CMD); - dpaa2_eth_drain_bufs(priv, 1); + /* Drain the buffer pool */ + dpaa2_eth_drain_bufs(priv, bpid, DPAA2_ETH_BUFS_PER_CMD); + dpaa2_eth_drain_bufs(priv, bpid, 1); + /* Setup to zero the buffer count of all channels which were + * using this buffer pool. + */ for (i = 0; i < priv->num_channels; i++) - priv->channel[i]->buf_count = 0; + if (priv->channel[i]->bp->bpid == bpid) + priv->channel[i]->buf_count = 0; +} + +static void dpaa2_eth_drain_pools(struct dpaa2_eth_priv *priv) +{ + int i; + + for (i = 0; i < priv->num_bps; i++) + dpaa2_eth_drain_pool(priv, priv->bp[i]->bpid); } /* Function is called from softirq context only, so we don't need to guard * the access to percpu count */ static int dpaa2_eth_refill_pool(struct dpaa2_eth_priv *priv, - struct dpaa2_eth_channel *ch, - u16 bpid) + struct dpaa2_eth_channel *ch) { int new_count; @@ -1766,7 +1794,7 @@ static int dpaa2_eth_refill_pool(struct dpaa2_eth_priv *priv, return 0; do { - new_count = dpaa2_eth_add_bufs(priv, ch, bpid); + new_count = dpaa2_eth_add_bufs(priv, ch); if (unlikely(!new_count)) { /* Out of memory; abort for now, we'll try later on */ break; @@ -1848,7 +1876,7 @@ static int dpaa2_eth_poll(struct napi_struct *napi, int budget) break; /* Refill pool if appropriate */ - dpaa2_eth_refill_pool(priv, ch, priv->bpid); + dpaa2_eth_refill_pool(priv, ch); store_cleaned = dpaa2_eth_consume_frames(ch, &fq); if (store_cleaned <= 0) @@ -2047,15 +2075,7 @@ static int dpaa2_eth_open(struct net_device *net_dev) struct dpaa2_eth_priv *priv = netdev_priv(net_dev); int err; - err = dpaa2_eth_seed_pool(priv, priv->bpid); - if (err) { - /* Not much to do; the buffer pool, though not filled up, - * may still contain some buffers which would enable us - * to limp on. - */ - netdev_err(net_dev, "Buffer seeding failed for DPBP %d (bpid=%d)\n", - priv->dpbp_dev->obj_desc.id, priv->bpid); - } + dpaa2_eth_seed_pools(priv); if (!dpaa2_eth_is_type_phy(priv)) { /* We'll only start the txqs when the link is actually ready; @@ -2088,7 +2108,7 @@ static int dpaa2_eth_open(struct net_device *net_dev) enable_err: dpaa2_eth_disable_ch_napi(priv); - dpaa2_eth_drain_pool(priv); + dpaa2_eth_drain_pools(priv); return err; } @@ -2193,7 +2213,7 @@ static int dpaa2_eth_stop(struct net_device *net_dev) dpaa2_eth_disable_ch_napi(priv); /* Empty the buffer pool */ - dpaa2_eth_drain_pool(priv); + dpaa2_eth_drain_pools(priv); /* Empty the Scatter-Gather Buffer cache */ dpaa2_eth_sgt_cache_drain(priv); @@ -3204,13 +3224,14 @@ static void dpaa2_eth_setup_fqs(struct dpaa2_eth_priv *priv) dpaa2_eth_set_fq_affinity(priv); } -/* Allocate and configure one buffer pool for each interface */ -static int dpaa2_eth_setup_dpbp(struct dpaa2_eth_priv *priv) +/* Allocate and configure a buffer pool */ +struct dpaa2_eth_bp *dpaa2_eth_allocate_dpbp(struct dpaa2_eth_priv *priv) { - int err; - struct fsl_mc_device *dpbp_dev; struct device *dev = priv->net_dev->dev.parent; + struct fsl_mc_device *dpbp_dev; struct dpbp_attr dpbp_attrs; + struct dpaa2_eth_bp *bp; + int err; err = fsl_mc_object_allocate(to_fsl_mc_device(dev), FSL_MC_POOL_DPBP, &dpbp_dev); @@ -3219,12 +3240,16 @@ static int dpaa2_eth_setup_dpbp(struct dpaa2_eth_priv *priv) err = -EPROBE_DEFER; else dev_err(dev, "DPBP device allocation failed\n"); - return err; + return ERR_PTR(err); } - priv->dpbp_dev = dpbp_dev; + bp = kzalloc(sizeof(*bp), GFP_KERNEL); + if (!bp) { + err = -ENOMEM; + goto err_alloc; + } - err = dpbp_open(priv->mc_io, 0, priv->dpbp_dev->obj_desc.id, + err = dpbp_open(priv->mc_io, 0, dpbp_dev->obj_desc.id, &dpbp_dev->mc_handle); if (err) { dev_err(dev, "dpbp_open() failed\n"); @@ -3249,9 +3274,11 @@ static int dpaa2_eth_setup_dpbp(struct dpaa2_eth_priv *priv) dev_err(dev, "dpbp_get_attributes() failed\n"); goto err_get_attr; } - priv->bpid = dpbp_attrs.bpid; - return 0; + bp->dev = dpbp_dev; + bp->bpid = dpbp_attrs.bpid; + + return bp; err_get_attr: dpbp_disable(priv->mc_io, 0, dpbp_dev->mc_handle); @@ -3259,17 +3286,57 @@ static int dpaa2_eth_setup_dpbp(struct dpaa2_eth_priv *priv) err_reset: dpbp_close(priv->mc_io, 0, dpbp_dev->mc_handle); err_open: +err_alloc: fsl_mc_object_free(dpbp_dev); - return err; + return ERR_PTR(err); +} + +static int dpaa2_eth_setup_default_dpbp(struct dpaa2_eth_priv *priv) +{ + struct dpaa2_eth_bp *bp; + int i; + + bp = dpaa2_eth_allocate_dpbp(priv); + if (IS_ERR(bp)) + return PTR_ERR(bp); + + priv->bp[DPAA2_ETH_DEFAULT_BP_IDX] = bp; + priv->num_bps++; + + for (i = 0; i < priv->num_channels; i++) + priv->channel[i]->bp = bp; + + return 0; +} + +static void dpaa2_eth_free_dpbp(struct dpaa2_eth_priv *priv, struct dpaa2_eth_bp *bp) +{ + int idx_bp; + + /* Find the index at which this BP is stored */ + for (idx_bp = 0; idx_bp < priv->num_bps; idx_bp++) + if (priv->bp[idx_bp] == bp) + break; + + /* Drain the pool and disable the associated MC object */ + dpaa2_eth_drain_pool(priv, bp->bpid); + dpbp_disable(priv->mc_io, 0, bp->dev->mc_handle); + dpbp_close(priv->mc_io, 0, bp->dev->mc_handle); + fsl_mc_object_free(bp->dev); + kfree(bp); + + /* Move the last in use DPBP over in this position */ + priv->bp[idx_bp] = priv->bp[priv->num_bps - 1]; + priv->num_bps--; } -static void dpaa2_eth_free_dpbp(struct dpaa2_eth_priv *priv) +static void dpaa2_eth_free_dpbps(struct dpaa2_eth_priv *priv) { - dpaa2_eth_drain_pool(priv); - dpbp_disable(priv->mc_io, 0, priv->dpbp_dev->mc_handle); - dpbp_close(priv->mc_io, 0, priv->dpbp_dev->mc_handle); - fsl_mc_object_free(priv->dpbp_dev); + int i; + + for (i = 0; i < priv->num_bps; i++) + dpaa2_eth_free_dpbp(priv, priv->bp[i]); } static int dpaa2_eth_set_buffer_layout(struct dpaa2_eth_priv *priv) @@ -4154,6 +4221,7 @@ static int dpaa2_eth_set_default_cls(struct dpaa2_eth_priv *priv) */ static int dpaa2_eth_bind_dpni(struct dpaa2_eth_priv *priv) { + struct dpaa2_eth_bp *bp = priv->bp[DPAA2_ETH_DEFAULT_BP_IDX]; struct net_device *net_dev = priv->net_dev; struct device *dev = net_dev->dev.parent; struct dpni_pools_cfg pools_params; @@ -4162,7 +4230,7 @@ static int dpaa2_eth_bind_dpni(struct dpaa2_eth_priv *priv) int i; pools_params.num_dpbp = 1; - pools_params.pools[0].dpbp_id = priv->dpbp_dev->obj_desc.id; + pools_params.pools[0].dpbp_id = bp->dev->obj_desc.id; pools_params.pools[0].backup_pool = 0; pools_params.pools[0].buffer_size = priv->rx_buf_size; err = dpni_set_pools(priv->mc_io, 0, priv->mc_token, &pools_params); @@ -4642,7 +4710,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) dpaa2_eth_setup_fqs(priv); - err = dpaa2_eth_setup_dpbp(priv); + err = dpaa2_eth_setup_default_dpbp(priv); if (err) goto err_dpbp_setup; @@ -4778,7 +4846,7 @@ static int dpaa2_eth_probe(struct fsl_mc_device *dpni_dev) err_alloc_percpu_stats: dpaa2_eth_del_ch_napi(priv); err_bind: - dpaa2_eth_free_dpbp(priv); + dpaa2_eth_free_dpbps(priv); err_dpbp_setup: dpaa2_eth_free_dpio(priv); err_dpio_setup: @@ -4831,7 +4899,7 @@ static int dpaa2_eth_remove(struct fsl_mc_device *ls_dev) free_percpu(priv->percpu_extras); dpaa2_eth_del_ch_napi(priv); - dpaa2_eth_free_dpbp(priv); + dpaa2_eth_free_dpbps(priv); dpaa2_eth_free_dpio(priv); dpaa2_eth_free_dpni(priv); if (priv->onestep_reg_base) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 447718483ef4..daae160aa6b3 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) */ /* Copyright 2014-2016 Freescale Semiconductor Inc. - * Copyright 2016-2020 NXP + * Copyright 2016-2022 NXP */ #ifndef __DPAA2_ETH_H @@ -109,6 +109,14 @@ #define DPAA2_ETH_RX_BUF_ALIGN_REV1 256 #define DPAA2_ETH_RX_BUF_ALIGN 64 +/* The firmware allows assigning multiple buffer pools to a single DPNI - + * maximum 8 DPBP objects. By default, only the first DPBP (idx 0) is used for + * all queues. Thus, when enabling AF_XDP we must accommodate up to 9 DPBPs + * object: the default and 8 other distinct buffer pools, one for each queue. + */ +#define DPAA2_ETH_DEFAULT_BP_IDX 0 +#define DPAA2_ETH_MAX_BPS 9 + /* We are accommodating a skb backpointer and some S/G info * in the frame's software annotation. The hardware * options are either 0 or 64, so we choose the latter. @@ -454,6 +462,11 @@ struct dpaa2_eth_ch_xdp { unsigned int res; }; +struct dpaa2_eth_bp { + struct fsl_mc_device *dev; + int bpid; +}; + struct dpaa2_eth_channel { struct dpaa2_io_notification_ctx nctx; struct fsl_mc_device *dpcon; @@ -472,6 +485,8 @@ struct dpaa2_eth_channel { /* Buffers to be recycled back in the buffer pool */ u64 recycled_bufs[DPAA2_ETH_BUFS_PER_CMD]; int recycled_bufs_cnt; + + struct dpaa2_eth_bp *bp; }; struct dpaa2_eth_dist_fields { @@ -535,14 +550,16 @@ struct dpaa2_eth_priv { u8 ptp_correction_off; void (*dpaa2_set_onestep_params_cb)(struct dpaa2_eth_priv *priv, u32 offset, u8 udp); - struct fsl_mc_device *dpbp_dev; u16 rx_buf_size; - u16 bpid; struct iommu_domain *iommu_domain; enum hwtstamp_tx_types tx_tstamp_type; /* Tx timestamping type */ bool rx_tstamp; /* Rx timestamping enabled */ + /* Buffer pool management */ + struct dpaa2_eth_bp *bp[DPAA2_ETH_MAX_BPS]; + int num_bps; + u16 tx_qdid; struct fsl_mc_io *mc_io; /* Cores which have an affine DPIO/DPCON. diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c index 46b493892f3b..32a38a03db57 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-ethtool.c @@ -241,9 +241,9 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev, u32 bcnt_rx_total = 0, bcnt_tx_total = 0; struct dpaa2_eth_ch_stats *ch_stats; struct dpaa2_eth_drv_stats *extras; + u32 buf_cnt, buf_cnt_total = 0; int j, k, err, num_cnt, i = 0; u32 fcnt, bcnt; - u32 buf_cnt; memset(data, 0, sizeof(u64) * (DPAA2_ETH_NUM_STATS + DPAA2_ETH_NUM_EXTRA_STATS)); @@ -305,12 +305,15 @@ static void dpaa2_eth_get_ethtool_stats(struct net_device *net_dev, *(data + i++) = fcnt_tx_total; *(data + i++) = bcnt_tx_total; - err = dpaa2_io_query_bp_count(NULL, priv->bpid, &buf_cnt); - if (err) { - netdev_warn(net_dev, "Buffer count query error %d\n", err); - return; + for (j = 0; j < priv->num_bps; j++) { + err = dpaa2_io_query_bp_count(NULL, priv->bp[j]->bpid, &buf_cnt); + if (err) { + netdev_warn(net_dev, "Buffer count query error %d\n", err); + return; + } + buf_cnt_total += buf_cnt; } - *(data + i++) = buf_cnt; + *(data + i++) = buf_cnt_total; if (dpaa2_eth_has_mac(priv)) dpaa2_mac_get_ethtool_stats(priv->mac, data + i); From patchwork Mon Sep 12 18:28:21 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974019 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8E43EC6FA83 for ; Mon, 12 Sep 2022 18:35:09 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230369AbiILSfG (ORCPT ); Mon, 12 Sep 2022 14:35:06 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38550 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231134AbiILSdi (ORCPT ); Mon, 12 Sep 2022 14:33:38 -0400 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20042.outbound.protection.outlook.com [40.107.2.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 447684BD0A for ; Mon, 12 Sep 2022 11:30:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T/gHl6tRtnIoKeG5KcX5tnkbplXM75c/t5hQygK+ln1BlKQWVDzBiipRU7lKuldpJA4OVHEDQIIyFU+JGkbIMWRvTqczluSlQg25jX4adbZBLIKe6jG//N5OQLKCALYpk3NAK5icRbb19HUFOkDXB6gDLYLt2Xa/Av79D85qzipscAlom7TFmeRQEq4Iuo4sJqQl905GogvqKm+mbcsb4hkMdOGYPloy0ZUTztXD7X8cTyPhiK/Wa5OI8LyqQgf0OtpNMUw1odUzMu5/U3U6S/1aPb3yqCw8O7uG39G/qCJiSi3Jj0pSMb8629uN11mxzQXNY1U9ceFUJWx+rc8TkA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=wRBl1u6VsBeC1vnom6AL7Nm2sAD1vN68dEkrP156Um8=; b=LO1XZXjTGJqRJXYL/YNgKwAZQXhc6zWKVNnKZvkSaIy8hQ9r0kxcYPnbJX3TtD6drBRkZBTw5y5CWucx9lrwKL6OdSdVCqFkJFDTOBYDQS/9tyi0wo3KbX42t45Cl6rhrnKK5lKR1cwTCfKjR0pNUJ/wPXC+vJ8wjvPoMU31cON70xskxIcA3u8NtWQORNXsXdoVp5VDBH9J/XHbFrv0kInBUvj6Qdt32qZRv2Hj9PQMcLDKzghWr/ASZhFY0y524W3TA2tdCPU6aWQZavhm/yNYciHsrvslYwr6lzumezHNtGleYKtrAtSwKRDsXuBYJG3GFPMLEiTeD8/5b5jKlQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=wRBl1u6VsBeC1vnom6AL7Nm2sAD1vN68dEkrP156Um8=; b=QZZX+IWV41h+2+B2HPwA4lG/Veps1wMfQrCmztM+7n82QReky+PXqYVq7Zsli0jVuCAp+ghK00nu3fzzn1MhEzpETOz+fJdQhSzSv1Tbj4WsXGLgcL/pNgDEsLTer4+Se5BrwXIpCVsdpvJ1JylKDjVS/r0yf/6grCx0AXH7vIg= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:28:57 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:28:57 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 04/12] net: dpaa2-eth: export the CH# in the 'ch_stats' debug file Date: Mon, 12 Sep 2022 21:28:21 +0300 Message-Id: <20220912182829.160715-5-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: 17350a67-7df7-49b0-f81a-08da94eca796 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: nHgIvptRyCw+QF3/6igxZc3HIrs/DwVT/obpT0VPfFqqRgguN9y7sjggrOqnSu1yUB0EzArR8Uctmv0rcjwp6GKJiIIp6rauxSYAvKvcfrMTzEELTpMV/L/8uyc8KxARPDObWFFjcDJq8WO2oqU8cZzg4p0sgdZ1NWaBVm05sKTKimaj4stw/O897zSO5nbSV2a/IKkeqsMkbF2gKDeSBEf+Da6eHwcEI+nTuxIdVCRCfzVsgfQIatNhWgSCRLwACVFLFm1JB2KwfitBiPCw/hQb9889sYpYCbAIxTmsli4mp1CqeS+WbbsINGEm5LYgNZrKEpJNgHHPwZBDWJTv+ohXqVwfrCo4unewu5Y4oR6NH4Jd8zZS+DOeO76gVk8/EmEY9M3kSVZNUaYKuZCkNMExots413cQ6e84i8bkN5kr0ZFDEgl7YoaqdIrabjIMLpnPHGDtaic0I5+DixZWlUev/J8+uS2PmHV9jumOkqDXtX5o9QdkEYyX34HWUAg4FI2lKypqBS+giwSNvjk4otKlonOhUQeUCSaTDbdZ9fEEd2r46DvmaD+JinF2Z/nom8Ra5OMd6N17f4uCJul6Sb2P3DLsACj5f8K7mqv+WD9MtreNoFdDxXZObVY+Jo7G8TV1jFtdqbXfTdkCwsQLoodGSsbekYCffJNFg7LnUuT+rB5nGo9KXuUHUaGHhchqbvVfKSZP9ea9SihJDEKH+iK16AJmXwLNU8VBwcpr3lyGXCtc1iKTA7DlOqS6C4veejEdfgii+hMV+T3SkiFyxg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6HWJVfvqXT2PrxrkEad73ixkjdkLS38+acm5ilm2YVjb68dwNzU4/dkDRK6PKPyFpwGG6OjLzSdNJxE9Vt6Q3NV0mKfo/l0bYoLevPuPbgvER7mpCwc6vaAwg3fjSoBr/Yo7b7pTVTk5BjQwm1y0B1b20AK0rt23JgYNtXOMPYTO2mdOQv4gKLmH1mSRGrLJ4cs75R/2nKNY2RIb6rk48wIg8HaT5QQymrEqAU6rKEOVKl/m9Rq6jyQugKyKH7VwjlmKNUTu/2WXTLWWzpzjiLqliTyxqWvSV4JyCZLPjhHAq2Y349o355++96EH5dZW46toqfS7mPaZDvp0hxqRLDZQCcIFK49B8wsPJ8W0loMdUM0tRPymI/l1mU7qSibLSNxQiNCYrH0ScFYygRmBEj1s6jHiIqeZLJs3Fs9NoSERtaK8HJQnRagZUgGJ2UflbRliWOR8UUBlNDKMXkbFofLG4cP+S4bz4uLPgiGC53bxXfO1vhcH5i1DrM2jNsQPvtoFcuN8ekS5n1INDvrimRqFOnaT4ccigPG9b9JX8ptiJyuaPY922Pea8+pXTHkOYQL3zEPLp38v106W7yJvc5/ZHZtR5carT3tIW1dy2D4V4/7VIH5NIPDyzk4eXwbqkWT8CBJMMmE/hO9Q6D2PZYQup5eHnWW7b6iRZQya9fBr9QrAVah6JaRM0ciclxSvFaiw1XFgyrPQ4+UA4TjusEqJba6TrugzZjS+7leSyw8ZeKEBz3X70BxbAibm0UpfpFDmMRp+Je4H+nJlDsOscsOcqDODh+Nzf3k+nVwfUwr+s2TtrECyFMGTS2Sp4UFhqC5++LksLe0rO4p9e7Z9SeoMbXuGgLqaopnYWG0/xo8Ot2G8nJ2+sgfdcW7a3EWHcRRTLhTogXT2bGFX6NPLNjo+oTn0MUAt20XlV10SZYbAatugllqrJx0fzjQObLf7DotLMbEvGboZ4lXQolrbLvPZp5q0XlMv+f8E6PNl79LskWfNTVEtt5E6XCm7/zl281Sz1k4RBHvGPAIyDxpdltZ8tXeaZ89bk0gKP403MNgTo9rQZhSIR3XcELBYQm7w0AdvvkbhQMCIXGSHzu/ZjuUKQM4EDv2Aw5ZxsmU3o9K17lLwbEfTKBTJUTmIMQ8iiWWmTzQAUlIZ/JswjwgoZQaIvb35ZmbyQtozUJabkMCb1ncrif3U5bobTx+sCmz3SwzDT3g/e63MX2dekD4+wCPNQE8uxlRJVd5whsErPzQY+tg5XbYSRFn6OzKlXZm+ufT1l4OKUcwQL3s1TTmRN+7fjgFzWDWkdFdooJRGZuI8/NJS2x/RKSToHqfJr0EIVEvIqrL4wX47MXquMwIYh4W3NAEuBuBT7vwh6kSqO0bzXVEC/BbYKcfcj/g8d4V3qoOC6j3OxLZhMOruXYLvDzBy5HuhjtUnsXNOSnOWrM1b05QVnUYZkQC0+RmmFzh6LdBnArxE6Xepb8+bhWVYNWQZTW576bRFNbOtMo1OiCM/cxNajkXiYW1uL/xxXFbOSGOY7gVDRQeHYV76/t9DrU2bDF794IW7/f4rsSFcZxAOFxactFRUNhxqlh6/5JTV X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 17350a67-7df7-49b0-f81a-08da94eca796 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:28:57.4040 (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-CrossTenant-UserPrincipalName: svTZN8q6YmrvB/WkiNN1yMb7Sgjin3wJ7PNg7BuKrfw3N/LC3YIKld+Lr55ox6+eddJON2Ul4d7lsorUWA5L/Q== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Just give out an index for each channel that we export into the debug file in the form of CH#. This is purely to help corelate each channel information from one debugfs file to another one. Signed-off-by: Ioana Ciornei --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c index 8356af4631fd..54e7fcf95c89 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c @@ -98,14 +98,14 @@ static int dpaa2_dbg_ch_show(struct seq_file *file, void *offset) int i; seq_printf(file, "Channel stats for %s:\n", priv->net_dev->name); - seq_printf(file, "%s%16s%16s%16s%16s%16s%16s\n", - "CHID", "CPU", "Deq busy", "Frames", "CDANs", + seq_printf(file, "%s %5s%16s%16s%16s%16s%16s%16s\n", + "IDX", "CHID", "CPU", "Deq busy", "Frames", "CDANs", "Avg Frm/CDAN", "Buf count"); for (i = 0; i < priv->num_channels; i++) { ch = priv->channel[i]; - seq_printf(file, "%4d%16d%16llu%16llu%16llu%16llu%16d\n", - ch->ch_id, + seq_printf(file, "%3s%d%6d%16d%16llu%16llu%16llu%16llu%16d\n", + "CH#", i, ch->ch_id, ch->nctx.desired_cpu, ch->stats.dequeue_portal_busy, ch->stats.frames, From patchwork Mon Sep 12 18:28:22 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974014 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B32A4C6FA8B for ; Mon, 12 Sep 2022 18:34:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230124AbiILSey (ORCPT ); Mon, 12 Sep 2022 14:34:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41056 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231244AbiILSdn (ORCPT ); Mon, 12 Sep 2022 14:33:43 -0400 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20042.outbound.protection.outlook.com [40.107.2.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 518CE4D255 for ; Mon, 12 Sep 2022 11:30:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=LXzkZXz+r/NYEH04/0AhZUUhHMsnKEseBnAb474QqHoZXGxQhx2TCu0vz85JdXVOTzLUTMMlqvHYzoeWcIb4yKB8Rr0rX43948xlE78Q8D99Nqaucv6zrL9TCbQppJJB21UvaOnd6LcLhwWUiEr0TVQqAIOTDsoabGYdYJ9P/1HnfoBK0rkUirVoqsYQ3kOAWwb/CMYW/kFleVqvbjSJqTm0AuSxKKJi1uCQ3ZG1B08bSYo2eayb21INyHM/xoUFMgdU2ac7VGHh3bWjT5W79yH8TXQtW1xTeiy6D+M7EM/uGG9FZYxxBXNJbihe33bb0H8h/tY0yQ2aKH5qdT5Dxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PdgiY55nIelkND3JN3Z82Lz0ILVOIEBB2drJqxiK5A4=; b=D8z94FbShDB5IH2c7fgNGXec57xU2gatMfLxc8pwOkOlXYA39pdw7Ty8hdw6KXhjM2MUw/BmKMNbS3PTX4WOxUcgCM5fEjeTZW8L/MTJuJMx8WdX6t63ne/jLTYBMwfExt32/I8+1V6xeQp8+UetPuNYalhMw0mY1pg/vXqMD+RIn/7e2QgEm0cbLsXDorYrXNNpkZyBLVpOWAhi/EZmB7YcKIaiZ/lYyy9mCQZMpp2VCrFznHrit4zpCeDZVCNQ4yD9pcYnShFOZEAOuIjQD+A9ymYJvzNdi1ax3dhEyfmlitvR8kLpnq9U/jTMj6sGPXjcowHdRtDiKt1zG+aR5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PdgiY55nIelkND3JN3Z82Lz0ILVOIEBB2drJqxiK5A4=; b=bfMg+zeCvEqiUSBEn57Rj9OGeqKYRVPEfI+AhpyJUKk/uTaX9YKGRXG1esr1P662boDiruUYezR2ndtbJFswxxINP/KuIZoUnUzgJsHBjgIr2nOqCDaeP/WccNMdH1KwxnitFCIY+D/jLQ2YydAH3Ncmthk6BmHxbJxwEK4hBZ8= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:28:59 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:28:59 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 05/12] net: dpaa2-eth: export buffer pool info into a new debugfs file Date: Mon, 12 Sep 2022 21:28:22 +0300 Message-Id: <20220912182829.160715-6-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: 684d6288-9ef4-47c7-9382-08da94eca880 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 07trAltgCOgK2sP97JE2LfVOQRX/n+mfsbFuZGDhENIU2uFQyM/GNWzWR1f4/mBLROv1ZQc5zIZOs+x+rj6l4oRVIfot2zLH/nT5Y0KdxPhbrkwTYLCQY5kAURbc+EmTNAfDUMm5Ygl0OU2zrQyb+sbCt2N3SGV5xtpvYWvVv9olE6QbePuLEn6PL0gFN+85u/4Rr9YRK5HZxuPMrzyCTU3bFUzu1E0RSgQezais94E9L0w0sR9N49VbZCzHAY/aDnxBoAyY93dpobPrFPbD2fIs0gD03B6of7d8xYCqy0td6VMlH3ZtXQCKVP2MI0k3NwknNWr5j1XS0ZnUDQcX9SQj/Q7i9kIwjbSshrjveShmpfsytZzhN7bjsTjAXQqhHD5uVZMeokNvgN0xMF0OqW3so5FNdVXhx3lwnNW+VcCfREnCPoJlO75NThMVOvXUgrI/x/0FDzV3JvJhn4cpCgduPQRSbJCMLkMwsBLPFVFQrLUYgXc9YkCFM5FjqP3d4RaGpPiNRFvM7xQVU+ZnwdzHCc1leEw5qWkLN6wYW0lbHFMVBxjz64EXR9hLbgbvTa4jFsAyzJFI/3eoyqajanwXTv+vDXY1yFvSyDXjDmzqr0L3ChPToo6Zz2CSqg8QOMuJ0BzSkCm2i1qrzdf92dZIyIqp/3dlHUwF/cL+4wgvjFfBjSkFdzmRTrnLiZEr/Szw8ledLfY62wtP3E0VHIRB/0ZUTy3VlwG2/dndun6AShYHtmShMquVw86xVq4O6rjM5IjD2hEUBIUHc89Glw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8iwgf474M2ntUWMBf/COPMSMu1wXhuihZxv4jQRrAI/txqDuI2d9p8xq6FWP5gA8k9SEJ3B3B9ZEWtwQvfcXBPwj9ZVzWH3qePKGCBRyMCDJTGUdTj9B8XR0J0DOdekUCEvE5IjmVlkBk0Oyp/VH9rE1xwuvun9w6PeqWx1rcJkdGn7IAPgcYWXv/gvkkZ2S5OvKxaCZTUmkXxxMD8kBBjJm2i+TXlUcurlJT8uN7WQD4ipChvPLIZTc86ojDLKIB+7H3Webv/uvSjlGJ6629lyAh7nyknsP1um2YsQuRxTGt56As1zfJxDKayA3XYtrue6rCsfJu+1fxGw4/dcTF0AI4PqZn3QQLN3QqLJ62kyW2fvzocM/oACDIw/m3+3B4yfVnkqw27i0rajN48R12ECEL/rGs0JpRAhoU+jVvfaLk3VNukjxpmXRCJhj056SD3Rea6LO+4ocN3uzQRtIX9slF7WufCyVugF4vhQWSk5q17j1/0zsDut7bG14vCTmjDkPfErBplSTgTeZvH2FxgsaVcAFgN7NIVLwAyCVmvKXleW0v94dVC7ct+iovg+jHNXrbepWa+VbZPMdlDV/pY5sslF6/XpdCgSbBWCdZRYamwI2zexZlH6mjRR2z6pSjfDNv1fVBGYDk3BWTs9kBbP77Jv56X9iFzGjIKethZ58cxQlcX1QuzZ3mchOPZ3yzwzb2oakBa32HgGwwca0Z5izBojXgWsNXqNAJX5yl54oBRYNCWBcahCWPvxA/IDuFoOtXsQVN/KsCPVDdJSENI6qHp8Xr9/Ev2hXQKVMcuFaV3OOHvzEG8KQP22OILllDPzNJpBLHFxnMp4Rz9XNQhOW+DSaocjSlbGW7RCGgiCb6k19zD2NU8lM54NdBre5xn6RgbFu4dEHkvEB2eVRcqtL8XZ9BjYYKmNEMsYF8R7iP+YGSdlTgADhmfZlpBaC+x+K0KgoisbwrNOt7m+xc8hEpeCRmbfH/KuxKlw2CZiSmIrhnQuDf9kKF3jy51xweln61hVvdsILsY7psAwueSMVos3f825lWfH3wlMVbYlCN5fsQkY+mWmlWzcfSbsHySbhsU6niV7WvvMSFaV0V+ABi1ApbIZOUVIlJ6OK+OYqRevjPVhQcIfvw5Qvrq4DoLKKwiauH6Em10hkiTT2858xaNt+xLICDoK6/P7050Fe9Kwl5I+lemztUjFS+zWqwVe8nHNeWP9pV53QqNCLIx6gfUncpcx57T4nR9fhyOmF4t/Y4vXGDztcBubrdqQisvOmTLFS+0anMjGEe4DAY3Zve3bQLJ9GbJ4KUAcrVVBysRW10bMpcUnv2v6QkZVkerGhtGuW7KTxjIQUwkiu1hFTtYDFPtpCBSPPnyrHqPHurJUVFk029VufTfe7IfBrmx4e/R1ooDUz25zqJ+qQJ9iYgBBzmDWA/wIsVwSMsDSG1ALwLKQdhj59eqqvQr6XOaf3ClCVHTLkdXd+GMzPs+LIM5MvJDYXw0fE5ZKmD/8gmu0kbLqzRRKEPtZSl3m+GTjhouoNjTsErxfbeA+k3Z0E/AMpt5MpeUMHQSdLT8OREI/sPe8iE62CIef28Wai X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 684d6288-9ef4-47c7-9382-08da94eca880 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:28:59.8090 (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-CrossTenant-UserPrincipalName: JYuFNZnp0jxURyFyv7mHyjqXi/CWps699VMh9LxZpc5Nr8C+gNtM0dtvxzM0lursQQWKUv/zvyWylaXktVzEUQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Export the allocated buffer pools, the number of buffers that they have currently and which channels are using which BP. The output looks like below: Buffer pool info for eth2: IDX BPID Buf count CH#0 CH#1 CH#2 CH#3 BP#0 1 5124 x x x x Signed-off-by: Ioana Ciornei --- .../freescale/dpaa2/dpaa2-eth-debugfs.c | 49 +++++++++++++++++++ 1 file changed, 49 insertions(+) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c index 54e7fcf95c89..1af254caeb0d 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-debugfs.c @@ -119,6 +119,51 @@ static int dpaa2_dbg_ch_show(struct seq_file *file, void *offset) DEFINE_SHOW_ATTRIBUTE(dpaa2_dbg_ch); +static int dpaa2_dbg_bp_show(struct seq_file *file, void *offset) +{ + struct dpaa2_eth_priv *priv = (struct dpaa2_eth_priv *)file->private; + int i, j, num_queues, buf_cnt; + struct dpaa2_eth_bp *bp; + char ch_name[10]; + int err; + + /* Print out the header */ + seq_printf(file, "Buffer pool info for %s:\n", priv->net_dev->name); + seq_printf(file, "%s %10s%15s", "IDX", "BPID", "Buf count"); + num_queues = dpaa2_eth_queue_count(priv); + for (i = 0; i < num_queues; i++) { + snprintf(ch_name, sizeof(ch_name), "CH#%d", i); + seq_printf(file, "%10s", ch_name); + } + seq_printf(file, "\n"); + + /* For each buffer pool, print out its BPID, the number of buffers in + * that buffer pool and the channels which are using it. + */ + for (i = 0; i < priv->num_bps; i++) { + bp = priv->bp[i]; + + err = dpaa2_io_query_bp_count(NULL, bp->bpid, &buf_cnt); + if (err) { + netdev_warn(priv->net_dev, "Buffer count query error %d\n", err); + return err; + } + + seq_printf(file, "%3s%d%10d%15d", "BP#", i, bp->bpid, buf_cnt); + for (j = 0; j < num_queues; j++) { + if (priv->channel[j]->bp == bp) + seq_printf(file, "%10s", "x"); + else + seq_printf(file, "%10s", ""); + } + seq_printf(file, "\n"); + } + + return 0; +} + +DEFINE_SHOW_ATTRIBUTE(dpaa2_dbg_bp); + void dpaa2_dbg_add(struct dpaa2_eth_priv *priv) { struct fsl_mc_device *dpni_dev; @@ -139,6 +184,10 @@ void dpaa2_dbg_add(struct dpaa2_eth_priv *priv) /* per-fq stats file */ debugfs_create_file("ch_stats", 0444, dir, priv, &dpaa2_dbg_ch_fops); + + /* per buffer pool stats file */ + debugfs_create_file("bp_stats", 0444, dir, priv, &dpaa2_dbg_bp_fops); + } void dpaa2_dbg_remove(struct dpaa2_eth_priv *priv) From patchwork Mon Sep 12 18:28:23 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974017 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 31C69C6FA82 for ; Mon, 12 Sep 2022 18:35:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230359AbiILSfD (ORCPT ); Mon, 12 Sep 2022 14:35:03 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38362 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231336AbiILSdu (ORCPT ); Mon, 12 Sep 2022 14:33:50 -0400 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20042.outbound.protection.outlook.com [40.107.2.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C937C4D24F for ; Mon, 12 Sep 2022 11:30:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=bxeyLowDSC4i/E6lykoAosmsNjHQwdGDlolK6DQrYFIQBpIM3wpHS5CCzCoSrhjNuFHmdxyfMW+qYuFU6PGlinLxnfU5rZHf1jFRF9V2gbM9+817ouPCdEzRjoeBFMR2qFE39HGvaQIOAtAhD4K+FoyfxdBOpX1vjkc/vUxcbaXZxRrPIY82bpIgFccoehKuMYKkbDJ+nQ8Ba7YwhEkgz3Vx/bwMb7IV82gK/5hkuXV6WOgTpnj2HLvr+NDhThddLyVzKx9OFFuKL0Vk6z6rYrA+pvFv1jvYmBsx9rcsDr+nVBBz/d6B38B85KnflYGhcF9d8JjUyRSJK/S2mVscRg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=6Sfe13go0OWROSAkFhsnY+WFfK5jURM5EDUrUntG4hc=; b=FdqelIDG0CO6l5xDEVWoqwBdwisCKh6oINz84VMH60Vj9WIxETh8MjMuvRlAKk6x//1P0c/tyIYr8Gq7y7jxL5zxahfK2DIaoWt6uvga6Z2zb4ZB4XyLZyAH+gOjiDXdvVuP86CS64UrmOC3XgjUqQb//Gi9BmPUDlcYSYQUcaSVHLgAMMHrcH5eyCkKDADgI5F1gAS2Ak/E/5KS8gbi+3TzqhYANi+q6x5kN86+Nw5oqXxH4ovzo9NcRtYb44DAjcd7oTtNhjPlRk4s4UgLZ1R5emvN26PdyueZNKefimrJn2bZJ1KgyvZwu2nuTOPsFR1Y8Tw91b5HZ9UiWx5YxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=6Sfe13go0OWROSAkFhsnY+WFfK5jURM5EDUrUntG4hc=; b=Zj/NfUmI4yBL8Yc/pv92SZI2xmh7/sH3fhf8J2kJofwSLB81vkTEF23/dnrcHYGr8tOJpL6LhnPchBWiMv9LlqYzFLqeAC3oWzWB5zuJJHtR7keJSkFpPxMEm0RoKfDdzVdt8ReRjioOTTWnkbUZmMhD/BqxrP8WcW4Jjh/ClAA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:29:01 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:29:01 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 06/12] net: dpaa2-eth: update the dpni_set_pools() API to support per QDBIN pools Date: Mon, 12 Sep 2022 21:28:23 +0300 Message-Id: <20220912182829.160715-7-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: 64c43ecd-93b5-45ea-f53c-08da94ecaa28 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: DNQ2k3l+WkikiuGKKbk18iMYF9YyR8xByy+WyKF8mu9jJioLWekHBeujP30Tkls1Mr77VKdZKPcvARC/wnWsYY2cveqOTFnC2sULmp+r35UOnOLM+cmxPUrDiXgoCEnpTZptNXjv2fFDCu6DXwtOZqnou5xmy1FH5UVQd/JoTIv4qXpmbbwIWxNGktSKsVRsa3QLnFrr8T+EqE4yDUkrUF77hWTPA9BZqrS0fvPJcHl8B9pmrbt0ayR9Oc5KzvoVafScQeHDI7YIaWAltHNNTEVH/lG+wzh+8k2EEP/Whl0Q7lT0rjC4VMVCzfQFTBxSEAR7tb/cGP/a2sr74oS2FnHjRTTP6s81ui33KHyGRF0FSTlDKFxUE73887NvSiUu17F+3NdKxFzHiXkDZNPSn2HEI4mtpoW36PnxA72qoiNQrHkuCuvI9BgdluEXBzdNZREePnufHoazC/nIit9oIYxUMuM/MXEYHTTrmXIL/PYY2L4AbZVlhmF0W4+SB8q2H3hO1ff21N9HxWjkvFpCQ/ERHqSfBVCPmk+0CBR6bc6UvV1wTKjH+Fiw0R637WH1fAqUfELTwwHlw6leGTw5+mPD6SmC5y1QK0nJPLKiMyVMnYJA1bsBm5E2/SmZCTCYXygbrnJWSiX4ej7N5PhIFWLiFnxqwzLQK1IeV6amoRBei3N2UaMRQYXhx+Tor2oTOxvT2ofB3XVWTSJYdWXQ2bKdkeU1nYDzbXZ+Hd+hoiJ9YtsbgxOUyR7tzAMwPP8no+6+eh4fL0wvsoYGpxtSeg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(15650500001)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: ERwfsXVsrA5An/FvZdFZBIFwerO70jn+ax10Wod4VnkIOFb4cx0Q6ErfiULsPdog8RrZyrvZj4baDBnvn8yhTa7CqSuu/AKUbNKhVgHZLkJeZR3EnLIwWo9AyUdpYz0Rs85rPZL9pNwOUYZqKSOv30FCcz3qxi3BSaxgbYWpDuhZw1/u45A3b6BA8910TTy4qdTthv0BGCf5r5EVGU94p1+lwn2zh2DJVqNn52z9nfIwqBeJtu6ai7xWyR7c9u7XtBPB4hbrh8dfIG1UozsSyo4bFKQEEVEaq1eKjKVVaPFdc1xrVv4YyMkIjQftJcgzgMkgn6zUf30HPge8mB8ggh9+vEJLqK/LHoGmDNVPXiSSp32mN6fnTtfkCmcUsmiHY7OoVdIwK+OXBCQ/DuNus9iP7o69t128X8c0W28SNrkg5rqhen4pM0L0/8nH3YdGx5P8nD55Z/XEF6slyRWj1dvHpwyHYg6NJCgPnZFilxQL4+XC8d32vJRiOSN1TeNYkBaYUWDGqmktlFpEbIZNKOrsZWm4J8jz3AMAbns6pPU3dEHGOv1Us7BHomZj6I0yz0aL2y5sxe17cEtT5bmm1LREtN+DvasGkDlU/KGjKwxhQvkCwQJ51qRqhlqoN98K166aYYrps3qis0HxtR1DBmJBISdin6FCV8nXOXg+CkGUWcGkIFx/aK24rmYwzsl+uSl5diLlFCBCkc2BDJ89I51vFt4BWWJ9MnuX2BNqbiCyTKTXi0sJXliPK6xBuAs3Nstekd76fTZRGvT31xNNCK4I92j+eh0Dk4+tUmh+e6xttrx3yMwXLloYslJfUmCK/+Jxe+H89LuZOXjlpAR6gxCawHmcGKNC/DWwucQQLYqPN7SWaYfq9IjpTGksZ6IDTB03iF6aQZFLi5ct0RFTVAmkA1Yv1dO9DEwuP74TnkUV4hLiqkFpN3+RTlQtLAJ4AjUV6x0sFmfJiASFwv3PIBUH70EyehK9ZY57Abhi/Nm6fLlZis6LARNtRYFjpn2PzKlVgXmSymz7M8HSBpZkqE3H5w4dfAQa/japygpshD3/fmIiuUqipYcBj+tmpbvEK+Ns7notdchQhwYC379O/fQy7JOmyWGSV/eH07rYiran8OhrICv3LpBBOIx3DQasnxM5a0bjBWCOg/FqZiNi3Ms+fk1LK3oO3S2c5qOyQm96cbjyl3kUhsrkoGzmNWH81HjGGuyKhqQrbkb8qqGL5Qw1BdDuqpqKU61NNj9zBFQW9SnHvJ8P7/UBvtGzR4HxucFfXHP5HD7q49DSqB+zopw+GVjzl0fHgYMF/Ha9c7eqOpCtuM7hXZ5zFGOCTcl5iF8wQbvdbAXMNOZn7lBpxtoV5B0FxsJ3y3MeoKCF97P/QWPczw4X7mfMAcI6TiCXR7VamYYjMWis1EfcX0Bh4Ru8nTCm+cZHK6z8cSQ2NrGakQLv5dcRu3omEPTbqJvdW1/6ppPbUl4Jre3lnKnspwW8yRz9exI//DP935lv+A1nt9GvXFOPAY8Ba2WAeVF5MD1n0eTKDjR8HN6VkkdtjCVMiHOX95NHpMMc0U5rlLWmSIVPkZaUCIFccILho4Gj X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 64c43ecd-93b5-45ea-f53c-08da94ecaa28 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:29:01.5769 (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-CrossTenant-UserPrincipalName: 1bI1w34bUf9hB66LnKjVCYYdLvo484plxiaMOMVzqGrAqv0Sonk8pzGtGTPfsMVqu5Qov6uYowneotu/C+Ot9g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa Update the dpni_set_pool() firmware API so that in the next patches we can configure per Rx queue (per QDBIN) buffer pools. This is a hard requirement of the AF_XDP, thus we need the newer API version. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei Reported-by: kernel test robot --- .../net/ethernet/freescale/dpaa2/dpni-cmd.h | 19 +++++++++++++------ drivers/net/ethernet/freescale/dpaa2/dpni.c | 6 +++++- drivers/net/ethernet/freescale/dpaa2/dpni.h | 9 +++++++++ 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h b/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h index 828f538097af..759385c882b1 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpni-cmd.h @@ -13,10 +13,12 @@ #define DPNI_VER_MINOR 0 #define DPNI_CMD_BASE_VERSION 1 #define DPNI_CMD_2ND_VERSION 2 +#define DPNI_CMD_3RD_VERSION 3 #define DPNI_CMD_ID_OFFSET 4 #define DPNI_CMD(id) (((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_BASE_VERSION) #define DPNI_CMD_V2(id) (((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_2ND_VERSION) +#define DPNI_CMD_V3(id) (((id) << DPNI_CMD_ID_OFFSET) | DPNI_CMD_3RD_VERSION) #define DPNI_CMDID_OPEN DPNI_CMD(0x801) #define DPNI_CMDID_CLOSE DPNI_CMD(0x800) @@ -39,7 +41,7 @@ #define DPNI_CMDID_GET_IRQ_STATUS DPNI_CMD(0x016) #define DPNI_CMDID_CLEAR_IRQ_STATUS DPNI_CMD(0x017) -#define DPNI_CMDID_SET_POOLS DPNI_CMD(0x200) +#define DPNI_CMDID_SET_POOLS DPNI_CMD_V3(0x200) #define DPNI_CMDID_SET_ERRORS_BEHAVIOR DPNI_CMD(0x20B) #define DPNI_CMDID_GET_QDID DPNI_CMD(0x210) @@ -115,14 +117,19 @@ struct dpni_cmd_open { }; #define DPNI_BACKUP_POOL(val, order) (((val) & 0x1) << (order)) + +struct dpni_cmd_pool { + u16 dpbp_id; + u8 priority_mask; + u8 pad; +}; + struct dpni_cmd_set_pools { - /* cmd word 0 */ u8 num_dpbp; u8 backup_pool_mask; - __le16 pad; - /* cmd word 0..4 */ - __le32 dpbp_id[DPNI_MAX_DPBP]; - /* cmd word 4..6 */ + u8 pad; + u8 pool_options; + struct dpni_cmd_pool pool[DPNI_MAX_DPBP]; __le16 buffer_size[DPNI_MAX_DPBP]; }; diff --git a/drivers/net/ethernet/freescale/dpaa2/dpni.c b/drivers/net/ethernet/freescale/dpaa2/dpni.c index 6c3b36f20fb8..02601a283b59 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpni.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpni.c @@ -173,8 +173,12 @@ int dpni_set_pools(struct fsl_mc_io *mc_io, token); cmd_params = (struct dpni_cmd_set_pools *)cmd.params; cmd_params->num_dpbp = cfg->num_dpbp; + cmd_params->pool_options = cfg->pool_options; for (i = 0; i < DPNI_MAX_DPBP; i++) { - cmd_params->dpbp_id[i] = cpu_to_le32(cfg->pools[i].dpbp_id); + cmd_params->pool[i].dpbp_id = + cpu_to_le16(cfg->pools[i].dpbp_id); + cmd_params->pool[i].priority_mask = + cfg->pools[i].priority_mask; cmd_params->buffer_size[i] = cpu_to_le16(cfg->pools[i].buffer_size); cmd_params->backup_pool_mask |= diff --git a/drivers/net/ethernet/freescale/dpaa2/dpni.h b/drivers/net/ethernet/freescale/dpaa2/dpni.h index 6fffd519aa00..5c0a1d5ac934 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpni.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpni.h @@ -92,19 +92,28 @@ int dpni_close(struct fsl_mc_io *mc_io, u32 cmd_flags, u16 token); +#define DPNI_POOL_ASSOC_QPRI 0 +#define DPNI_POOL_ASSOC_QDBIN 1 + /** * struct dpni_pools_cfg - Structure representing buffer pools configuration * @num_dpbp: Number of DPBPs + * @pool_options: Buffer assignment options. + * This field is a combination of DPNI_POOL_ASSOC_flags * @pools: Array of buffer pools parameters; The number of valid entries * must match 'num_dpbp' value * @pools.dpbp_id: DPBP object ID + * @pools.priority: Priority mask that indicates TC's used with this buffer. + * If set to 0x00 MC will assume value 0xff. * @pools.buffer_size: Buffer size * @pools.backup_pool: Backup pool */ struct dpni_pools_cfg { u8 num_dpbp; + u8 pool_options; struct { int dpbp_id; + u8 priority_mask; u16 buffer_size; int backup_pool; } pools[DPNI_MAX_DPBP]; From patchwork Mon Sep 12 18:28:24 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974020 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id E9746C6FA82 for ; Mon, 12 Sep 2022 18:35:10 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230370AbiILSfJ (ORCPT ); Mon, 12 Sep 2022 14:35:09 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38932 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231436AbiILSeE (ORCPT ); Mon, 12 Sep 2022 14:34:04 -0400 Received: from EUR02-VE1-obe.outbound.protection.outlook.com (mail-eopbgr20042.outbound.protection.outlook.com [40.107.2.42]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E22EB13D3C for ; Mon, 12 Sep 2022 11:30:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=N5xyl/49ITiuyMzXxJsFkzGKRVv8dS+n66tpFp0VzqcF6qMF+SupHpSR/og3HDe/wLpqvjna94kPisgogTXA5H3i6h4mg0+vqcL5JZj/QRqyqbY0S10fgkFSJirW03zfVC5Qlp9SakV1VEDX7GvqFTKPaG9SJNWSVZvAmE9i8EkjBaoBfr8Q0zfeb7io/HlyoXIdIp+qhw5XNeLMSA6TPc1Mhd9UuSHy3BtOjzSGTnHpKOfIomoriz5kbbwNP/+gJdAEBz4Ab2+K8HE8vcS/zvWI/47BauJb4K6EcpdNZUfF4QywNuS4ZD2UTeg2iVcN2wkNICczeJfz4F0pEvCSAg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UTvX0k1E1OYFNl8+3566ymcyyQINpRotYyv32eaaLyE=; b=HZOJZ8/7Bmnubk43BEfK4TxtUs7jaLVVOZ39nlmdMGRyBIMqLz0iMWI658COcd8VF/nZZa0/g9wgfbFiOzXKNqXG8HRcFBLW92B8RK6T26B3rvqCkj56ixd6uYD+tgLe62k8+7w7+r2dqtDWHClyzHUjDDaegXqsJHvNEXOU6nBZg4v9cbKe1sX5XPRB9qGjqHEpvW3AYPyfuYLSKF1N0uyfik1BvUAGjBtYHsR3/Cvv3w/ZHyy4l8zTBovxEu10zovLlB33U9sxmKSYFyQ2UewrsOABpxxnloqxuUdLpjttElP2qyC1IgZYEdEZjF3fZdYSmFpi+tAH8PxX38MmXQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UTvX0k1E1OYFNl8+3566ymcyyQINpRotYyv32eaaLyE=; b=M3EDlxOiXe63MS8Lj5nT305XWe+kRDbojYPxhkw6BN66w66PFbirvglWVpQk6/yJZgRNbepa2zxqQDtYJyqYlYAoXhay02S1Vk1tjxAUuhn97cSB4PcGp8MJGNlw9OLG7OxJe0lT+KBmM7uvYc0uGw/+howOhvl3NZWapiArhi0= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:29:03 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:29:03 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 07/12] net: dpaa2-eth: use dev_close/open instead of the internal functions Date: Mon, 12 Sep 2022 21:28:24 +0300 Message-Id: <20220912182829.160715-8-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: a0d76e35-4d1c-490e-826b-08da94ecab1c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: s+KW3+ncaunxEY+1PYca0GmUktRLx1ktyxlmxCwCJVuyuJMK7Z4LOkwjTjA5HczeLfX3GvLFbB6IIwGOKtVPagPQc5Ny7bo+13RxfZkAFignS8T6ZPpJqGFImFw+CBLjog04xE4Gqb5GtiaOKqbGw20ujY3Dz4r/34Eo+xhlBP/mE50ZjyRpiZ33wwcQBCCtlv6If63yeO9hmKFLg4f/7uVjZHvBtHIEaqAzQZEXkPkOxQ5cGw2mpxjKWV0TbNfNR8AHo8Yu9OOcHouj4YuOwNPXvbh98E/Q8+kJ0sQ08O9MQh1pX8u0gECcnGxSmXopkQcNs1lHcPnCuole8pNiyugH9POx+Kou8Wz0F1ELNGWFiY1vd5JD9II7If8qQPuvG+49lfFN++yNr+w9qtInnYyYcNlx9yt4VpwB7S9Ts3u+G5OvymFJSk3W/CFsAVBwWI1j9rO7uVjPHLb2hZScoyjDVWD1e0SLxL+2CaD8NefEfPbcMl7/voWBjH69N/Ww2yPvrBCaZjoD6XSvn4yoTnMa0aJpBnbqry/t0GzE4aa429m36Z8naEXuHcIsOvFaTwftSorYi6etbVrHZWheN6AJ1GEbmAdBSL7erNy3IQfZs+x2vMdw22hI9meTr5dX1uT4aCEvIA3Z7Kx+dmKnG/IIhw/2l+gzuRhsrUDr2oJrJtO0MxSXjsHrVbi5+EtD+O/rPw7/pVi/vMKPhexVE1pnJx9+mh2TPLvxFYIBZjtxgAorK3nVZft2M63I99P/WgUfO0q0WecoAIfAN6ZbFumoqjwR140tNgOR4weDMqY= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005)(309714004);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CnUqAJghX5Z0+qJxGebrr+jkWvS6qeUvIBf+u6zruX1oOK54nnJm/0AeGHR5pYknRGFzxRDU5camBC6NOv1EH9DexZxWLUhGF6ULyFlv9erbQZHeiMkNxSWPWDp0pnYj4K50fyY98k3EaBhBUSYMt6X+PQteVPOuV5ESJnd4iAsaVwqP+9jqxFsEVKbv5kw3JemW8FkAS1X9QmPd2zl5pWDOcr0bdDV+qJY+1znXSJpL7x8xv3TFpbBNT8EyzPn0cmyYIe5mjebdmcXIXFsA1H3JwOhNCgMeA5+pzsvlJpYpI8azTtkaywP9tEwQY07aevx8cvnMiOF48vkKJoW+yPo1XwmyhciP5810ppXMU+eI2FrnJfw+/qFntgJPD4NvY/mEMRBAI1oVUVhZEh9DPmUyfDcaxSWTio/wRziaz/S+iN6z9HlYXBaMCIncBmorrSFyvSXCKdM2Zzv9121qIoDl3TcHX67nRZP0kx8MQ+kAGNNhHLuayUE126PURJ0aYtnc5iBgY+jvhcAfU/UnHK7RRM4NKXc4fRxV+ARaJCe8RhPKMMYwrwyYSmcd4Qu7K+qKJLjt+ahziy7hWkzKnNZktEqgC1C6pco7uC897FmLFYH7N9jFEBuBT8EDaOeQ9kppMx/hzg8D7TKU52wEaczCORdpkmShu29nT1/pVLEc3kiVqJcOi20FGQXWsM3GFyNMNpxnU08iJ3YyFqkQWN6xtnHb/04jvNGAEXvTyUxARfC+ZwYwZPwVR/3zyy7zk5h0DU4ZfdpHyFW4l9EaIlh9Pp/FUoYqYz68gfo6TPlqztnElxTWVUS1z5T7tZUIIQt2JhkvXdWGBx0+Rn32lHkyObL8uwwBu/stE1gTNa9QFFlhRXBQK2D4IjY8SNZpl7u3KXJmgdMVqLYAlk6L1AaWuYqup9/qVxQRf7cxTviSCwcl4U75XOlDzAtd7vLEzgnf1ZMvK89ygBA56uFDIlpmsD4RZBUqEv86yiaDtcxTHoeFdQ66YvvOKpnwjr+/PI6uilGVyyjvy+BoA/qTFzikN47anZy58ogTTGcmGlzqKqchv3xaj7qI2tGOJkZBO51KawYCS1qEijg0KiuBbBaIX/+n76c/6eNW0hJNGEqtwXfiKIgBHdG8SL+5AafrIwR32iIpwLJyRZfJzSBOtqJSBXuQvvWYVBHjg8B8ltapAAmYJqmodyVWM4GivSe5iW1QseVrB3khiPfzbuVMzt1+Ou0DNqiN5+Snhm6yB/vOLikMhxAJQ6hFar6VpIeFzwo8JpsNFRyUigI7spgy9Kv6cFoqYK/VsxzZ6JLC8zXYlgXIpOd4K3havNcLbRbIqMwppcDnfp8XQkEDM1S7LTHZXBo6jxnIOtiJyBTQ2w2lMItzas32Z9XsF8UTutrRmt8dqudbHL9NVeiwXftg/LLbHjUDFS3H9Evp3zjwcd/MHJ6lv8+UkNh/utvC6DxBe9MBm2Ar/IpN34WCgANZ5bUv1JVSt1ZQJP127zJhjfr4Mjxui5pJqbcO2DTD7QMkni63gsB1x7aoGHusxxPxGusQfk0aoZ1g/1mKDzN8KN7Zq1Ot0ksABU8WP1WeVRB2 X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: a0d76e35-4d1c-490e-826b-08da94ecab1c X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:29:03.2186 (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-CrossTenant-UserPrincipalName: 9RMppssFOp271PRSwwiUHlRJ6Csa1SBHzNxgBUt/TjdSuXIdAlyC0CLd/u43Vtwbjo4cPATK2ysSSWV6SnYomw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org Instead of calling the internal functions which implement .ndo_stop and .ndo_open, we can simply call dev_close and dev_open, so that we keep the code cleaner. Also, in the next patches we'll use the same APIs from other files without needing to export the internal functions. Signed-off-by: Ioana Ciornei --- drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 83b7c14bba53..244a8039e855 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -2622,7 +2622,7 @@ static int dpaa2_eth_setup_xdp(struct net_device *dev, struct bpf_prog *prog) need_update = (!!priv->xdp_prog != !!prog); if (up) - dpaa2_eth_stop(dev); + dev_close(dev); /* 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 @@ -2650,7 +2650,7 @@ static int dpaa2_eth_setup_xdp(struct net_device *dev, struct bpf_prog *prog) } if (up) { - err = dpaa2_eth_open(dev); + err = dev_open(dev, NULL); if (err) return err; } @@ -2661,7 +2661,7 @@ static int dpaa2_eth_setup_xdp(struct net_device *dev, struct bpf_prog *prog) if (prog) bpf_prog_sub(prog, priv->num_channels); if (up) - dpaa2_eth_open(dev); + dev_open(dev, NULL); return err; } From patchwork Mon Sep 12 18:28:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974023 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F194C6FA89 for ; Mon, 12 Sep 2022 18:35:18 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230411AbiILSfQ (ORCPT ); Mon, 12 Sep 2022 14:35:16 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38784 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231737AbiILSeg (ORCPT ); Mon, 12 Sep 2022 14:34:36 -0400 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on060f.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::60f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id E7DBA474FF for ; Mon, 12 Sep 2022 11:31:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=T5Vhr4fo89+p5azNKH0PAsIxf/3CJEGQxA5IWalrLYxTrQSugZk8WgFLolYEgy8AF7a8W4IHH+yJdGPfLcXBZ5o+SgST3ElrjCVo/vzGKYQNCntC+I/SKeK4K+lbGih1DwgGRDsQwzVgXaEfitsVV92XNYx5b1xw4EgwzacDZyAp04s6ifVsrMl2U09e5pT0fsYl9W8zgX3+dyj68Wu73H+rESRDnkAOoacMyL/PGPnDGyjg7zjVmmnrdiM/ijwTAlv+3ObGKhatOiwsgUYcbiV4LikhND4iMNtGeW0pyWoL3RTVPjdGVkaIksv3cg2T2zX9RWMDzb59SfK1IGAj7Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=KoamHjFHqAWZNOhsNIjDhF9/pNcgIpCcb4GrNCkTB08=; b=Oy9JnKfp4tJXgNhBfS3fZfdo/psDoGoE9Nmp5NMzpmf73WcMV8ftWLbNNIIE4gzugoIYlMyce++34JELwYsXClPpj4zxmIhehEXq2KD38UFil/3i3PTjiHqHNMJV9Zp9R+dTjSH0FS+rgY1ltB6vpwdQoIRV3dacpzT/A+WCQwm5p7Njl50oEX6u+601een9RDBtjrI+4H+J/MnjU/nMjphceGvm8N/77sU9vONJTtslCEfIphZZbYFyMxHexHyrdpt05YOgeUb8jftgXkvIhlrz3ONbDFiOY/VTKuLYaofeHBLjLmv50ldBTxfsJOkoft5/LxK9CwR/bKu6x8wAuw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=KoamHjFHqAWZNOhsNIjDhF9/pNcgIpCcb4GrNCkTB08=; b=bP+fJ/pnUILJCrrwZ5kr08POGZ59J/vCLbV8KXiKVf0mO4W5cci6B02awJ9HObsSjIELhuzaIiOj8swJSrrCUju20GgX6x86vf/TofivYa+7lMIAQGMiiCFtx2kd5z8hGRUqHuHuZ6C96V8i9bwbsdAkB24eeYzrYD8WkcS7jVs= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:29:05 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:29:04 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 08/12] net: dpaa2-eth: create and export the dpaa2_eth_alloc_skb function Date: Mon, 12 Sep 2022 21:28:25 +0300 Message-Id: <20220912182829.160715-9-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: 3b2e14c3-d2cf-49ea-060e-08da94ecabfa X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: ok19N4VozXI0LkXyjPT7M80ZUAdFDByMP2wnBb7oTDI5u4nAFvuquLwcDO+tYbqFHVMwSyzYcw+ZR3M7+EXYqT0+o5wlNm+R3JFeGxpXARvVPUd8oL67+UoBYaw3YI2/9eMCfbzGLSiv+BgVs9/2p2szTtRVsdVmsjJur+l9alLDy47ShEMOo8Rj0tZDQfDU4VUFCAwcG+pyAXDvUOGZgUJWLNC9eGV8R3Bye8eA2e2JHEAGXuLJva74oMmWZItFh5UOmXf2rYGH8SP/BzmZqpU9h6fzBxxlKQpne44X6U6MK30+tPGJXlxMnXVJkuKAvbrQTSbllwkeJCXc7tVZJWvkgQVnbyR97HFAPiWNT0fy/xCQzR19NkUxwodYooFnpEkF71TxKNF6xaiVtqZtuqt/9oSkqoiXJnUseHCTPaZoUQGzVdxG3da2geDkzFHkUQr7e3ObZQvtTJGxCiRh0o/meksWlDh83LhBHfjc++7yHvYdlyXMSW0kWLLpkv4fwcNam6PSaU89oOt9F2vbBbXDJ5LcTgGyEuRuF7NFRz29l/0nkKqX5AuDUNJewEkNoMy4Efo3m5wtQTriX2RB8pQDvy3DkGR8YrjKJpQ25//dwnbZ2C7Ey+pcph/hnx3KeHl4fCh+7InNuKE1M4EU18/90/yCdnfocJLw/N/x9bZg5frO3ZNNXOmXwGjH97zx8Krdvv/JmUG8JMWNAfpKfLFW6g3fGMmkvhlaYPbo0A6iCnXrgu6mXzojBWwv3J0SUIplG7lTidJqPw/jg8l+Yw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: t255SCDtMatCqerhaNYokrEDjUPntd8SEFgVjcsizA92EXJLggTpBU8ZTAtQs9PTKjU9ZzXIipx+oADmr2b7BiGvl+65ou04M36DiXM9x/N/UyNO4RzBkOqF8mTmF5RzVC7+i1qBEzoXv/620pnaH9ebg/e0saPY6rwB1rJTLTc4KODVlAayATxeQ4sSxSms5HwqBjgztJA0amJB0lfAYrH/za9RDVWtE/qMtSbVwSD/eRywnSlZZvafJIDXghUa+PkLPuDFtGR2xjXdXsY7OmjFKcCvuh9xGH91KbnHlaPUtBEVwABvhPo7ns8GLuzor9fVnzZbrpwVLUaWCnHTGmeqVEwC7XoMY0VeREpfFTYKEauBoFTYtnl9PAdVySM05xf3yRJz8dcWl/ieqpXLKOfnF/WmoXKiMIQg+rtJaNSSHGjyH1Mzq3l7xElg3e0ka0GYJ7CmJrwUvkYwxwmgz1zCFzPTPGbNvlz3yEoq2IHDASjB4tta1ZoKdEQp09B7bbH+KExM5Q//ElDIwmmH1rtmeA2ga+Lkj0iQZC7gKvZIKB+YrTRvr9nXakAMRN0yC8yjWGsfULf89D0b5E55fH6+xP62QPNprs6n1InsU1BUhFQp+Dqp9OO5Nfp4zFbCmLqPRgkPz5WaDod87efJiEP4HR3Un1aYvSTqU2Qz5p/EUSzrd4cmrd88SHS6PJs2csF9C/SdxBf8HbIpHKwLgF9hpxVzdBTjIVHtzYjeXLqBOBtrnem4EV/jjDYxwlSCfzp4JW8ztuSLxMQqB7zhTlGvfFYDfw5bsCm35rNoHBLqwBXedPV++JewBJeqzLFgsiXfToonNPIeTpxBBsm7MQkcWYclV6eG0KgRvOnq+r4lg/lpc0LJD1CaMhkqKpsQZft0FvT4eecU3cLuXxoXTREMVke7PgrXHbpKZolxUCYbrrfDwKq9IeyndiF1O330Td1XzYLzHl2kwz8NpPWS9AB899+q+Iw0Rh3Wfio5an1RrgFHe8qibez92P7ymQiFJWCrEDR0aLmKs6yd5ndKdZov9+Jasoyo0+L/JmxFHT6Lg8FQA+Pr60yA5d2EidoXex5mbZhedJcwT+PzcR9Q8WMdT9y99ZAaWAWhNDKN5HzXoKWYLuvSYp49wWEvxovlg/o4HCVl2B8pB9fpneM6aWTv63o6mM7o8OULRpE5ploPL3ZO+62ObvSk4+Vdd4cYTX7x3ZcSgbCyJOdn7PsoZVKG/AP3yFdSpl9rFEyzBdZXiKtp9Qb2JiHv0E/cRTnKLuknW8wpDhLeMDqBI9IoxtlnGmjxeosD+QQV8vEjo9gXEEq7ocvaP9SY9BvJgY5LITcUqyDmkiYH1a+sW+wcm7HJQv22sEUUG2aTDMHDMaqTiHstwVNVSO1hZMuTdaCl0J0vGxrGNqrYs6LhILqOxjfyIv4XZOr99ZulqHFCJxo2uqg0AasWy3tH5N5t2RWGzm5NjB4F2V4uY5vEPPJ+Hukx97lVCJTFX9Lrn4c3cgVB9V24yyCf9ob4PCCvnmGDhyE6R0fsvsSjEwXToP3BrRpH4EVnC6YFrtWFUH5a4LTze+t6H9tTLlE5OyTx0KAf X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3b2e14c3-d2cf-49ea-060e-08da94ecabfa X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:29:04.8577 (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-CrossTenant-UserPrincipalName: cyQvf53I7XtDqToWiYs0Br7jWOCof+ujPA9iN5B+HJCiA23b93C6eu8ajASnH2BN6mBDr+lawAVwm/4ELwEVkg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa The dpaa2_eth_alloc_skb() function is added by moving code from the dpaa2_eth_copybreak() previously defined function. What the new API does is to allocate a new skb, copy the frame data from the passed FD to the new skb and then return the skb. Export this new function since we'll need the this functionality also from the XSK code path. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei --- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 25 +++++++++++++------ .../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 5 ++++ 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 244a8039e855..a43498ac0846 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -485,19 +485,15 @@ static u32 dpaa2_eth_run_xdp(struct dpaa2_eth_priv *priv, return xdp_act; } -static struct sk_buff *dpaa2_eth_copybreak(struct dpaa2_eth_channel *ch, - const struct dpaa2_fd *fd, - void *fd_vaddr) +struct sk_buff *dpaa2_eth_alloc_skb(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, u32 fd_length, + void *fd_vaddr) { u16 fd_offset = dpaa2_fd_get_offset(fd); - struct dpaa2_eth_priv *priv = ch->priv; - u32 fd_length = dpaa2_fd_get_len(fd); struct sk_buff *skb = NULL; unsigned int skb_len; - if (fd_length > priv->rx_copybreak) - return NULL; - skb_len = fd_length + dpaa2_eth_needed_headroom(NULL); skb = napi_alloc_skb(&ch->napi, skb_len); @@ -514,6 +510,19 @@ static struct sk_buff *dpaa2_eth_copybreak(struct dpaa2_eth_channel *ch, return skb; } +static struct sk_buff *dpaa2_eth_copybreak(struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, + void *fd_vaddr) +{ + struct dpaa2_eth_priv *priv = ch->priv; + u32 fd_length = dpaa2_fd_get_len(fd); + + if (fd_length > priv->rx_copybreak) + return NULL; + + return dpaa2_eth_alloc_skb(priv, ch, fd, fd_length, fd_vaddr); +} + /* Main Rx frame processing routine */ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index daae160aa6b3..6412fde6db4b 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -788,4 +788,9 @@ void dpaa2_eth_dl_traps_unregister(struct dpaa2_eth_priv *priv); struct dpaa2_eth_trap_item *dpaa2_eth_dl_get_trap(struct dpaa2_eth_priv *priv, struct dpaa2_fapr *fapr); + +struct sk_buff *dpaa2_eth_alloc_skb(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, u32 fd_length, + void *fd_vaddr); #endif /* __DPAA2_H */ From patchwork Mon Sep 12 18:28:26 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974018 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 058E0C6FA83 for ; Mon, 12 Sep 2022 18:35:07 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230365AbiILSfF (ORCPT ); Mon, 12 Sep 2022 14:35:05 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41142 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231434AbiILSeE (ORCPT ); Mon, 12 Sep 2022 14:34:04 -0400 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0611.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::611]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A838C4CA3B for ; Mon, 12 Sep 2022 11:30:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=lTuOonrTy4prvGovq1dnKrpxlSq/JVAptvW2Kv1qkc9T/oLdqcy1hx3U5kz/aVMRkCUjtJnKOfUPG/tx6fkqLLFm4DymwjUq+yjvlHGd24sdH3G0CAQsG1xrXsLZnZTEvpsyv7eR9N1AiKLVtiu4AKbQQNNxcaPqizn1aOEmI0pAz7Ke5POB4m8l7+We32G8qjnNLAy/o3LX3SclTrxgQ4EuT0LO8c5ES6fAJl2jSVbW6GDtdZQ9VJ5X45H7mHkd/skHQMssHDOa4FIHwHXiUE3MfQmxunyulqCfJu98MlbGyl9kokztc2tbnEngKRYhpdKkIL69vLyolFOBYiD8bQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=BfXwqpRVMGphMvoJuBYchis/6FV6Rdc9fEPoQWwoHBU=; b=fMXvOWd08EfZFDe4C7wJxwa80GRdOZoqi2DvsZSryR0s4RoXB/uPFPZSVoLsi9VDoCjag13PqhZP+/tfkCaKYus9YWkCrDc/Vx/fdHvyfIMLUgY8MP2/Z4mPTKZFEGLL2TG4OEXzZ9rveBwuoKXtesbqRt5W1DVgHVVLe30GiKtu/lUqtueW5AtjnonErOd/wF3Nz71QfMi7YqezL+FS6gxDg4V0Z8LVMkY8fev1ETjA9lCuIeyPB8KmpiEdwvJd/qoL3MBxAXoW1nnTv87mEMCMh+cXQyJdFJyLroKEBGdYpT7yfS9xyTo+FuPvVf86cB7Zuh+jUB0YwGCFNj/H9Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=BfXwqpRVMGphMvoJuBYchis/6FV6Rdc9fEPoQWwoHBU=; b=Mhx0JQLRfKy/vE6mgqMtQZ8GFtfIHXzS/t5S3zGkN4YUZyW2CBHQjlmAziAscvPcV+1lrF3cJKM356EVRj8p8380BUr1DcYz6YostH3VnsvLjy5018OSCroJ7lCeBI4OhCNG7nNSiCjXxPFrDD1VOGw+Y5r9J0mv3mHoFRCdeao= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:29:07 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:29:07 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 09/12] net: dpaa2-eth: create and export the dpaa2_eth_receive_skb() function Date: Mon, 12 Sep 2022 21:28:26 +0300 Message-Id: <20220912182829.160715-10-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: e79b570b-84dd-4d54-9973-08da94ecace8 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: YJFi1IUSqIJSWFWF004YFworoaiaZvaaTdJUeVv2HkgGfLzTIIEMs4UGOOgeTSRZzog6hxgdtVq8qZN3YXSi6Q7pQGQxWtTYlPmnpn+YNI143jmubLer8nE0P6Y/Y2pUsya59t2MbUWOnqhfH7J1Gqdz9Sy0goPaPFL4ZGkhrKxp7J7CQ56+04+M0osRgeeqEmBwML2OaS0ZA2tS3PNp2GkGc38+XX/N6mWx7XUwDE1ed1XTE0rD6dE9BACWdAPpetPdW2nnGKFFWhMz2WmHjXDQGhbc3Juk0VWo/Tbmdrk3iJ5jYL7/bYdwNyFyXMFQSQ7WIQnRO2DP3r3ZnBMscRDvb0v7ESTqs/Pq6j7O6rzbICbjAAxDLr6NOgdUzBIUoDQo0p78DJlRkJqo2K3msASUTVdmTIAQJfEExi/r/YuDsLdpVtld2pXNEV78+DChrXHkMwFAV9DEYKZRb8wj/KsfwZDTK7wPjyNIt8iM9Khkrkh6jBZlXBkHS0j84pm1cWV0Xc8ohM3Osj+MBh4ViRKaGB64rMNSeK7VCUvHMFLGGmIwi2Ol5XklmK9ptOKoOK1RrT6QuxQ0NUl8cy4tlzHMemJhC07kKb9SrIRNnG4/O3cVlfjhY0v0ozKNDL7R3cgyV1Bm3CpKy/N/BH2xacUppzt2Wac0eBCpChreh4SSkwEXs2UENNhLZQuyY6LOu4CRy+fBwkEAQP5hE81GmRnU8wqk9Z+jUiY3DFzv1rL+eul+Z4lLA7DLAx75+7WVSqx0+/bKMPFfkmKeFealjw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 7mmz8UB8OkmVVtf23RzUhkCsxn7Cauyvw8OxE8dzya9g3lFylAxmPCgiuauNOAeX5g0gGgAosob3it6iRO7yl8TZ0UM+ZzmAmQch5/scEikS7Oru9AMp0JhSyo1LIx4UIzKSUS7Nlx9DnsslsbUF2pp0T57jVPyAATaZ98xBlWG3Ve8cmto9BFgGecpdhmibdqnwwtuZXIwySfJSZktzpfEs66tw7tJuF9Um/iTySDCnulJeXTKQpK60bQ0OYg3x4bw4VMkgJfZjj7+ui5kKHzTDC6R9k/RwuF0YXuAIUiggN25IBqco6oOHXqxaO7l5NXp8HIm2uSow8guhtRlaDLVA+NH3eiFF1R8o/oaJMlVUft9tT5Er1708vES+P4J8krxUWf7UmUWw1ALe6xYweVR+nqBCmYVT0saNjz+xa5IaXgReD/VKEekpHnYlVtCFB2caAtIBPnu8NddcX+TMzRHhvEHMErF9O/61SN66gmyxr4QEwQzNY8j8evt8HinC7X/mKsMVvoQ+2yHzR8XKIWvkGIngKJBZ6PLN9EDNvOBJ+vp325EZRmzwtmBhr6kUlE66T5YSFDHXOMmfQGxV+7KKn1/7VOVg6+nd+phqLedyGOKz2OVU5EtEN8bt74GUgJVhBr6SURfHmc0dq36VKDoufA7ykEAxZADOTtkr2CMt4acRnt5pTKNrnceN0yFkQe+etneMmOzZ/3bJ0xQQb0LDbvaB0V1imPCVV/hwkDcBU9f1PWSgEdXCFlh6mrBAwXuPqWZUlsMrREkBgefli7qVVe8f2Rvl78xCvB50BwAlNX0j8HY1NIa1mGxsuphXEdNfuPfVk+YF8bZwkwE+X96v0wu87QWZkSdH/cX02PMXKuA9GZW+Lk8rRn9Ym/bBuTvuFHnDJfFVAWEwaE8YAJ8PRVWTF+P158E7XoQqdMEaDI6IRqkwL9ROs3ReOzwxo5B+LT6InRinktfsqTs/FdMlctHU1wCADa8VF0aOtpQKGmSC83j3IXEQiWstCRkGdb8mjzJIaVnb3MKPsDLJQwF45nLZDFHILZBQ+Rw/cix3yowo/OcY0eLKV/MWzy/mwunMxROAWXlqfCcXy4Qh5GX+jPGIQ4sk6F8u20VbwMtkHYZ494WWmzCzQR2pa3kDxidUWvB128IRnhALv6tKxZ2xV3nyS4JDrSN8Jgp8zQHHjVEKECiYr11+Tvz3buaZ5I65X49dwtz9jw+/gHX+g/l2jsLsVlCuOT8l/D5xjGekjkQ3FiMYiRJMHSdr9IjcslttvAVgUP5m/lunoJAbmD7Ze2neequ3T6Wc0X3h4xUhPQ4OQHDq7zB3lWT6t+kvknaHQS/+3O5LJP7aZg+nTi10lpJ3twMcRqilErikgYEKo7QRU4jFZUOPJLIPnmMhcuJQEsnW8vToyC1834NrURU0rW5K9WAfqYg1apSivoPT3oNj49l1cJvgVncj0tugUwxFjLoSQwfEqLsQ3Xi/IZ25VbgYI2WQyzpy1PTHZWMo41hLsm94jqlep+pgY8iXsLDd3jDz7pl09lyGda588vhE1zO+PrMmN8l+lpgeQo13mPOrVnNStqSWYj3euqsMHeQeN4a4G+0GKHdRbBqKNA== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: e79b570b-84dd-4d54-9973-08da94ecace8 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:29:07.0631 (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-CrossTenant-UserPrincipalName: XL4JmmLeSbGJyQzpYXssq06ZmqSW2Zh47jvNPc5bgXm0gluhX2rXUvPV3BHSUYJrT7WiVFD/kby0MN3bOsA5Rw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa Carve out code from the dpaa2_eth_rx() function in order to create and export the dpaa2_eth_receive_skb() function. Do this in order to reuse this code also from the XSK path which will be introduced in a later patch. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei --- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 83 ++++++++++--------- .../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 11 +++ 2 files changed, 57 insertions(+), 37 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index a43498ac0846..651b3ad489b9 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -523,11 +523,52 @@ static struct sk_buff *dpaa2_eth_copybreak(struct dpaa2_eth_channel *ch, return dpaa2_eth_alloc_skb(priv, ch, fd, fd_length, fd_vaddr); } +void dpaa2_eth_receive_skb(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, void *vaddr, + struct dpaa2_eth_fq *fq, + struct rtnl_link_stats64 *percpu_stats, + struct sk_buff *skb) +{ + struct dpaa2_fas *fas; + u32 status = 0; + + fas = dpaa2_get_fas(vaddr, false); + prefetch(fas); + prefetch(skb->data); + + /* Get the timestamp value */ + if (priv->rx_tstamp) { + struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb); + __le64 *ts = dpaa2_get_ts(vaddr, false); + u64 ns; + + memset(shhwtstamps, 0, sizeof(*shhwtstamps)); + + ns = DPAA2_PTP_CLK_PERIOD_NS * le64_to_cpup(ts); + shhwtstamps->hwtstamp = ns_to_ktime(ns); + } + + /* Check if we need to validate the L4 csum */ + if (likely(dpaa2_fd_get_frc(fd) & DPAA2_FD_FRC_FASV)) { + status = le32_to_cpu(fas->status); + dpaa2_eth_validate_rx_csum(priv, status, skb); + } + + skb->protocol = eth_type_trans(skb, priv->net_dev); + skb_record_rx_queue(skb, fq->flowid); + + percpu_stats->rx_packets++; + percpu_stats->rx_bytes += dpaa2_fd_get_len(fd); + ch->stats.bytes_per_cdan += dpaa2_fd_get_len(fd); + + list_add_tail(&skb->list, ch->rx_list); +} + /* Main Rx frame processing routine */ -static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, - struct dpaa2_eth_channel *ch, - const struct dpaa2_fd *fd, - struct dpaa2_eth_fq *fq) +void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, + struct dpaa2_eth_fq *fq) { dma_addr_t addr = dpaa2_fd_get_addr(fd); u8 fd_format = dpaa2_fd_get_format(fd); @@ -536,9 +577,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, struct rtnl_link_stats64 *percpu_stats; struct dpaa2_eth_drv_stats *percpu_extras; struct device *dev = priv->net_dev->dev.parent; - struct dpaa2_fas *fas; void *buf_data; - u32 status = 0; u32 xdp_act; /* Tracing point */ @@ -548,8 +587,6 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, dma_sync_single_for_cpu(dev, addr, priv->rx_buf_size, DMA_BIDIRECTIONAL); - fas = dpaa2_get_fas(vaddr, false); - prefetch(fas); buf_data = vaddr + dpaa2_fd_get_offset(fd); prefetch(buf_data); @@ -587,35 +624,7 @@ static void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, if (unlikely(!skb)) goto err_build_skb; - prefetch(skb->data); - - /* Get the timestamp value */ - if (priv->rx_tstamp) { - struct skb_shared_hwtstamps *shhwtstamps = skb_hwtstamps(skb); - __le64 *ts = dpaa2_get_ts(vaddr, false); - u64 ns; - - memset(shhwtstamps, 0, sizeof(*shhwtstamps)); - - ns = DPAA2_PTP_CLK_PERIOD_NS * le64_to_cpup(ts); - shhwtstamps->hwtstamp = ns_to_ktime(ns); - } - - /* Check if we need to validate the L4 csum */ - if (likely(dpaa2_fd_get_frc(fd) & DPAA2_FD_FRC_FASV)) { - status = le32_to_cpu(fas->status); - dpaa2_eth_validate_rx_csum(priv, status, skb); - } - - skb->protocol = eth_type_trans(skb, priv->net_dev); - skb_record_rx_queue(skb, fq->flowid); - - percpu_stats->rx_packets++; - percpu_stats->rx_bytes += dpaa2_fd_get_len(fd); - ch->stats.bytes_per_cdan += dpaa2_fd_get_len(fd); - - list_add_tail(&skb->list, ch->rx_list); - + dpaa2_eth_receive_skb(priv, ch, fd, vaddr, fq, percpu_stats, skb); return; err_build_skb: diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 6412fde6db4b..8966470c412f 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -793,4 +793,15 @@ struct sk_buff *dpaa2_eth_alloc_skb(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, const struct dpaa2_fd *fd, u32 fd_length, void *fd_vaddr); + +void dpaa2_eth_receive_skb(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, void *vaddr, + struct dpaa2_eth_fq *fq, + struct rtnl_link_stats64 *percpu_stats, + struct sk_buff *skb); + +void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, + struct dpaa2_eth_fq *fq); #endif /* __DPAA2_H */ From patchwork Mon Sep 12 18:28:27 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974021 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id D6BBFC6FA82 for ; Mon, 12 Sep 2022 18:35:13 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230399AbiILSfK (ORCPT ); Mon, 12 Sep 2022 14:35:10 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:38288 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231451AbiILSeG (ORCPT ); Mon, 12 Sep 2022 14:34:06 -0400 Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on0611.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0d::611]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A47C46DBD for ; Mon, 12 Sep 2022 11:31:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CTNsISpfwxd5qKu25HJYb7gY4m66vjT4SJhMTfSSZoS0uu63V/3z0/uLUpUdJ7To+MlzD9ecv9CId1h2b84WVjl7nCit1N5UaiS5qKYL7Gjmh7o04xBXwEZ3MMCBbkbgtC2+Jh/EecrBfU4dhPnUK0ZxXhY3VZDo+m4y0kx2Xp/4ziIBBbyz596nqQXnNRWG5d6FMPzH6AozPgQ/HTP/BSzGNN8RIfi5PQh8m2dNfE4S0yFCgNplsCYYjDc8/9xYUmsXxAjwwIe9kcemw5+SxheVYtJVt1YkM/5rgx1PPkC4jc+g0Nystn9coJDMB2p3yDIAky64wEEx7jqFs0aBXA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=drPh8q3jw7+R3jKZzLjs/AFSvskD1rjLeU2ZsGwnhPM=; b=Ms8x+HXuxBbKa3Xkyvhn0f+bLEIofmZ7alGHGhfaNWaOvdD8TjUGk6XO1GwY77qg4PVckK04y3KdAwYTvRDlnsDCrXxsgVqEwwJZGgpMpuEOReOCcJZk/mIq1ZPVhkeMYz/hR7F+irOYhctRqMCGnEfKmReUds+watsXxfSXkphrDJjcIxvq/EJCCYnmQmOOy+nlYD3Wba/NUbLEKeNady9uuQ7f2T7DEOEr1QjNYROSyg2ooRH+kwiW4PpcK88NjJT60y8nQSNL0+XGlZKR7pZN5idkB558/hONnugKcekDZuJRVxBrVh6oRGjKAncsTOqfJKFuCPAclX2NbQ0HJQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=drPh8q3jw7+R3jKZzLjs/AFSvskD1rjLeU2ZsGwnhPM=; b=o3v3qB/BdAlDTJGfltkq+NFlAcqYtNTc9iOS1lE7Pa26qnsuanSeOHnoXBoUxvcvF6xdiWe6t6Aw5AYE8cii1SecAlWpnyIpFNd6Ah6PaEBAue8hB6DsKh7V2HavjPUEHHdGlFjSj4jIm+hDz7X9kZaS7kMdwip5WpSbGbQhcdU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by AS8PR04MB8023.eurprd04.prod.outlook.com (2603:10a6:20b:2a9::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5612.22; Mon, 12 Sep 2022 18:29:09 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:29:08 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 10/12] net: dpaa2-eth: AF_XDP RX zero copy support Date: Mon, 12 Sep 2022 21:28:27 +0300 Message-Id: <20220912182829.160715-11-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|AS8PR04MB8023:EE_ X-MS-Office365-Filtering-Correlation-Id: f8ceba97-9480-4cc5-a891-08da94ecae5c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: e++zH25BiGozViNfW0ZifDmCx/68f8yIJ08rOC68P2vGZcj2BLk10gVzcBGOdx8LTUQ+jSkk85DinP0QbO3Rz+13Kd4cQUfqKLA2+lsNX99lB7d2OUOYYXT2KMd45IeoxzgBEwGrLbAuWIHvERK/s5sB9NkxZgMXhsiby8uIhP0Fr3dTdbCzgW4dToSTB+wH2l7Et6l7fldXvHkqB3wzbre1+Tz02w/r7nvkNXstNp6adKRwn20Bal93jYCAaGUSTRoxfsNRpOwrz6lZhELkAU0b7vp13u6TC2sP8fXDU/SZoyNp8XEH7WcG44dwZxPfQFYS9MAPkwBWUGjhAuFAQd6vh35TkGyNP5TSfFkBuWFeFFCGXSHr2wZevDS3p49p45VPtV9t3DY8WOnHsD0+GBYq/ZVMiTLeH4ouFdtnhXh2NXc0TZkVAek4kWHwpEs5HbupoEDGGbWONeS0D7MjJX39//WtzZU8CxQ/AnqPoR5+0LdZGpRRA8NrhUHXZ9wztPVZsbaW48xp2k+CZJAlYiAj8Ke2MSHqTA4FgW8BClW1yxW2YLMn6BDYObqMHOU16Dvbl0oW8LMfTb7Pk3dqQz2mPC5qzxNG9+WpkABCKX+ag/PuUJBP/nIwAhFQ9nXq0ne+ndm6o+WmzyvCx6QBpkJtD532aPdPkI2G7irwJGZ6s3t8hHkXbyyyEhUiIbStHneuxP5WHWB1WJnyBv2aa5HeyDNAatK2FZgsDjdM8wHuJEAZ3eraGtxm0Mhpy51ucF4BCMUuKsCvEZHoMMkMKQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(366004)(39860400002)(136003)(376002)(396003)(346002)(451199015)(4326008)(5660300002)(8936002)(30864003)(2616005)(6486002)(1076003)(2906002)(8676002)(6666004)(316002)(36756003)(41300700001)(86362001)(38350700002)(38100700002)(66476007)(44832011)(6506007)(6512007)(66556008)(186003)(66946007)(52116002)(478600001)(83380400001)(26005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: B3BArOZLvmXU53w3A+W70H/I6/WzaLe5Y2tWGdAcovoQrFlWqRkHI0IZqBWgEHaOYKfm2RAcenfQb8cOP39x5xbF1XZGFZo/yUIGWraF+tEFIQsqHOdQ1JhYdZ/sI5w995M8v0C8eAUSQLZQywjotC/Vrvs0WnAtAuysFqWZDutrjO37h0lDq0IMCxNevn+vwN8qoWiJvqMuuZ36O9ZULaN+qodRzfiQmw0Cp9Rhv6hfajYBjdTF8ebqAm6Mg+CUtxyEVeXJ/Nl1yAa9yHTfmHcZBHScHZHRxhXf8pA4r4ZZ2qx1qFgRsroUGzHSCz7RR029/Dr0NGnnmEAiVJkzl4xOlnWbpgIbC5ZyNv5q9DO+ryFo03kFWTFIn2AsMnfVdd8Kg/X70fAjvUSNqwonluhiU42zhUP3F6oYieAQKrGlyV2uOiFDHeHL62TwGOf0Edi8DG590Xt262w0nYK1vesIKVd3VwBZf3fM++9HRNPLOu4uqQJcojgaopU50s3AkTEID90ECr+AjuRLSkJwC4vvv7NURpGD0N7foLsnYm7roSxQOWX2sOFMZa4TjW0O8T3SMzbdY/f+HTrrorYp13d9RQbb24qJ/wgqBHLn872mDzE233QcPhBErLd1U55Kyvfp6/OIDvNedFZwlDkaO6jrTJBXt6XQfBSoHR3gvzj9Td42eyKvPs7aaWsty8nzY0ONjIU8M5bFQropMj95g4byMCpkCT0dogtzxt0nQN33ZtFG1dAFggtLhud9HzaEtm2KgwAPHf9brN0LxJDdXUe3aIV8+KfZILJ4rIU8xeALDpJSjNeLqOzcudesXnpp4knfvy/zaXVoR+udUMP6lu2oQYv5w8S3s64yIEkbpkfggkft7/SYmwn+VAr3z1VP6DuNl8gUI7vzXDnwH7fTKazBniK4CN8Pop7HpwwbEuGumtdKFKSh57EX2DRrx0N7rOU8heSJsTJaeRS/Mi/zPbx71o7dq/efV4WbGfNS1HTvP7PdWjMAbeYsJQ44NEGFcCCPRywD1KS6bsGmaxGxqMtZGjz4hjqTmSYnJ2taTb0XR2yFfW8Lexb/KfjKwR3ZfrloPAecAr+vHvN9m02+eBo/6NC8nBLjqeHLedhKSohfyUkUeI2XZbPWNkuw1CoBvofzm+A3wPoSoVL92vcRnpSpw27cVp7ctQypkDx0Xm2517GGNe7/xaszxjfrOSzJp+DEeInmc3O/W+NbtoGnDu3hpU+K9bItisPN6UUH9Kjpovi2w3LeqYncDYp37hZ4BJwIjObKjOaQdDewtU/8lF+Un0cspFfG4A39NkGwk1bbx8q1Gbu3Q2YMx/cjvAkdcMNtlhCqcy66CAJDpSvurgHUm+m4LYOxrn+Owt7sRl4bFLh0vGGgTzzwktxGGWmr5Nt+RrFPuXXJH8cRJw777SwuCZsGGS9I5uaroVHtlwvfqMZN2s0gOTJufLt0Gc+zlFCcYBmHAskLoBS4fs0VAhljFAR+BeEYec1fduKGEywT6pNDms/xUWgyHsHAjRt6/zhxdX6wAiCq1mLnyCmE02Fd/QM4AiqKHr/ZkRkzj13OpDpUado3bb3GWhNxr2qIh7iAvVJkzR+o+FDmLhMK3w== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8ceba97-9480-4cc5-a891-08da94ecae5c X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:29:08.8284 (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-CrossTenant-UserPrincipalName: NPRXFss9izD2ZpI3lQw+NJO5W9nus/nYI6Tm+aHedmQX6ogPKQHyzx4sND8Z/qtNEYzqSZpQVcmeApNko/cwIA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR04MB8023 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa This patch adds the support for receiving packets via the AF_XDP zero-copy mechanism in the dpaa2-eth driver. The support is available only on the LX2160A SoC and variants because we are relying on the HW capability to associate a buffer pool to a specific queue (QDBIN), only available on newer WRIOP versions. On the control path, the dpaa2_xsk_enable_pool() function is responsible to allocate a buffer pool (BP), setup this new BP to be used only on the requested queue and change the consume function to point to the XSK ZC one. We are forced to call dev_close() in order to change the queue to buffer pool association (dpaa2_xsk_set_bp_per_qdbin) . This also works in our favor since at dev_close() the buffer pools will be drained and at the later dev_open() call they will be again seeded, this time with buffers allocated from the XSK pool if needed. On the data path, a new software annotation type is defined to be used only for the XSK scenarios. This will enable us to pass keep necessary information about a packet buffer between the moment in which it was seeded and when it's received by the driver. In the XSK case, we are keeping the associated xdp_buff. Depending on the action returned by the BPF program, we will do the following: - XDP_PASS: copy the contents of the packet into a brand new skb, recycle the initial buffer. - XDP_TX: just enqueue the same frame descriptor back into the Tx path, the buffer will get automatically released into the initial BP. - XDP_REDIRECT: call xdp_do_redirect() and exit. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei --- MAINTAINERS | 1 + drivers/net/ethernet/freescale/dpaa2/Makefile | 2 +- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 132 ++++--- .../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 37 +- .../net/ethernet/freescale/dpaa2/dpaa2-xsk.c | 325 ++++++++++++++++++ 5 files changed, 451 insertions(+), 46 deletions(-) create mode 100644 drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c diff --git a/MAINTAINERS b/MAINTAINERS index 74036b51911d..594a03e2fa22 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -6289,6 +6289,7 @@ F: drivers/net/ethernet/freescale/dpaa2/Kconfig F: drivers/net/ethernet/freescale/dpaa2/Makefile F: drivers/net/ethernet/freescale/dpaa2/dpaa2-eth* F: drivers/net/ethernet/freescale/dpaa2/dpaa2-mac* +F: drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk* F: drivers/net/ethernet/freescale/dpaa2/dpkg.h F: drivers/net/ethernet/freescale/dpaa2/dpmac* F: drivers/net/ethernet/freescale/dpaa2/dpni* diff --git a/drivers/net/ethernet/freescale/dpaa2/Makefile b/drivers/net/ethernet/freescale/dpaa2/Makefile index 3d9842af7f10..1b05ba8d1cbf 100644 --- a/drivers/net/ethernet/freescale/dpaa2/Makefile +++ b/drivers/net/ethernet/freescale/dpaa2/Makefile @@ -7,7 +7,7 @@ obj-$(CONFIG_FSL_DPAA2_ETH) += fsl-dpaa2-eth.o obj-$(CONFIG_FSL_DPAA2_PTP_CLOCK) += fsl-dpaa2-ptp.o obj-$(CONFIG_FSL_DPAA2_SWITCH) += fsl-dpaa2-switch.o -fsl-dpaa2-eth-objs := dpaa2-eth.o dpaa2-ethtool.o dpni.o dpaa2-mac.o dpmac.o dpaa2-eth-devlink.o +fsl-dpaa2-eth-objs := dpaa2-eth.o dpaa2-ethtool.o dpni.o dpaa2-mac.o dpmac.o dpaa2-eth-devlink.o dpaa2-xsk.o fsl-dpaa2-eth-${CONFIG_FSL_DPAA2_ETH_DCB} += dpaa2-eth-dcb.o fsl-dpaa2-eth-${CONFIG_DEBUG_FS} += dpaa2-eth-debugfs.o fsl-dpaa2-ptp-objs := dpaa2-ptp.o dprtc.o diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 651b3ad489b9..2ce5f5605f69 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -19,6 +19,7 @@ #include #include #include +#include #include "dpaa2-eth.h" @@ -104,8 +105,8 @@ static void dpaa2_ptp_onestep_reg_update_method(struct dpaa2_eth_priv *priv) priv->dpaa2_set_onestep_params_cb = dpaa2_update_ptp_onestep_direct; } -static void *dpaa2_iova_to_virt(struct iommu_domain *domain, - dma_addr_t iova_addr) +void *dpaa2_iova_to_virt(struct iommu_domain *domain, + dma_addr_t iova_addr) { phys_addr_t phys_addr; @@ -279,23 +280,33 @@ static struct sk_buff *dpaa2_eth_build_frag_skb(struct dpaa2_eth_priv *priv, * be released in the pool */ static void dpaa2_eth_free_bufs(struct dpaa2_eth_priv *priv, u64 *buf_array, - int count) + int count, bool xsk_zc) { struct device *dev = priv->net_dev->dev.parent; + struct dpaa2_eth_swa *swa; + struct xdp_buff *xdp_buff; void *vaddr; int i; for (i = 0; i < count; i++) { vaddr = dpaa2_iova_to_virt(priv->iommu_domain, buf_array[i]); - dma_unmap_page(dev, buf_array[i], priv->rx_buf_size, - DMA_BIDIRECTIONAL); - free_pages((unsigned long)vaddr, 0); + + if (!xsk_zc) { + dma_unmap_page(dev, buf_array[i], priv->rx_buf_size, + DMA_BIDIRECTIONAL); + free_pages((unsigned long)vaddr, 0); + } else { + swa = (struct dpaa2_eth_swa *) + (vaddr + DPAA2_ETH_RX_HWA_SIZE); + xdp_buff = swa->xsk.xdp_buff; + xsk_buff_free(xdp_buff); + } } } -static void dpaa2_eth_recycle_buf(struct dpaa2_eth_priv *priv, - struct dpaa2_eth_channel *ch, - dma_addr_t addr) +void dpaa2_eth_recycle_buf(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + dma_addr_t addr) { int retries = 0; int err; @@ -313,7 +324,8 @@ static void dpaa2_eth_recycle_buf(struct dpaa2_eth_priv *priv, } if (err) { - dpaa2_eth_free_bufs(priv, ch->recycled_bufs, ch->recycled_bufs_cnt); + dpaa2_eth_free_bufs(priv, ch->recycled_bufs, + ch->recycled_bufs_cnt, ch->xsk_zc); ch->buf_count -= ch->recycled_bufs_cnt; } @@ -377,10 +389,10 @@ static void dpaa2_eth_xdp_tx_flush(struct dpaa2_eth_priv *priv, fq->xdp_tx_fds.num = 0; } -static void dpaa2_eth_xdp_enqueue(struct dpaa2_eth_priv *priv, - struct dpaa2_eth_channel *ch, - struct dpaa2_fd *fd, - void *buf_start, u16 queue_id) +void dpaa2_eth_xdp_enqueue(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + struct dpaa2_fd *fd, + void *buf_start, u16 queue_id) { struct dpaa2_faead *faead; struct dpaa2_fd *dest_fd; @@ -1651,37 +1663,62 @@ static int dpaa2_eth_set_tx_csum(struct dpaa2_eth_priv *priv, bool enable) static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch) { + struct xdp_buff *xdp_buffs[DPAA2_ETH_BUFS_PER_CMD]; struct device *dev = priv->net_dev->dev.parent; u64 buf_array[DPAA2_ETH_BUFS_PER_CMD]; + struct dpaa2_eth_swa *swa; struct page *page; dma_addr_t addr; int retries = 0; - int i, err; - - for (i = 0; i < DPAA2_ETH_BUFS_PER_CMD; i++) { - /* Allocate buffer visible to WRIOP + skb shared info + - * alignment padding - */ - /* allocate one page for each Rx buffer. WRIOP sees - * the entire page except for a tailroom reserved for - * skb shared info + int i = 0, err; + u32 batch; + + /* Allocate buffers visible to WRIOP */ + if (!ch->xsk_zc) { + for (i = 0; i < DPAA2_ETH_BUFS_PER_CMD; i++) { + /* Also allocate skb shared info and alignment padding */ + /* There is one page for each Rx buffer. WRIOP sees + * the entire page except for a tailroom reserved for + * skb shared info + */ + page = dev_alloc_pages(0); + if (!page) + goto err_alloc; + + addr = dma_map_page(dev, page, 0, priv->rx_buf_size, + DMA_BIDIRECTIONAL); + if (unlikely(dma_mapping_error(dev, addr))) + goto err_map; + + buf_array[i] = addr; + + /* tracing point */ + trace_dpaa2_eth_buf_seed(priv->net_dev, page_address(page), + DPAA2_ETH_RX_BUF_RAW_SIZE, + addr, priv->rx_buf_size, + ch->bp->bpid); + } + } else if (xsk_buff_can_alloc(ch->xsk_pool, DPAA2_ETH_BUFS_PER_CMD)) { + /* Allocate XSK buffers for AF_XDP fast path in batches + * of DPAA2_ETH_BUFS_PER_CMD. Bail out if the UMEM cannot + * provide enough buffers at the moment */ - page = dev_alloc_pages(0); - if (!page) + batch = xsk_buff_alloc_batch(ch->xsk_pool, xdp_buffs, + DPAA2_ETH_BUFS_PER_CMD); + if (!batch) goto err_alloc; - addr = dma_map_page(dev, page, 0, priv->rx_buf_size, - DMA_BIDIRECTIONAL); - if (unlikely(dma_mapping_error(dev, addr))) - goto err_map; + for (i = 0; i < batch; i++) { + swa = (struct dpaa2_eth_swa *)(xdp_buffs[i]->data_hard_start + + DPAA2_ETH_RX_HWA_SIZE); + swa->xsk.xdp_buff = xdp_buffs[i]; - buf_array[i] = addr; + addr = xsk_buff_xdp_get_frame_dma(xdp_buffs[i]); + if (unlikely(dma_mapping_error(dev, addr))) + goto err_map; - /* tracing point */ - trace_dpaa2_eth_buf_seed(priv->net_dev, page_address(page), - DPAA2_ETH_RX_BUF_RAW_SIZE, - addr, priv->rx_buf_size, - ch->bp->bpid); + buf_array[i] = addr; + } } release_bufs: @@ -1697,14 +1734,19 @@ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv, * not much else we can do about it */ if (err) { - dpaa2_eth_free_bufs(priv, buf_array, i); + dpaa2_eth_free_bufs(priv, buf_array, i, ch->xsk_zc); return 0; } return i; err_map: - __free_pages(page, 0); + if (!ch->xsk_zc) { + __free_pages(page, 0); + } else { + for (; i < batch; i++) + xsk_buff_free(xdp_buffs[i]); + } err_alloc: /* If we managed to allocate at least some buffers, * release them to hardware @@ -1759,8 +1801,13 @@ static void dpaa2_eth_seed_pools(struct dpaa2_eth_priv *priv) static void dpaa2_eth_drain_bufs(struct dpaa2_eth_priv *priv, int bpid, int count) { u64 buf_array[DPAA2_ETH_BUFS_PER_CMD]; + bool xsk_zc = false; int retries = 0; - int ret; + int i, ret; + + for (i = 0; i < priv->num_channels; i++) + if (priv->channel[i]->bp->bpid == bpid) + xsk_zc = priv->channel[i]->xsk_zc; do { ret = dpaa2_io_service_acquire(NULL, bpid, buf_array, count); @@ -1771,7 +1818,7 @@ static void dpaa2_eth_drain_bufs(struct dpaa2_eth_priv *priv, int bpid, int coun netdev_err(priv->net_dev, "dpaa2_io_service_acquire() failed\n"); return; } - dpaa2_eth_free_bufs(priv, buf_array, ret); + dpaa2_eth_free_bufs(priv, buf_array, ret, xsk_zc); retries = 0; } while (ret); } @@ -2689,6 +2736,8 @@ static int dpaa2_eth_xdp(struct net_device *dev, struct netdev_bpf *xdp) switch (xdp->command) { case XDP_SETUP_PROG: return dpaa2_eth_setup_xdp(dev, xdp->prog); + case XDP_SETUP_XSK_POOL: + return dpaa2_xsk_setup_pool(dev, xdp->xsk.pool, xdp->xsk.queue_id); default: return -EINVAL; } @@ -2919,6 +2968,7 @@ static const struct net_device_ops dpaa2_eth_ops = { .ndo_change_mtu = dpaa2_eth_change_mtu, .ndo_bpf = dpaa2_eth_xdp, .ndo_xdp_xmit = dpaa2_eth_xdp_xmit, + .ndo_xsk_wakeup = dpaa2_xsk_wakeup, .ndo_setup_tc = dpaa2_eth_setup_tc, .ndo_vlan_rx_add_vid = dpaa2_eth_rx_add_vid, .ndo_vlan_rx_kill_vid = dpaa2_eth_rx_kill_vid @@ -3328,7 +3378,7 @@ static int dpaa2_eth_setup_default_dpbp(struct dpaa2_eth_priv *priv) return 0; } -static void dpaa2_eth_free_dpbp(struct dpaa2_eth_priv *priv, struct dpaa2_eth_bp *bp) +void dpaa2_eth_free_dpbp(struct dpaa2_eth_priv *priv, struct dpaa2_eth_bp *bp) { int idx_bp; @@ -4241,8 +4291,8 @@ static int dpaa2_eth_bind_dpni(struct dpaa2_eth_priv *priv) { struct dpaa2_eth_bp *bp = priv->bp[DPAA2_ETH_DEFAULT_BP_IDX]; struct net_device *net_dev = priv->net_dev; + struct dpni_pools_cfg pools_params = { 0 }; struct device *dev = net_dev->dev.parent; - struct dpni_pools_cfg pools_params; struct dpni_error_cfg err_cfg; int err = 0; int i; diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 8966470c412f..4ae1adbb4ab8 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -130,6 +130,7 @@ enum dpaa2_eth_swa_type { DPAA2_ETH_SWA_SINGLE, DPAA2_ETH_SWA_SG, DPAA2_ETH_SWA_XDP, + DPAA2_ETH_SWA_XSK, DPAA2_ETH_SWA_SW_TSO, }; @@ -151,6 +152,9 @@ struct dpaa2_eth_swa { int dma_size; struct xdp_frame *xdpf; } xdp; + struct { + struct xdp_buff *xdp_buff; + } xsk; struct { struct sk_buff *skb; int num_sg; @@ -429,12 +433,19 @@ enum dpaa2_eth_fq_type { }; struct dpaa2_eth_priv; +struct dpaa2_eth_channel; +struct dpaa2_eth_fq; struct dpaa2_eth_xdp_fds { struct dpaa2_fd fds[DEV_MAP_BULK_SIZE]; ssize_t num; }; +typedef void dpaa2_eth_consume_cb_t(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, + struct dpaa2_eth_fq *fq); + struct dpaa2_eth_fq { u32 fqid; u32 tx_qdbin; @@ -447,10 +458,7 @@ struct dpaa2_eth_fq { struct dpaa2_eth_channel *channel; enum dpaa2_eth_fq_type type; - void (*consume)(struct dpaa2_eth_priv *priv, - struct dpaa2_eth_channel *ch, - const struct dpaa2_fd *fd, - struct dpaa2_eth_fq *fq); + dpaa2_eth_consume_cb_t *consume; struct dpaa2_eth_fq_stats stats; struct dpaa2_eth_xdp_fds xdp_redirect_fds; @@ -486,6 +494,8 @@ struct dpaa2_eth_channel { u64 recycled_bufs[DPAA2_ETH_BUFS_PER_CMD]; int recycled_bufs_cnt; + bool xsk_zc; + struct xsk_buff_pool *xsk_pool; struct dpaa2_eth_bp *bp; }; @@ -804,4 +814,23 @@ void dpaa2_eth_rx(struct dpaa2_eth_priv *priv, struct dpaa2_eth_channel *ch, const struct dpaa2_fd *fd, struct dpaa2_eth_fq *fq); + +struct dpaa2_eth_bp *dpaa2_eth_allocate_dpbp(struct dpaa2_eth_priv *priv); +void dpaa2_eth_free_dpbp(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_bp *bp); + +void *dpaa2_iova_to_virt(struct iommu_domain *domain, dma_addr_t iova_addr); +void dpaa2_eth_recycle_buf(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + dma_addr_t addr); + +void dpaa2_eth_xdp_enqueue(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + struct dpaa2_fd *fd, + void *buf_start, u16 queue_id); + +int dpaa2_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags); +int dpaa2_xsk_setup_pool(struct net_device *dev, struct xsk_buff_pool *pool, + u16 qid); + #endif /* __DPAA2_H */ diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c new file mode 100644 index 000000000000..a0f6ea1c5c9f --- /dev/null +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c @@ -0,0 +1,325 @@ +// SPDX-License-Identifier: (GPL-2.0+ OR BSD-3-Clause) +/* Copyright 2022 NXP + */ +#include +#include +#include +#include +#include + +#include "dpaa2-eth.h" + +static void dpaa2_eth_setup_consume_func(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + enum dpaa2_eth_fq_type type, + dpaa2_eth_consume_cb_t *consume) +{ + struct dpaa2_eth_fq *fq; + int i; + + for (i = 0; i < priv->num_fqs; i++) { + fq = &priv->fq[i]; + + if (fq->type != type) + continue; + if (fq->channel != ch) + continue; + + fq->consume = consume; + } +} + +static u32 dpaa2_xsk_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_buff; + struct dpaa2_eth_swa *swa; + u32 xdp_act = XDP_PASS; + int err; + + xdp_prog = READ_ONCE(ch->xdp.prog); + if (!xdp_prog) + goto out; + + swa = (struct dpaa2_eth_swa *)(vaddr + DPAA2_ETH_RX_HWA_SIZE + + ch->xsk_pool->umem->headroom); + xdp_buff = swa->xsk.xdp_buff; + + xdp_buff->data_hard_start = vaddr; + xdp_buff->data = vaddr + dpaa2_fd_get_offset(fd); + xdp_buff->data_end = xdp_buff->data + dpaa2_fd_get_len(fd); + xdp_set_data_meta_invalid(xdp_buff); + xdp_buff->rxq = &ch->xdp_rxq; + + xsk_buff_dma_sync_for_cpu(xdp_buff, ch->xsk_pool); + xdp_act = bpf_prog_run_xdp(xdp_prog, xdp_buff); + + /* xdp.data pointer may have changed */ + dpaa2_fd_set_offset(fd, xdp_buff->data - vaddr); + dpaa2_fd_set_len(fd, xdp_buff->data_end - xdp_buff->data); + + if (likely(xdp_act == XDP_REDIRECT)) { + err = xdp_do_redirect(priv->net_dev, xdp_buff, xdp_prog); + if (unlikely(err)) { + ch->stats.xdp_drop++; + dpaa2_eth_recycle_buf(priv, ch, addr); + } else { + ch->buf_count--; + ch->stats.xdp_redirect++; + } + + goto xdp_redir; + } + + switch (xdp_act) { + case XDP_PASS: + break; + case XDP_TX: + dpaa2_eth_xdp_enqueue(priv, ch, fd, vaddr, rx_fq->flowid); + break; + default: + bpf_warn_invalid_xdp_action(priv->net_dev, xdp_prog, xdp_act); + fallthrough; + case XDP_ABORTED: + trace_xdp_exception(priv->net_dev, xdp_prog, xdp_act); + fallthrough; + case XDP_DROP: + dpaa2_eth_recycle_buf(priv, ch, addr); + ch->stats.xdp_drop++; + break; + } + +xdp_redir: + ch->xdp.res |= xdp_act; +out: + return xdp_act; +} + +/* Rx frame processing routine for the AF_XDP fast path */ +static void dpaa2_xsk_rx(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + const struct dpaa2_fd *fd, + struct dpaa2_eth_fq *fq) +{ + dma_addr_t addr = dpaa2_fd_get_addr(fd); + u8 fd_format = dpaa2_fd_get_format(fd); + struct rtnl_link_stats64 *percpu_stats; + u32 fd_length = dpaa2_fd_get_len(fd); + struct sk_buff *skb; + void *vaddr; + u32 xdp_act; + + vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr); + percpu_stats = this_cpu_ptr(priv->percpu_stats); + + if (fd_format != dpaa2_fd_single) { + WARN_ON(priv->xdp_prog); + /* AF_XDP doesn't support any other formats */ + goto err_frame_format; + } + + xdp_act = dpaa2_xsk_run_xdp(priv, ch, fq, (struct dpaa2_fd *)fd, vaddr); + if (xdp_act != XDP_PASS) { + percpu_stats->rx_packets++; + percpu_stats->rx_bytes += dpaa2_fd_get_len(fd); + return; + } + + /* Build skb */ + skb = dpaa2_eth_alloc_skb(priv, ch, fd, fd_length, vaddr); + if (!skb) + /* Nothing else we can do, recycle the buffer and drop the frame */ + goto err_alloc_skb; + + /* Send the skb to the Linux networking stack */ + dpaa2_eth_receive_skb(priv, ch, fd, vaddr, fq, percpu_stats, skb); + + return; + +err_alloc_skb: + dpaa2_eth_recycle_buf(priv, ch, addr); +err_frame_format: + percpu_stats->rx_dropped++; +} + +static void dpaa2_xsk_set_bp_per_qdbin(struct dpaa2_eth_priv *priv, + struct dpni_pools_cfg *pools_params) +{ + int curr_bp = 0, i, j; + + pools_params->pool_options = DPNI_POOL_ASSOC_QDBIN; + for (i = 0; i < priv->num_bps; i++) { + for (j = 0; j < priv->num_channels; j++) + if (priv->bp[i] == priv->channel[j]->bp) + pools_params->pools[curr_bp].priority_mask |= (1 << j); + if (!pools_params->pools[curr_bp].priority_mask) + continue; + + pools_params->pools[curr_bp].dpbp_id = priv->bp[i]->bpid; + pools_params->pools[curr_bp].buffer_size = priv->rx_buf_size; + pools_params->pools[curr_bp++].backup_pool = 0; + } + pools_params->num_dpbp = curr_bp; +} + +static int dpaa2_xsk_disable_pool(struct net_device *dev, u16 qid) +{ + struct xsk_buff_pool *pool = xsk_get_pool_from_qid(dev, qid); + struct dpaa2_eth_priv *priv = netdev_priv(dev); + struct dpni_pools_cfg pools_params = { 0 }; + struct dpaa2_eth_channel *ch; + int err; + bool up; + + ch = priv->channel[qid]; + if (!ch->xsk_pool) + return -EINVAL; + + up = netif_running(dev); + if (up) + dev_close(dev); + + xsk_pool_dma_unmap(pool, 0); + err = xdp_rxq_info_reg_mem_model(&ch->xdp_rxq, + MEM_TYPE_PAGE_ORDER0, NULL); + if (err) + netdev_err(dev, "xsk_rxq_info_reg_mem_model() failed (err = %d)\n", + err); + + dpaa2_eth_free_dpbp(priv, ch->bp); + + ch->xsk_zc = false; + ch->xsk_pool = NULL; + ch->bp = priv->bp[DPAA2_ETH_DEFAULT_BP_IDX]; + + dpaa2_eth_setup_consume_func(priv, ch, DPAA2_RX_FQ, dpaa2_eth_rx); + + dpaa2_xsk_set_bp_per_qdbin(priv, &pools_params); + err = dpni_set_pools(priv->mc_io, 0, priv->mc_token, &pools_params); + if (err) + netdev_err(dev, "dpni_set_pools() failed\n"); + + if (up) { + err = dev_open(dev, NULL); + if (err) + return err; + } + + return 0; +} + +static int dpaa2_xsk_enable_pool(struct net_device *dev, + struct xsk_buff_pool *pool, + u16 qid) +{ + struct dpaa2_eth_priv *priv = netdev_priv(dev); + struct dpni_pools_cfg pools_params = { 0 }; + struct dpaa2_eth_channel *ch; + int err, err2; + bool up; + + if (priv->dpni_attrs.wriop_version < DPAA2_WRIOP_VERSION(3, 0, 0)) { + netdev_err(dev, "AF_XDP zero-copy not supported on devices <= WRIOP(3, 0, 0)\n"); + return -EOPNOTSUPP; + } + + if (priv->dpni_attrs.num_queues > 8) { + netdev_err(dev, "AF_XDP zero-copy not supported on DPNI with more then 8 queues\n"); + return -EOPNOTSUPP; + } + + up = netif_running(dev); + if (up) + dev_close(dev); + + err = xsk_pool_dma_map(pool, priv->net_dev->dev.parent, 0); + if (err) { + netdev_err(dev, "xsk_pool_dma_map() failed (err = %d)\n", + err); + goto err_dma_unmap; + } + + ch = priv->channel[qid]; + err = xdp_rxq_info_reg_mem_model(&ch->xdp_rxq, MEM_TYPE_XSK_BUFF_POOL, NULL); + if (err) { + netdev_err(dev, "xdp_rxq_info_reg_mem_model() failed (err = %d)\n", err); + goto err_mem_model; + } + xsk_pool_set_rxq_info(pool, &ch->xdp_rxq); + + priv->bp[priv->num_bps] = dpaa2_eth_allocate_dpbp(priv); + if (IS_ERR(priv->bp[priv->num_bps])) { + err = PTR_ERR(priv->bp[priv->num_bps]); + goto err_bp_alloc; + } + ch->xsk_zc = true; + ch->xsk_pool = pool; + ch->bp = priv->bp[priv->num_bps++]; + + dpaa2_eth_setup_consume_func(priv, ch, DPAA2_RX_FQ, dpaa2_xsk_rx); + + dpaa2_xsk_set_bp_per_qdbin(priv, &pools_params); + err = dpni_set_pools(priv->mc_io, 0, priv->mc_token, &pools_params); + if (err) { + netdev_err(dev, "dpni_set_pools() failed\n"); + goto err_set_pools; + } + + if (up) { + err = dev_open(dev, NULL); + if (err) + return err; + } + + return 0; + +err_set_pools: + err2 = dpaa2_xsk_disable_pool(dev, qid); + if (err2) + netdev_err(dev, "dpaa2_xsk_disable_pool() failed %d\n", err2); +err_bp_alloc: + err2 = xdp_rxq_info_reg_mem_model(&priv->channel[qid]->xdp_rxq, + MEM_TYPE_PAGE_ORDER0, NULL); + if (err2) + netdev_err(dev, "xsk_rxq_info_reg_mem_model() failed with %d)\n", err2); +err_mem_model: + xsk_pool_dma_unmap(pool, 0); +err_dma_unmap: + if (up) + dev_open(dev, NULL); + + return err; +} + +int dpaa2_xsk_setup_pool(struct net_device *dev, struct xsk_buff_pool *pool, u16 qid) +{ + return pool ? dpaa2_xsk_enable_pool(dev, pool, qid) : + dpaa2_xsk_disable_pool(dev, qid); +} + +int dpaa2_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags) +{ + struct dpaa2_eth_priv *priv = netdev_priv(dev); + struct dpaa2_eth_channel *ch = priv->channel[qid]; + + if (!priv->link_state.up) + return -ENETDOWN; + + if (!priv->xdp_prog) + return -EINVAL; + + if (!ch->xsk_zc) + return -EINVAL; + + /* We do not have access to a per channel SW interrupt, so instead we + * schedule a NAPI instance. + */ + if (!napi_if_scheduled_mark_missed(&ch->napi)) + napi_schedule(&ch->napi); + + return 0; +} From patchwork Mon Sep 12 18:28:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974026 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8D19C6FA89 for ; Mon, 12 Sep 2022 18:37:40 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230517AbiILShi (ORCPT ); Mon, 12 Sep 2022 14:37:38 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49110 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230523AbiILShS (ORCPT ); Mon, 12 Sep 2022 14:37:18 -0400 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on0614.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::614]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 70A9FE00F for ; Mon, 12 Sep 2022 11:34:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k1SKvh+q++UxG1fAXFH51TEqzvBdrw5chiHPGY8ZhVDA4bzcKfkOxm4pLKtWJ2AP+Zk9GIhI1wO3nAZlPp77RLdRBkgIROkRNle9e8x4ORcWgtqN58s/Jb7Y2DDzhxCwE5IU6yFL6VTQaGijP1nfOVtYnA+e7AIjpGN36TMfl4ege61AWgs3R0qR5XwLsUWe34g/FLQoSX6VfLRsq9uNjCiHo4YtWR9kgt9yhyjAlJ6p05zGzTAw9BjchdXiTjkh1w+t61/XKX/Da0g8Oxr6xwfbfWufFoCOgd9Q9sqpZzoFALMTpFvc5+k2CwRLrPugglXgjuiTUGmj1uzUY26E1A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=UtkwG/QzYywr7ZllWZDBd2cxuvJ2AgZ0Aby33GsQd3w=; b=GTXdr96ke2937b3vN47wJbxlaicz+AvdXfYvun7axq/wMRDVxrShGT1pPnzt/fqgxoVNiECpfPoHu5expW/RWW1vz6o4WtsjFzaOBjgOH4duBEILEsmXEirIDpBKMhgoCqaUk58kMVrIgqaODc8JylJ7RB7pVr8bWc1yWgP5joxaYEvK1SG6AD2fOSCWmnLSd8ASO2cIxPjsYnOKLlV+u29NhF3Ezl3lYDE1XCACl7T7AbTEMvBVcLDCau5zXq31HbXeloPv9tLhkoYMR1ssCjunrWZ/kMupcZL4jhuXPybXma+3p0Ld6GpkNpFqT00CYeR9NR9/Mi5pZD0/LqePpg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=UtkwG/QzYywr7ZllWZDBd2cxuvJ2AgZ0Aby33GsQd3w=; b=HqEnRjhyWl6fwe45JC9dBDPKMrCsVZn33a+49BecSyF/bc8lMldNUA7fiaG3URt5Zb7Mwk68NaXKziUqw/TzzVwi56Q2qmz2AlExjo34ikpslmHxvhkfMicUriObQc15G1xKwFbTkIBX5Z0SWrqHOBbwt7CF+B7N61h7mG6fSsw= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by DU0PR04MB9494.eurprd04.prod.outlook.com (2603:10a6:10:32e::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Mon, 12 Sep 2022 18:29:11 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:29:10 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 11/12] net: dpaa2-eth: AF_XDP TX zero copy support Date: Mon, 12 Sep 2022 21:28:28 +0300 Message-Id: <20220912182829.160715-12-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|DU0PR04MB9494:EE_ X-MS-Office365-Filtering-Correlation-Id: 9f4db480-b566-4e0d-32b9-08da94ecaf78 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WBYUCuIVFhO9Ez39SmNDCJY5NMj/J9YKNxtP5R+deOR/oc8pemNYP6bbNlthy0SiYSMbsGbIttl4f0cYBlWkf0DOB91AK5SShiSZL6kKR/ifR/WWoM7Xgdp+FZN5YV73B8Z/v7vXiATL3Sh6hLas7uPzxxluSkltZDuobrJbVJSc7YMFyxj0M2AoTaqxmSBeF6uGDNBHxHA5Yr4B/FEhLhbkgI/Ow52W6YeYKBU9cfsSmN7dnZLwTtgAjc1nNrp4QVrCwNGEaT1HHvtTwHT+cqIodEa79rHqRVhRJwQWswzv6hxhu2met6YJw+MVH6EzcbhOWusMbq/8fgZ8KUaAmYO3JzZxl5U1vy7e4KN6n4A2Uti/iadeMcbprnAzkQs0IvznA3KUrsVLOcMqfVAlg0g5nyjD4bw/BTlX2jtFNTMoqMySufVnW6PQ6gniBL24VB7Ah2wLZzif6RnCQD85ZcXqq7kqeutybF3dAKqhztrzrjVIuuN9Whp/2AQBZfbgAp/y2K9JrWWZ5hufvpCOfFK8soWR4vnmxbY8yc2AWeTbM6jdMGWRdPSyRBvMoEH4U3ZAfjyO6YprSlc4+yhdwaEXiqWF+UZrtSTZQ/FeUQEA84asDUdiXH77ZFfSInHBLYJLQG+DiO53IjahNx5lRa1aC/qWzF294X0RQxAMFmR6RQ1uBmlKTtrhcFZsKajkOGHX0lC5yHYV3Y/GDYIkaRN4eaWd6aYrNzomBZIySaXsPDPEH4Hv4hu7IpJo2Spx7qa7RqUExaVIT6DtLeyVFQ== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(366004)(376002)(136003)(346002)(451199015)(8676002)(6666004)(8936002)(30864003)(38100700002)(2906002)(2616005)(186003)(66476007)(4326008)(66556008)(44832011)(26005)(36756003)(41300700001)(86362001)(6486002)(83380400001)(6512007)(66946007)(1076003)(52116002)(478600001)(5660300002)(38350700002)(6506007)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: zrwPnrdVy0aJd9Zl04j9BBziWpNoB1Zn4YtFXykAyiA0YZ6XSuZ40eOABMpsf3TqS+6JemfL94WrVCrI9ozu6+9I8WxADDkBabe/yth7W0p37B4zY5I+4RD4o/K2V+RLurJFg4Z/Pna7xBTVUM27JzIhXZ8LRpiYL7iESDSOa/seVHVn7rcSj7na4UVUiX5s8d8dUmwXHwZevV3o0MsW+rr2QGm9HrMrZgSJ+Aknv5oIPrqNNAGnfyPJUj21gFFP1gN3Q3OCG5L6gnGBwrEbEaG75m7uixLVYjXN4s7Iv8rYi23u4wVR7QrhgYz6b9W3Y6uMve/sYnn7YPEzRqRWLCf7kgcF3ccmoOEmIlHrq36cIumJkcZAOInlwgqyeyYS/udfJ2LZLS4kDxFpPUCx4jOtJgoIENu8CDHJujYKxvNOt4UvMKAP+Y/jnjE+AZHc1xEFzNLfctjlRlsWTmLC3OHEixv7mplci+sIClaLI/6NXhZ6CYSotBoNBTF+AGWtTIoc03Ju1W4zCLytbZkZ1fc2VB2IItxWmAEmFiXgAiQ5lq7KxKHLd1XLct+Gi82+LwxR81cEbwN1ejh+AchuFA6QH55t+Hp+zj7mLg8NLVQt+Hie5O9PHRheDUSoYXPKY2ixMLh2DcUhmuE867uLn0m2+00Cy35uhuLTqt08GKpqJe723hke5hzbXbMs8AbbQ34YN862liLOI0o3lPJd6tqg5+EpoftNhZ4nahhTo/Xnbrxoh12Zxhm2iIKE0gag7yR7sohamV7GgA0tbNzr1pChf5Q7l7LsfBLSn+nRgsAnwWCFjwx6NOcV5lbzFWcApy5AIMJrXiXLOw4sfCOZpg+/avvrxX2d+psDPAaGrCXHnSOs4r2r1yL4EnoJ2loG/jfbsvHJWXSB2FR10NcRhS0sefm7MLATWAeXAu5EjF6kqf5kE/vWrN25zUyEUzdv1KQrUXghPV+Uxv7bRNzyZxPCygbW4Mb06LrwIhj9Iv3AFNCiUzwia1SkO+NE0u8M8Y8y8EOimYq83OBluxeyOPRQ7aotKEMgJpnJmFiiZrTsJQb5KLaPkEu1bOGVtN1ws7hOIEoAJD06Yld+FwGQS3IwofJZ0R6/jRWxqL+UVowj2hv2rI14kFCZbNlLALLteg2fjlVKeSwpMBK3RghSMgzDWXLFe+otoxsrcKZyhq5SzY5dt0dRQXlQAFcqoC265H6wUYAOx7OymVJb5u4dznyfrZSzbVutxPDqvnH151YHcticJGk85mv6fOZghhM+O3RE/wDZpw9/X+6BADSDf4UY1IjOrODdRG15ltiSxV7pFohzYI12OALJOjEjB1wwyEZaF/IsLN20dBlLgcoUJbOqZmv0pCi7v0Dj1pWNTJ4CrajPI+O6AyR4UADql7kV0GJWRXlM+VO9J5Ltc5kcfhCo7ppzg4o4DVWfBgS0GlWI8sBLGTSzxS2WJKfcMhm6PLl+WUop4KeHHwrlPtU7mgR0C9sLOa61ICu/EWPMHPq/aeoqjpYuNoCCAKN+vVpkFMqNiFDujhLeDHgf6rP9twaGUnn7V5hdsYlrhtjmQn36uDg8us63TzN/zk/TMoF7baFnZI2i2phbSDXFDgK0lw== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9f4db480-b566-4e0d-32b9-08da94ecaf78 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:29:10.5147 (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-CrossTenant-UserPrincipalName: LuShSao5G4tZ9J5qaMLhJFrsHXEjx1968JLRre1snmfVRhhSLjmnmFlL74gYR4GWX5TB3e4hZCMLrirxeR/2jg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9494 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa Add support in dpaa2-eth for packet processing on the Tx path using AF_XDP zero copy mode. The newly added dpaa2_xsk_tx() function will handle enqueuing AF_XDP Tx packets into the appropriate queue and update any necessary statistics. On a more detailed note, the dpaa2_xsk_tx_build_fd() function handles creating a Scatter-Gather frame descriptor with only one data buffer. This is needed because otherwise we would need to impose a headroom in the Tx buffer to store our software annotation structures. This tactic is already used on the normal data path of the dpaa2-eth driver, thus we are reusing the dpaa2_eth_sgt_get/dpaa2_eth_sgt_recycle functions in order to allocate and recycle the Scatter-Gather table buffers. In case we have reached the maximum number of Tx XSK packets to be sent in a NAPI cycle, we'll exit the dpaa2_eth_poll() and hope to be rescheduled again. On the XSK Tx confirmation path, we are just unmapping the SGT buffer and recycle it for further use. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei --- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 48 +++++-- .../net/ethernet/freescale/dpaa2/dpaa2-eth.h | 22 +++- .../net/ethernet/freescale/dpaa2/dpaa2-xsk.c | 123 ++++++++++++++++++ 3 files changed, 183 insertions(+), 10 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index 2ce5f5605f69..ccfec7986ba1 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -857,7 +857,7 @@ static void dpaa2_eth_enable_tx_tstamp(struct dpaa2_eth_priv *priv, } } -static void *dpaa2_eth_sgt_get(struct dpaa2_eth_priv *priv) +void *dpaa2_eth_sgt_get(struct dpaa2_eth_priv *priv) { struct dpaa2_eth_sgt_cache *sgt_cache; void *sgt_buf = NULL; @@ -879,7 +879,7 @@ static void *dpaa2_eth_sgt_get(struct dpaa2_eth_priv *priv) return sgt_buf; } -static void dpaa2_eth_sgt_recycle(struct dpaa2_eth_priv *priv, void *sgt_buf) +void dpaa2_eth_sgt_recycle(struct dpaa2_eth_priv *priv, void *sgt_buf) { struct dpaa2_eth_sgt_cache *sgt_cache; @@ -1114,9 +1114,10 @@ static int dpaa2_eth_build_single_fd(struct dpaa2_eth_priv *priv, * This can be called either from dpaa2_eth_tx_conf() or on the error path of * dpaa2_eth_tx(). */ -static void dpaa2_eth_free_tx_fd(struct dpaa2_eth_priv *priv, - struct dpaa2_eth_fq *fq, - const struct dpaa2_fd *fd, bool in_napi) +void dpaa2_eth_free_tx_fd(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + struct dpaa2_eth_fq *fq, + const struct dpaa2_fd *fd, bool in_napi) { struct device *dev = priv->net_dev->dev.parent; dma_addr_t fd_addr, sg_addr; @@ -1183,6 +1184,10 @@ static void dpaa2_eth_free_tx_fd(struct dpaa2_eth_priv *priv, if (!swa->tso.is_last_fd) should_free_skb = 0; + } else if (swa->type == DPAA2_ETH_SWA_XSK) { + /* Unmap the SGT Buffer */ + dma_unmap_single(dev, fd_addr, swa->xsk.sgt_size, + DMA_BIDIRECTIONAL); } else { skb = swa->single.skb; @@ -1200,6 +1205,12 @@ static void dpaa2_eth_free_tx_fd(struct dpaa2_eth_priv *priv, return; } + if (swa->type == DPAA2_ETH_SWA_XSK) { + ch->xsk_tx_pkts_sent++; + dpaa2_eth_sgt_recycle(priv, buffer_start); + return; + } + if (swa->type != DPAA2_ETH_SWA_XDP && in_napi) { fq->dq_frames++; fq->dq_bytes += fd_len; @@ -1374,7 +1385,7 @@ static int dpaa2_eth_build_gso_fd(struct dpaa2_eth_priv *priv, err_sgt_get: /* Free all the other FDs that were already fully created */ for (i = 0; i < index; i++) - dpaa2_eth_free_tx_fd(priv, NULL, &fd_start[i], false); + dpaa2_eth_free_tx_fd(priv, NULL, NULL, &fd_start[i], false); return err; } @@ -1490,7 +1501,7 @@ static netdev_tx_t __dpaa2_eth_tx(struct sk_buff *skb, if (unlikely(err < 0)) { percpu_stats->tx_errors++; /* Clean up everything, including freeing the skb */ - dpaa2_eth_free_tx_fd(priv, fq, fd, false); + dpaa2_eth_free_tx_fd(priv, NULL, fq, fd, false); netdev_tx_completed_queue(nq, 1, fd_len); } else { percpu_stats->tx_packets += total_enqueued; @@ -1583,7 +1594,7 @@ static void dpaa2_eth_tx_conf(struct dpaa2_eth_priv *priv, /* Check frame errors in the FD field */ fd_errors = dpaa2_fd_get_ctrl(fd) & DPAA2_FD_TX_ERR_MASK; - dpaa2_eth_free_tx_fd(priv, fq, fd, true); + dpaa2_eth_free_tx_fd(priv, ch, fq, fd, true); if (likely(!fd_errors)) return; @@ -1923,6 +1934,7 @@ static int dpaa2_eth_poll(struct napi_struct *napi, int budget) struct dpaa2_eth_fq *fq, *txc_fq = NULL; struct netdev_queue *nq; int store_cleaned, work_done; + bool work_done_zc = false; struct list_head rx_list; int retries = 0; u16 flowid; @@ -1935,6 +1947,15 @@ static int dpaa2_eth_poll(struct napi_struct *napi, int budget) INIT_LIST_HEAD(&rx_list); ch->rx_list = &rx_list; + if (ch->xsk_zc) { + work_done_zc = dpaa2_xsk_tx(priv, ch); + /* If we reached the XSK Tx per NAPI threshold, we're done */ + if (work_done_zc) { + work_done = budget; + goto out; + } + } + do { err = dpaa2_eth_pull_channel(ch); if (unlikely(err)) @@ -1987,6 +2008,11 @@ static int dpaa2_eth_poll(struct napi_struct *napi, int budget) out: netif_receive_skb_list(ch->rx_list); + if (ch->xsk_tx_pkts_sent) { + xsk_tx_completed(ch->xsk_pool, ch->xsk_tx_pkts_sent); + ch->xsk_tx_pkts_sent = 0; + } + if (txc_fq && txc_fq->dq_frames) { nq = netdev_get_tx_queue(priv->net_dev, txc_fq->flowid); netdev_tx_completed_queue(nq, txc_fq->dq_frames, @@ -2983,7 +3009,11 @@ static void dpaa2_eth_cdan_cb(struct dpaa2_io_notification_ctx *ctx) /* Update NAPI statistics */ ch->stats.cdan++; - napi_schedule(&ch->napi); + /* NAPI can also be scheduled from the AF_XDP Tx path. Mark a missed + * so that it can be rescheduled again. + */ + if (!napi_if_scheduled_mark_missed(&ch->napi)) + napi_schedule(&ch->napi); } /* Allocate and configure a DPCON object */ diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h index 4ae1adbb4ab8..88e3ed34a3cd 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.h @@ -53,6 +53,12 @@ */ #define DPAA2_ETH_TXCONF_PER_NAPI 256 +/* Maximum number of Tx frames to be processed in a single NAPI + * call when AF_XDP is running. Bind it to DPAA2_ETH_TXCONF_PER_NAPI + * to maximize the throughput. + */ +#define DPAA2_ETH_TX_ZC_PER_NAPI DPAA2_ETH_TXCONF_PER_NAPI + /* Buffer qouta per channel. We want to keep in check number of ingress frames * in flight: for small sized frames, congestion group taildrop may kick in * first; for large sizes, Rx FQ taildrop threshold will ensure only a @@ -154,6 +160,7 @@ struct dpaa2_eth_swa { } xdp; struct { struct xdp_buff *xdp_buff; + int sgt_size; } xsk; struct { struct sk_buff *skb; @@ -495,6 +502,7 @@ struct dpaa2_eth_channel { int recycled_bufs_cnt; bool xsk_zc; + int xsk_tx_pkts_sent; struct xsk_buff_pool *xsk_pool; struct dpaa2_eth_bp *bp; }; @@ -531,7 +539,7 @@ struct dpaa2_eth_trap_data { #define DPAA2_ETH_DEFAULT_COPYBREAK 512 -#define DPAA2_ETH_ENQUEUE_MAX_FDS 200 +#define DPAA2_ETH_ENQUEUE_MAX_FDS 256 struct dpaa2_eth_fds { struct dpaa2_fd array[DPAA2_ETH_ENQUEUE_MAX_FDS]; }; @@ -833,4 +841,16 @@ int dpaa2_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags); int dpaa2_xsk_setup_pool(struct net_device *dev, struct xsk_buff_pool *pool, u16 qid); +void dpaa2_eth_free_tx_fd(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + struct dpaa2_eth_fq *fq, + const struct dpaa2_fd *fd, bool in_napi); +bool dpaa2_xsk_tx(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch); + +/* SGT (Scatter-Gather Table) cache management */ +void *dpaa2_eth_sgt_get(struct dpaa2_eth_priv *priv); + +void dpaa2_eth_sgt_recycle(struct dpaa2_eth_priv *priv, void *sgt_buf); + #endif /* __DPAA2_H */ diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c index a0f6ea1c5c9f..0a8cbd3fa837 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c @@ -194,6 +194,7 @@ static int dpaa2_xsk_disable_pool(struct net_device *dev, u16 qid) ch->xsk_zc = false; ch->xsk_pool = NULL; + ch->xsk_tx_pkts_sent = 0; ch->bp = priv->bp[DPAA2_ETH_DEFAULT_BP_IDX]; dpaa2_eth_setup_consume_func(priv, ch, DPAA2_RX_FQ, dpaa2_eth_rx); @@ -323,3 +324,125 @@ int dpaa2_xsk_wakeup(struct net_device *dev, u32 qid, u32 flags) return 0; } + +static int dpaa2_xsk_tx_build_fd(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch, + struct dpaa2_fd *fd, + struct xdp_desc *xdp_desc) +{ + struct device *dev = priv->net_dev->dev.parent; + struct dpaa2_sg_entry *sgt; + struct dpaa2_eth_swa *swa; + void *sgt_buf = NULL; + dma_addr_t sgt_addr; + int sgt_buf_size; + dma_addr_t addr; + int err = 0; + + /* Prepare the HW SGT structure */ + sgt_buf_size = priv->tx_data_offset + sizeof(struct dpaa2_sg_entry); + sgt_buf = dpaa2_eth_sgt_get(priv); + if (unlikely(!sgt_buf)) + return -ENOMEM; + sgt = (struct dpaa2_sg_entry *)(sgt_buf + priv->tx_data_offset); + + /* Get the address of the XSK Tx buffer */ + addr = xsk_buff_raw_get_dma(ch->xsk_pool, xdp_desc->addr); + xsk_buff_raw_dma_sync_for_device(ch->xsk_pool, addr, xdp_desc->len); + + /* Fill in the HW SGT structure */ + dpaa2_sg_set_addr(sgt, addr); + dpaa2_sg_set_len(sgt, xdp_desc->len); + dpaa2_sg_set_final(sgt, true); + + /* Store the necessary info in the SGT buffer */ + swa = (struct dpaa2_eth_swa *)sgt_buf; + swa->type = DPAA2_ETH_SWA_XSK; + swa->xsk.sgt_size = sgt_buf_size; + + /* Separately map the SGT buffer */ + sgt_addr = dma_map_single(dev, sgt_buf, sgt_buf_size, DMA_BIDIRECTIONAL); + if (unlikely(dma_mapping_error(dev, sgt_addr))) { + err = -ENOMEM; + goto sgt_map_failed; + } + + /* Initialize FD fields */ + memset(fd, 0, sizeof(struct dpaa2_fd)); + dpaa2_fd_set_offset(fd, priv->tx_data_offset); + dpaa2_fd_set_format(fd, dpaa2_fd_sg); + dpaa2_fd_set_addr(fd, sgt_addr); + dpaa2_fd_set_len(fd, xdp_desc->len); + dpaa2_fd_set_ctrl(fd, FD_CTRL_PTA); + + return 0; + +sgt_map_failed: + dpaa2_eth_sgt_recycle(priv, sgt_buf); + + return err; +} + +bool dpaa2_xsk_tx(struct dpaa2_eth_priv *priv, + struct dpaa2_eth_channel *ch) +{ + struct xdp_desc *xdp_descs = ch->xsk_pool->tx_descs; + struct dpaa2_eth_drv_stats *percpu_extras; + struct rtnl_link_stats64 *percpu_stats; + int budget = DPAA2_ETH_TX_ZC_PER_NAPI; + int total_enqueued, enqueued; + int retries, max_retries; + struct dpaa2_eth_fq *fq; + struct dpaa2_fd *fds; + int batch, i, err; + + percpu_stats = this_cpu_ptr(priv->percpu_stats); + percpu_extras = this_cpu_ptr(priv->percpu_extras); + fds = (this_cpu_ptr(priv->fd))->array; + + /* Use the FQ with the same idx as the affine CPU */ + fq = &priv->fq[ch->nctx.desired_cpu]; + + batch = xsk_tx_peek_release_desc_batch(ch->xsk_pool, budget); + if (!batch) + return false; + + /* Create a FD for each XSK frame to be sent */ + for (i = 0; i < batch; i++) { + err = dpaa2_xsk_tx_build_fd(priv, ch, &fds[i], &xdp_descs[i]); + if (err) { + batch = i; + break; + } + } + + /* Enqueue all the created FDs */ + max_retries = batch * DPAA2_ETH_ENQUEUE_RETRIES; + total_enqueued = 0; + enqueued = 0; + retries = 0; + while (total_enqueued < batch && retries < max_retries) { + err = priv->enqueue(priv, fq, &fds[total_enqueued], 0, + batch - total_enqueued, &enqueued); + if (err == -EBUSY) { + retries++; + continue; + } + + total_enqueued += enqueued; + } + percpu_extras->tx_portal_busy += retries; + + /* Update statistics */ + percpu_stats->tx_packets += total_enqueued; + for (i = 0; i < total_enqueued; i++) + percpu_stats->tx_bytes += dpaa2_fd_get_len(&fds[i]); + for (i = total_enqueued; i < batch; i++) { + dpaa2_eth_free_tx_fd(priv, ch, fq, &fds[i], false); + percpu_stats->tx_errors++; + } + + xsk_tx_release(ch->xsk_pool); + + return total_enqueued == budget ? true : false; +} From patchwork Mon Sep 12 18:28:29 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ioana Ciornei X-Patchwork-Id: 12974016 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7B41BC6FA83 for ; Mon, 12 Sep 2022 18:35:03 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230348AbiILSfA (ORCPT ); Mon, 12 Sep 2022 14:35:00 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:40960 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231553AbiILSeP (ORCPT ); Mon, 12 Sep 2022 14:34:15 -0400 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-vi1eur04on060a.outbound.protection.outlook.com [IPv6:2a01:111:f400:fe0e::60a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 008644D4DF for ; Mon, 12 Sep 2022 11:31:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k0cWuDm6dR5UzyUAXl9GKh9AEGn0lEzoWo31SwrqVvpurpETFeWByQvItyI9ok600FymEk2GYROWfRnGDuKmKFkoa6lzzl6RizoIdcbJzPyizdtrlxSmfhzco3Fc00FRa04Tg7P6elgbHHsXSXb+XsuSd7pt09zXVy0CNZbODpSw7oRlUwnd2uvL/ewuXuNrH9ykPbweOKoIB1dJcmTxUPmxYjRVdr+tO2OOyiwQchdFl6vDHjdHRFS69R7LHdh+RLCRztDvLrYX2FlXkBq9c0aenvvP6pHk5GoAsnnMo2SR+evE5vI0rRXVaZo1OPrbrFkLaHPfCHPDO0pbWE2s3w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rCOf6C5AIzbhqLA0F9Y8gD3S7PgFtR5pEPWzTLWpubo=; b=TzjyvBsJuVoydCwE1HKAozBValETZ+Hpmu8tAdc+De9Wj0L+lWxvRdCtEMaYzw0404XaB8+ao2goYVSitvUTHKAuYLzFty4ZX3Xbn/zW9nuL5/E294pmZLI+A0p1f8xwjnopazPEQ/0mr2o6w97XTou+lQFwnZytnx7GyuIYY6TAcyzoPE+GJysfvyvbd/pSlm5SvQsOgjXeMKX/Ozm2A8pwyeTwX2vinq7tG4SHuciFPq4hgoqNI2Sj3o/zkogGk+5YV6mwNoSUxdZ9NDiTE+api9WT6AE9xSQdKomeEgQ+obQiTX702ienZidtjTQkzQrBv11Oueg/FrrZXQfj2Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass header.d=nxp.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector2; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rCOf6C5AIzbhqLA0F9Y8gD3S7PgFtR5pEPWzTLWpubo=; b=J1hUifXDiJLwwOCJ/md9DSQ78FBjplTQiA536glLJlWJdlRlbDm4EotfxfEpTrFjm2X2z/sguStkWospCDx5s1neiHT98QaIDl+Gqs+WyUC+Zn2DBXgU8zKxqwTEvVZQcGH8lFPlOrIY1RR8J4bm3Uc09eJ93e9ZPFCB4jH8rKM= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=nxp.com; Received: from GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) by DU0PR04MB9494.eurprd04.prod.outlook.com (2603:10a6:10:32e::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Mon, 12 Sep 2022 18:29:11 +0000 Received: from GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90]) by GV1PR04MB9055.eurprd04.prod.outlook.com ([fe80::d06:e64e:5f94:eb90%4]) with mapi id 15.20.5612.022; Mon, 12 Sep 2022 18:29:11 +0000 From: Ioana Ciornei To: davem@davemloft.net, edumazet@google.com, kuba@kernel.org, pabeni@redhat.com, netdev@vger.kernel.org Cc: ast@kernel.org, daniel@iogearbox.net, hawk@kernel.org, john.fastabend@gmail.com, Ioana Ciornei Subject: [PATCH net-next 12/12] net: dpaa2-eth: add trace points on XSK events Date: Mon, 12 Sep 2022 21:28:29 +0300 Message-Id: <20220912182829.160715-13-ioana.ciornei@nxp.com> X-Mailer: git-send-email 2.33.1 In-Reply-To: <20220912182829.160715-1-ioana.ciornei@nxp.com> References: <20220912182829.160715-1-ioana.ciornei@nxp.com> X-ClientProxiedBy: AS4P190CA0009.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:5de::16) To GV1PR04MB9055.eurprd04.prod.outlook.com (2603:10a6:150:1e::22) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1PR04MB9055:EE_|DU0PR04MB9494:EE_ X-MS-Office365-Filtering-Correlation-Id: 769970d7-49bc-4295-88dd-08da94ecb032 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: echSsLTfjjguCBmyT5xxcA2hb7t8fbVFl44YhC1M5TNIKWBkVmAxVERBo2ySa5b7lU0bV2Zgpj+HWHgk5zYlcT4pCOd95n0aSp3iAxY5Wn3pZBt+zg3TXsttzFvr6nZZp7tv/gpFAvSoF5cdbt/TFYapHZUyoWxN1+r5062UmQiQHGDPrguY0CdjyzSgxsI5jlfpFi47rhW8Z5x+gN1hIJtfh20C0JGGplSJqXbPml33cdLCAtYTBKh2K8ux6gjXIfColZVFnoW1th+nXENWFUeWofiW3aKbDqYXRvMzDAyjaMXM4nyPif+TsihJGm1VtVWjtw+93majjMF/n8W2UwwS6gA0Ae47/MH+XSGTVui9a2pR1ZMQfusmGE+M5THax/3Fq2ljphocy+WnnZx5+CEgR0QjviCFZ8sTUClJovDJPGplyqeaoG+v20gj07AMe70mo+txsAeJtt17rE2uBSuMGWnHpJ4DCFaiU6XiyLN7bpBO7Gx8TKxKUaBBO801/UgM78Ve8z2eMHd9ptj1bVa7toV7+WBonBlkZrULmdxlpPyaZvgN1QXUxlJiObvfswSucFfegopyM+WwU9LEGvjFZwYnyGFGKFQIlOiVYteWLmOX2zcV9OM1nZa6iU1QlrzqKxqTumX7Eq8Z1Lo8PPoYHWfD2yP8rXAXzQfiK5ZZsxB3z521W18+tvY8R1VUKyuz/oTkcYdJU2s0UiGHvRnXoKQOjU/EcXXEcblbYhLjCxIiePvc3Yh8cO+WtlbgD1ajOxE+hI429WokWK1Fsw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:GV1PR04MB9055.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(4636009)(39860400002)(396003)(366004)(376002)(136003)(346002)(451199015)(8676002)(6666004)(8936002)(38100700002)(2906002)(2616005)(186003)(66476007)(4326008)(66556008)(44832011)(26005)(36756003)(41300700001)(86362001)(6486002)(83380400001)(6512007)(66946007)(1076003)(52116002)(478600001)(5660300002)(38350700002)(6506007)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: e/S9q4NfPgzc0RMRaTKL60oZTO7aKVEZIdEKiBpDaLNo0vOpyOc++MSuSJzAXqCQhtdyIcKqFRk5Kz5vp2lThPCdLQfW0zx5NHmtfrzkLgNeZSW9VXAzy6eW0P13zO3twXvP50Qd0PWnYWLie7IT1mi56eBkpNZwKWdikUeXg6xg9J+RcoAqP9TYz2JMqo0U8Xr7w69jrJlaeW0a05Sbs02j53qF8kcSd2AIdkqC+7mQSfcDpleNbQLUZQnfcgMKQT/xIS4SVvUM6mbFvsunehD/g69QexHQJ1Mjs9dIWz0Px/qiwtf+zwl5Hj550MjARyHDJmbecnGGOmS7QZnfypx6G38cwo6EI1dcc9ONm4DIpLwoueXeHX95o7ikfHuwRj8QVBRd6kL06S9D/M3851WWJiamtqiNtyPioW6L4try1n+2ua0T7aTzVumBRthHT2ayaHtZPjTfO6XOqFKbIPmgPiUHqb6rwvttYGd5X2JyYL8GXwx1+4lJgrkIcC8ZeRqqeUBuO10psJSNBVY20xqkIVRuS/fzibu6JOxcSjlLm1W+9jGVFJdq4QBJUl22fLcUce1883EHmiHgQ+wHWcHS7V6J9FVP5NZxtLunWtQL4aNBVLpJrSI/R5aMMWDKr0p7Udv8DhxrrLVPLaQCf9S0JXlzu3ZnTcCCq/CmAJYAE8WG7Y/3xlsqjqAZrYO8PSDuEAJUZrY9HAuws3fv1BAdcF8GzZk/wGs2bh0OSV/dXrsghHgRY0xZ38tyBBiUxmDKQ3vYWLXlKAXCsSwFwmu1VdZqhK3wmWgZ/RrGamEtz6HKi9Gc4ENEDVrUugdRT0r8Nnhs0mVFLp22DHtQdabp+swoMCVhfR779nvtYuz8cjvhxpYUdDVvtlsC13Jm7oeJUiCAVfl/70VTtwqTMJdx+zTkwbOj9gOvHN0ce8iV+W2ZzyhrL3UrPhqrFAbdyLNToaBb6va1Q6HvaDSZnVyI4kWOSZFGaxshZ1vUf70PLF6qYGsG21XrKYHy0X3VOKm+p7hq3PVfBW3cgcmD56V0037atIKk+FmWCCulMCeNCcZFvbpjm6hkcz/urBdu496Zx3KH0dqw8pCHIUamWXe21FqXFa5UWyujdtrU/vJMjFX1VCIy3nW85DU0THYTp90jPA0cd7ngQSBO5r8DfMYIP5MlyyMvAC/578pOQv1/u8RLHs/VSNW96aAPgP21rJ2D690aL7/rnmB/aH7SesmIRT6e+BbHVu18fP0kkJOWIlPysj4khJGBVEDkSYYXygY51/rMDtTi19csXd8EKrNk004GXbFHULIFIfGaWC53v7f4GvgGhSd3jVcH7yjbdQaGAmgPNPpzcSlvjia/OX5YZhHW/iNrogx3vCZRC/Toog9ivaHm2ceRYJ1oj0CiOh4Gzg7I6ABkw14vQRwPx/DK5vInlpurT9JawKQMrgQFgl552c0b3tCF6/GjuUdkdqVpxlj8jxExGWnJ6PlrPyH9dauB46ftWnpcrwe1oSt4Tc4dcL+UWSn5zzL3+df+fWhxbCcm7ANrZDKR5i2aSr2hLlyZFiZcq7W8Z79cKzkAE0rsYS1VVB+aFl0X9X/N++uWDweLBJ0qaxB3fci6uQ== X-OriginatorOrg: nxp.com X-MS-Exchange-CrossTenant-Network-Message-Id: 769970d7-49bc-4295-88dd-08da94ecb032 X-MS-Exchange-CrossTenant-AuthSource: GV1PR04MB9055.eurprd04.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Sep 2022 18:29:11.7047 (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-CrossTenant-UserPrincipalName: gKTj3MXXAh6Shid831FoS0/ni9E+t+VbfNY7tx2JTjaWS/VFXYJKeLvQ46FCUwfruIZ0zszORdmxvIShUxrWgQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU0PR04MB9494 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Robert-Ionut Alexa Define the dpaa2_tx_xsk_fd and dpaa2_rx_xsk_fd trace events for the XSK zero-copy Rx and Tx path. Also, define the dpaa2_eth_buf as an event class so that both dpaa2_eth_buf_seed and dpaa2_xsk_buf_seed traces can derive from the same class. Signed-off-by: Robert-Ionut Alexa Signed-off-by: Ioana Ciornei Reported-by: kernel test robot --- .../freescale/dpaa2/dpaa2-eth-trace.h | 142 +++++++++++------- .../net/ethernet/freescale/dpaa2/dpaa2-eth.c | 5 + .../net/ethernet/freescale/dpaa2/dpaa2-xsk.c | 4 + 3 files changed, 100 insertions(+), 51 deletions(-) diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-trace.h b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-trace.h index 5fb5f14e01ec..9b43fadb9b11 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-trace.h +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth-trace.h @@ -73,6 +73,14 @@ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_fd, TP_ARGS(netdev, fd) ); +/* Tx (egress) XSK fd */ +DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_xsk_fd, + TP_PROTO(struct net_device *netdev, + const struct dpaa2_fd *fd), + + TP_ARGS(netdev, fd) +); + /* Rx fd */ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_fd, TP_PROTO(struct net_device *netdev, @@ -81,6 +89,14 @@ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_fd, TP_ARGS(netdev, fd) ); +/* Rx XSK fd */ +DEFINE_EVENT(dpaa2_eth_fd, dpaa2_rx_xsk_fd, + TP_PROTO(struct net_device *netdev, + const struct dpaa2_fd *fd), + + TP_ARGS(netdev, fd) +); + /* Tx confirmation fd */ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_conf_fd, TP_PROTO(struct net_device *netdev, @@ -90,57 +106,81 @@ DEFINE_EVENT(dpaa2_eth_fd, dpaa2_tx_conf_fd, ); /* Log data about raw buffers. Useful for tracing DPBP content. */ -TRACE_EVENT(dpaa2_eth_buf_seed, - /* Trace function prototype */ - TP_PROTO(struct net_device *netdev, - /* virtual address and size */ - void *vaddr, - size_t size, - /* dma map address and size */ - dma_addr_t dma_addr, - size_t map_size, - /* buffer pool id, if relevant */ - u16 bpid), - - /* Repeat argument list here */ - TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid), - - /* A structure containing the relevant information we want - * to record. Declare name and type for each normal element, - * name, type and size for arrays. Use __string for variable - * length strings. - */ - TP_STRUCT__entry( - __field(void *, vaddr) - __field(size_t, size) - __field(dma_addr_t, dma_addr) - __field(size_t, map_size) - __field(u16, bpid) - __string(name, netdev->name) - ), - - /* The function that assigns values to the above declared - * fields - */ - TP_fast_assign( - __entry->vaddr = vaddr; - __entry->size = size; - __entry->dma_addr = dma_addr; - __entry->map_size = map_size; - __entry->bpid = bpid; - __assign_str(name, netdev->name); - ), - - /* This is what gets printed when the trace event is - * triggered. - */ - TP_printk(TR_BUF_FMT, - __get_str(name), - __entry->vaddr, - __entry->size, - &__entry->dma_addr, - __entry->map_size, - __entry->bpid) +DECLARE_EVENT_CLASS(dpaa2_eth_buf, + /* Trace function prototype */ + TP_PROTO(struct net_device *netdev, + /* virtual address and size */ + void *vaddr, + size_t size, + /* dma map address and size */ + dma_addr_t dma_addr, + size_t map_size, + /* buffer pool id, if relevant */ + u16 bpid), + + /* Repeat argument list here */ + TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid), + + /* A structure containing the relevant information we want + * to record. Declare name and type for each normal element, + * name, type and size for arrays. Use __string for variable + * length strings. + */ + TP_STRUCT__entry( + __field(void *, vaddr) + __field(size_t, size) + __field(dma_addr_t, dma_addr) + __field(size_t, map_size) + __field(u16, bpid) + __string(name, netdev->name) + ), + + /* The function that assigns values to the above declared + * fields + */ + TP_fast_assign( + __entry->vaddr = vaddr; + __entry->size = size; + __entry->dma_addr = dma_addr; + __entry->map_size = map_size; + __entry->bpid = bpid; + __assign_str(name, netdev->name); + ), + + /* This is what gets printed when the trace event is + * triggered. + */ + TP_printk(TR_BUF_FMT, + __get_str(name), + __entry->vaddr, + __entry->size, + &__entry->dma_addr, + __entry->map_size, + __entry->bpid) +); + +/* Main memory buff seeding */ +DEFINE_EVENT(dpaa2_eth_buf, dpaa2_eth_buf_seed, + TP_PROTO(struct net_device *netdev, + void *vaddr, + size_t size, + dma_addr_t dma_addr, + size_t map_size, + u16 bpid), + + TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid) +); + +/* UMEM buff seeding on AF_XDP fast path */ +DEFINE_EVENT(dpaa2_eth_buf, dpaa2_xsk_buf_seed, + TP_PROTO(struct net_device *netdev, + void *vaddr, + size_t size, + dma_addr_t dma_addr, + size_t map_size, + u16 bpid), + + TP_ARGS(netdev, vaddr, size, dma_addr, map_size, bpid) ); /* If only one event of a certain type needs to be declared, use TRACE_EVENT(). diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c index ccfec7986ba1..9e29b3ed6edc 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-eth.c @@ -1729,6 +1729,11 @@ static int dpaa2_eth_add_bufs(struct dpaa2_eth_priv *priv, goto err_map; buf_array[i] = addr; + + trace_dpaa2_xsk_buf_seed(priv->net_dev, + page, DPAA2_ETH_RX_BUF_RAW_SIZE, + addr, priv->rx_buf_size, + ch->bp->bpid); } } diff --git a/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c index 0a8cbd3fa837..7599c028fa42 100644 --- a/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c +++ b/drivers/net/ethernet/freescale/dpaa2/dpaa2-xsk.c @@ -113,6 +113,8 @@ static void dpaa2_xsk_rx(struct dpaa2_eth_priv *priv, void *vaddr; u32 xdp_act; + trace_dpaa2_rx_xsk_fd(priv->net_dev, fd); + vaddr = dpaa2_iova_to_virt(priv->iommu_domain, addr); percpu_stats = this_cpu_ptr(priv->percpu_stats); @@ -414,6 +416,8 @@ bool dpaa2_xsk_tx(struct dpaa2_eth_priv *priv, batch = i; break; } + + trace_dpaa2_tx_xsk_fd(priv->net_dev, &fds[i]); } /* Enqueue all the created FDs */