[v4,4/5] lib/bpf: use wait event scheme for Rx/Tx iteration
Checks
Commit Message
Instead of polling for cbi->use to be updated, use wait event scheme.
Signed-off-by: Feifei Wang <feifei.wang2@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
---
lib/bpf/bpf_pkt.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
@@ -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_event(&cbi->use, UINT32_MAX, puse, ==,
+ __ATOMIC_RELAXED, 32);
}
}