bpf: use wait until scheme for Rx/Tx iteration

Instead of polling for cbi->use to be updated, use wait until scheme.

Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
This commit is contained in:
Feifei Wang 2021-11-01 14:00:06 +08:00 committed by David Marchand
parent 4ed4e554ac
commit 388bee69a5

View File

@ -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_WAIT_UNTIL_MASKED((uint32_t *)(uintptr_t)&cbi->use,
UINT32_MAX, !=, puse, __ATOMIC_RELAXED);
}
}