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:
parent
4ed4e554ac
commit
388bee69a5
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user