• Eric Dumazet's avatar
    net: rps: fix cpu unplug · ac64da0b
    Eric Dumazet authored
    softnet_data.input_pkt_queue is protected by a spinlock that
    we must hold when transferring packets from victim queue to an active
    one. This is because other cpus could still be trying to enqueue packets
    into victim queue.
    
    A second problem is that when we transfert the NAPI poll_list from
    victim to current cpu, we absolutely need to special case the percpu
    backlog, because we do not want to add complex locking to protect
    process_queue : Only owner cpu is allowed to manipulate it, unless cpu
    is offline.
    
    Based on initial patch from Prasad Sodagudi & Subash Abhinov
    Kasiviswanathan.
    
    This version is better because we do not slow down packet processing,
    only make migration safer.
    Reported-by: default avatarPrasad Sodagudi <psodagud@codeaurora.org>
    Reported-by: default avatarSubash Abhinov Kasiviswanathan <subashab@codeaurora.org>
    Signed-off-by: default avatarEric Dumazet <edumazet@google.com>
    Cc: Tom Herbert <therbert@google.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    ac64da0b
dev.c 185 KB