aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGene Cumm <gene.cumm@gmail.com>2014-07-13 11:18:50 -0400
committerGene Cumm <gene.cumm@gmail.com>2014-07-13 11:18:50 -0400
commit3741886cb700e1017d70f1753f013fa10f4d9272 (patch)
tree15c75823c48e9c0fb704908c4089471a679e9a69
parent2c7470256db3a31866e540a9460b47558890e7b0 (diff)
downloadsyslinux-3741886cb700e1017d70f1753f013fa10f4d9272.tar.gz
syslinux-3741886cb700e1017d70f1753f013fa10f4d9272.tar.xz
syslinux-3741886cb700e1017d70f1753f013fa10f4d9272.zip
PXE ISR: Force polling on select hardware WORKAROUND
Like 2fe3a7bd, certain Dell machines (OptiPlex 990) state interrupts should work but effectively don't. Force polling. Reported-by: Alexander Perlis <aperlis@math.lsu.edu> Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
-rw-r--r--core/fs/pxe/isr.c5
1 files changed, 2 insertions, 3 deletions
diff --git a/core/fs/pxe/isr.c b/core/fs/pxe/isr.c
index d0a0bf90..ddaadf90 100644
--- a/core/fs/pxe/isr.c
+++ b/core/fs/pxe/isr.c
@@ -266,11 +266,10 @@ void pxe_start_isr(void)
dprintf("pxe_start_isr: trying poll by model\n");
int hwad = ((int)MAC[0] << 16) + ((int)MAC[1] << 8) + MAC[2];
dprintf("pxe_start_isr: got %06x %04x\n", hwad, pxe_undi_iface.ServiceFlags);
- if (hwad == 0x000023ae) {
- if (pxe_undi_iface.ServiceFlags == 0xdc1b) {
+ if ((hwad == 0x000023ae) && (pxe_undi_iface.ServiceFlags == 0xdc1b) ||
+ (hwad == 0x00180373) && (pxe_undi_iface.ServiceFlags == 0xdc1b)) {
asm volatile("orb $1,%0" : "+m" (pxe_need_poll));
dprintf("pxe_start_isr: forcing pxe_need_poll by model\n");
- }
}
}
}