@@ -655,30 +655,16 @@ int mana_pre_alloc_rxbufs(struct mana_port_context *mpc, int new_mtu, int num_qu
655655 mpc -> rxbpre_total = 0 ;
656656
657657 for (i = 0 ; i < num_rxb ; i ++ ) {
658- if (mpc -> rxbpre_alloc_size > PAGE_SIZE ) {
659- va = netdev_alloc_frag (mpc -> rxbpre_alloc_size );
660- if (!va )
661- goto error ;
662-
663- page = virt_to_head_page (va );
664- /* Check if the frag falls back to single page */
665- if (compound_order (page ) <
666- get_order (mpc -> rxbpre_alloc_size )) {
667- put_page (page );
668- goto error ;
669- }
670- } else {
671- page = dev_alloc_page ();
672- if (!page )
673- goto error ;
658+ page = dev_alloc_pages (get_order (mpc -> rxbpre_alloc_size ));
659+ if (!page )
660+ goto error ;
674661
675- va = page_to_virt (page );
676- }
662+ va = page_to_virt (page );
677663
678664 da = dma_map_single (dev , va + mpc -> rxbpre_headroom ,
679665 mpc -> rxbpre_datasize , DMA_FROM_DEVICE );
680666 if (dma_mapping_error (dev , da )) {
681- put_page (virt_to_head_page ( va ) );
667+ put_page (page );
682668 goto error ;
683669 }
684670
@@ -1671,7 +1657,7 @@ static void mana_rx_skb(void *buf_va, bool from_pool,
16711657}
16721658
16731659static void * mana_get_rxfrag (struct mana_rxq * rxq , struct device * dev ,
1674- dma_addr_t * da , bool * from_pool , bool is_napi )
1660+ dma_addr_t * da , bool * from_pool )
16751661{
16761662 struct page * page ;
16771663 void * va ;
@@ -1682,21 +1668,6 @@ static void *mana_get_rxfrag(struct mana_rxq *rxq, struct device *dev,
16821668 if (rxq -> xdp_save_va ) {
16831669 va = rxq -> xdp_save_va ;
16841670 rxq -> xdp_save_va = NULL ;
1685- } else if (rxq -> alloc_size > PAGE_SIZE ) {
1686- if (is_napi )
1687- va = napi_alloc_frag (rxq -> alloc_size );
1688- else
1689- va = netdev_alloc_frag (rxq -> alloc_size );
1690-
1691- if (!va )
1692- return NULL ;
1693-
1694- page = virt_to_head_page (va );
1695- /* Check if the frag falls back to single page */
1696- if (compound_order (page ) < get_order (rxq -> alloc_size )) {
1697- put_page (page );
1698- return NULL ;
1699- }
17001671 } else {
17011672 page = page_pool_dev_alloc_pages (rxq -> page_pool );
17021673 if (!page )
@@ -1729,7 +1700,7 @@ static void mana_refill_rx_oob(struct device *dev, struct mana_rxq *rxq,
17291700 dma_addr_t da ;
17301701 void * va ;
17311702
1732- va = mana_get_rxfrag (rxq , dev , & da , & from_pool , true );
1703+ va = mana_get_rxfrag (rxq , dev , & da , & from_pool );
17331704 if (!va )
17341705 return ;
17351706
@@ -2165,7 +2136,7 @@ static int mana_fill_rx_oob(struct mana_recv_buf_oob *rx_oob, u32 mem_key,
21652136 if (mpc -> rxbufs_pre )
21662137 va = mana_get_rxbuf_pre (rxq , & da );
21672138 else
2168- va = mana_get_rxfrag (rxq , dev , & da , & from_pool , false );
2139+ va = mana_get_rxfrag (rxq , dev , & da , & from_pool );
21692140
21702141 if (!va )
21712142 return - ENOMEM ;
@@ -2251,6 +2222,7 @@ static int mana_create_page_pool(struct mana_rxq *rxq, struct gdma_context *gc)
22512222 pprm .nid = gc -> numa_node ;
22522223 pprm .napi = & rxq -> rx_cq .napi ;
22532224 pprm .netdev = rxq -> ndev ;
2225+ pprm .order = get_order (rxq -> alloc_size );
22542226
22552227 rxq -> page_pool = page_pool_create (& pprm );
22562228
0 commit comments