Date: Wed, 24 Jun 2009 21:37:39 +0000 (UTC) From: Rui Paulo <rpaulo@FreeBSD.org> To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r194914 - projects/mesh11s/sys/net80211 Message-ID: <200906242137.n5OLbdoC030309@svn.freebsd.org>
next in thread | raw e-mail | index | archive | help
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(¶ms, 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, ¶ms); } @@ -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
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200906242137.n5OLbdoC030309>