Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 17 Sep 2014 18:17:19 +0000 (UTC)
From:      John Baldwin <jhb@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r271714 - in stable: 10/sys/dev/if_ndis 9/sys/dev/if_ndis
Message-ID:  <201409171817.s8HIHJR6091645@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: jhb
Date: Wed Sep 17 18:17:18 2014
New Revision: 271714
URL: http://svnweb.freebsd.org/changeset/base/271714

Log:
  MFC 270830:
  When anouncing link state changes on an 802.11 interface with a vap,
  announce the change on the vap's ifnet instead of the main ifnet.  This
  matches the behavior of other wireless drivers in the tree and allows the
  default devd configuration to correctly start dhclient automatically after
  an ndis wireless device associates.
  
  Approved by:	re (marius for 10)

Modified:
  stable/9/sys/dev/if_ndis/if_ndis.c
Directory Properties:
  stable/9/sys/   (props changed)
  stable/9/sys/dev/   (props changed)

Changes in other areas also in this revision:
Modified:
  stable/10/sys/dev/if_ndis/if_ndis.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/9/sys/dev/if_ndis/if_ndis.c
==============================================================================
--- stable/9/sys/dev/if_ndis/if_ndis.c	Wed Sep 17 17:43:32 2014	(r271713)
+++ stable/9/sys/dev/if_ndis/if_ndis.c	Wed Sep 17 18:17:18 2014	(r271714)
@@ -1710,23 +1710,26 @@ ndis_ticktask(d, xsc)
 	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);



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201409171817.s8HIHJR6091645>