diff options
| author | yamt <yamt@NetBSD.org> | 2001-10-01 09:26:29 +0000 |
|---|---|---|
| committer | yamt <yamt@NetBSD.org> | 2001-10-01 09:26:29 +0000 |
| commit | 0e8ee83d8f9dfb25da219a5c43bb3c07cd238de5 (patch) | |
| tree | 379b7ba94792d33ede69fc26019a99be653c44cb /sys/dev/ic | |
| parent | 6d044e5a56ca23ba65c69949c9d942f9e260c59a (diff) | |
avoid losing a desc on error.
Diffstat (limited to 'sys/dev/ic')
| -rw-r--r-- | sys/dev/ic/elinkxl.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/dev/ic/elinkxl.c b/sys/dev/ic/elinkxl.c index 0e3acfbf792..46c65b1b0c3 100644 --- a/sys/dev/ic/elinkxl.c +++ b/sys/dev/ic/elinkxl.c @@ -1,4 +1,4 @@ -/* $NetBSD: elinkxl.c,v 1.56 2001/09/16 16:34:37 wiz Exp $ */ +/* $NetBSD: elinkxl.c,v 1.57 2001/10/01 09:26:29 yamt Exp $ */ /*- * Copyright (c) 1998 The NetBSD Foundation, Inc. @@ -958,8 +958,6 @@ ex_start(ifp) * Get pointer to next available tx desc. */ txp = sc->tx_free; - sc->tx_free = txp->tx_next; - txp->tx_next = NULL; dmamap = txp->tx_dmamap; /* @@ -1020,6 +1018,12 @@ ex_start(ifp) goto out; } + /* + * remove our tx desc from freelist. + */ + sc->tx_free = txp->tx_next; + txp->tx_next = NULL; + fr = &txp->tx_dpd->dpd_frags[0]; totlen = 0; for (segment = 0; segment < dmamap->dm_nsegs; segment++, fr++) { |
