[Midnightbsd-cvs] src [8601] trunk/sys/dev/if_ndis/if_ndis.c: tweak locking
laffer1 at midnightbsd.org
laffer1 at midnightbsd.org
Sun Sep 25 12:59:42 EDT 2016
Revision: 8601
http://svnweb.midnightbsd.org/src/?rev=8601
Author: laffer1
Date: 2016-09-25 12:59:42 -0400 (Sun, 25 Sep 2016)
Log Message:
-----------
tweak locking
Modified Paths:
--------------
trunk/sys/dev/if_ndis/if_ndis.c
Modified: trunk/sys/dev/if_ndis/if_ndis.c
===================================================================
--- trunk/sys/dev/if_ndis/if_ndis.c 2016-09-25 16:56:34 UTC (rev 8600)
+++ trunk/sys/dev/if_ndis/if_ndis.c 2016-09-25 16:59:42 UTC (rev 8601)
@@ -34,7 +34,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+__FBSDID("$FreeBSD: stable/9/sys/dev/if_ndis/if_ndis.c 271714 2014-09-17 18:17:18Z jhb $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -1175,7 +1175,7 @@
block = adapter;
- m = m_getcl(M_DONTWAIT, MT_DATA, M_PKTHDR);
+ m = m_getcl(M_NOWAIT, MT_DATA, M_PKTHDR);
if (m == NULL)
return;
@@ -1419,7 +1419,7 @@
} else {
#ifdef notdef
if (p->np_oob.npo_status == NDIS_STATUS_RESOURCES) {
- m = m_dup(m0, M_DONTWAIT);
+ m = m_dup(m0, M_NOWAIT);
/*
* NOTE: we want to destroy the mbuf here, but
* we don't actually want to return it to the
@@ -1437,7 +1437,7 @@
} else
p->np_oob.npo_status = NDIS_STATUS_PENDING;
#endif
- m = m_dup(m0, M_DONTWAIT);
+ m = m_dup(m0, M_NOWAIT);
if (p->np_oob.npo_status == NDIS_STATUS_RESOURCES)
p->np_refcnt++;
else
@@ -1628,7 +1628,6 @@
IoQueueWorkItem(sc->ndis_tickitem,
(io_workitem_func)ndis_ticktask_wrap,
WORKQUEUE_CRITICAL, sc);
- /* XXX: startitem might be handled before tickitem */
IoQueueWorkItem(sc->ndis_startitem,
(io_workitem_func)ndis_starttask_wrap,
WORKQUEUE_CRITICAL, ifp);
@@ -1711,23 +1710,26 @@
if (sc->ndis_link == 0 &&
sc->ndis_sts == NDIS_STATUS_MEDIA_CONNECT) {
sc->ndis_link = 1;
- NDIS_UNLOCK(sc);
if ((sc->ndis_80211 != 0) && (vap != NULL)) {
+ NDIS_UNLOCK(sc);
ndis_getstate_80211(sc);
ieee80211_new_state(vap, IEEE80211_S_RUN, -1);
- }
- NDIS_LOCK(sc);
- if_link_state_change(sc->ifp, LINK_STATE_UP);
+ NDIS_LOCK(sc);
+ if_link_state_change(vap->iv_ifp, LINK_STATE_UP);
+ } else
+ if_link_state_change(sc->ifp, LINK_STATE_UP);
}
if (sc->ndis_link == 1 &&
sc->ndis_sts == NDIS_STATUS_MEDIA_DISCONNECT) {
sc->ndis_link = 0;
- NDIS_UNLOCK(sc);
- if ((sc->ndis_80211 != 0) && (vap != NULL))
+ if ((sc->ndis_80211 != 0) && (vap != NULL)) {
+ NDIS_UNLOCK(sc);
ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
- NDIS_LOCK(sc);
- if_link_state_change(sc->ifp, LINK_STATE_DOWN);
+ NDIS_LOCK(sc);
+ if_link_state_change(vap->iv_ifp, LINK_STATE_DOWN);
+ } else
+ if_link_state_change(sc->ifp, LINK_STATE_DOWN);
}
NDIS_UNLOCK(sc);
More information about the Midnightbsd-cvs
mailing list