On Wed, Jun 29, 2022 at 4:38 PM Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> wrote: > > Currently bpf_link probe is done for each call of xsk_socket__create(). > For cases where xsk context was previously created and current socket > creation uses it, has_bpf_link will be overwritten, where it has already > been initialized. > > Optimize this by moving the query to the xsk_create_ctx() so that when > xsk_get_ctx() finds a ctx then no further bpf_link probes are needed. This would be a good optimization to libxdp too. Acked-by: Magnus Karlsson <magnus.karlsson@xxxxxxxxx> > Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@xxxxxxxxx> > --- > tools/testing/selftests/bpf/xsk.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/tools/testing/selftests/bpf/xsk.c b/tools/testing/selftests/bpf/xsk.c > index eb50c3f336f8..fa13d2c44517 100644 > --- a/tools/testing/selftests/bpf/xsk.c > +++ b/tools/testing/selftests/bpf/xsk.c > @@ -958,6 +958,7 @@ static struct xsk_ctx *xsk_create_ctx(struct xsk_socket *xsk, > ctx->fill = fill; > ctx->comp = comp; > list_add(&ctx->list, &umem->ctx_list); > + ctx->has_bpf_link = xsk_probe_bpf_link(); > return ctx; > } > > @@ -1059,7 +1060,6 @@ int xsk_socket__create_shared(struct xsk_socket **xsk_ptr, > } > } > xsk->ctx = ctx; > - xsk->ctx->has_bpf_link = xsk_probe_bpf_link(); > > if (rx && !rx_setup_done) { > err = setsockopt(xsk->fd, SOL_XDP, XDP_RX_RING, > -- > 2.27.0 >