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

Reply via email to