Messages in this thread | | | From | Jia-Ju Bai <> | Subject | net: r8169: a question of memory barrier in the r8169 driver | Date | Thu, 18 Jan 2018 22:06:17 +0800 |
| |
In the rt8169 driver, the function "rtl_tx" uses "smp_mb" to sync the writing operation with rtl8169_start_xmit: if (tp->dirty_tx != dirty_tx) { tp->dirty_tx = dirty_tx; smp_mb(); ... } The function rtl8169_start_xmit reads tp->dirty_tx in TX_FRAGS_READY_FOR: if (unlikely(!TX_FRAGS_READY_FOR(tp, skb_shinfo(skb)->nr_frags))) { netif_err(tp, drv, dev, "BUG! Tx Ring full when queue awake!\n"); goto err_stop_0; } But there is no memory barrier around this code.
Is there a possible data race here? If not, how this data race is avoided?
Thanks, Jia-Ju Bai
| |