irq.h/ppp

Russell Berry (rberry@albany.net)
Mon, 09 Sep 1996 12:53:33 -0400


This is a multi-part message in MIME format.

--------------12EE4ECA5970DD056B6F0BF6
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit

> Subject: irq.h/ppp
> Date: Mon, 09 Sep 1996 12:49:49 -0400
> From: Russell Berry <rberry@albany.net>
> Organization: Berrex Computer Solutions
> To: linux-kernel@vger.rutgers.edu
> CC: linux-net@vger.rutgers.edu
>
> A little history here first,
>
> During my use of linux-2.0.14, a utility came out across the net called irqtune. I'm
> sure you all saw the posts. Well maybe I started all this by reposting it and praising
> the increased ppp performance. In reply, Linus, et. al. came out with a series of patches
> that changed irq.h throughout the subsequent versions. Now, in kernel 2.0.18, my ppp is
> worse than it has ever been, even _with_ the irqtune utility. But, I can't completely go
> back to 2.0.14 because some other things were broken.
>
> Here is my solution, I'm going back to the 2.0.14 irq.h in my 2.0.18 kernel, if anyone else
> chooses to do so, below is the patch to do it so you don't have to re-download the entire
> sources to get one file. (as I just did).
>
> Any comments/suggestions/flames/death threats welcome...
>
> ---russ

I HATE when that happens!!!

Here's the patch...

--------------12EE4ECA5970DD056B6F0BF6
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Content-Disposition: inline; filename="irqdiff"

--- linux/include/asm-i386/irq.h.orig Sun Sep 1 03:53:04 1996
+++ linux/include/asm-i386/irq.h Mon Sep 9 12:37:41 1996
@@ -81,7 +81,7 @@
* a bit - without them it seems that the harddisk driver won't work on
* all hardware. Arghh.
*/
-#define ACK_FIRST(mask,nr) \
+#define ACK_FIRST(mask) \
"inb $0x21,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
@@ -90,10 +90,10 @@
"outb %al,$0x21\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\tmovb $0xE0+"#nr",%al\n\t" \
+ "1:\tmovb $0x20,%al\n\t" \
"outb %al,$0x20\n\t"

-#define ACK_SECOND(mask,nr) \
+#define ACK_SECOND(mask) \
"inb $0xA1,%al\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
@@ -102,12 +102,11 @@
"outb %al,$0xA1\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\tmovb $0xE0+"#nr",%al\n\t" \
+ "1:\tmovb $0x20,%al\n\t" \
"outb %al,$0xA0\n\t" \
"jmp 1f\n" \
"1:\tjmp 1f\n" \
- "1:\tmovb $0xE2,%al\n\t" \
- "outb %al,$0x20\n\t"
+ "1:\toutb %al,$0x20\n\t"

#define UNBLK_FIRST(mask) \
"inb $0x21,%al\n\t" \
@@ -208,7 +207,7 @@
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ENTER_KERNEL \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"sti\n\t" \
"movl %esp,%ebx\n\t" \
@@ -225,7 +224,7 @@
SYMBOL_NAME_STR(fast_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
ENTER_KERNEL \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t" \
"pushl $" #nr "\n\t" \
"call "SYMBOL_NAME_STR(do_fast_IRQ)"\n\t" \
@@ -239,7 +238,7 @@
SYMBOL_NAME_STR(bad_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
ENTER_KERNEL \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
LEAVE_KERNEL \
RESTORE_MOST);

@@ -256,7 +255,7 @@
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ENTER_KERNEL \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"movl %esp,%ebx\n\t" \
"pushl %ebx\n\t" \
@@ -284,7 +283,7 @@
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
ENTER_KERNEL \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"sti\n\t" \
"movl %esp,%ebx\n\t" \
@@ -302,7 +301,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(fast_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
SMP_PROF_IPI_CNT \
"pushl $" #nr "\n\t" \
"call "SYMBOL_NAME_STR(do_fast_IRQ)"\n\t" \
@@ -313,7 +312,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(bad_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
RESTORE_MOST);

#define BUILD_RESCHEDIRQ(nr) \
@@ -346,7 +345,7 @@
SYMBOL_NAME_STR(IRQ) #nr "_interrupt:\n\t" \
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"sti\n\t" \
"movl %esp,%ebx\n\t" \
@@ -361,7 +360,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(fast_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t" \
"pushl $" #nr "\n\t" \
"call "SYMBOL_NAME_STR(do_fast_IRQ)"\n\t" \
@@ -373,7 +372,7 @@
"\n"__ALIGN_STR"\n" \
SYMBOL_NAME_STR(bad_IRQ) #nr "_interrupt:\n\t" \
SAVE_MOST \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
RESTORE_MOST);

#define BUILD_TIMER_IRQ(chip,nr,mask) \
@@ -387,7 +386,7 @@
SYMBOL_NAME_STR(IRQ) #nr "_interrupt:\n\t" \
"pushl $-"#nr"-2\n\t" \
SAVE_ALL \
- ACK_##chip(mask,(nr&7)) \
+ ACK_##chip(mask) \
"incl "SYMBOL_NAME_STR(intr_count)"\n\t"\
"movl %esp,%ebx\n\t" \
"pushl %ebx\n\t" \

--------------12EE4ECA5970DD056B6F0BF6--