diff --git a/net/core/dev.c b/net/core/dev.c index 50e77fe096f4..16467dc215d0 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -4560,8 +4560,13 @@ static void net_rps_send_ipi(struct softnet_data *remsd) while (remsd) { struct softnet_data *next = remsd->rps_ipi_next; - if (cpu_online(remsd->cpu)) + if (cpu_online(remsd->cpu)) { smp_call_function_single_async(remsd->cpu, &remsd->csd); + } else { + rps_lock(remsd); + remsd->backlog.state = 0; + rps_unlock(remsd); + } remsd = next; } #endif