Commit d6a21619 authored by Dean Nelson's avatar Dean Nelson Committed by Greg Kroah-Hartman

thunderx: enable page recycling for non-XDP case

[ Upstream commit b3e208069477588c06f4d5d986164b435bb06e6d ]

Commit 77322538 ("net: thunderx: Optimize page recycling for XDP")
added code to nicvf_alloc_page() that inadvertently disables receive buffer
page recycling for the non-XDP case by always NULL'ng the page pointer.

This patch corrects two if-conditionals to allow for the recycling of non-XDP
mode pages by only setting the page pointer to NULL when the page is not ready
for recycling.

Fixes: 77322538 ("net: thunderx: Optimize page recycling for XDP")
Signed-off-by: default avatarDean Nelson <>
Signed-off-by: default avatarDavid S. Miller <>
Signed-off-by: default avatarGreg Kroah-Hartman <>
parent 94e82e56
...@@ -105,20 +105,19 @@ static inline struct pgcache *nicvf_alloc_page(struct nicvf *nic, ...@@ -105,20 +105,19 @@ static inline struct pgcache *nicvf_alloc_page(struct nicvf *nic,
/* Check if page can be recycled */ /* Check if page can be recycled */
if (page) { if (page) {
ref_count = page_ref_count(page); ref_count = page_ref_count(page);
/* Check if this page has been used once i.e 'put_page' /* This page can be recycled if internal ref_count and page's
* called after packet transmission i.e internal ref_count * ref_count are equal, indicating that the page has been used
* and page's ref_count are equal i.e page can be recycled. * once for packet transmission. For non-XDP mode, internal
* ref_count is always '1'.
*/ */
if (rbdr->is_xdp && (ref_count == pgcache->ref_count)) if (rbdr->is_xdp) {
pgcache->ref_count--; if (ref_count == pgcache->ref_count)
else pgcache->ref_count--;
page = NULL; else
page = NULL;
/* In non-XDP mode, page's ref_count needs to be '1' for it } else if (ref_count != 1) {
* to be recycled.
if (!rbdr->is_xdp && (ref_count != 1))
page = NULL; page = NULL;
} }
if (!page) { if (!page) {
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment