diff options
| author | Michael Brown | 2007-07-03 04:34:08 +0200 |
|---|---|---|
| committer | Michael Brown | 2007-07-03 04:34:08 +0200 |
| commit | 290280f90ee58d2f51e753b5499f9de8961988ad (patch) | |
| tree | aac90d658149904089062ca4f9ed75442a9fc1a3 /src/drivers/net/rtl8139.c | |
| parent | Add missing call to free_iob() in pxenv_undi_isr(). (diff) | |
| download | ipxe-290280f90ee58d2f51e753b5499f9de8961988ad.tar.gz ipxe-290280f90ee58d2f51e753b5499f9de8961988ad.tar.xz ipxe-290280f90ee58d2f51e753b5499f9de8961988ad.zip | |
Enable/disable interrupts at open/close time.
Diffstat (limited to 'src/drivers/net/rtl8139.c')
| -rw-r--r-- | src/drivers/net/rtl8139.c | 9 |
1 files changed, 9 insertions, 0 deletions
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; } |
