summaryrefslogtreecommitdiffstats
path: root/src/drivers/net
diff options
context:
space:
mode:
authorThomas Miletich2009-09-08 19:35:55 +0200
committerMarty Connor2009-10-15 21:32:51 +0200
commitd07f79de359f834468ff9f86beb71d53413ff2d7 (patch)
tree319b24b39bd0ead01d96a3bfd2e9805c3abd6cd7 /src/drivers/net
parent[util] Make mtools check detect new versions (diff)
downloadipxe-d07f79de359f834468ff9f86beb71d53413ff2d7.tar.gz
ipxe-d07f79de359f834468ff9f86beb71d53413ff2d7.tar.xz
ipxe-d07f79de359f834468ff9f86beb71d53413ff2d7.zip
[sis900] Enable interrupts to allow UNDI to work
Enable interrupts in sis900_irq(). Doing so allows some programs using gPXE's UNDI interface to work properly, including Symantec Ghost. Tested-by: Hubert Mercier <hubert.mercier@unilim.fr> Signed-off-by: Marty Connor <mdc@etherboot.org>
Diffstat (limited to 'src/drivers/net')
-rw-r--r--src/drivers/net/sis900.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/net/sis900.c b/src/drivers/net/sis900.c
index 177cd657..da14a091 100644
--- a/src/drivers/net/sis900.c
+++ b/src/drivers/net/sis900.c
@@ -1183,8 +1183,12 @@ static int
sis900_poll(struct nic *nic, int retrieve)
{
u32 rx_status = rxd[cur_rx].cmdsts;
+ u32 intr_status;
int retstat = 0;
+ /* acknowledge interrupts by reading interrupt status register */
+ intr_status = inl(ioaddr + isr);
+
if (sis900_debug > 2)
printf("sis900_poll: cur_rx:%d, status:%X\n", cur_rx,
(unsigned int) rx_status);
@@ -1264,8 +1268,10 @@ sis900_irq(struct nic *nic __unused, irq_action_t action __unused)
{
switch ( action ) {
case DISABLE :
+ outl(0, ioaddr + imr);
break;
case ENABLE :
+ outl((RxSOVR|RxORN|RxERR|RxOK|TxURN|TxERR|TxIDLE), ioaddr + imr);
break;
case FORCE :
break;