Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Mar 2008 18:17:03 GMT
From:      Sam Leffler <sam@FreeBSD.org>
To:        Perforce Change Reviews <perforce@freebsd.org>
Subject:   PERFORCE change 137099 for review
Message-ID:  <200803071817.m27IH3XL076338@repoman.freebsd.org>

next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=137099

Change 137099 by sam@sam_ebb on 2008/03/07 18:17:01

	consolidate and extend debug msgs for mlme ops; in particular
	add them to the state msgs as some cause subtle state changes
	that don't go through the normal state machine

Affected files ...

.. //depot/projects/vap/sys/net80211/ieee80211_ioctl.c#37 edit

Differences ...

==== //depot/projects/vap/sys/net80211/ieee80211_ioctl.c#37 (text+ko) ====

@@ -1184,6 +1184,47 @@
 };
 
 static void
+mlmedebug(struct ieee80211_node *ni, int op, int reason)
+{
+#ifdef IEEE80211_DEBUG
+	static const struct {
+		int mask;
+		const char *opstr;
+	} ops[] = {
+		{ 0, "op#0" },
+		{ IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+		  IEEE80211_MSG_ASSOC, "assoc" },
+		{ IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+		  IEEE80211_MSG_ASSOC, "disassoc" },
+		{ IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+		  IEEE80211_MSG_AUTH, "deauth" },
+		{ IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+		  IEEE80211_MSG_AUTH, "authorize" },
+		{ IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+		  IEEE80211_MSG_AUTH, "unauthorize" },
+	};
+	struct ieee80211vap *vap = ni->ni_vap;
+
+	if (op == IEEE80211_MLME_AUTH) {
+		IEEE80211_NOTE(vap, IEEE80211_MSG_IOCTL | IEEE80211_MSG_STATE |
+		    IEEE80211_MSG_AUTH, ni,
+		    "station authenticate %s via MLME (reason %d)",
+		    reason == IEEE80211_STATUS_SUCCESS ? "ACCEPT" : "REJECT",
+		    reason);
+	} else if (!(IEEE80211_MLME_ASSOC <= op && op <= IEEE80211_MLME_AUTH)) {
+		IEEE80211_NOTE(vap, IEEE80211_MSG_ANY, ni,
+		    "unknown MLME request %d (reason %d)", op, reason);
+	} else if (reason == IEEE80211_STATUS_SUCCESS) {
+		IEEE80211_NOTE(vap, ops[op].mask, ni,
+		    "station %s via MLME", ops[op].opstr);
+	} else {
+		IEEE80211_NOTE(vap, ops[op].mask, ni,
+		    "station %s via MLME (reason %d)", ops[op].opstr, reason);
+	}
+#endif /* IEEE80211_DEBUG */
+}
+
+static void
 domlme(void *arg, struct ieee80211_node *ni)
 {
 	struct mlmeop *mop = arg;
@@ -1198,14 +1239,11 @@
 	 */ 
 	if (ni->ni_associd == 0)
 		return;
+	mlmedebug(ni, mop->op, mop->reason);
 	if (mop->op == IEEE80211_MLME_DEAUTH) {
-		IEEE80211_NOTE(vap, IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
-		    ni, "%s", "station deauth via MLME");
 		IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
 		    mop->reason);
 	} else {
-		IEEE80211_NOTE(vap, IEEE80211_MSG_IOCTL | IEEE80211_MSG_ASSOC,
-		    ni, "%s", "station disassoc via MLME");
 		IEEE80211_SEND_MGMT(ni, IEEE80211_FC0_SUBTYPE_DISASSOC,
 		    mop->reason);
 	}
@@ -1227,6 +1265,7 @@
 	case IEEE80211_MLME_DEAUTH:
 		switch (vap->iv_opmode) {
 		case IEEE80211_M_STA:
+			mlmedebug(vap->iv_bss, op, reason);
 			/* XXX not quite right */
 			ieee80211_new_state(vap, IEEE80211_S_INIT, reason);
 			break;
@@ -1260,6 +1299,7 @@
 				break;
 			}
 #endif
+			mlmedebug(vap->iv_bss, op, reason);
 			ni = ieee80211_ref_node(vap->iv_bss);
 			IEEE80211_SEND_MGMT(ni,
 			    IEEE80211_FC0_SUBTYPE_DEAUTH, reason);
@@ -1279,10 +1319,7 @@
 		}
 		ni = ieee80211_find_vap_node(&ic->ic_sta, vap, mac);
 		if (ni != NULL) {
-			IEEE80211_NOTE(vap,
-			    IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
-			    ni, "station %sauthorize via MLME",
-			    op == IEEE80211_MLME_AUTHORIZE ? "" : "un");
+			mlmedebug(ni, op, reason);
 			if (op == IEEE80211_MLME_AUTHORIZE)
 				ieee80211_node_authorize(ni);
 			else
@@ -1298,13 +1335,10 @@
 		}
 		ni = ieee80211_find_vap_node(&ic->ic_sta, vap, mac);
 		if (ni != NULL) {
+			mlmedebug(ni, op, reason);
 			if (reason == IEEE80211_STATUS_SUCCESS) {
 				IEEE80211_SEND_MGMT(ni,
 				    IEEE80211_FC0_SUBTYPE_AUTH, 2);
-				IEEE80211_NOTE(vap,
-				    IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
-				    ni, "%s",
-				    "station authenticate ACCEPT via MLME");
 				/*
 				 * For shared key auth, just continue the
 				 * exchange.  Otherwise when 802.1x is not in
@@ -1318,10 +1352,6 @@
 				vap->iv_stats.is_rx_acl++;
 				ieee80211_send_error(ni, ni->ni_macaddr,
 				    IEEE80211_FC0_SUBTYPE_AUTH, 2|(reason<<16));
-				IEEE80211_NOTE(vap,
-				    IEEE80211_MSG_IOCTL | IEEE80211_MSG_AUTH,
-				    ni, "station authenticate REJECT via MLME, "
-				    "reason %d", reason);
 				ieee80211_node_leave(ni);
 			}
 			ieee80211_free_node(ni);
@@ -1379,6 +1409,7 @@
 	ieee80211_scan_iterate(vap, mlmelookup, &lookup);
 	if (lookup.se == NULL)
 		return ENOENT;
+	mlmedebug(vap->iv_bss, IEEE80211_MLME_ASSOC, 0);
 	if (!ieee80211_sta_join(vap, lookup.se))
 		return EIO;		/* XXX unique but could be better */
 	return 0;



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