From nobody Wed Dec 17 03:38:57 2025 Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id D76132E7F20; Tue, 12 Aug 2025 08:30:46 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=80.241.56.151 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754987448; cv=none; b=TMwY3QUl7pDTnWCY0kVqYjSFuffXK/OZbrv9qbwioL9Fz2NuPraijP+QEXEsFmtRK+0PpIbXB9e2kEZrgX8jtLq+AHFergeCxvg3HfKgNv86PAwUV3ayNmPZ41/0tVaDsM1NlyjV15MYkDr3PreqBp6jBkAM7KnHnv7Vy0gLLqo= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1754987448; c=relaxed/simple; bh=q2LgFnDCb1Ggsyy7IMVzMLnwooYqtrNUoGW/sOH52fs=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=GzCImzdvtAwxQN5HKE97jN7jvifU4jSK+kk6AXKv3LJSBtmLc2sTm1HmcbVDAoNWxRT5RDVgz/ZMerDVXI4ygH4z45ZuRgWDEI1NsgukIp+vOjsZZGx2g9nmlIsC0Lrt/505WWdnCCW0Rog4A+WsvqgAIG6BrDal5BeHV/4q4bM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=mailbox.org; spf=pass smtp.mailfrom=mailbox.org; dkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org header.b=ygrJxH5T; dkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org header.b=YcQCzFWT; arc=none smtp.client-ip=80.241.56.151 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=mailbox.org Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=mailbox.org Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org header.b="ygrJxH5T"; dkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org header.b="YcQCzFWT" Received: from smtp2.mailbox.org (smtp2.mailbox.org [IPv6:2001:67c:2050:b231:465::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4c1PpQ6rsCz9t1y; Tue, 12 Aug 2025 10:30:38 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1754987439; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IdyvOMhlMR/cDjU8xwP5OunsIb0X53BwlCWZlpqz2d8=; b=ygrJxH5TgKxnBYWRFHKiNOjdw7KuC6Gw3brRhOo34iU3PWr+aiCfUMCRNo7bHdqGcbrLa+ puVR1GYylrPooAMPRvQKlw602bMQP8AFdbfq0wQswDKhpAO2LUQDlNVpSYo+21XhyVyh0N 7Y5uhQqBjDIJNFJmvH+4zF8yajySQKxSKJtrW1iq+h6HQS6/8E0f2ni5oAdYxIFsYAbTaP GPAsHL7GE84FkvM6f4aPAwTHVXdznqHzFxUQ6sncymDG82m62BhwjoO+PucHuhUHFywqpl G4S7LvXD2erfBoLZiKZOPiY+N942NS0KF6o67mtZ8jJm5TSi7d/7QsYg2bJ0dg== Authentication-Results: outgoing_mbo_mout; dkim=pass header.d=mailbox.org header.s=mail20150812 header.b=YcQCzFWT; spf=pass (outgoing_mbo_mout: domain of lukasz.majewski@mailbox.org designates 2001:67c:2050:b231:465::2 as permitted sender) smtp.mailfrom=lukasz.majewski@mailbox.org From: Lukasz Majewski DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1754987436; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IdyvOMhlMR/cDjU8xwP5OunsIb0X53BwlCWZlpqz2d8=; b=YcQCzFWTnwrUFFLIquijejbXcW/s+iEyNxi5tmTnTekVi7cukmY+7Ia74oYXNJGZ9bEWed r8yx23JiPnfWA5MG7BRFcNEnQtaSLn11MqDAP1urBU6CQuFM2LFjfdZca5aMh5zZ5nUyTY asGrnY1TjRXYQE0C9vU36VuPi5zgVv19D4nhjbaSuRYNfDARB+gLDQfWIgJpmXyJ6sCTPY hDAqnCaZyEI62bw6yYsQ7XwoVVSsxGwJM8HQvooCltWHtofroLkO3ZHn1WhMrjTeer1eS4 uaYiOwSruDumEsNr/UY2w5ITKADpr0X5/Xlyp2z3TNhyyFyn/gBHu+p3/gREFw== To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Shawn Guo Cc: Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Richard Cochran , netdev@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Stefan Wahren , Simon Horman , Lukasz Majewski Subject: [net-next RESEND v17 05/12] net: mtip: Add buffers management functions to the L2 switch driver Date: Tue, 12 Aug 2025 10:29:32 +0200 Message-Id: <20250812082939.541733-6-lukasz.majewski@mailbox.org> In-Reply-To: <20250812082939.541733-1-lukasz.majewski@mailbox.org> References: <20250812082939.541733-1-lukasz.majewski@mailbox.org> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-MBO-RS-META: t7o9ckhyzd84dyuzj7mpq4e4ctu4chos X-MBO-RS-ID: ce233b26bd7b76ef246 X-Rspamd-Queue-Id: 4c1PpQ6rsCz9t1y Content-Type: text/plain; charset="utf-8" This patch provides buffers management funcions' content for MTIP L2 switch. Signed-off-by: Lukasz Majewski --- Changes for v14: - New patch - created by excluding some code from large (i.e. v13 and earlier) MTIP driver Changes for v15 - v17: - None --- .../net/ethernet/freescale/mtipsw/mtipl2sw.c | 85 +++++++++++++++++++ 1 file changed, 85 insertions(+) diff --git a/drivers/net/ethernet/freescale/mtipsw/mtipl2sw.c b/drivers/net= /ethernet/freescale/mtipsw/mtipl2sw.c index 157df1efbf99..c80857310a17 100644 --- a/drivers/net/ethernet/freescale/mtipsw/mtipl2sw.c +++ b/drivers/net/ethernet/freescale/mtipsw/mtipl2sw.c @@ -870,11 +870,96 @@ static void mtip_get_drvinfo(struct net_device *dev, =20 static void mtip_free_buffers(struct net_device *dev) { + struct mtip_ndev_priv *priv =3D netdev_priv(dev); + struct switch_enet_private *fep =3D priv->fep; + int i; + + for (i =3D 0; i < RX_RING_SIZE; i++) { + page_pool_put_full_page(fep->page_pool, + fep->page[i], false); + fep->page[i] =3D NULL; + } + + page_pool_destroy(fep->page_pool); + fep->page_pool =3D NULL; + + for (i =3D 0; i < TX_RING_SIZE; i++) + kfree(fep->tx_bounce[i]); +} + +static int mtip_create_page_pool(struct switch_enet_private *fep, int size) +{ + struct page_pool_params pp_params =3D { + .order =3D 0, + .flags =3D PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV, + .pool_size =3D size, + .nid =3D dev_to_node(&fep->pdev->dev), + .dev =3D &fep->pdev->dev, + .dma_dir =3D DMA_FROM_DEVICE, + .offset =3D 0, + .max_len =3D MTIP_SWITCH_RX_FRSIZE, + }; + int ret =3D 0; + + fep->page_pool =3D page_pool_create(&pp_params); + if (IS_ERR(fep->page_pool)) { + ret =3D PTR_ERR(fep->page_pool); + fep->page_pool =3D NULL; + } + + return ret; } =20 static int mtip_alloc_buffers(struct net_device *dev) { + struct mtip_ndev_priv *priv =3D netdev_priv(dev); + struct switch_enet_private *fep =3D priv->fep; + struct cbd_t *bdp; + struct page *page; + int i, ret; + + ret =3D mtip_create_page_pool(fep, RX_RING_SIZE); + if (ret < 0) { + dev_err(&fep->pdev->dev, "Failed to create page pool\n"); + return ret; + } + + bdp =3D fep->rx_bd_base; + for (i =3D 0; i < RX_RING_SIZE; i++) { + page =3D page_pool_dev_alloc_pages(fep->page_pool); + if (!page) { + dev_err(&fep->pdev->dev, + "Failed to allocate page for rx buffer\n"); + goto err; + } + + bdp->cbd_bufaddr =3D page_pool_get_dma_addr(page); + fep->page[i] =3D page; + + bdp->cbd_sc =3D BD_ENET_RX_EMPTY; + bdp++; + } + + mtip_set_last_buf_to_wrap(bdp); + + bdp =3D fep->tx_bd_base; + for (i =3D 0; i < TX_RING_SIZE; i++) { + fep->tx_bounce[i] =3D kmalloc(MTIP_SWITCH_TX_FRSIZE, GFP_KERNEL); + if (!fep->tx_bounce[i]) + goto err; + + bdp->cbd_sc =3D 0; + bdp->cbd_bufaddr =3D 0; + bdp++; + } + + mtip_set_last_buf_to_wrap(bdp); + return 0; + + err: + mtip_free_buffers(dev); + return -ENOMEM; } =20 static int mtip_rx_napi(struct napi_struct *napi, int budget) --=20 2.39.5