lkml.org 
[lkml]   [2016]   [Jul]   [29]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
From
SubjectRe: [PATCH v2 1/5] ethernet: add sun8i-emac driver
Date
On Thursday, July 28, 2016 3:18:26 PM CEST LABBE Corentin wrote:
>
> I will reworked locking and it seems that no locking is necessary.
> I have added the following comment about the locking strategy:
>
> /* Locking strategy:
> * RX queue does not need any lock since only sun8i_emac_poll() access it.
> * (All other RX modifiers (ringparam/ndo_stop) disable NAPI and so sun8i_emac_poll())
> * TX queue is handled by sun8i_emac_xmit(), sun8i_emac_complete_xmit() and sun8i_emac_tx_timeout()
> * (All other RX modifiers (ringparam/ndo_stop) disable NAPI and stop queue)
> *
> * sun8i_emac_xmit() could fire only once (netif_tx_lock)
> * sun8i_emac_complete_xmit() could fire only once (called from NAPI)
> * sun8i_emac_tx_timeout() could fire only once (netif_tx_lock) and couldnt
> * race with sun8i_emac_xmit (due to netif_tx_lock) and with sun8i_emac_complete_xmit which disable NAPI.
> *
> * So only sun8i_emac_xmit and sun8i_emac_complete_xmit could fire at the same time.
> * But they never could modify the same descriptors:
> * - sun8i_emac_complete_xmit() will modify only descriptors with empty status
> * - sun8i_emac_xmit() will modify only descriptors set to DCLEAN
> * Proper memory barriers ensure that descriptor set to DCLEAN could not be
> * modified latter by sun8i_emac_complete_xmit().
> * */

Sounds good, the comment is certainly very helpful here.

Arnd

\
 
 \ /
  Last update: 2016-07-29 12:01    [W:0.088 / U:1.608 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site