From 8e7a5c3a3a202918893b102c47b35158843743ab Mon Sep 17 00:00:00 2001 From: Jason Xing Date: Fri, 12 Apr 2024 11:07:18 +0800 Subject: [PATCH] net: save some cycles when doing skb_attempt_defer_free() mainline inclusion from mainline-v6.10-rc1 category: performance Normally, we don't face these two exceptions very often meanwhile we have some chance to meet the condition where the current cpu id is the same as skb->alloc_cpu. One simple test that can help us see the frequency of this statement 'cpu == raw_smp_processor_id()': 1. running iperf -s and iperf -c [ip] -P [MAX CPU] 2. using BPF to capture skb_attempt_defer_free() I can see around 4% chance that happens to satisfy the statement. So moving this statement at the beginning can save some cycles in most cases. Signed-off-by: Jason Xing Reviewed-by: Alexander Lobakin Signed-off-by: David S. Miller Signed-off-by: Wentao Guan --- net/core/skbuff.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/net/core/skbuff.c b/net/core/skbuff.c index f0a9ef1aeaa29..6efdfba08c746 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -6834,9 +6834,9 @@ void skb_attempt_defer_free(struct sk_buff *skb) unsigned int defer_max; bool kick; - if (WARN_ON_ONCE(cpu >= nr_cpu_ids) || - !cpu_online(cpu) || - cpu == raw_smp_processor_id()) { + if (cpu == raw_smp_processor_id() || + WARN_ON_ONCE(cpu >= nr_cpu_ids) || + !cpu_online(cpu)) { nodefer: __kfree_skb(skb); return; }