diff --git a/src/drivers/net/rtl8139.c b/src/drivers/net/rtl8139.c index 2f68bf6c..6acffd9b 100644 --- a/src/drivers/net/rtl8139.c +++ b/src/drivers/net/rtl8139.c @@ -302,6 +302,12 @@ static struct nvo_fragment rtl_nvo_fragments[] = { */ static void rtl_reset ( struct rtl8139_nic *rtl ) { + /* Disable interrupts. May not be necessary, but datasheet + * doesn't say that the reset command also resets the + * interrupt mask. + */ + outw ( 0, rtl->ioaddr + IntrMask ); + /* Reset chip */ outb ( CmdReset, rtl->ioaddr + ChipCmd ); mdelay ( 10 ); @@ -340,6 +346,9 @@ static int rtl_open ( struct net_device *netdev ) { outl ( ( ( TX_DMA_BURST << 8 ) | ( TX_IPG << 24 ) ), rtl->ioaddr + TxConfig ); + /* Enable interrupts */ + outw ( ( ROK | RER | TOK | TER ), rtl->ioaddr + IntrMask ); + return 0; }