svn commit: r194914 - projects/mesh11s/sys/net80211

Rui Paulo rpaulo at FreeBSD.org
Wed Jun 24 21:37:39 UTC 2009


Author: rpaulo
Date: Wed Jun 24 21:37:38 2009
New Revision: 194914
URL: http://svn.freebsd.org/changeset/base/194914

Log:
  Code simplification and style.
  
  Sponsored by:	The FreeBSD Foundation

Modified:
  projects/mesh11s/sys/net80211/ieee80211_hwmp.c

Modified: projects/mesh11s/sys/net80211/ieee80211_hwmp.c
==============================================================================
--- projects/mesh11s/sys/net80211/ieee80211_hwmp.c	Wed Jun 24 21:36:09 2009	(r194913)
+++ projects/mesh11s/sys/net80211/ieee80211_hwmp.c	Wed Jun 24 21:37:38 2009	(r194914)
@@ -123,12 +123,7 @@ static const struct timeval ieee80211_hw
 #define	HWMP_LOCK(hs)		mtx_lock(&(hs)->hs_lock)
 #define	HWMP_UNLOCK(hs)		mtx_unlock(&(hs)->hs_lock)
 
-/*
- * Target Address set in a Proactive PREQ.
- * XXX
- */
-static const uint8_t	proactiveaddr[IEEE80211_ADDR_LEN] =
-	{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
+/* NB: the Target Address set in a Proactive PREQ is the broadcast address. */
 static const uint8_t	broadcastaddr[IEEE80211_ADDR_LEN] =
 	{ 0xff, 0xff, 0xff, 0xff, 0xff, 0xff };
 static const uint8_t	invalidaddr[IEEE80211_ADDR_LEN] =
@@ -181,7 +176,6 @@ hwmp_rt_add(struct ieee80211vap *vap, co
 	HWMP_LOCK(hs);
 	TAILQ_INSERT_TAIL(&hs->hs_head, fi, fi_next);
 	HWMP_UNLOCK(hs);
-
 	return fi;
 }
 
@@ -235,19 +229,9 @@ ieee80211_hwmp_newstate(struct ieee80211
 {
 	enum ieee80211_state nstate = vap->iv_state;
 
-	switch (nstate) {
-	case IEEE80211_S_SCAN:
-		switch (ostate) {
-		case IEEE80211_S_INIT:
-			hwmp_rt_flush(vap);
-			break;
-		default:
-			break;
-		}
-	default:
-		break;
-	}
-
+	/* Flush the table on INIT -> SCAN, e.g. interface down & up */
+	if (nstate == IEEE80211_S_SCAN && ostate == IEEE80211_S_INIT)
+		hwmp_rt_flush(vap);
 	return 0;
 }
 
@@ -445,10 +429,11 @@ ieee80211_hwmp_send_action(struct ieee80
 	memset(&params, 0, sizeof(params));
 	params.ibp_pri = WME_AC_VO;
 	params.ibp_rate0 = ni->ni_txparms->mgmtrate;
-	/* XXX: NB: we know all frames are unicast */
-	params.ibp_try0 = ni->ni_txparms->maxretry;
+	if (IEEE80211_IS_MULTICAST(da))
+		params.ibp_try0 = 1;
+	else
+		params.ibp_try0 = ni->ni_txparms->maxretry;
 	params.ibp_power = ni->ni_txpower;
-
 	return ic->ic_raw_xmit(ni, m, &params);
 }
 
@@ -485,7 +470,6 @@ hwmp_add_meshpreq(uint8_t *frm, const st
 		frm += 6;
 		ADDWORD(frm, preq->preq_targets[i].target_seq);
 	}
-
 	return frm;
 }
 
@@ -506,7 +490,6 @@ hwmp_add_meshprep(uint8_t *frm, const st
 	ADDWORD(frm, prep->prep_metric);
 	IEEE80211_ADDR_COPY(frm, prep->prep_origaddr); frm += 6;
 	ADDWORD(frm, prep->prep_origseq);
-
 	return frm;
 }
 
@@ -528,7 +511,6 @@ hwmp_add_meshperr(uint8_t *frm, const st
 		frm += 6;
 		ADDWORD(frm, perr->perr_dests[i].dest_seq);
 	}
-
 	return frm;
 }
 
@@ -546,7 +528,6 @@ hwmp_add_meshrann(uint8_t *frm, const st
 	IEEE80211_ADDR_COPY(frm, rann->rann_addr); frm += 6;
 	ADDWORD(frm, rann->rann_seq);
 	ADDWORD(frm, rann->rann_metric);
-
 	return frm;
 }
 
@@ -712,7 +693,7 @@ hwmp_recv_preq(struct ieee80211vap *vap,
 	 * XXX: Proactive PREQ: reply with a proactive PREP to the
 	 * root STA if requested.
 	 */
-	if (IEEE80211_ADDR_EQ(PREQ_TADDR(0), proactiveaddr) &&
+	if (IEEE80211_ADDR_EQ(PREQ_TADDR(0), broadcastaddr) &&
 	    (PREQ_TFLAGS(0) &
 	    ((IEEE80211_MESHPREQ_TFLAGS_TO|IEEE80211_MESHPREQ_TFLAGS_RF) ==
 	    (IEEE80211_MESHPREQ_TFLAGS_TO|IEEE80211_MESHPREQ_TFLAGS_RF)))) {
@@ -753,7 +734,6 @@ hwmp_send_preq(struct ieee80211_node *ni
 	 *     [tlv] mesh path request
 	 */
 	preq->preq_ie = IEEE80211_ELEMID_MESHPREQ;
-
 	return ieee80211_hwmp_send_action(ni, sa, da, (uint8_t *)preq,
 	    sizeof(struct ieee80211_meshpreq_ie));
 }
@@ -850,7 +830,6 @@ hwmp_send_prep(struct ieee80211_node *ni
 	 *     [tlv] mesh path reply
 	 */
 	prep->prep_ie = IEEE80211_ELEMID_MESHPREP;
-
 	return ieee80211_hwmp_send_action(ni, sa, da, (uint8_t *)prep,
 	    sizeof(struct ieee80211_meshprep_ie));
 }
@@ -1002,7 +981,6 @@ ieee80211_hwmp_discover(struct ieee80211
 
 	if (IEEE80211_IS_MULTICAST(dest))
 		return ieee80211_find_txnode(vap, dest);
-
 	fi = hwmp_rt_find(vap, dest);
 	if (fi == NULL) {
 		fi = hwmp_rt_add(vap, dest);
@@ -1046,13 +1024,10 @@ ieee80211_hwmp_discover(struct ieee80211
 		hwmp_send_preq(vap->iv_bss, vap->iv_myaddr, broadcastaddr,
 		    &preq);
 	}
-
 	if (!IEEE80211_ADDR_EQ(fi->fi_nexthop, invalidaddr))
 		return ieee80211_find_txnode(vap, fi->fi_nexthop);
-
 	IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_HWMP,
 	    dest, NULL, "%s", "no valid path to this node");
-
 	return NULL;
 }
 #undef	PREQ_TFLAGS


More information about the svn-src-projects mailing list