We presently timestamp in cake. Faster to have the hw do it. ---------- Forwarded message --------- From: Stanislav Fomichev <s...@google.com> Date: Mon, Nov 14, 2022, 7:13 PM Subject: [PATCH bpf-next 05/11] veth: Support rx timestamp metadata for xdp To: <b...@vger.kernel.org> Cc: <a...@kernel.org>, <dan...@iogearbox.net>, <and...@kernel.org>, < martin....@linux.dev>, <s...@kernel.org>, <y...@fb.com>, < john.fastab...@gmail.com>, <kpsi...@kernel.org>, <s...@google.com>, < hao...@google.com>, <jo...@kernel.org>, David Ahern <dsah...@gmail.com>, Jakub Kicinski <k...@kernel.org>, Willem de Bruijn <will...@google.com>, Jesper Dangaard Brouer <bro...@redhat.com>, Anatoly Burakov < anatoly.bura...@intel.com>, Alexander Lobakin <alexandr.loba...@intel.com>, Magnus Karlsson <magnus.karls...@gmail.com>, Maryam Tahhan < mtah...@redhat.com>, <xdp-hi...@xdp-project.net>, <net...@vger.kernel.org>
The goal is to enable end-to-end testing of the metadata for AF_XDP. Current rx_timestamp kfunc returns current time which should be enough to exercise this new functionality. Cc: John Fastabend <john.fastab...@gmail.com> Cc: David Ahern <dsah...@gmail.com> Cc: Martin KaFai Lau <martin....@linux.dev> Cc: Jakub Kicinski <k...@kernel.org> Cc: Willem de Bruijn <will...@google.com> Cc: Jesper Dangaard Brouer <bro...@redhat.com> Cc: Anatoly Burakov <anatoly.bura...@intel.com> Cc: Alexander Lobakin <alexandr.loba...@intel.com> Cc: Magnus Karlsson <magnus.karls...@gmail.com> Cc: Maryam Tahhan <mtah...@redhat.com> Cc: xdp-hi...@xdp-project.net Cc: net...@vger.kernel.org Signed-off-by: Stanislav Fomichev <s...@google.com> --- drivers/net/veth.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/net/veth.c b/drivers/net/veth.c index 2a4592780141..c626580a2294 100644 --- a/drivers/net/veth.c +++ b/drivers/net/veth.c @@ -25,6 +25,7 @@ #include <linux/filter.h> #include <linux/ptr_ring.h> #include <linux/bpf_trace.h> +#include <linux/bpf_patch.h> #include <linux/net_tstamp.h> #define DRV_NAME "veth" @@ -1659,6 +1660,18 @@ static int veth_xdp(struct net_device *dev, struct netdev_bpf *xdp) } } +static void veth_unroll_kfunc(const struct bpf_prog *prog, u32 func_id, + struct bpf_patch *patch) +{ + if (func_id == xdp_metadata_kfunc_id(XDP_METADATA_KFUNC_RX_TIMESTAMP_SUPPORTED)) { + /* return true; */ + bpf_patch_append(patch, BPF_MOV64_IMM(BPF_REG_0, 1)); + } else if (func_id == xdp_metadata_kfunc_id(XDP_METADATA_KFUNC_RX_TIMESTAMP)) { + /* return ktime_get_mono_fast_ns(); */ + bpf_patch_append(patch, BPF_EMIT_CALL(ktime_get_mono_fast_ns)); + } +} + static const struct net_device_ops veth_netdev_ops = { .ndo_init = veth_dev_init, .ndo_open = veth_open, @@ -1678,6 +1691,7 @@ static const struct net_device_ops veth_netdev_ops = { .ndo_bpf = veth_xdp, .ndo_xdp_xmit = veth_ndo_xdp_xmit, .ndo_get_peer_dev = veth_peer_dev, + .ndo_unroll_kfunc = veth_unroll_kfunc, }; #define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HW_CSUM | \ -- 2.38.1.431.g37b22c650d-goog
_______________________________________________ LibreQoS mailing list LibreQoS@lists.bufferbloat.net https://lists.bufferbloat.net/listinfo/libreqos