diff options
| author | Bill Paul <wpaul@FreeBSD.org> | 2004-01-07 06:15:56 +0000 |
|---|---|---|
| committer | Bill Paul <wpaul@FreeBSD.org> | 2004-01-07 06:15:56 +0000 |
| commit | e3c8d8194c262e1741f6aa83fda1816ceba676b6 (patch) | |
| tree | 364a7a7f05dcafb194edd7ed12d9d9c0e7ea4741 | |
| parent | 01a9bce5ee48ad313fdde5f32ad5c24065190f1d (diff) | |
Notes
| -rw-r--r-- | sys/compat/ndis/kern_ndis.c | 24 | ||||
| -rw-r--r-- | sys/compat/ndis/subr_ndis.c | 16 |
2 files changed, 14 insertions, 26 deletions
diff --git a/sys/compat/ndis/kern_ndis.c b/sys/compat/ndis/kern_ndis.c index 4564e9543125..89a2727e71b9 100644 --- a/sys/compat/ndis/kern_ndis.c +++ b/sys/compat/ndis/kern_ndis.c @@ -704,6 +704,8 @@ ndis_set_info(arg, oid, buf, buflen) return(0); } +typedef void (*ndis_senddone_func)(ndis_handle, ndis_packet *, ndis_status); + int ndis_send_packets(arg, packets, cnt) void *arg; @@ -713,14 +715,14 @@ ndis_send_packets(arg, packets, cnt) struct ndis_softc *sc; ndis_handle adapter; __stdcall ndis_sendmulti_handler sendfunc; - int i, idx; - struct ifnet *ifp; - struct mbuf *m; + __stdcall ndis_senddone_func senddonefunc; + int i; ndis_packet *p; sc = arg; adapter = sc->ndis_block.nmb_miniportadapterctx; sendfunc = sc->ndis_chars.nmc_sendmulti_func; + senddonefunc = sc->ndis_block.nmb_senddone_func; sendfunc(adapter, packets, cnt); for (i = 0; i < cnt; i++) { @@ -733,21 +735,7 @@ ndis_send_packets(arg, packets, cnt) */ if (p == NULL || p->np_oob.npo_status == NDIS_STATUS_PENDING) continue; - idx = p->np_txidx; - m = p->np_m0; - ifp = &sc->arpcom.ac_if; - if (sc->ndis_sc) - bus_dmamap_unload(sc->ndis_ttag, sc->ndis_tmaps[idx]); - sc->ndis_txarray[idx] = NULL; - sc->ndis_txpending++; - m_freem(m); - ndis_free_packet(p); - if (p->np_oob.npo_status == NDIS_STATUS_SUCCESS) - ifp->if_opackets++; - else - ifp->if_oerrors++; - ifp->if_timer = 0; - ifp->if_flags &= ~IFF_OACTIVE; + senddonefunc(&sc->ndis_block, p, p->np_oob.npo_status); } return(0); diff --git a/sys/compat/ndis/subr_ndis.c b/sys/compat/ndis/subr_ndis.c index f2865717e5cd..b272bc5fc72b 100644 --- a/sys/compat/ndis/subr_ndis.c +++ b/sys/compat/ndis/subr_ndis.c @@ -1781,7 +1781,7 @@ ndis_interlock_inc(addend) uint32_t *addend; { mtx_lock(&ndis_interlock); - *addend++; + (*addend)++; mtx_unlock(&ndis_interlock); return(*addend); } @@ -1791,7 +1791,7 @@ ndis_interlock_dec(addend) uint32_t *addend; { mtx_lock(&ndis_interlock); - *addend--; + (*addend)--; mtx_unlock(&ndis_interlock); return(*addend); } @@ -2087,13 +2087,13 @@ ndis_insert_head(head, entry, lock) { ndis_list_entry *flink; - mtx_lock_spin((struct mtx *)lock->nsl_spinlock); + mtx_lock((struct mtx *)lock->nsl_spinlock); flink = head->nle_flink; entry->nle_flink = flink; entry->nle_blink = head; flink->nle_blink = entry; head->nle_flink = entry; - mtx_unlock_spin((struct mtx *)lock->nsl_spinlock); + mtx_unlock((struct mtx *)lock->nsl_spinlock); return(flink); } @@ -2106,12 +2106,12 @@ ndis_remove_head(head, lock) ndis_list_entry *flink; ndis_list_entry *entry; - mtx_lock_spin((struct mtx *)lock->nsl_spinlock); + mtx_lock((struct mtx *)lock->nsl_spinlock); entry = head->nle_flink; flink = entry->nle_flink; head->nle_flink = flink; flink->nle_blink = head; - mtx_unlock_spin((struct mtx *)lock->nsl_spinlock); + mtx_unlock((struct mtx *)lock->nsl_spinlock); return(entry); } @@ -2124,13 +2124,13 @@ ndis_insert_tail(head, entry, lock) { ndis_list_entry *blink; - mtx_lock_spin((struct mtx *)lock->nsl_spinlock); + mtx_lock((struct mtx *)lock->nsl_spinlock); blink = head->nle_blink; entry->nle_flink = head; entry->nle_blink = blink; blink->nle_flink = entry; head->nle_blink = entry; - mtx_unlock_spin((struct mtx *)lock->nsl_spinlock); + mtx_unlock((struct mtx *)lock->nsl_spinlock); return(blink); } |
