Lines Matching defs:ms

112     "mesh gate interval (ms)");
180 mesh_rt_find_locked(struct ieee80211_mesh_state *ms,
185 MESH_RT_LOCK_ASSERT(ms);
187 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
198 struct ieee80211_mesh_state *ms = vap->iv_mesh;
204 MESH_RT_LOCK_ASSERT(ms);
207 ms->ms_ppath->mpp_privlen, M_80211_MESH_RT,
216 TAILQ_INSERT_TAIL(&ms->ms_routes, rt, rt_next);
225 struct ieee80211_mesh_state *ms = vap->iv_mesh;
228 MESH_RT_LOCK(ms);
229 rt = mesh_rt_find_locked(ms, dest);
230 MESH_RT_UNLOCK(ms);
238 struct ieee80211_mesh_state *ms = vap->iv_mesh;
246 MESH_RT_LOCK(ms);
248 MESH_RT_UNLOCK(ms);
303 struct ieee80211_mesh_state *ms = vap->iv_mesh;
306 MESH_RT_LOCK(ms);
307 rt = mesh_rt_find_locked(ms, dest);
342 MESH_RT_UNLOCK(ms);
346 mesh_rt_del(struct ieee80211_mesh_state *ms, struct ieee80211_mesh_route *rt)
348 TAILQ_REMOVE(&ms->ms_routes, rt, rt_next);
363 struct ieee80211_mesh_state *ms = vap->iv_mesh;
366 MESH_RT_LOCK(ms);
367 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
370 ms->ms_ppath->mpp_senderror(vap, dest, rt,
373 ms->ms_ppath->mpp_senderror(vap, dest, rt,
376 mesh_rt_del(ms, rt);
377 MESH_RT_UNLOCK(ms);
381 MESH_RT_UNLOCK(ms);
387 struct ieee80211_mesh_state *ms = vap->iv_mesh;
390 if (ms == NULL)
392 MESH_RT_LOCK(ms);
393 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next)
394 mesh_rt_del(ms, rt);
395 MESH_RT_UNLOCK(ms);
402 struct ieee80211_mesh_state *ms = vap->iv_mesh;
405 MESH_RT_LOCK(ms);
406 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
408 mesh_rt_del(ms, rt);
410 MESH_RT_UNLOCK(ms);
420 struct ieee80211_mesh_state *ms = vap->iv_mesh;
423 if (ms == NULL)
425 MESH_RT_LOCK(ms);
426 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
432 mesh_rt_del(ms, rt);
434 MESH_RT_UNLOCK(ms);
479 struct ieee80211_mesh_state *ms = vap->iv_mesh;
484 ms->ms_ppath = &mesh_proto_paths[i];
494 struct ieee80211_mesh_state *ms = vap->iv_mesh;
499 ms->ms_pmetric = &mesh_proto_metrics[i];
509 struct ieee80211_mesh_state *ms = vap->iv_mesh;
517 if (ms->ms_flags & IEEE80211_MESHFLAGS_ROOT ||
518 (ms->ms_flags & IEEE80211_MESHFLAGS_GATE) == 0) {
519 callout_drain(&ms->ms_gatetimer);
522 callout_reset(&ms->ms_gatetimer, ieee80211_mesh_gateint,
530 struct ieee80211_mesh_state *ms = vap->iv_mesh;
535 gann.gann_ttl = ms->ms_ttl;
537 gann.gann_seq = ms->ms_gateseq++;
640 struct ieee80211_mesh_state *ms = vap->iv_mesh;
642 callout_drain(&ms->ms_cleantimer);
646 MESH_RT_LOCK_DESTROY(ms);
647 ms->ms_ppath->mpp_vdetach(vap);
655 struct ieee80211_mesh_state *ms;
661 ms = IEEE80211_MALLOC(sizeof(struct ieee80211_mesh_state), M_80211_VAP,
663 if (ms == NULL) {
667 vap->iv_mesh = ms;
668 ms->ms_seq = 0;
669 ms->ms_flags = (IEEE80211_MESHFLAGS_AP | IEEE80211_MESHFLAGS_FWD);
670 ms->ms_ttl = IEEE80211_MESH_DEFAULT_TTL;
671 TAILQ_INIT(&ms->ms_known_gates);
672 TAILQ_INIT(&ms->ms_routes);
673 MESH_RT_LOCK_INIT(ms, "MBSS");
674 callout_init(&ms->ms_cleantimer, 1);
675 callout_init(&ms->ms_gatetimer, 1);
676 ms->ms_gateseq = 0;
678 KASSERT(ms->ms_pmetric, ("ms_pmetric == NULL"));
680 KASSERT(ms->ms_ppath, ("ms_ppath == NULL"));
681 ms->ms_ppath->mpp_vattach(vap);
690 struct ieee80211_mesh_state *ms = vap->iv_mesh;
706 callout_drain(&ms->ms_cleantimer);
707 callout_drain(&ms->ms_gatetimer);
736 ms->ms_idlen != 0) {
830 callout_reset(&ms->ms_cleantimer, ms->ms_ppath->mpp_inact,
838 ms->ms_ppath->mpp_newstate(vap, ostate, arg);
846 struct ieee80211_mesh_state *ms = vap->iv_mesh;
849 callout_reset(&ms->ms_cleantimer, ms->ms_ppath->mpp_inact,
862 struct ieee80211_mesh_state *ms = vap->iv_mesh;
866 MESH_RT_LOCK(ms);
867 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, next) {
882 TAILQ_INSERT_TAIL(&ms->ms_known_gates, gr, gr_next);
886 MESH_RT_UNLOCK(ms);
899 struct ieee80211_mesh_state *ms = vap->iv_mesh;
917 KASSERT(ms->ms_neighbors < 65535, ("neighbor count overflow"));
918 ms->ms_neighbors++;
922 KASSERT(ms->ms_neighbors > 0, ("neighbor count 0"));
923 ms->ms_neighbors--;
929 ms->ms_ppath->mpp_peerdown(ni);
1069 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1080 MESH_RT_LOCK(ms);
1086 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, gr_next) {
1114 ieee80211_mesh_rt_update(rt_dest, ms->ms_ppath->mpp_inact);
1115 MESH_RT_UNLOCK(ms);
1127 MESH_RT_LOCK(ms);
1131 MESH_RT_UNLOCK(ms);
1143 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1167 if (!(ms->ms_flags & IEEE80211_MESHFLAGS_FWD)) {
1211 ms->ms_ppath->mpp_senderror(vap, whcopy->i_addr3, NULL,
1371 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1402 ms->ms_ppath->mpp_inact));
1408 ms->ms_ppath->mpp_inact));
1429 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1448 ieee80211_mesh_rt_update(rt, ticks_to_msecs(ms->ms_ppath->mpp_inact));
1496 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1511 if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE &&
1512 ms->ms_flags & IEEE80211_MESHFLAGS_FWD) {
1835 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1908 if (memcmp(scan.meshid+2, ms->ms_id, ms->ms_idlen) != 0 ||
1937 (ms->ms_flags & IEEE80211_MESHFLAGS_AP)) {
1969 ms->ms_ppath->mpp_inact));
2241 struct ieee80211_mesh_state *ms = vap->iv_mesh;
2260 if (ms->ms_neighbors >= IEEE80211_MESH_MAX_NEIGHBORS) {
2566 struct ieee80211_mesh_state *ms = vap->iv_mesh;
2589 if (ms == NULL)
2591 MESH_RT_LOCK(ms);
2592 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, next) {
2600 MESH_RT_UNLOCK(ms);
2616 TAILQ_INSERT_TAIL(&ms->ms_known_gates, gr, gr_next);
2621 rt_gate = mesh_rt_find_locked(ms, gr->gr_addr);
2628 MESH_RT_UNLOCK(ms);
2631 if ((ie.gann_ttl - 1) < 1 && !(ms->ms_flags & IEEE80211_MESHFLAGS_FWD))
3087 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3089 if (ie == NULL || ie[1] != ms->ms_idlen)
3091 return memcmp(ms->ms_id, ie + 2, ms->ms_idlen);
3102 const struct ieee80211_mesh_state *ms = vap->iv_mesh;
3106 if (meshconf->conf_pselid != ms->ms_ppath->mpp_ie) {
3112 if (meshconf->conf_pmetid != ms->ms_pmetric->mpm_ie) {
3191 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3196 *frm++ = ms->ms_idlen;
3197 memcpy(frm, ms->ms_id, ms->ms_idlen);
3198 return frm + ms->ms_idlen;
3209 const struct ieee80211_mesh_state *ms = vap->iv_mesh;
3216 *frm++ = ms->ms_ppath->mpp_ie; /* path selection */
3217 *frm++ = ms->ms_pmetric->mpm_ie; /* link metric */
3222 *frm = (ms->ms_neighbors > IEEE80211_MESH_MAX_NEIGHBORS ?
3223 IEEE80211_MESH_MAX_NEIGHBORS : ms->ms_neighbors) << 1;
3224 if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE)
3228 if (ms->ms_flags & IEEE80211_MESHFLAGS_AP)
3230 if (ms->ms_flags & IEEE80211_MESHFLAGS_FWD)
3372 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3378 ms->ms_ppath->mpp_peerdown(ni);
3414 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3428 ireq->i_len = ms->ms_idlen;
3429 memcpy(tmpmeshid, ms->ms_id, ireq->i_len);
3433 ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_AP) != 0;
3436 ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_FWD) != 0;
3439 ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_GATE) != 0;
3442 ireq->i_val = ms->ms_ttl;
3448 MESH_RT_LOCK(ms);
3449 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
3452 MESH_RT_UNLOCK(ms);
3464 MESH_RT_LOCK(ms);
3465 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
3482 MESH_RT_UNLOCK(ms);
3496 len = strlen(ms->ms_pmetric->mpm_descr);
3500 error = copyout(ms->ms_pmetric->mpm_descr,
3504 len = strlen(ms->ms_ppath->mpp_descr);
3508 error = copyout(ms->ms_ppath->mpp_descr,
3522 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3539 memset(ms->ms_id, 0, IEEE80211_NWID_LEN);
3540 ms->ms_idlen = ireq->i_len;
3541 memcpy(ms->ms_id, tmpmeshid, ireq->i_len);
3546 ms->ms_flags |= IEEE80211_MESHFLAGS_AP;
3548 ms->ms_flags &= ~IEEE80211_MESHFLAGS_AP;
3553 ms->ms_flags |= IEEE80211_MESHFLAGS_FWD;
3555 ms->ms_flags &= ~IEEE80211_MESHFLAGS_FWD;
3560 ms->ms_flags |= IEEE80211_MESHFLAGS_GATE;
3562 ms->ms_flags &= ~IEEE80211_MESHFLAGS_GATE;
3565 ms->ms_ttl = (uint8_t) ireq->i_val;