summaryrefslogtreecommitdiff
path: root/libdde_linux26/lib/src/net
diff options
context:
space:
mode:
authorZheng Da <zhengda1936@gmail.com>2010-02-28 05:24:57 +0100
committerZheng Da <zhengda1936@gmail.com>2010-02-28 05:24:57 +0100
commitfbb1c9f5d35a8b89bbebb55a4a49c3da2f189c05 (patch)
tree478fb31c2121ff8b509f1d0b4ccce6c6f047ba58 /libdde_linux26/lib/src/net
parentf36fe67a1ec4914bef96f0bc8003a5ee0dd08c8c (diff)
implement cli/sti with a lock.
In order to avoid dead lock caused by spin_lock_irq or spin_lock_irqsave, I remove irq disabling in them. It's really unnecessary to do spin_lock_irq and spin_lock_irqsave any more because interrupt isn't handled in a real interrupt context.
Diffstat (limited to 'libdde_linux26/lib/src/net')
-rw-r--r--libdde_linux26/lib/src/net/core/dev.c9
1 files changed, 2 insertions, 7 deletions
diff --git a/libdde_linux26/lib/src/net/core/dev.c b/libdde_linux26/lib/src/net/core/dev.c
index 128f4d73..64917332 100644
--- a/libdde_linux26/lib/src/net/core/dev.c
+++ b/libdde_linux26/lib/src/net/core/dev.c
@@ -2611,16 +2611,11 @@ out:
void __napi_schedule(struct napi_struct *n)
{
unsigned long flags;
- extern ddekit_lock_t cli_lock;
- if (cli_lock == NULL)
- ddekit_lock_init_unlocked(&cli_lock);
- ddekit_lock_lock(&cli_lock);
-// local_irq_save(flags);
+ 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);
- ddekit_lock_unlock(&cli_lock);
+ local_irq_restore(flags);
}
EXPORT_SYMBOL(__napi_schedule);