diff options
author | Zheng Da <zhengda1936@gmail.com> | 2010-02-27 15:46:25 +0100 |
---|---|---|
committer | Zheng Da <zhengda1936@gmail.com> | 2010-02-27 15:46:25 +0100 |
commit | a4bb3955579991dfb1ef5b8ffcc498b54671351e (patch) | |
tree | 158bb092ba98c1e29c100eab7229a7d7ca65c6e6 /libdde_linux26/lib/src/net | |
parent | 5980bdb21ee1c39455ed319b8390800d9cd7de14 (diff) |
Use lock to protect pending softirq variable.
This is a temporary solution. I should implement a correct mechanism to
simulate cli/sti.
Diffstat (limited to 'libdde_linux26/lib/src/net')
-rw-r--r-- | libdde_linux26/lib/src/net/core/dev.c | 9 |
1 files changed, 7 insertions, 2 deletions
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); |