Florian Westphal <f...@strlen.de> : [...] > diff --git a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > index d0084d4..a3200ea 100644 > --- a/drivers/net/ethernet/atheros/atl1c/atl1c_main.c > +++ b/drivers/net/ethernet/atheros/atl1c/atl1c_main.c [...] > @@ -2217,16 +2215,10 @@ static netdev_tx_t atl1c_xmit_frame(struct sk_buff > *skb, > } > > tpd_req = atl1c_cal_tpd_req(skb); > - if (!spin_trylock_irqsave(&adapter->tx_lock, flags)) { > - if (netif_msg_pktdata(adapter)) > - dev_info(&adapter->pdev->dev, "tx locked\n"); > - return NETDEV_TX_LOCKED; > - } > > if (atl1c_tpd_avail(adapter, type) < tpd_req) { > /* no enough descriptor, just stop queue */ > netif_stop_queue(netdev); > - spin_unlock_irqrestore(&adapter->tx_lock, flags); > return NETDEV_TX_BUSY; > } >
Play it safe and keep the implicit local_irq_{save / restore} call ? It may not be needed but it will help avoiding any unexpected regression report pointing at the NETDEV_TX_LOCKED removal change. -- Ueimor