From patchwork Fri Mar 4 10:22:13 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Simon Horman X-Patchwork-Id: 12768917 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 6F3A8C433EF for ; Fri, 4 Mar 2022 10:22:57 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S233080AbiCDKXl (ORCPT ); Fri, 4 Mar 2022 05:23:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:56192 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S233148AbiCDKXk (ORCPT ); Fri, 4 Mar 2022 05:23:40 -0500 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (mail-dm6nam12on2115.outbound.protection.outlook.com [40.107.243.115]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id B3F7752B36 for ; Fri, 4 Mar 2022 02:22:49 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XTW7UoizVqJ+NjlehBAQ0QO5zyiTJHZklNW4Bh4HMC/RQWsMVWou6oWIm4X+eDBc7sJAA+NoDj8oceEk7rxXSqa858+a14osMtq6vnp0l3ML/sCbs+K3HebQ8dNx3gQCUWlx85cv2TNFO+3fGNWlhPcvZomd0QcIjcFPqbWe4ivMkgFzFETmXxocg6l8fPivbF9hpZwKcLVX2bSV70hoKOuF/h+ygbrc5qHzc4f17hH0S4ZU6OShoblDr5ApZ7Dt8lyyf/JqK1lqCtlmN1mh/MBP4alNzUwhE70qkM/g3i4mguOFbKlWGGISYMeDknYbu5MagPlh2YxUP2AB2CJpXw== 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=LheVwKJAJHbw8rOI7CD2UWqC1OpvinT+TJjCYJC6knM=; b=BvHslYA83J9GWKqaYZ0jzQJaEFSqPMGL/RBb+Cb5cM7ny6/Eb/SO987N5U9IJfHFOEemHj5v7NTf+NEL3Rscu+M/eZbY4ePhwmajpCtsaE/UACqYpXAlIw37NBSVZSSxk/hwyiza/GRqcWvntdolMU0fOKXwjjVxdJKg2tZGIGsWvBFSIoXCpo0wKzIsypxq7SvLQXvPMZkOF0434PdYX6VhmQWPGVSPldfi1E27Ol2jPMqb01mhRVxcPHknkkQkWAbX0I2yGGv8HH7ZD++eLfjD2OYXQdTBTaBidy7INAD2MgClSd8NGN+DDcNTQbNEH+w0BXFowzBRMRyCLl9sqA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=corigine.com; dmarc=pass action=none header.from=corigine.com; dkim=pass header.d=corigine.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=corigine.onmicrosoft.com; s=selector2-corigine-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=LheVwKJAJHbw8rOI7CD2UWqC1OpvinT+TJjCYJC6knM=; b=Xigy+drBDp8IuvgmxlglYNAV9H6kK/ZorBUAgMWWeVXWvxuYdZT1V3YV2tjTa8nNVlUlg/uT+lqty6M0GfMVoZRP2PAcDsZ/Vwq9JuRcK38Uje+wWdUTjVj4+6OIRsNs2vp51CkWcWvoj4qfP7jNQBPnihThX7S8kcMjclUEWCA= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=corigine.com; Received: from PH0PR13MB4842.namprd13.prod.outlook.com (2603:10b6:510:78::6) by BN7PR13MB2404.namprd13.prod.outlook.com (2603:10b6:406:b7::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5038.11; Fri, 4 Mar 2022 10:22:46 +0000 Received: from PH0PR13MB4842.namprd13.prod.outlook.com ([fe80::d27:c7d9:8880:a73e]) by PH0PR13MB4842.namprd13.prod.outlook.com ([fe80::d27:c7d9:8880:a73e%2]) with mapi id 15.20.5038.017; Fri, 4 Mar 2022 10:22:46 +0000 From: Simon Horman To: David Miller , Jakub Kicinski , =?utf-8?q?Niklas_S=C3=B6derlund?= Cc: netdev@vger.kernel.org, oss-drivers@corigine.com Subject: [PATCH net-next 4/5] nfp: xsk: add configuration check for XSK socket chunk size Date: Fri, 4 Mar 2022 11:22:13 +0100 Message-Id: <20220304102214.25903-5-simon.horman@corigine.com> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20220304102214.25903-1-simon.horman@corigine.com> References: <20220304102214.25903-1-simon.horman@corigine.com> X-ClientProxiedBy: AM8P190CA0012.EURP190.PROD.OUTLOOK.COM (2603:10a6:20b:219::17) To PH0PR13MB4842.namprd13.prod.outlook.com (2603:10b6:510:78::6) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 2f694f45-e2ee-4d90-1d3f-08d9fdc8ecc2 X-MS-TrafficTypeDiagnostic: BN7PR13MB2404:EE_ X-Microsoft-Antispam-PRVS: X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 80++RJOUVH++URZqJXMPPTIH5SlvyQ66qj1XDDzvyUbMmmu6pCCz3lzmbfOl1FdrQxzgn3ejU/GvKn+GPxICyYW8Duc5UDe/6it7fRHUrs/GVXulikit8ZFjuM4+rlnRjUtuQ+mST6xb3wuJR5+vBwfnjbB3L9KvJoRgV8oIZqm4rwwtZUXv0SyR2lsICnefvzv+RC1Jny984h/iAfiP5aVxsbPHMDW0D2BDnNgSuuEUn63DuESJ3EI8yA6KrO/5wO69KB1EVPEKk0qrVoNzXT0+/JaJHBALUPwrS3t50EKUW+KumzzvmcIyyWwkCThMfZ2+IEzkYBB0bZYhyMAxhzyWy19ZYYA7iex79UubGWG6fNkjHANTIroLeBQTlIkGjUoHLcS/LVjoCTIK+C+KCjXhA8oyvuzouYEZKP9NQwYsSVbGTsYRKgxvowOWmbMFwBDBuSThftS8rhYCF9Ux46qO68KSdIAHqZ8punebT3L6JF9bUysA8evFjEYGE4De9M3lsFGZRCWDg5rkj3i1jM2/spaFklDiytU6UjihWe6RkjEoCNIYUG1hV1MXBTeuW0CU2CJqpxwYAlpgtE07/ZuSP0gsOwANuml60FDcJTYRK8KMoJLadR9oWiaK8pGx0I/ozpmeE7DS6gjzEBcnMw== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:PH0PR13MB4842.namprd13.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(396003)(346002)(136003)(376002)(39840400004)(110136005)(316002)(86362001)(4326008)(8676002)(38100700002)(52116002)(66476007)(66556008)(66946007)(6666004)(6512007)(6636002)(6506007)(6486002)(508600001)(8936002)(44832011)(107886003)(5660300002)(186003)(2616005)(2906002)(1076003)(36756003)(83380400001);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?hqJdD6cnAlWKYwRzdBDMHYkUrPVE?= =?utf-8?q?2NNbQ2HZBWy/N18HnO9bdlj40Io/6382g99YUg1jk2ZwmijwXj9AxETxqhFaDAWGh?= =?utf-8?q?XtVq0ASzaYEKXTWHSMwl+uPe8f8W9ce9JAo1jypSQ8Euu2o0TI+Uc40//o5dWuIAy?= =?utf-8?q?0jK5sldqdE83/dMoGidZiv5QhpZZ0a6GxDwdfmp+n/LNBTP6jvILIq/IhGgZ9gBrt?= =?utf-8?q?fj1bj162XKHieHfjb3q4UnjdLsmSJIAPWYaTk0EI8lKU4dKb7GHd/+W507PhVzuUV?= =?utf-8?q?vhShBmlvPCkBIA7pLnVIKVIWlocxZ88qQAj64XSBzETgLm+wb/geJRSFDwB7PjBDt?= =?utf-8?q?b0j5N5KFQIqTMnW9MPdxii3ZNmJ7phH9zrDg78dcbPiuhuux6VB7A2w/4ruUDFk08?= =?utf-8?q?3dnU7uaVvIK+ME1Mx+MOlZIZMRk4yRx5AsmdRGG8ukMyVTLOnXJQDRSq1G/KCiQEB?= =?utf-8?q?RayYMEf+r3pxg0s6sExAiGiwJqLEvZo6hbqWbIcFKUPDuuxnKaTfrouNVlzJzP9VG?= =?utf-8?q?tUxaJMR5wuDVRbbRAfZ77o5jF3Q6mwBwK/RNyw4mpoW3HdurWEmO/IRDWmXFHTCdJ?= =?utf-8?q?caxK3DUQIj0ttb8U72PcWmd4ENvuAxfh2L8c7h/xsUk1ddqntFGQSbSMNgCP+nepm?= =?utf-8?q?AL0jqI9Du3sjfodSrQEL6gAtuNirky3tGLuWwt/MSY0/mDtptQFAEUJhNx8xPWu3/?= =?utf-8?q?EUokErVfRrLtRm/HG008og02W5t0W6h94IZF7pOD84JVKYRzvkvG3B3rETXXh91GD?= =?utf-8?q?70yUxyR/e5DTq62OtTeHxrFF8pSet612Yle91J7RAwE+2vZW7FxccE7F/F9d7cp3D?= =?utf-8?q?f5mHiq8N3MqhaY+a0lFKOCX5Oo3KYQjtmhd6+cSNs7yBAReixdlKVsmqWPam0yYFA?= =?utf-8?q?LD17KVBTvIzF+LxsVFVdQryopKCxKUlWcVn962b39XhmNwa0lfnwjEzHvNfZm3JQ/?= =?utf-8?q?WTrXkmtzKFlPVABMgrVM2Io9C8Mt7u70PWP7TzByDDglptAk1RwOkTesmMXYSg1Ys?= =?utf-8?q?cwjkBXtvsy5VR0PtpNLRZrkl2DaRLDUI1c+9+Kk3zLQtQ5DOBM8vBBX8FBAC1WHZA?= =?utf-8?q?6qXDrWpbnI7K1fIAPHDxj/KpvlKHd1RS+VFyenncVpHHYWJZP/mZ1eCoAmMAfo8YW?= =?utf-8?q?0KrHW6n4SMqpemNMJswBsYBECZ+Kmjwn19nu0FbeKqTfBW4oZfx9jGxC1PcaW2zKj?= =?utf-8?q?r/mRyHeEns60KtHZqFOr9aJnxVcv/YKW/hwb+0AI3dovCyMD5u8CaRBg/+eFEB+rG?= =?utf-8?q?09P+3Lugyq5NhsQVBHO9VuBy/dq5dXH8XEREo3uo0I38bYR1RL8hAFwNmKVcXuNL7?= =?utf-8?q?Xj3zH7gtveSmzeUWE9pFes0oJ7Iacxc5Z8WUSTjpuhaDdz8wOJNgfgZvXeiusmpso?= =?utf-8?q?+HQevBthMcYi/Gx86ieNE5ngoVZjy4LckDaOs67Pl/JlF56ti2lJhRHuK52TfnUd5?= =?utf-8?q?IG8QcBLL4j2yCZT5zwEzZWz2Y8SxzO/b0xv83qq59/mcsJvaahN+S2nd6HzI4o5Ui?= =?utf-8?q?Q5HE4xX9pvLO1ACPmCk+cjNtF5zGhkd83YEOb4cdOXtqR2P3xYL30l+QhlKg2REda?= =?utf-8?q?e79WEkNe/C40EPuervdpb7+VJO00BsNJUUY+KVl0JpaDnV1CPTTXHMBMcw2+GeG0R?= =?utf-8?q?MHOfNwgAtCSCFL9RaxxlW5ZiZ/zoV1iHWM5a3MGu4fvCLay7RDQLI=3D?= X-OriginatorOrg: corigine.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2f694f45-e2ee-4d90-1d3f-08d9fdc8ecc2 X-MS-Exchange-CrossTenant-AuthSource: PH0PR13MB4842.namprd13.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Mar 2022 10:22:45.8629 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: fe128f2c-073b-4c20-818e-7246a585940c X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: CRDvouFA5FL3CqQVDVr+JfKLj1sBi2EL1HXKerWxb0cvCBcN9VXC761ommo9Jj8qm3Z/o+dpnH9AMiwyow6n9pWy7rbiJHpAUp10QJoQ41Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN7PR13MB2404 Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org From: Niklas Söderlund In preparation for adding AF_XDP support add a configuration check to make sure the buffer size can not be set to a larger value then the XSK socket chunk size. Signed-off-by: Niklas Söderlund Signed-off-by: Simon Horman --- .../ethernet/netronome/nfp/nfp_net_common.c | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index abfc4f3963c5..c10e977d2472 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -38,6 +38,7 @@ #include #include +#include #include "nfpcore/nfp_nsp.h" #include "ccm.h" @@ -1338,24 +1339,43 @@ static void nfp_net_tx_timeout(struct net_device *netdev, unsigned int txqueue) /* Receive processing */ static unsigned int -nfp_net_calc_fl_bufsz(struct nfp_net_dp *dp) +nfp_net_calc_fl_bufsz_data(struct nfp_net_dp *dp) { - unsigned int fl_bufsz; + unsigned int fl_bufsz = 0; - fl_bufsz = NFP_NET_RX_BUF_HEADROOM; - fl_bufsz += dp->rx_dma_off; if (dp->rx_offset == NFP_NET_CFG_RX_OFFSET_DYNAMIC) fl_bufsz += NFP_NET_MAX_PREPEND; else fl_bufsz += dp->rx_offset; fl_bufsz += ETH_HLEN + VLAN_HLEN * 2 + dp->mtu; + return fl_bufsz; +} + +static unsigned int nfp_net_calc_fl_bufsz(struct nfp_net_dp *dp) +{ + unsigned int fl_bufsz; + + fl_bufsz = NFP_NET_RX_BUF_HEADROOM; + fl_bufsz += dp->rx_dma_off; + fl_bufsz += nfp_net_calc_fl_bufsz_data(dp); + fl_bufsz = SKB_DATA_ALIGN(fl_bufsz); fl_bufsz += SKB_DATA_ALIGN(sizeof(struct skb_shared_info)); return fl_bufsz; } +static unsigned int nfp_net_calc_fl_bufsz_xsk(struct nfp_net_dp *dp) +{ + unsigned int fl_bufsz; + + fl_bufsz = XDP_PACKET_HEADROOM; + fl_bufsz += nfp_net_calc_fl_bufsz_data(dp); + + return fl_bufsz; +} + static void nfp_net_free_frag(void *frag, bool xdp) { @@ -3331,6 +3351,8 @@ static int nfp_net_check_config(struct nfp_net *nn, struct nfp_net_dp *dp, struct netlink_ext_ack *extack) { + unsigned int r, xsk_min_fl_bufsz; + /* XDP-enabled tests */ if (!dp->xdp_prog) return 0; @@ -3343,6 +3365,18 @@ nfp_net_check_config(struct nfp_net *nn, struct nfp_net_dp *dp, return -EINVAL; } + xsk_min_fl_bufsz = nfp_net_calc_fl_bufsz_xsk(dp); + for (r = 0; r < nn->max_r_vecs; r++) { + if (!dp->xsk_pools[r]) + continue; + + if (xsk_pool_get_rx_frame_size(dp->xsk_pools[r]) < xsk_min_fl_bufsz) { + NL_SET_ERR_MSG_MOD(extack, + "XSK buffer pool chunk size too small\n"); + return -EINVAL; + } + } + return 0; }