@@ -394,7 +394,7 @@ static inline void page_pool_fragment_page(struct page *page, long nr)
atomic_long_set(&page->pp_frag_count, nr);
}
-static inline long page_pool_defrag_page(struct page *page, long nr)
+static inline long page_pool_defrag_netmem(struct netmem *nmem, long nr)
{
long ret;
@@ -407,14 +407,20 @@ static inline long page_pool_defrag_page(struct page *page, long nr)
* especially when dealing with a page that may be partitioned
* into only 2 or 3 pieces.
*/
- if (atomic_long_read(&page->pp_frag_count) == nr)
+ if (atomic_long_read(&nmem->pp_frag_count) == nr)
return 0;
- ret = atomic_long_sub_return(nr, &page->pp_frag_count);
+ ret = atomic_long_sub_return(nr, &nmem->pp_frag_count);
WARN_ON(ret < 0);
return ret;
}
+/* Compat, remove when all users gone */
+static inline long page_pool_defrag_page(struct page *page, long nr)
+{
+ return page_pool_defrag_netmem(page_netmem(page), nr);
+}
+
static inline bool page_pool_is_last_frag(struct page_pool *pool,
struct page *page)
{