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; +} + static inline int __skb_linearize(struct sk_buff *skb) { return __pskb_pull_tail(skb, skb->data_len) ? 0 : -ENOMEM; -- 2.31.1