Hello Alan,
The __ax88179_read_cmd() and __ax88179_write_cmd() routines are asynchronous with respect to ax88179_disconnect(), right? Or at least, they are if they run as a result of the user closing the network interface. Otherwise there wouldn't be any memory ordering issues.
Yes, I think so, they could be asynchronous regarding ax88179_disconnect.
But the memory barriers you added are not the proper solution. What you need here is _synchronization_, not _ordering_. As it is, the memory barriers you have added don't do anything; they shouldn't be in the patch.
Ok, thank you for the helpful clarification, let me check it better, I understood it in a wrong way.
If you would like a more in-depth explanation, let me know.
Thank you for your help, I will try first, I really appreciate this.
Best regards José Ignacio