RE: [PATCH net v4] igb: Fix XDP with PTP enabled
From: Penigalapati, Sandeep <hidden>
Date: 2021-06-03 11:30:57
Also in:
bpf, intel-wired-lan
-----Original Message-----
From: Kurt Kanzenbach <kurt@linutronix.de>
Sent: Monday, May 3, 2021 12:58 PM
To: Brandeburg, Jesse <redacted>; Nguyen, Anthony L
[off-list ref]; David S. Miller [off-list ref];
Jakub Kicinski [off-list ref]
Cc: Alexei Starovoitov <ast@kernel.org>; Daniel Borkmann
[off-list ref]; Jesper Dangaard Brouer [off-list ref]; John
Fastabend [off-list ref]; Sven Auhagen
[off-list ref]; intel-wired-lan@lists.osuosl.org;
netdev@vger.kernel.org; bpf@vger.kernel.org; Ilias Apalodimas
[off-list ref]; Lorenzo Bianconi [off-list ref];
Sebastian Andrzej Siewior [off-list ref]; Richard Cochran
[off-list ref]; Alexander Duyck
[off-list ref]; Tyler S [off-list ref];
Fijalkowski, Maciej [off-list ref]; Kurt Kanzenbach
[off-list ref]
Subject: [PATCH net v4] igb: Fix XDP with PTP enabled
When using native XDP with the igb driver, the XDP frame data doesn't point
to the beginning of the packet. It's off by 16 bytes. Everything works as
expected with XDP skb mode.
Actually these 16 bytes are used to store the packet timestamps. Therefore,
pull the timestamp before executing any XDP operations and adjust all other
code accordingly. The igc driver does it like that as well.
Tested with Intel i210 card and AF_XDP sockets.
Fixes: 9cbc948b5a20 ("igb: add XDP support")
Signed-off-by: Kurt Kanzenbach <kurt@linutronix.de>
---
Changes since v3:
* Get rid of timestamp check in hot path (Maciej Fijalkowski)
Changes since v2:
* Check timestamp for validity (Nguyen, Anthony L)
Changes since v1:
* Use xdp_prepare_buff() (Lorenzo Bianconi)
Changes since RFC:
* Removed unused return value definitions (Alexander Duyck)
Previous versions:
* https://lkml.kernel.org/netdev/20210422052617.17267-1-
kurt@linutronix.de/
* https://lkml.kernel.org/netdev/20210419072332.7246-1-
kurt@linutronix.de/
* https://lkml.kernel.org/netdev/20210415092145.27322-1-
kurt@linutronix.de/
* https://lkml.kernel.org/netdev/20210412101713.15161-1-
kurt@linutronix.de/
drivers/net/ethernet/intel/igb/igb.h | 2 +-
drivers/net/ethernet/intel/igb/igb_main.c | 45 +++++++++++++----------
drivers/net/ethernet/intel/igb/igb_ptp.c | 23 +++++-------
3 files changed, 37 insertions(+), 33 deletions(-)Tested-by: Sandeep Penigalapati <redacted>