From a4bb3955579991dfb1ef5b8ffcc498b54671351e Mon Sep 17 00:00:00 2001 From: Zheng Da Date: Sat, 27 Feb 2010 15:46:25 +0100 Subject: Use lock to protect pending softirq variable. This is a temporary solution. I should implement a correct mechanism to simulate cli/sti. --- libdde_linux26/lib/src/net/core/dev.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'libdde_linux26/lib/src/net') diff --git a/libdde_linux26/lib/src/net/core/dev.c b/libdde_linux26/lib/src/net/core/dev.c index 64917332..128f4d73 100644 --- a/libdde_linux26/lib/src/net/core/dev.c +++ b/libdde_linux26/lib/src/net/core/dev.c @@ -2611,11 +2611,16 @@ out: void __napi_schedule(struct napi_struct *n) { unsigned long flags; + extern ddekit_lock_t cli_lock; - local_irq_save(flags); + if (cli_lock == NULL) + ddekit_lock_init_unlocked(&cli_lock); + ddekit_lock_lock(&cli_lock); +// local_irq_save(flags); list_add_tail(&n->poll_list, &__get_cpu_var(softnet_data).poll_list); __raise_softirq_irqoff(NET_RX_SOFTIRQ); - local_irq_restore(flags); +// local_irq_restore(flags); + ddekit_lock_unlock(&cli_lock); } EXPORT_SYMBOL(__napi_schedule); -- cgit v1.2.3