diff options
author | ambrisko <ambrisko@FreeBSD.org> | 2004-06-17 02:19:11 +0000 |
---|---|---|
committer | ambrisko <ambrisko@FreeBSD.org> | 2004-06-17 02:19:11 +0000 |
commit | d68963cafc7fc14ddfb121613f58b18813bbb508 (patch) | |
tree | fd1139138f047f5e0c0163b8d1b80fa5f090836a /sys/dev | |
parent | 10cdb7ab20b0590df734ae356f84c11bd34c6ddd (diff) | |
download | FreeBSD-src-d68963cafc7fc14ddfb121613f58b18813bbb508.zip FreeBSD-src-d68963cafc7fc14ddfb121613f58b18813bbb508.tar.gz |
While setting up a transmit packet disable interupts on the card then
re-enable them after we are done setting up the packet. This seems
to fix the MPI350 newer firmware hangs.
Diffstat (limited to 'sys/dev')
-rw-r--r-- | sys/dev/an/if_an.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/dev/an/if_an.c b/sys/dev/an/if_an.c index e1623ec..fb08f70 100644 --- a/sys/dev/an/if_an.c +++ b/sys/dev/an/if_an.c @@ -2725,6 +2725,9 @@ an_start(ifp) ifp->if_timer = 5; } } else { /* MPI-350 */ + /* Disable interrupts. */ + CSR_WRITE_2(sc, AN_INT_EN(sc->mpi350), 0); + while (sc->an_rdata.an_tx_empty || idx != sc->an_rdata.an_tx_cons) { IF_DEQUEUE(&ifp->if_snd, m0); @@ -2798,6 +2801,9 @@ an_start(ifp) */ ifp->if_timer = 5; } + + /* Re-enable interrupts. */ + CSR_WRITE_2(sc, AN_INT_EN(sc->mpi350), AN_INTRS(sc->mpi350)); } if (m0 != NULL) |