On 4/20/26 6:54 PM, Kohei Enju wrote:
Since commit 2bd82484bb4c ("xps: fix xps for stacked devices"),
skb->napi_id shares storage with sender_cpu. RX tracepoints using
net_dev_rx_verbose_template read skb->napi_id directly and can therefore
report sender_cpu values as if they were NAPI IDs.

For example, on the loopback path this can report 1 as napi_id, where 1
So I think veth_forward_skb->__netif_rx could be affected as well?
comes from raw_smp_processor_id() + 1 in the XPS path:

   # bpftrace -e 'tracepoint:net:netif_rx_entry{ print(args->napi_id); }'
   # taskset -c 0 ping -c 1 ::1

Report only valid NAPI IDs in these tracepoints and use 0 otherwise.

Fixes: 2bd82484bb4c ("xps: fix xps for stacked devices")
Signed-off-by: Kohei Enju <[email protected]>
---
  include/trace/events/net.h | 4 +++-
  1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/include/trace/events/net.h b/include/trace/events/net.h
index fdd9ad474ce3..dbc2c5598e35 100644
--- a/include/trace/events/net.h
+++ b/include/trace/events/net.h
@@ -10,6 +10,7 @@
  #include <linux/if_vlan.h>
  #include <linux/ip.h>
  #include <linux/tracepoint.h>
+#include <net/busy_poll.h>
TRACE_EVENT(net_dev_start_xmit, @@ -208,7 +209,8 @@ DECLARE_EVENT_CLASS(net_dev_rx_verbose_template,
        TP_fast_assign(
                __assign_str(name);
  #ifdef CONFIG_NET_RX_BUSY_POLL
-               __entry->napi_id = skb->napi_id;
+               __entry->napi_id = napi_id_valid(skb->napi_id) ?
+                                  skb->napi_id : 0;
  #else
                __entry->napi_id = 0;
  #endif

Reply via email to