On Thu, May 22, 2025 at 2:43 PM Tariq Toukan <tariqt@xxxxxxxxxx> wrote: > > From: Dragos Tatulea <dtatulea@xxxxxxxxxx> > > Allow drivers that have moved over to netmem to do fragment coalescing. > > Signed-off-by: Dragos Tatulea <dtatulea@xxxxxxxxxx> > Signed-off-by: Cosmin Ratiu <cratiu@xxxxxxxxxx> > Signed-off-by: Tariq Toukan <tariqt@xxxxxxxxxx> > --- > include/linux/skbuff.h | 12 ++++++++++++ > 1 file changed, 12 insertions(+) > > diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h > index 5520524c93bf..e8e2860183b4 100644 > --- a/include/linux/skbuff.h > +++ b/include/linux/skbuff.h > @@ -3887,6 +3887,18 @@ static inline bool skb_can_coalesce(struct sk_buff *skb, int i, > return false; > } > > +static inline bool skb_can_coalesce_netmem(struct sk_buff *skb, int i, > + const netmem_ref netmem, int off) > +{ > + if (i) { > + const skb_frag_t *frag = &skb_shinfo(skb)->frags[i - 1]; > + > + return netmem == skb_frag_netmem(frag) && > + off == skb_frag_off(frag) + skb_frag_size(frag); > + } > + return false; > +} > + Can we limit the code duplication by changing skb_can_coalesce to call skb_can_coalesce_netmem? Or is that too bad for perf? static inline bool skb_can_coalesce(struct sk_buff *skb, int i, const struct page *page, int off) { skb_can_coalesce_netmem(skb, i, page_to_netmem(page), off); } It's always safe to cast a page to netmem. -- Thanks, Mina