Lines Matching defs:ms

115     "mesh gate interval (ms)");
187 mesh_rt_find_locked(struct ieee80211_mesh_state *ms,
192 MESH_RT_LOCK_ASSERT(ms);
194 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
205 struct ieee80211_mesh_state *ms = vap->iv_mesh;
211 MESH_RT_LOCK_ASSERT(ms);
214 ms->ms_ppath->mpp_privlen, M_80211_MESH_RT,
223 TAILQ_INSERT_TAIL(&ms->ms_routes, rt, rt_next);
232 struct ieee80211_mesh_state *ms = vap->iv_mesh;
235 MESH_RT_LOCK(ms);
236 rt = mesh_rt_find_locked(ms, dest);
237 MESH_RT_UNLOCK(ms);
245 struct ieee80211_mesh_state *ms = vap->iv_mesh;
253 MESH_RT_LOCK(ms);
255 MESH_RT_UNLOCK(ms);
310 struct ieee80211_mesh_state *ms = vap->iv_mesh;
313 MESH_RT_LOCK(ms);
314 rt = mesh_rt_find_locked(ms, dest);
349 MESH_RT_UNLOCK(ms);
353 mesh_rt_del(struct ieee80211_mesh_state *ms, struct ieee80211_mesh_route *rt)
355 TAILQ_REMOVE(&ms->ms_routes, rt, rt_next);
370 struct ieee80211_mesh_state *ms = vap->iv_mesh;
373 MESH_RT_LOCK(ms);
374 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
377 ms->ms_ppath->mpp_senderror(vap, dest, rt,
380 ms->ms_ppath->mpp_senderror(vap, dest, rt,
383 mesh_rt_del(ms, rt);
384 MESH_RT_UNLOCK(ms);
388 MESH_RT_UNLOCK(ms);
394 struct ieee80211_mesh_state *ms = vap->iv_mesh;
397 if (ms == NULL)
399 MESH_RT_LOCK(ms);
400 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next)
401 mesh_rt_del(ms, rt);
402 MESH_RT_UNLOCK(ms);
409 struct ieee80211_mesh_state *ms = vap->iv_mesh;
412 MESH_RT_LOCK(ms);
413 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
415 mesh_rt_del(ms, rt);
417 MESH_RT_UNLOCK(ms);
427 struct ieee80211_mesh_state *ms = vap->iv_mesh;
430 if (ms == NULL)
432 MESH_RT_LOCK(ms);
433 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
439 mesh_rt_del(ms, rt);
441 MESH_RT_UNLOCK(ms);
486 struct ieee80211_mesh_state *ms = vap->iv_mesh;
491 ms->ms_ppath = &mesh_proto_paths[i];
501 struct ieee80211_mesh_state *ms = vap->iv_mesh;
506 ms->ms_pmetric = &mesh_proto_metrics[i];
516 struct ieee80211_mesh_state *ms = vap->iv_mesh;
524 if (ms->ms_flags & IEEE80211_MESHFLAGS_ROOT ||
525 (ms->ms_flags & IEEE80211_MESHFLAGS_GATE) == 0) {
526 callout_drain(&ms->ms_gatetimer);
529 callout_reset(&ms->ms_gatetimer, ieee80211_mesh_gateint,
537 struct ieee80211_mesh_state *ms = vap->iv_mesh;
542 gann.gann_ttl = ms->ms_ttl;
544 gann.gann_seq = ms->ms_gateseq++;
647 struct ieee80211_mesh_state *ms = vap->iv_mesh;
649 callout_drain(&ms->ms_cleantimer);
653 MESH_RT_LOCK_DESTROY(ms);
654 ms->ms_ppath->mpp_vdetach(vap);
662 struct ieee80211_mesh_state *ms;
668 ms = IEEE80211_MALLOC(sizeof(struct ieee80211_mesh_state), M_80211_VAP,
670 if (ms == NULL) {
674 vap->iv_mesh = ms;
675 ms->ms_seq = 0;
676 ms->ms_flags = (IEEE80211_MESHFLAGS_AP | IEEE80211_MESHFLAGS_FWD);
677 ms->ms_ttl = IEEE80211_MESH_DEFAULT_TTL;
678 TAILQ_INIT(&ms->ms_known_gates);
679 TAILQ_INIT(&ms->ms_routes);
680 MESH_RT_LOCK_INIT(ms, "MBSS");
681 callout_init(&ms->ms_cleantimer, 1);
682 callout_init(&ms->ms_gatetimer, 1);
683 ms->ms_gateseq = 0;
685 KASSERT(ms->ms_pmetric, ("ms_pmetric == NULL"));
687 KASSERT(ms->ms_ppath, ("ms_ppath == NULL"));
688 ms->ms_ppath->mpp_vattach(vap);
697 struct ieee80211_mesh_state *ms = vap->iv_mesh;
713 callout_drain(&ms->ms_cleantimer);
714 callout_drain(&ms->ms_gatetimer);
743 ms->ms_idlen != 0) {
837 callout_reset(&ms->ms_cleantimer, ms->ms_ppath->mpp_inact,
845 ms->ms_ppath->mpp_newstate(vap, ostate, arg);
853 struct ieee80211_mesh_state *ms = vap->iv_mesh;
856 callout_reset(&ms->ms_cleantimer, ms->ms_ppath->mpp_inact,
869 struct ieee80211_mesh_state *ms = vap->iv_mesh;
873 MESH_RT_LOCK(ms);
874 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, next) {
889 TAILQ_INSERT_TAIL(&ms->ms_known_gates, gr, gr_next);
893 MESH_RT_UNLOCK(ms);
905 struct ieee80211_mesh_state *ms = vap->iv_mesh;
923 KASSERT(ms->ms_neighbors < 65535, ("neighbor count overflow"));
924 ms->ms_neighbors++;
928 KASSERT(ms->ms_neighbors > 0, ("neighbor count 0"));
929 ms->ms_neighbors--;
935 ms->ms_ppath->mpp_peerdown(ni);
1075 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1086 MESH_RT_LOCK(ms);
1092 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, gr_next) {
1120 ieee80211_mesh_rt_update(rt_dest, ms->ms_ppath->mpp_inact);
1121 MESH_RT_UNLOCK(ms);
1133 MESH_RT_LOCK(ms);
1137 MESH_RT_UNLOCK(ms);
1149 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1173 if (!(ms->ms_flags & IEEE80211_MESHFLAGS_FWD)) {
1217 ms->ms_ppath->mpp_senderror(vap, whcopy->i_addr3, NULL,
1377 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1408 ms->ms_ppath->mpp_inact));
1414 ms->ms_ppath->mpp_inact));
1435 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1454 ieee80211_mesh_rt_update(rt, ticks_to_msecs(ms->ms_ppath->mpp_inact));
1502 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1517 if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE &&
1518 ms->ms_flags & IEEE80211_MESHFLAGS_FWD) {
1836 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1909 if (memcmp(scan.meshid+2, ms->ms_id, ms->ms_idlen) != 0 ||
1938 (ms->ms_flags & IEEE80211_MESHFLAGS_AP)) {
1970 ms->ms_ppath->mpp_inact));
2242 struct ieee80211_mesh_state *ms = vap->iv_mesh;
2261 if (ms->ms_neighbors >= IEEE80211_MESH_MAX_NEIGHBORS) {
2567 struct ieee80211_mesh_state *ms = vap->iv_mesh;
2590 if (ms == NULL)
2592 MESH_RT_LOCK(ms);
2593 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, next) {
2601 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;