Lines Matching defs:ms

111     "mesh gate interval (ms)");
183 mesh_rt_find_locked(struct ieee80211_mesh_state *ms,
188 MESH_RT_LOCK_ASSERT(ms);
190 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
201 struct ieee80211_mesh_state *ms = vap->iv_mesh;
207 MESH_RT_LOCK_ASSERT(ms);
210 ms->ms_ppath->mpp_privlen, M_80211_MESH_RT,
219 TAILQ_INSERT_TAIL(&ms->ms_routes, rt, rt_next);
228 struct ieee80211_mesh_state *ms = vap->iv_mesh;
231 MESH_RT_LOCK(ms);
232 rt = mesh_rt_find_locked(ms, dest);
233 MESH_RT_UNLOCK(ms);
241 struct ieee80211_mesh_state *ms = vap->iv_mesh;
249 MESH_RT_LOCK(ms);
251 MESH_RT_UNLOCK(ms);
306 struct ieee80211_mesh_state *ms = vap->iv_mesh;
309 MESH_RT_LOCK(ms);
310 rt = mesh_rt_find_locked(ms, dest);
345 MESH_RT_UNLOCK(ms);
349 mesh_rt_del(struct ieee80211_mesh_state *ms, struct ieee80211_mesh_route *rt)
351 TAILQ_REMOVE(&ms->ms_routes, rt, rt_next);
366 struct ieee80211_mesh_state *ms = vap->iv_mesh;
369 MESH_RT_LOCK(ms);
370 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
373 ms->ms_ppath->mpp_senderror(vap, dest, rt,
376 ms->ms_ppath->mpp_senderror(vap, dest, rt,
379 mesh_rt_del(ms, rt);
380 MESH_RT_UNLOCK(ms);
384 MESH_RT_UNLOCK(ms);
390 struct ieee80211_mesh_state *ms = vap->iv_mesh;
393 if (ms == NULL)
395 MESH_RT_LOCK(ms);
396 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next)
397 mesh_rt_del(ms, rt);
398 MESH_RT_UNLOCK(ms);
405 struct ieee80211_mesh_state *ms = vap->iv_mesh;
408 MESH_RT_LOCK(ms);
409 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
411 mesh_rt_del(ms, rt);
413 MESH_RT_UNLOCK(ms);
423 struct ieee80211_mesh_state *ms = vap->iv_mesh;
426 if (ms == NULL)
428 MESH_RT_LOCK(ms);
429 TAILQ_FOREACH_SAFE(rt, &ms->ms_routes, rt_next, next) {
435 mesh_rt_del(ms, rt);
437 MESH_RT_UNLOCK(ms);
482 struct ieee80211_mesh_state *ms = vap->iv_mesh;
487 ms->ms_ppath = &mesh_proto_paths[i];
497 struct ieee80211_mesh_state *ms = vap->iv_mesh;
502 ms->ms_pmetric = &mesh_proto_metrics[i];
512 struct ieee80211_mesh_state *ms = vap->iv_mesh;
520 if (ms->ms_flags & IEEE80211_MESHFLAGS_ROOT ||
521 (ms->ms_flags & IEEE80211_MESHFLAGS_GATE) == 0) {
522 callout_drain(&ms->ms_gatetimer);
525 callout_reset(&ms->ms_gatetimer, ieee80211_mesh_gateint,
533 struct ieee80211_mesh_state *ms = vap->iv_mesh;
538 gann.gann_ttl = ms->ms_ttl;
540 gann.gann_seq = ms->ms_gateseq++;
643 struct ieee80211_mesh_state *ms = vap->iv_mesh;
645 callout_drain(&ms->ms_cleantimer);
649 MESH_RT_LOCK_DESTROY(ms);
650 ms->ms_ppath->mpp_vdetach(vap);
658 struct ieee80211_mesh_state *ms;
664 ms = IEEE80211_MALLOC(sizeof(struct ieee80211_mesh_state), M_80211_VAP,
666 if (ms == NULL) {
670 vap->iv_mesh = ms;
671 ms->ms_seq = 0;
672 ms->ms_flags = (IEEE80211_MESHFLAGS_AP | IEEE80211_MESHFLAGS_FWD);
673 ms->ms_ttl = IEEE80211_MESH_DEFAULT_TTL;
674 TAILQ_INIT(&ms->ms_known_gates);
675 TAILQ_INIT(&ms->ms_routes);
676 MESH_RT_LOCK_INIT(ms, "MBSS");
677 callout_init(&ms->ms_cleantimer, 1);
678 callout_init(&ms->ms_gatetimer, 1);
679 ms->ms_gateseq = 0;
681 KASSERT(ms->ms_pmetric, ("ms_pmetric == NULL"));
683 KASSERT(ms->ms_ppath, ("ms_ppath == NULL"));
684 ms->ms_ppath->mpp_vattach(vap);
693 struct ieee80211_mesh_state *ms = vap->iv_mesh;
709 callout_drain(&ms->ms_cleantimer);
710 callout_drain(&ms->ms_gatetimer);
739 ms->ms_idlen != 0) {
833 callout_reset(&ms->ms_cleantimer, ms->ms_ppath->mpp_inact,
841 ms->ms_ppath->mpp_newstate(vap, ostate, arg);
849 struct ieee80211_mesh_state *ms = vap->iv_mesh;
852 callout_reset(&ms->ms_cleantimer, ms->ms_ppath->mpp_inact,
865 struct ieee80211_mesh_state *ms = vap->iv_mesh;
869 MESH_RT_LOCK(ms);
870 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, next) {
885 TAILQ_INSERT_TAIL(&ms->ms_known_gates, gr, gr_next);
889 MESH_RT_UNLOCK(ms);
901 struct ieee80211_mesh_state *ms = vap->iv_mesh;
919 KASSERT(ms->ms_neighbors < 65535, ("neighbor count overflow"));
920 ms->ms_neighbors++;
924 KASSERT(ms->ms_neighbors > 0, ("neighbor count 0"));
925 ms->ms_neighbors--;
931 ms->ms_ppath->mpp_peerdown(ni);
1071 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1082 MESH_RT_LOCK(ms);
1088 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, gr_next) {
1116 ieee80211_mesh_rt_update(rt_dest, ms->ms_ppath->mpp_inact);
1117 MESH_RT_UNLOCK(ms);
1129 MESH_RT_LOCK(ms);
1133 MESH_RT_UNLOCK(ms);
1145 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1169 if (!(ms->ms_flags & IEEE80211_MESHFLAGS_FWD)) {
1213 ms->ms_ppath->mpp_senderror(vap, whcopy->i_addr3, NULL,
1374 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1405 ms->ms_ppath->mpp_inact));
1411 ms->ms_ppath->mpp_inact));
1432 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1451 ieee80211_mesh_rt_update(rt, ticks_to_msecs(ms->ms_ppath->mpp_inact));
1499 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1514 if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE &&
1515 ms->ms_flags & IEEE80211_MESHFLAGS_FWD) {
1832 struct ieee80211_mesh_state *ms = vap->iv_mesh;
1905 if (memcmp(scan.meshid+2, ms->ms_id, ms->ms_idlen) != 0 ||
1934 (ms->ms_flags & IEEE80211_MESHFLAGS_AP)) {
1966 ms->ms_ppath->mpp_inact));
2238 struct ieee80211_mesh_state *ms = vap->iv_mesh;
2257 if (ms->ms_neighbors >= IEEE80211_MESH_MAX_NEIGHBORS) {
2563 struct ieee80211_mesh_state *ms = vap->iv_mesh;
2586 if (ms == NULL)
2588 MESH_RT_LOCK(ms);
2589 TAILQ_FOREACH_SAFE(gr, &ms->ms_known_gates, gr_next, next) {
2597 MESH_RT_UNLOCK(ms);
2612 TAILQ_INSERT_TAIL(&ms->ms_known_gates, gr, gr_next);
2617 rt_gate = mesh_rt_find_locked(ms, gr->gr_addr);
2624 MESH_RT_UNLOCK(ms);
2627 if ((ie.gann_ttl - 1) < 1 && !(ms->ms_flags & IEEE80211_MESHFLAGS_FWD))
3083 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3085 if (ie == NULL || ie[1] != ms->ms_idlen)
3087 return memcmp(ms->ms_id, ie + 2, ms->ms_idlen);
3098 const struct ieee80211_mesh_state *ms = vap->iv_mesh;
3102 if (meshconf->conf_pselid != ms->ms_ppath->mpp_ie) {
3108 if (meshconf->conf_pmetid != ms->ms_pmetric->mpm_ie) {
3187 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3192 *frm++ = ms->ms_idlen;
3193 memcpy(frm, ms->ms_id, ms->ms_idlen);
3194 return frm + ms->ms_idlen;
3205 const struct ieee80211_mesh_state *ms = vap->iv_mesh;
3212 *frm++ = ms->ms_ppath->mpp_ie; /* path selection */
3213 *frm++ = ms->ms_pmetric->mpm_ie; /* link metric */
3218 *frm = (ms->ms_neighbors > IEEE80211_MESH_MAX_NEIGHBORS ?
3219 IEEE80211_MESH_MAX_NEIGHBORS : ms->ms_neighbors) << 1;
3220 if (ms->ms_flags & IEEE80211_MESHFLAGS_GATE)
3224 if (ms->ms_flags & IEEE80211_MESHFLAGS_AP)
3226 if (ms->ms_flags & IEEE80211_MESHFLAGS_FWD)
3368 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3374 ms->ms_ppath->mpp_peerdown(ni);
3410 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3424 ireq->i_len = ms->ms_idlen;
3425 memcpy(tmpmeshid, ms->ms_id, ireq->i_len);
3429 ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_AP) != 0;
3432 ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_FWD) != 0;
3435 ireq->i_val = (ms->ms_flags & IEEE80211_MESHFLAGS_GATE) != 0;
3438 ireq->i_val = ms->ms_ttl;
3444 MESH_RT_LOCK(ms);
3445 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
3448 MESH_RT_UNLOCK(ms);
3460 MESH_RT_LOCK(ms);
3461 TAILQ_FOREACH(rt, &ms->ms_routes, rt_next) {
3478 MESH_RT_UNLOCK(ms);
3492 len = strlen(ms->ms_pmetric->mpm_descr);
3496 error = copyout(ms->ms_pmetric->mpm_descr,
3500 len = strlen(ms->ms_ppath->mpp_descr);
3504 error = copyout(ms->ms_ppath->mpp_descr,
3518 struct ieee80211_mesh_state *ms = vap->iv_mesh;
3535 memset(ms->ms_id, 0, IEEE80211_NWID_LEN);
3536 ms->ms_idlen = ireq->i_len;
3537 memcpy(ms->ms_id, tmpmeshid, ireq->i_len);
3542 ms->ms_flags |= IEEE80211_MESHFLAGS_AP;
3544 ms->ms_flags &= ~IEEE80211_MESHFLAGS_AP;
3549 ms->ms_flags |= IEEE80211_MESHFLAGS_FWD;
3551 ms->ms_flags &= ~IEEE80211_MESHFLAGS_FWD;
3556 ms->ms_flags |= IEEE80211_MESHFLAGS_GATE;
3558 ms->ms_flags &= ~IEEE80211_MESHFLAGS_GATE;
3561 ms->ms_ttl = (uint8_t) ireq->i_val;