summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/compat/ndis/subr_ntoskrnl.c11
-rw-r--r--sys/dev/if_ndis/if_ndis.c35
2 files changed, 23 insertions, 23 deletions
diff --git a/sys/compat/ndis/subr_ntoskrnl.c b/sys/compat/ndis/subr_ntoskrnl.c
index 48658fe..8e19e02 100644
--- a/sys/compat/ndis/subr_ntoskrnl.c
+++ b/sys/compat/ndis/subr_ntoskrnl.c
@@ -489,8 +489,7 @@ ntoskrnl_push_slist(/*head, entry*/ void)
slist_entry *entry;
slist_entry *oldhead;
- __asm__("movl %%ecx, %%ecx" : "=c" (head));
- __asm__("movl %%edx, %%edx" : "=d" (entry));
+ __asm__ __volatile__ ("" : "=c" (head), "=d" (entry));
mtx_lock(&ntoskrnl_interlock);
oldhead = head->slh_list.slh_next;
@@ -506,7 +505,7 @@ ntoskrnl_pop_slist(/*head*/ void)
slist_header *head;
slist_entry *first;
- __asm__("movl %%ecx, %%ecx" : "=c" (head));
+ __asm__ __volatile__ ("" : "=c" (head));
mtx_lock(&ntoskrnl_interlock);
first = head->slh_list.slh_next;
@@ -524,8 +523,7 @@ ntoskrnl_push_slist_ex(/*head, entry,*/ lock)
slist_entry *entry;
slist_entry *oldhead;
- __asm__("movl %%ecx, %%ecx" : "=c" (head));
- __asm__("movl %%edx, %%edx" : "=d" (entry));
+ __asm__ __volatile__ ("" : "=c" (head), "=d" (entry));
mtx_lock((struct mtx *)*lock);
oldhead = head->slh_list.slh_next;
@@ -542,8 +540,7 @@ ntoskrnl_pop_slist_ex(/*head, lock*/ void)
kspin_lock *lock;
slist_entry *first;
- __asm__("movl %%ecx, %%ecx" : "=c" (head));
- __asm__("movl %%edx, %%edx" : "=d" (lock));
+ __asm__ __volatile__ ("" : "=c" (head), "=d" (lock));
mtx_lock((struct mtx *)*lock);
first = head->slh_list.slh_next;
diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c
index fec6034..be89d35 100644
--- a/sys/dev/if_ndis/if_ndis.c
+++ b/sys/dev/if_ndis/if_ndis.c
@@ -247,35 +247,36 @@ ndis_attach(dev)
}
break;
case SYS_RES_MEMORY:
- if (sc->ndis_res_altmem != NULL) {
+ if (sc->ndis_res_altmem != NULL &&
+ sc->ndis_res_mem != NULL) {
printf ("ndis%d: too many memory "
"resources", sc->ndis_unit);
error = ENXIO;
goto fail;
}
- if (sc->ndis_res_mem == NULL) {
- sc->ndis_mem_rid = rle->rid;
- sc->ndis_res_mem =
+ if (rle->rid == PCIR_BAR(2)) {
+ sc->ndis_altmem_rid = rle->rid;
+ sc->ndis_res_altmem =
bus_alloc_resource(dev,
SYS_RES_MEMORY,
- &sc->ndis_mem_rid,
+ &sc->ndis_altmem_rid,
0, ~0, 1, RF_ACTIVE);
- if (sc->ndis_res_mem == NULL) {
+ if (sc->ndis_res_altmem == NULL) {
printf("ndis%d: couldn't map "
- "memory\n", unit);
+ "alt memory\n", unit);
error = ENXIO;
goto fail;
}
} else {
- sc->ndis_altmem_rid = rle->rid;
- sc->ndis_res_altmem =
+ sc->ndis_mem_rid = rle->rid;
+ sc->ndis_res_mem =
bus_alloc_resource(dev,
SYS_RES_MEMORY,
- &sc->ndis_altmem_rid,
+ &sc->ndis_mem_rid,
0, ~0, 1, RF_ACTIVE);
- if (sc->ndis_res_altmem == NULL) {
+ if (sc->ndis_res_mem == NULL) {
printf("ndis%d: couldn't map "
- "alt memory\n", unit);
+ "memory\n", unit);
error = ENXIO;
goto fail;
}
@@ -841,12 +842,13 @@ ndis_tick(xsc)
int error, len;
sc = xsc;
- NDIS_LOCK(sc);
len = sizeof(linkstate);
error = ndis_get_info(sc, OID_GEN_MEDIA_CONNECT_STATUS,
(void *)&linkstate, &len);
+ NDIS_LOCK(sc);
+
if (linkstate == nmc_connected)
sc->ndis_link = 1;
@@ -944,14 +946,15 @@ ndis_start(ifp)
* so we can free it later.
*/
- (sc->ndis_txarray[sc->ndis_txidx])->np_txidx = sc->ndis_txidx;
- (sc->ndis_txarray[sc->ndis_txidx])->np_m0 = m;
+ p = sc->ndis_txarray[sc->ndis_txidx];
+ p->np_txidx = sc->ndis_txidx;
+ p->np_m0 = m;
+ p->np_oob.npo_status = NDIS_STATUS_PENDING;
/*
* Do scatter/gather processing, if driver requested it.
*/
if (sc->ndis_sc) {
- p = sc->ndis_txarray[sc->ndis_txidx];
bus_dmamap_load_mbuf(sc->ndis_ttag,
sc->ndis_tmaps[sc->ndis_txidx], m,
ndis_map_sclist, &p->np_sclist, BUS_DMA_NOWAIT);
OpenPOWER on IntegriCloud