Hi! > The driver uses a private lock for synchronization of the xmit function and > the xmit completion handler, but since the NETIF_F_LLTX flag is not set, > the xmit function is also called with the xmit_lock held. > > On the other hand the completion handler uses the reverse locking order by > first taking the private lock and (in case that the tx queue had been > stopped) then the xmit_lock. > > Improve the locking by removing the private lock and using only the > xmit_lock for synchronization instead.
Do you have stmmac hardware to test on? I believe something is very wrong with the locking there. In particular... scheduling the stmmac_tx_timer() function to run often should not do anything bad if locking is correct... but it breaks the driver rather quickly. [Example patch below, needs applying to two places in net-next.] (Other possibility is that hardware races with the driver.) Giuseppe, is there documentation available for the chip? Driver says Documentation available at: http://www.stlinux.com but that page does not work for me... 404 Not Found Code: NoSuchBucket Message: The specified bucket does not exist BucketName: www.stlinux.com RequestId: 1C8A20CB99AE7F75 HostId: ljPnqbEpyD8exct5MUgcDXSW8n+I67Yw0aejNhLuBQ0pqN0UCfiRBa3ztlOMngiXoSN+COX+VSw= Best regards, Pavel diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c index ffbcd03..8040370 100644 --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c @@ -1973,8 +1973,9 @@ static void stmmac_xmit_common(struct sk_buff *skb, struct net_device *dev, int */ priv->tx_count_frames += nfrags + 1; if (likely(priv->tx_coal_frames > priv->tx_count_frames)) { - mod_timer(&priv->txtimer, - STMMAC_COAL_TIMER(priv->tx_coal_timer)); + if (priv->tx_count_frames == nfrags + 1) + mod_timer(&priv->txtimer, + STMMAC_COAL_TIMER(priv->tx_coal_timer)); } else { priv->tx_count_frames = 0; priv->hw->desc->set_tx_ic(desc); -- (english) http://www.livejournal.com/~pavelmachek (cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
signature.asc
Description: Digital signature