Publishing the copied response before clearing the pending id is release ordering. The following cmpset is a full barrier today, but keep the explicit fence so the ordering survives when cmpset is converted to a release compare exchange.
Signed-off-by: Stephen Hemminger <[email protected]> --- drivers/net/netvsc/hn_rndis.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/netvsc/hn_rndis.c b/drivers/net/netvsc/hn_rndis.c index 7c54eebcef..d1142fa1dd 100644 --- a/drivers/net/netvsc/hn_rndis.c +++ b/drivers/net/netvsc/hn_rndis.c @@ -357,7 +357,7 @@ void hn_rndis_receive_response(struct hn_data *hv, memcpy(hv->rndis_resp, data, len); /* make sure response copied before update */ - rte_smp_wmb(); + rte_atomic_thread_fence(rte_memory_order_release); if (rte_atomic32_cmpset(&hv->rndis_pending, hdr->rid, 0) == 0) { PMD_DRV_LOG(NOTICE, -- 2.53.0

