In bpf_eth_cbi_unload(), rte_smp_mb() was called immediately before bpf_eth_cbi_wait(), which itself starts with rte_smp_mb().
Remove the redundant rte_smp_mb() call from bpf_eth_cbi_unload() and update the unload sequence diagram accordingly. Signed-off-by: Marat Khalili <[email protected]> --- lib/bpf/bpf_pkt.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/lib/bpf/bpf_pkt.c b/lib/bpf/bpf_pkt.c index 7ee16cfa69..68671848e9 100644 --- a/lib/bpf/bpf_pkt.c +++ b/lib/bpf/bpf_pkt.c @@ -62,8 +62,6 @@ * | | | | | | * rte_smp_mb() | | | | | * | | | | | | - * rte_smp_mb() | | | | | - * | | | | | | * +-if use is odd | | | | if cb not NULL-+ * | | | | | | | | * | +------------ fetch odd ------------>| | |<-- execute --+ | @@ -502,7 +500,6 @@ bpf_eth_cbi_unload(struct bpf_eth_cbi *bc) { /* mark this cbi as empty */ bc->cb = NULL; - rte_smp_mb(); /* make sure datapath doesn't use bpf anymore, then destroy bpf */ bpf_eth_cbi_wait(bc); -- 2.43.0

