mirror of
https://github.com/torvalds/linux.git
synced 2026-05-30 18:13:41 +02:00
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: Andrew Lunn <andrew@lunn.ch> Reviewed-by: Wei Fang <wei.fang@nxp.com> Signed-off-by: Shenwei Wang <shenwei.wang@nxp.com> Link: https://patch.msgid.link/20250910185211.721341-3-shenwei.wang@nxp.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
ec2a1681ed
commit
29e6d5f89e
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user