[dpdk-dev] [RFC PATCH v3 4/5] lib/bpf: use wait event scheme for Rx/Tx iteration
Ananyev, Konstantin
konstantin.ananyev at intel.com
Thu Oct 7 17:50:15 CEST 2021
>
> Signed-off-by: Feifei Wang <feifei.wang2 at arm.com>
> Reviewed-by: Ruifeng Wang <ruifeng.wang at arm.com>
> ---
> lib/bpf/bpf_pkt.c | 9 +++------
> 1 file changed, 3 insertions(+), 6 deletions(-)
>
> diff --git a/lib/bpf/bpf_pkt.c b/lib/bpf/bpf_pkt.c
> index 6e8248f0d6..3af15ae97b 100644
> --- a/lib/bpf/bpf_pkt.c
> +++ b/lib/bpf/bpf_pkt.c
> @@ -113,7 +113,7 @@ bpf_eth_cbi_unuse(struct bpf_eth_cbi *cbi)
> static void
> bpf_eth_cbi_wait(const struct bpf_eth_cbi *cbi)
> {
> - uint32_t nuse, puse;
> + uint32_t puse;
>
> /* make sure all previous loads and stores are completed */
> rte_smp_mb();
> @@ -122,11 +122,8 @@ bpf_eth_cbi_wait(const struct bpf_eth_cbi *cbi)
>
> /* in use, busy wait till current RX/TX iteration is finished */
> if ((puse & BPF_ETH_CBI_INUSE) != 0) {
> - do {
> - rte_pause();
> - rte_compiler_barrier();
> - nuse = cbi->use;
> - } while (nuse == puse);
> + rte_compiler_barrier();
> + rte_wait_event_32(&cbi->use, UINT_MAX, puse, ==, __ATOMIC_RELAXED);
If we do use atomic load, while we still need a compiler_barrier() here?
> }
> }
>
> --
> 2.25.1
More information about the dev
mailing list