<div dir="auto">We presently timestamp in cake. Faster to have the hw do it. </div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">---------- Forwarded message ---------<br>From: <strong class="gmail_sendername" dir="auto">Stanislav Fomichev</strong> <span dir="auto"><<a href="mailto:sdf@google.com">sdf@google.com</a>></span><br>Date: Mon, Nov 14, 2022, 7:13 PM<br>Subject: [PATCH bpf-next 05/11] veth: Support rx timestamp metadata for xdp<br>To:  <<a href="mailto:bpf@vger.kernel.org">bpf@vger.kernel.org</a>><br>Cc:  <<a href="mailto:ast@kernel.org">ast@kernel.org</a>>,  <<a href="mailto:daniel@iogearbox.net">daniel@iogearbox.net</a>>,  <<a href="mailto:andrii@kernel.org">andrii@kernel.org</a>>,  <<a href="mailto:martin.lau@linux.dev">martin.lau@linux.dev</a>>,  <<a href="mailto:song@kernel.org">song@kernel.org</a>>,  <<a href="mailto:yhs@fb.com">yhs@fb.com</a>>,  <<a href="mailto:john.fastabend@gmail.com">john.fastabend@gmail.com</a>>,  <<a href="mailto:kpsingh@kernel.org">kpsingh@kernel.org</a>>,  <<a href="mailto:sdf@google.com">sdf@google.com</a>>,  <<a href="mailto:haoluo@google.com">haoluo@google.com</a>>,  <<a href="mailto:jolsa@kernel.org">jolsa@kernel.org</a>>, David Ahern <<a href="mailto:dsahern@gmail.com">dsahern@gmail.com</a>>, Jakub Kicinski <<a href="mailto:kuba@kernel.org">kuba@kernel.org</a>>, Willem de Bruijn <<a href="mailto:willemb@google.com">willemb@google.com</a>>, Jesper Dangaard Brouer <<a href="mailto:brouer@redhat.com">brouer@redhat.com</a>>, Anatoly Burakov <<a href="mailto:anatoly.burakov@intel.com">anatoly.burakov@intel.com</a>>, Alexander Lobakin <<a href="mailto:alexandr.lobakin@intel.com">alexandr.lobakin@intel.com</a>>, Magnus Karlsson <<a href="mailto:magnus.karlsson@gmail.com">magnus.karlsson@gmail.com</a>>, Maryam Tahhan <<a href="mailto:mtahhan@redhat.com">mtahhan@redhat.com</a>>,  <<a href="mailto:xdp-hints@xdp-project.net">xdp-hints@xdp-project.net</a>>,  <<a href="mailto:netdev@vger.kernel.org">netdev@vger.kernel.org</a>><br></div><br><br>The goal is to enable end-to-end testing of the metadata<br>
for AF_XDP. Current rx_timestamp kfunc returns current<br>
time which should be enough to exercise this new functionality.<br>
<br>
Cc: John Fastabend <<a href="mailto:john.fastabend@gmail.com" target="_blank" rel="noreferrer">john.fastabend@gmail.com</a>><br>
Cc: David Ahern <<a href="mailto:dsahern@gmail.com" target="_blank" rel="noreferrer">dsahern@gmail.com</a>><br>
Cc: Martin KaFai Lau <<a href="mailto:martin.lau@linux.dev" target="_blank" rel="noreferrer">martin.lau@linux.dev</a>><br>
Cc: Jakub Kicinski <<a href="mailto:kuba@kernel.org" target="_blank" rel="noreferrer">kuba@kernel.org</a>><br>
Cc: Willem de Bruijn <<a href="mailto:willemb@google.com" target="_blank" rel="noreferrer">willemb@google.com</a>><br>
Cc: Jesper Dangaard Brouer <<a href="mailto:brouer@redhat.com" target="_blank" rel="noreferrer">brouer@redhat.com</a>><br>
Cc: Anatoly Burakov <<a href="mailto:anatoly.burakov@intel.com" target="_blank" rel="noreferrer">anatoly.burakov@intel.com</a>><br>
Cc: Alexander Lobakin <<a href="mailto:alexandr.lobakin@intel.com" target="_blank" rel="noreferrer">alexandr.lobakin@intel.com</a>><br>
Cc: Magnus Karlsson <<a href="mailto:magnus.karlsson@gmail.com" target="_blank" rel="noreferrer">magnus.karlsson@gmail.com</a>><br>
Cc: Maryam Tahhan <<a href="mailto:mtahhan@redhat.com" target="_blank" rel="noreferrer">mtahhan@redhat.com</a>><br>
Cc: <a href="mailto:xdp-hints@xdp-project.net" target="_blank" rel="noreferrer">xdp-hints@xdp-project.net</a><br>
Cc: <a href="mailto:netdev@vger.kernel.org" target="_blank" rel="noreferrer">netdev@vger.kernel.org</a><br>
Signed-off-by: Stanislav Fomichev <<a href="mailto:sdf@google.com" target="_blank" rel="noreferrer">sdf@google.com</a>><br>
---<br>
 drivers/net/veth.c | 14 ++++++++++++++<br>
 1 file changed, 14 insertions(+)<br>
<br>
diff --git a/drivers/net/veth.c b/drivers/net/veth.c<br>
index 2a4592780141..c626580a2294 100644<br>
--- a/drivers/net/veth.c<br>
+++ b/drivers/net/veth.c<br>
@@ -25,6 +25,7 @@<br>
 #include <linux/filter.h><br>
 #include <linux/ptr_ring.h><br>
 #include <linux/bpf_trace.h><br>
+#include <linux/bpf_patch.h><br>
 #include <linux/net_tstamp.h><br>
<br>
 #define DRV_NAME       "veth"<br>
@@ -1659,6 +1660,18 @@ static int veth_xdp(struct net_device *dev, struct netdev_bpf *xdp)<br>
        }<br>
 }<br>
<br>
+static void veth_unroll_kfunc(const struct bpf_prog *prog, u32 func_id,<br>
+                             struct bpf_patch *patch)<br>
+{<br>
+       if (func_id == xdp_metadata_kfunc_id(XDP_METADATA_KFUNC_RX_TIMESTAMP_SUPPORTED)) {<br>
+               /* return true; */<br>
+               bpf_patch_append(patch, BPF_MOV64_IMM(BPF_REG_0, 1));<br>
+       } else if (func_id == xdp_metadata_kfunc_id(XDP_METADATA_KFUNC_RX_TIMESTAMP)) {<br>
+               /* return ktime_get_mono_fast_ns(); */<br>
+               bpf_patch_append(patch, BPF_EMIT_CALL(ktime_get_mono_fast_ns));<br>
+       }<br>
+}<br>
+<br>
 static const struct net_device_ops veth_netdev_ops = {<br>
        .ndo_init            = veth_dev_init,<br>
        .ndo_open            = veth_open,<br>
@@ -1678,6 +1691,7 @@ static const struct net_device_ops veth_netdev_ops = {<br>
        .ndo_bpf                = veth_xdp,<br>
        .ndo_xdp_xmit           = veth_ndo_xdp_xmit,<br>
        .ndo_get_peer_dev       = veth_peer_dev,<br>
+       .ndo_unroll_kfunc       = veth_unroll_kfunc,<br>
 };<br>
<br>
 #define VETH_FEATURES (NETIF_F_SG | NETIF_F_FRAGLIST | NETIF_F_HW_CSUM | \<br>
-- <br>
2.38.1.431.g37b22c650d-goog<br>
<br>
</div>