Commit 29e6d5f8 authored by Shenwei Wang's avatar Shenwei Wang Committed by Jakub Kicinski
Browse files

net: fec: add pagepool_order to support variable page size



Add a new pagepool_order member in the fec_enet_private struct
to allow dynamic configuration of page size for an instance. This
change clears the hardcoded page size assumptions.

Reviewed-by: default avatarAndrew Lunn <andrew@lunn.ch>
Reviewed-by: default avatarWei Fang <wei.fang@nxp.com>
Signed-off-by: default avatarShenwei Wang <shenwei.wang@nxp.com>
Link: https://patch.msgid.link/20250910185211.721341-3-shenwei.wang@nxp.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent ec2a1681
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -620,6 +620,7 @@ struct fec_enet_private {
	unsigned int total_tx_ring_size;
	unsigned int total_rx_ring_size;
	unsigned int max_buf_size;
	unsigned int pagepool_order;

	struct	platform_device *pdev;

+4 −2
Original line number Diff line number Diff line
@@ -1783,7 +1783,7 @@ fec_enet_rx_queue(struct net_device *ndev, u16 queue_id, int budget)
	 * These get messed up if we get called due to a busy condition.
	 */
	bdp = rxq->bd.cur;
	xdp_init_buff(&xdp, PAGE_SIZE, &rxq->xdp_rxq);
	xdp_init_buff(&xdp, PAGE_SIZE << fep->pagepool_order, &rxq->xdp_rxq);

	while (!((status = fec16_to_cpu(bdp->cbd_sc)) & BD_ENET_RX_EMPTY)) {

@@ -1853,7 +1853,8 @@ fec_enet_rx_queue(struct net_device *ndev, u16 queue_id, int budget)
		 * include that when passing upstream as it messes up
		 * bridging applications.
		 */
		skb = build_skb(page_address(page), PAGE_SIZE);
		skb = build_skb(page_address(page),
				PAGE_SIZE << fep->pagepool_order);
		if (unlikely(!skb)) {
			page_pool_recycle_direct(rxq->page_pool, page);
			ndev->stats.rx_dropped++;
@@ -4563,6 +4564,7 @@ fec_probe(struct platform_device *pdev)
	fec_enet_clk_enable(ndev, false);
	pinctrl_pm_select_sleep_state(&pdev->dev);

	fep->pagepool_order = 0;
	fep->max_buf_size = PKT_MAXBUF_SIZE;
	ndev->max_mtu = fep->max_buf_size - ETH_HLEN - ETH_FCS_LEN;