• Sebastian Andrzej Siewior's avatar
    net: Add netif_rx_any_context() · c11171a4
    Sebastian Andrzej Siewior authored
    Quite some drivers make conditional decisions based on in_interrupt() to
    invoke either netif_rx() or netif_rx_ni().
    
    Conditionals based on in_interrupt() or other variants of preempt count
    checks in drivers should not exist for various reasons and Linus clearly
    requested to either split the code pathes or pass an argument to the
    common functions which provides the context.
    
    This is obviously the correct solution, but for some of the affected
    drivers this needs a major rewrite due to their convoluted structure.
    
    As in_interrupt() usage in drivers needs to be phased out, provide
    netif_rx_any_context() as a stop gap for these drivers.
    
    This confines the in_interrupt() conditional to core code which in turn
    allows to remove the access to this check for driver code and provides one
    central place to do further modifications once the driver maze is cleaned
    up.
    Suggested-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarSebastian Andrzej Siewior <bigeasy@linutronix.de>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    c11171a4
dev.c 276 KB