--- /tmp/softirq.c~ 2006-02-28 20:17:03.000000000 +0100 +++ /tmp/softirq.c 2006-02-28 20:17:03.000000000 +0100 @@ -351,13 +351,13 @@ static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec) = { NULL }; static void inline -__tasklet_common_schedule(struct tasklet_struct *t, struct tasklet_head *head) +__tasklet_common_schedule(struct tasklet_struct *t, struct tasklet_head *head, unsigned int nr) { if (tasklet_trylock(t)) { WARN_ON(t->next != NULL); t->next = head->list; head->list = t; - raise_softirq_irqoff(TASKLET_SOFTIRQ); + raise_softirq_irqoff(nr); tasklet_unlock(t); } } @@ -367,7 +367,7 @@ unsigned long flags; raw_local_irq_save(flags); - __tasklet_common_schedule(t, &__get_cpu_var(tasklet_vec)); + __tasklet_common_schedule(t, &__get_cpu_var(tasklet_vec), TASKLET_SOFTIRQ); raw_local_irq_restore(flags); } @@ -378,7 +378,7 @@ unsigned long flags; raw_local_irq_save(flags); - __tasklet_common_schedule(t, &__get_cpu_var(tasklet_hi_vec)); + __tasklet_common_schedule(t, &__get_cpu_var(tasklet_hi_vec), HI_SOFTIRQ); raw_local_irq_restore(flags); }