summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBill Paul <wpaul@FreeBSD.org>2004-01-07 06:15:56 +0000
committerBill Paul <wpaul@FreeBSD.org>2004-01-07 06:15:56 +0000
commite3c8d8194c262e1741f6aa83fda1816ceba676b6 (patch)
tree364a7a7f05dcafb194edd7ed12d9d9c0e7ea4741
parent01a9bce5ee48ad313fdde5f32ad5c24065190f1d (diff)
Notes
-rw-r--r--sys/compat/ndis/kern_ndis.c24
-rw-r--r--sys/compat/ndis/subr_ndis.c16
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);
}