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(¶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
More information about the svn-src-projects
mailing list