From mboxrd@z Thu Jan 1 00:00:00 1970 From: =?UTF-8?q?Bj=C3=B6rn=20T=C3=B6pel?= Subject: [RFC PATCH bpf-next 09/12] samples/bpf: minor *_nb_free performance fix Date: Tue, 15 May 2018 21:06:12 +0200 Message-ID: <20180515190615.23099-10-bjorn.topel@gmail.com> References: <20180515190615.23099-1-bjorn.topel@gmail.com> Cc: michael.lundkvist@ericsson.com, jesse.brandeburg@intel.com, anjali.singhai@intel.com, qi.z.zhang@intel.com, intel-wired-lan@lists.osuosl.org To: bjorn.topel@gmail.com, magnus.karlsson@gmail.com, magnus.karlsson@intel.com, alexander.h.duyck@intel.com, alexander.duyck@gmail.com, john.fastabend@gmail.com, ast@fb.com, brouer@redhat.com, willemdebruijn.kernel@gmail.com, daniel@iogearbox.net, mst@redhat.com, netdev@vger.kernel.org Return-path: Received: from mga18.intel.com ([134.134.136.126]:3793 "EHLO mga18.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752574AbeEOTHh (ORCPT ); Tue, 15 May 2018 15:07:37 -0400 In-Reply-To: <20180515190615.23099-1-bjorn.topel@gmail.com> Sender: netdev-owner@vger.kernel.org List-ID: From: Magnus Karlsson Signed-off-by: Magnus Karlsson --- samples/bpf/xdpsock_user.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/samples/bpf/xdpsock_user.c b/samples/bpf/xdpsock_user.c index 7fe60f6f7d53..50b9cabba4e8 100644 --- a/samples/bpf/xdpsock_user.c +++ b/samples/bpf/xdpsock_user.c @@ -159,15 +159,15 @@ static const char pkt_data[] = static inline u32 umem_nb_free(struct xdp_umem_uqueue *q, u32 nb) { - u32 free_entries = q->size - (q->cached_prod - q->cached_cons); + u32 free_entries = q->cached_cons - q->cached_prod; if (free_entries >= nb) return free_entries; /* Refresh the local tail pointer */ - q->cached_cons = q->ring->ptrs.consumer; + q->cached_cons = q->ring->ptrs.consumer + q->size; - return q->size - (q->cached_prod - q->cached_cons); + return q->cached_cons - q->cached_prod; } static inline u32 xq_nb_free(struct xdp_uqueue *q, u32 ndescs) @@ -432,6 +432,7 @@ static struct xdp_umem *xdp_umem_configure(int sfd) umem->fq.mask = FQ_NUM_DESCS - 1; umem->fq.size = FQ_NUM_DESCS; + umem->fq.cached_cons = FQ_NUM_DESCS; umem->cq.ring = mmap(0, sizeof(struct xdp_umem_ring) + CQ_NUM_DESCS * sizeof(u32), @@ -514,6 +515,7 @@ static struct xdpsock *xsk_configure(struct xdp_umem *umem) xsk->tx.mask = NUM_DESCS - 1; xsk->tx.size = NUM_DESCS; + xsk->tx.cached_cons = NUM_DESCS; sxdp.sxdp_family = PF_XDP; sxdp.sxdp_ifindex = opt_ifindex; -- 2.14.1