Message ID | 20200929203502.769744809@linutronix.de |
---|---|
State | Superseded |
Headers | show |
Series | net: in_interrupt() cleanup and fixes | expand |
On Tue, Sep 29, 2020 at 10:25:42PM +0200, Thomas Gleixner wrote: > From: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > > The usage of in_interrupt() in non-core code is phased out. Ideally the > information of the calling context should be passed by the callers or the > functions be split as appropriate. > > libertas uses in_interupt() to select the netif_rx*() variant which matches > the calling context. The attempt to consolidate the code by passing an > arguemnt or by distangling it failed due lack of knowledge about this > driver and because the call chains are hard to follow. > > As a stop gap use netif_rx_any_context() which invokes the correct code > path depending on context and confines the in_interrupt() usage to core > code. > > Signed-off-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de> > Signed-off-by: Thomas Gleixner <tglx@linutronix.de> > Acked-by: Kalle Valo <kvalo@codeaurora.org> Reviewed-by: James Cameron <quozl@laptop.org>
--- a/drivers/net/wireless/marvell/libertas/rx.c +++ b/drivers/net/wireless/marvell/libertas/rx.c @@ -147,10 +147,7 @@ int lbs_process_rxed_packet(struct lbs_p dev->stats.rx_packets++; skb->protocol = eth_type_trans(skb, dev); - if (in_interrupt()) - netif_rx(skb); - else - netif_rx_ni(skb); + netif_rx_any_context(skb); ret = 0; done: @@ -265,11 +262,7 @@ static int process_rxed_802_11_packet(st dev->stats.rx_packets++; skb->protocol = eth_type_trans(skb, priv->dev); - - if (in_interrupt()) - netif_rx(skb); - else - netif_rx_ni(skb); + netif_rx_any_context(skb); ret = 0;