[EXTERNAL] [PATCH v2 27/33] net/netvsc: replace SMP barrier in RNDIS response

Wei Hu weh at microsoft.com
Mon Sep 21 11:00:15 CEST 2026



> -----Original Message-----
> From: Stephen Hemminger <stephen at networkplumber.org>
> Sent: Monday, September 21, 2026 2:10 AM
> To: dev at dpdk.org
> Cc: Stephen Hemminger <stephen at networkplumber.org>; Wei Hu
> <weh at microsoft.com>
> Subject: [EXTERNAL] [PATCH v2 27/33] net/netvsc: replace SMP barrier in
> RNDIS response
> 
> 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 <stephen at networkplumber.org>
> ---
>  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

Reviewed-by: Wei Hu <weh at microsoft.com>

The review reveals a pre-existing issue, not introduced by this patch. 
The old rte_smp_wmb() only ordered the producer. Hn_rndis_execl() loaked
an acquire operation before reading rndis_resp.

The change perserves the existing producer-side semantics and is stronger on
arm64, so it does not create a regression. 

The missing consumer acquire should be reported as a separate follow-up fix.

Thanks,
Wei

 



More information about the dev mailing list