summaryrefslogtreecommitdiffstats
path: root/sys/dev/an
diff options
context:
space:
mode:
authorambrisko <ambrisko@FreeBSD.org>2004-06-17 02:19:11 +0000
committerambrisko <ambrisko@FreeBSD.org>2004-06-17 02:19:11 +0000
commitd68963cafc7fc14ddfb121613f58b18813bbb508 (patch)
treefd1139138f047f5e0c0163b8d1b80fa5f090836a /sys/dev/an
parent10cdb7ab20b0590df734ae356f84c11bd34c6ddd (diff)
downloadFreeBSD-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/an')
-rw-r--r--sys/dev/an/if_an.c6
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)
OpenPOWER on IntegriCloud