diff options
author | wpaul <wpaul@FreeBSD.org> | 2004-01-12 21:04:43 +0000 |
---|---|---|
committer | wpaul <wpaul@FreeBSD.org> | 2004-01-12 21:04:43 +0000 |
commit | 2c0e413ccc02aa53f20af2ca9655c8fcdd1010ed (patch) | |
tree | 6b943b664c1056c5a4a38f9487dff9f5c10e9879 | |
parent | b8f6f55191628c415af10985e1e05f4c5613aff6 (diff) | |
download | FreeBSD-src-2c0e413ccc02aa53f20af2ca9655c8fcdd1010ed.zip FreeBSD-src-2c0e413ccc02aa53f20af2ca9655c8fcdd1010ed.tar.gz |
Ugh. Last commit went horribly wrong. Back out changes to subr_ntoskrnl.c,
make sure if_ndis.c really gets checked in this time.
-rw-r--r-- | sys/compat/ndis/subr_ntoskrnl.c | 70 | ||||
-rw-r--r-- | sys/dev/if_ndis/if_ndis.c | 15 |
2 files changed, 10 insertions, 75 deletions
diff --git a/sys/compat/ndis/subr_ntoskrnl.c b/sys/compat/ndis/subr_ntoskrnl.c index 5376008..14a446b 100644 --- a/sys/compat/ndis/subr_ntoskrnl.c +++ b/sys/compat/ndis/subr_ntoskrnl.c @@ -119,12 +119,8 @@ __stdcall static uint32_t __stdcall static void ntoskrnl_freemdl(ndis_buffer *); __stdcall static void *ntoskrnl_mmaplockedpages(ndis_buffer *, uint8_t); __stdcall static void ntoskrnl_init_lock(kspin_lock *); -__stdcall static size_t ntoskrnl_memcmp(const void *, const void *, size_t); -__stdcall static void ntoskrnl_init_ansi_string(ndis_ansi_string *, char *); -__stdcall static void ntoskrnl_init_unicode_string(ndis_unicode_string *, - uint16_t *); -__stdcall static void ntoskrnl_free_unicode_string(ndis_unicode_string *); __stdcall static void dummy(void); +__stdcall static size_t ntoskrnl_memcmp(const void *, const void *, size_t); static struct mtx *ntoskrnl_interlock; extern struct mtx_pool *ndis_mtxpool; @@ -189,12 +185,8 @@ ntoskrnl_unicode_to_ansi(dest, src, allocate) { char *astr = NULL; - if (dest == NULL || src == NULL) - return(NDIS_STATUS_FAILURE); - if (allocate) { - if (ndis_unicode_to_ascii(src->nus_buf, src->nus_len, &astr)) - return(NDIS_STATUS_FAILURE); + ndis_unicode_to_ascii(src->nus_buf, src->nus_len, &astr); dest->nas_buf = astr; dest->nas_len = dest->nas_maxlen = strlen(astr); } else { @@ -655,60 +647,6 @@ ntoskrnl_memcmp(s1, s2, len) } __stdcall static void -ntoskrnl_init_ansi_string(dst, src) - ndis_ansi_string *dst; - char *src; -{ - ndis_ansi_string *a; - - a = dst; - if (a == NULL) - return; - if (src == NULL) { - a->nas_len = a->nas_maxlen = 0; - a->nas_buf = NULL; - } else { - a->nas_buf = src; - a->nas_len = a->nas_maxlen = strlen(src); - } - - return; -} - -__stdcall static void -ntoskrnl_init_unicode_string(dst, src) - ndis_unicode_string *dst; - uint16_t *src; -{ - ndis_unicode_string *u; - int i; - - u = dst; - if (u == NULL) - return; - if (src == NULL) { - u->nus_len = u->nus_maxlen = 0; - u->nus_buf = NULL; - } else { - i = 0; - while(src[i] != 0) - i++; - u->nus_buf = src; - u->nus_len = u->nus_maxlen = i * 2; - } - - return; -} - -__stdcall static void -ntoskrnl_free_unicode_string(ustr) - ndis_unicode_string *ustr; -{ - free(ustr->nus_buf, M_DEVBUF); - return; -} - -__stdcall static void dummy() { printf ("ntoskrnl dummy called...\n"); @@ -721,10 +659,6 @@ image_patch_table ntoskrnl_functbl[] = { { "RtlEqualUnicodeString", (FUNC)ntoskrnl_unicode_equal }, { "RtlCopyUnicodeString", (FUNC)ntoskrnl_unicode_copy }, { "RtlUnicodeStringToAnsiString", (FUNC)ntoskrnl_unicode_to_ansi }, - { "RtlAnsiStringToUnicodeString", (FUNC)ntoskrnl_ansi_to_unicode }, - { "RtlInitAnsiString", (FUNC)ntoskrnl_init_ansi_string }, - { "RtlInitUnicodeString", (FUNC)ntoskrnl_init_unicode_string }, - { "RtlFreeUnicodeString", (FUNC)ndoskrnl_free_unicode_string }, { "sprintf", (FUNC)sprintf }, { "DbgPrint", (FUNC)printf }, { "strncmp", (FUNC)strncmp }, diff --git a/sys/dev/if_ndis/if_ndis.c b/sys/dev/if_ndis/if_ndis.c index 415e262..a3a9806 100644 --- a/sys/dev/if_ndis/if_ndis.c +++ b/sys/dev/if_ndis/if_ndis.c @@ -240,6 +240,11 @@ ndis_attach(dev) sc->ndis_dev = dev; sc->ndis_mtx = mtx_pool_alloc(ndis_mtxpool); + sc->ndis_intrmtx = mtx_pool_alloc(ndis_mtxpool); + TASK_INIT(&sc->ndis_intrtask, 0, ndis_intrtask, sc); + TASK_INIT(&sc->ndis_ticktask, 0, ndis_ticktask, sc); + TASK_INIT(&sc->ndis_starttask, 0, ndis_starttask, sc); + /* * Map control/status registers. @@ -332,11 +337,6 @@ ndis_attach(dev) goto fail; } - sc->ndis_intrmtx = mtx_pool_alloc(ndis_mtxpool); - TASK_INIT(&sc->ndis_intrtask, 0, ndis_intrtask, sc); - TASK_INIT(&sc->ndis_ticktask, 0, ndis_ticktask, sc); - TASK_INIT(&sc->ndis_starttask, 0, ndis_starttask, sc); - /* * Allocate the parent bus DMA tag appropriate for PCI. */ @@ -928,7 +928,8 @@ ndis_intr(arg) sc = arg; ifp = &sc->arpcom.ac_if; - if (!(ifp->if_flags & IFF_UP)) + if (!(ifp->if_flags & IFF_UP) && + sc->ndis_block.nmb_miniportadapterctx == NULL) return; mtx_lock(sc->ndis_intrmtx); @@ -940,7 +941,7 @@ ndis_intr(arg) } mtx_unlock(sc->ndis_intrmtx); - if (is_our_intr || call_isr) + if ((is_our_intr || call_isr) && (ifp->if_flags & IFF_UP)) taskqueue_enqueue(taskqueue_swi, &sc->ndis_intrtask); return; |