From mboxrd@z Thu Jan 1 00:00:00 1970 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 BE3C93A382D for ; Mon, 1 Jun 2026 11:26:00 +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=1780313162; cv=none; b=S4uN3Vi2hPi7otcKjyY+ok7VosV1AM5EteCLWJ7NwvmuuG/xhBgiB5b56TfSRf9vlsIaoQrBT44lPPMjrlGjlmYlXiWrMXvAfnS5mLJCksMHu5gs4YYaiWfaDD/bHYySNzEV+LRFLjiK8gk6Ex3fnfzuvvpZa+RTQ5+KbfdSRSY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1780313162; c=relaxed/simple; bh=Zr8RlkOdp4VuIDgDTlIRi6Ybw+5SeUjSTgCBtzg7YJs=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MuKzqH+g+cNDviwf1NaCmabhxsrpD9QJFxYdT+FNaB9iTjVaYKDu/8aRh2L0B3aqaijgpnzGkJFg6zhPTesRDJCYitXiHygKpaMKwILT+fgLXV4DqINflsjmEpmywJqK9yjRYqHoQyQaKCiL4uKSm+ztIq7ir03oO4HiC7voS28= 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=nueDm8qk; dkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org header.b=GVJ1qbZ9; 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="nueDm8qk"; dkim=pass (2048-bit key) header.d=mailbox.org header.i=@mailbox.org header.b="GVJ1qbZ9" Received: from smtp102.mailbox.org (smtp102.mailbox.org [10.196.197.102]) (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 4gTWqV6xJ7z9tZs; Mon, 1 Jun 2026 13:25:58 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1780313159; 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=J3d7TtMPNMDRpp/XYhEwTFHxIhjwKfcKifDwqMUGWwY=; b=nueDm8qktfsTyl9ZOtOHAtxvdCmRw6rmouEFACLxcEORp7OZWdaaOxmIql23GXLzyghdSB 35FNDbcwa/dFawN7/4sV3vRBjtzSAFXaYXNl132qYamycKh9Rm/i4spJaG0Mlbe5S4h6Xc E1cZgduOgLrFl8jc9U4Bgg8fwg64h26zk+I86NaWVxzFBS8ODgCwc3saj2hIi4fmgEsAf+ 7DGqAhdsZI3r9K2zSr4TBT/Tz3szNWd/AtaxBioy4LUvrgjfPgTE/r23oFfy/voP2MYGnn lFjHmj/mPQofps6cgexBFS3epxPXc6sKQEpch+Ka9bZ9xOghJ36si9M9bczoug== From: Lukasz Majewski DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mailbox.org; s=mail20150812; t=1780313157; 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=J3d7TtMPNMDRpp/XYhEwTFHxIhjwKfcKifDwqMUGWwY=; b=GVJ1qbZ9Oho1L0Ly0V1j94E0LwF8rdjL/nATx5kx6L+czPAt3Hn+BcrJ7Uv/wTTuaIpwze 4AOHEpOJ2E0CrhXVwlejcEHFosGgfu6YShqk/qNJsA543wl46j9vOoLM065noth8fzJV/h ZJpfj0Db5NcKBRl57+Vp2sl8ab1PpMbROZX/CxcFqpEwMoZMM1g6tLatHmfaGxV8fBsuDM H/SrDbX+DCj12yTl28PBYQizqzY4so14n+3x3I57F1WAjQ63d+fd4kfqZjnhFQfaRBCY+u bjrAgPQ4dOqmBBg8P/huT3lwzny2U1J8yNQcvzvhcJg2xqxzuoFa4PbUKs2HmQ== To: Andrew Lunn , davem@davemloft.net, Eric Dumazet , Jakub Kicinski , Paolo Abeni Cc: Richard Cochran , Liam Girdwood , Nathan Chancellor , linux-kernel@vger.kernel.org, netdev@vger.kernel.org, Krzysztof Kozlowski , imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, Rob Herring , Lukasz Majewski Subject: [net-next v24 3/7] net: mtip: Add buffers management functions to the L2 switch driver Date: Mon, 1 Jun 2026 13:24:32 +0200 Message-ID: <20260601112437.2216043-4-lukasz.majewski@mailbox.org> In-Reply-To: <20260601112437.2216043-1-lukasz.majewski@mailbox.org> References: <20260601112437.2216043-1-lukasz.majewski@mailbox.org> Precedence: bulk X-Mailing-List: imx@lists.linux.dev List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-MBO-RS-ID: 127ec5b15acdec0166f X-MBO-RS-META: nx7bjpcwdrgiqe5o315wo45m1niokit7 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 - v20: - None Changes for v21: - Add check if fep->page[i] is not NULL before returning it to page pool Changes for v22: - Add fep->tx_bounce[i] = NULL; in the mtip_free_buffers Changes for v23-v24: - None --- .../net/ethernet/freescale/mtipsw/mtipl2sw.c | 90 +++++++++++++++++++ 1 file changed, 90 insertions(+) diff --git a/drivers/net/ethernet/freescale/mtipsw/mtipl2sw.c b/drivers/net/ethernet/freescale/mtipsw/mtipl2sw.c index 1d1005a42306..5b5229ee411d 100644 --- a/drivers/net/ethernet/freescale/mtipsw/mtipl2sw.c +++ b/drivers/net/ethernet/freescale/mtipsw/mtipl2sw.c @@ -892,11 +892,101 @@ static void mtip_get_drvinfo(struct net_device *dev, static void mtip_free_buffers(struct net_device *dev) { + struct mtip_ndev_priv *priv = netdev_priv(dev); + struct switch_enet_private *fep = priv->fep; + int i; + + for (i = 0; i < RX_RING_SIZE; i++) { + if (!fep->page[i]) + continue; + + page_pool_put_full_page(fep->page_pool, + fep->page[i], false); + fep->page[i] = NULL; + } + + page_pool_destroy(fep->page_pool); + fep->page_pool = NULL; + + for (i = 0; i < TX_RING_SIZE; i++) { + kfree(fep->tx_bounce[i]); + fep->tx_bounce[i] = NULL; + } +} + +static int mtip_create_page_pool(struct switch_enet_private *fep, int size) +{ + struct page_pool_params pp_params = { + .order = 0, + .flags = PP_FLAG_DMA_MAP | PP_FLAG_DMA_SYNC_DEV, + .pool_size = size, + .nid = dev_to_node(&fep->pdev->dev), + .dev = &fep->pdev->dev, + .dma_dir = DMA_FROM_DEVICE, + .offset = 0, + .max_len = MTIP_SWITCH_RX_FRSIZE, + }; + int ret = 0; + + fep->page_pool = page_pool_create(&pp_params); + if (IS_ERR(fep->page_pool)) { + ret = PTR_ERR(fep->page_pool); + fep->page_pool = NULL; + } + + return ret; } static int mtip_alloc_buffers(struct net_device *dev) { + struct mtip_ndev_priv *priv = netdev_priv(dev); + struct switch_enet_private *fep = priv->fep; + struct cbd_t *bdp; + struct page *page; + int i, ret; + + ret = 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 = fep->rx_bd_base; + for (i = 0; i < RX_RING_SIZE; i++) { + page = 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 = page_pool_get_dma_addr(page); + fep->page[i] = page; + + bdp->cbd_sc = BD_ENET_RX_EMPTY; + bdp++; + } + + mtip_set_last_buf_to_wrap(bdp); + + bdp = fep->tx_bd_base; + for (i = 0; i < TX_RING_SIZE; i++) { + fep->tx_bounce[i] = kmalloc(MTIP_SWITCH_TX_FRSIZE, GFP_KERNEL); + if (!fep->tx_bounce[i]) + goto err; + + bdp->cbd_sc = 0; + bdp->cbd_bufaddr = 0; + bdp++; + } + + mtip_set_last_buf_to_wrap(bdp); + return 0; + + err: + mtip_free_buffers(dev); + return -ENOMEM; } static int mtip_rx_napi(struct napi_struct *napi, int budget) -- 2.39.5