Messages in this thread | | | From | (Linus Torvalds) | Subject | Re: Bridging-bug with hacker-kernels on Alpha | Date | 12 Aug 1998 16:45:26 GMT |
| |
In article <m0z6Huv-000aNFC@the-village.bc.nu>, Alan Cox <alan@lxorguk.ukuu.org.uk> wrote: >> > Thats broken, but for completely different reasons. Its disabling interrupts >> > when the skb_* stuff is now spinlocked. >> >> Alan, look again. Only the non __ versions of skb_* call the spinlocks. > >Yes yes I know that - what I mean is the > > cli() > __skb_blah > sti() > >stuff is _extremely_ slow in 2.1 in comparison to the non __ version
Good point. More importantly, it's actually buggy. When doing a "cli()" in a bottom half context, the cli() won't actually be global, just local (nasty deadlock reasons), and as such it doesn't really protect the backup queue anyway.
Fixed by removing the cli/sti and using skb_dequeue() in net/core/dev.c. It's faster on SMP (no discernible difference on UP), but more importantly avoids the bug.
Good spotting.
Linus
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.rutgers.edu Please read the FAQ at http://www.altern.org/andrebalsa/doc/lkml-faq.html
| |