Lines Matching refs:preq

165     "maximum number of preq retries");
400 struct ieee80211_meshpreq_ie *preq;
422 preq = IEEE80211_MALLOC(sizeof(*preq) +
423 (ndest - 1) * sizeof(*preq->preq_targets),
426 KASSERT(preq != NULL, ("preq == NULL"));
428 preq->preq_ie = *iefrm_t++;
429 preq->preq_len = *iefrm_t++;
430 preq->preq_flags = *iefrm_t++;
431 preq->preq_hopcount = *iefrm_t++;
432 preq->preq_ttl = *iefrm_t++;
433 preq->preq_id = le32dec(iefrm_t); iefrm_t += 4;
434 IEEE80211_ADDR_COPY(preq->preq_origaddr, iefrm_t);
436 preq->preq_origseq = le32dec(iefrm_t); iefrm_t += 4;
438 if (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_AE) {
440 preq->preq_orig_ext_addr, iefrm_t);
443 preq->preq_lifetime = le32dec(iefrm_t); iefrm_t += 4;
444 preq->preq_metric = le32dec(iefrm_t); iefrm_t += 4;
445 preq->preq_tcount = *iefrm_t++;
447 for (i = 0; i < preq->preq_tcount; i++) {
448 preq->preq_targets[i].target_flags = *iefrm_t++;
450 preq->preq_targets[i].target_addr, iefrm_t);
452 preq->preq_targets[i].target_seq =
457 hwmp_recv_preq(vap, ni, wh, preq);
458 IEEE80211_FREE(preq, M_80211_MESH_PREQ);
685 #define PREQ_TFLAGS(n) preq->preq_targets[n].target_flags
686 #define PREQ_TADDR(n) preq->preq_targets[n].target_addr
687 #define PREQ_TSEQ(n) preq->preq_targets[n].target_seq
689 hwmp_add_meshpreq(uint8_t *frm, const struct ieee80211_meshpreq_ie *preq)
694 *frm++ = preq->preq_len; /* len already calculated */
695 *frm++ = preq->preq_flags;
696 *frm++ = preq->preq_hopcount;
697 *frm++ = preq->preq_ttl;
698 ADDWORD(frm, preq->preq_id);
699 IEEE80211_ADDR_COPY(frm, preq->preq_origaddr); frm += 6;
700 ADDWORD(frm, preq->preq_origseq);
701 if (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_AE) {
702 IEEE80211_ADDR_COPY(frm, preq->preq_orig_ext_addr);
705 ADDWORD(frm, preq->preq_lifetime);
706 ADDWORD(frm, preq->preq_metric);
707 *frm++ = preq->preq_tcount;
708 for (i = 0; i < preq->preq_tcount; i++) {
827 #define PREQ_TFLAGS(n) preq.preq_targets[n].target_flags
828 #define PREQ_TADDR(n) preq.preq_targets[n].target_addr
829 #define PREQ_TSEQ(n) preq.preq_targets[n].target_seq
836 struct ieee80211_meshpreq_ie preq;
841 preq.preq_flags = 0;
843 preq.preq_flags |= IEEE80211_MESHPREQ_FLAGS_GATE;
845 preq.preq_flags |= IEEE80211_MESHPREQ_FLAGS_PP;
846 preq.preq_hopcount = 0;
847 preq.preq_ttl = ms->ms_ttl;
848 preq.preq_id = ++hs->hs_preqid;
849 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr);
850 preq.preq_origseq = ++hs->hs_seq;
851 preq.preq_lifetime = ticks_to_msecs(ieee80211_hwmp_roottimeout);
852 preq.preq_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
853 preq.preq_tcount = 1;
860 hwmp_send_preq(vap, broadcastaddr, &preq, NULL, NULL);
936 #define PREQ_TFLAGS(n) preq->preq_targets[n].target_flags
937 #define PREQ_TADDR(n) preq->preq_targets[n].target_addr
938 #define PREQ_TSEQ(n) preq->preq_targets[n].target_seq
941 const struct ieee80211_frame *wh, const struct ieee80211_meshpreq_ie *preq)
957 if (IEEE80211_ADDR_EQ(vap->iv_myaddr, preq->preq_origaddr))
961 "received PREQ, orig %6D, targ(0) %6D", preq->preq_origaddr, ":",
977 preq->preq_origaddr, NULL, "%s", "not accepting PREQ");
988 if(preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_AM &&
992 preq->preq_origaddr, NULL,
1000 rtorig = ieee80211_mesh_rt_find(vap, preq->preq_origaddr);
1002 rtorig = ieee80211_mesh_rt_add(vap, preq->preq_origaddr);
1006 preq->preq_origaddr, ":");
1011 "adding originator %6D", preq->preq_origaddr, ":");
1017 hrorig->hr_preqid = HWMP_SEQ_MAX(hrorig->hr_preqid, preq->preq_id);
1022 metric = preq->preq_metric + ms->ms_pmetric->mpm_metric(ni);
1023 if (HWMP_SEQ_GT(preq->preq_origseq, hrorig->hr_seq) ||
1024 (HWMP_SEQ_EQ(preq->preq_origseq, hrorig->hr_seq) &&
1026 hrorig->hr_seq = preq->preq_origseq;
1029 rtorig->rt_nhops = preq->preq_hopcount + 1;
1030 ieee80211_mesh_rt_update(rtorig, preq->preq_lifetime);
1039 preqid >= preq->preq_id)) {
1043 preq->preq_origaddr, ":",
1044 preq->preq_origseq, hrorig->hr_seq,
1045 preq->preq_id, preqid);
1066 * number with max of (current and preq->seq) + 1
1092 prep.prep_lifetime = preq->preq_lifetime;
1093 IEEE80211_ADDR_COPY(prep.prep_origaddr, preq->preq_origaddr);
1094 prep.prep_origseq = preq->preq_origseq;
1097 "reply to %6D", preq->preq_origaddr, ":");
1102 else if (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_AE) {
1104 ieee80211_mesh_rt_find(vap, preq->preq_orig_ext_addr);
1107 preq->preq_orig_ext_addr);
1111 preq->preq_orig_ext_addr, ":");
1116 preq->preq_origaddr);
1118 rtorig_ext->rt_ext_seq = preq->preq_origseq;
1119 ieee80211_mesh_rt_update(rtorig_ext, preq->preq_lifetime);
1128 "root mesh station @ %6D", preq->preq_origaddr, ":");
1131 if (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_GATE) {
1135 gr = ieee80211_mesh_mark_gate(vap, preq->preq_origaddr,
1145 (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_PP)) {
1152 preq->preq_origaddr);
1153 prep.prep_origseq = preq->preq_origseq;
1154 prep.prep_lifetime = preq->preq_lifetime;
1166 if ((preq->preq_tcount == 1) && (preq->preq_ttl > 1) &&
1170 memcpy(&ppreq, preq, sizeof(ppreq));
1190 preq->preq_origaddr, ":");
1197 prep.prep_lifetime = preq->preq_lifetime;
1200 preq->preq_origaddr);
1215 preq->preq_origaddr, ":");
1231 struct ieee80211_meshpreq_ie *preq,
1246 * mesh preq action frame format
1254 preq->preq_ie = IEEE80211_ELEMID_MESHPREQ;
1255 preq->preq_len = (preq->preq_flags & IEEE80211_MESHPREQ_FLAGS_AE ?
1257 preq->preq_tcount * IEEE80211_MESHPREQ_TRGT_SZ;
1258 return hwmp_send_action(vap, da, (uint8_t *)preq, preq->preq_len+2);
1741 struct ieee80211_meshpreq_ie preq;
1796 preq.preq_flags = IEEE80211_MESHPREQ_FLAGS_AM;
1797 preq.preq_hopcount = 0;
1798 preq.preq_ttl = ms->ms_ttl;
1799 preq.preq_id = 0; /* reserved */
1800 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr);
1801 preq.preq_origseq = ++hs->hs_seq;
1802 preq.preq_lifetime = ieee80211_hwmp_roottimeout;
1803 preq.preq_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
1804 preq.preq_tcount = 1;
1805 preq.preq_targets[0].target_flags = IEEE80211_MESHPREQ_TFLAGS_TO;
1807 IEEE80211_ADDR_COPY(preq.preq_targets[0].target_addr, rann->rann_addr);
1808 preq.preq_targets[0].target_seq = rann->rann_seq;
1809 /* XXX: if rootconfint have not passed, we built this preq in vain */
1810 hwmp_send_preq(vap, wh->i_addr2, &preq, &hr->hr_lastrootconf,
1845 #define PREQ_TFLAGS(n) preq.preq_targets[n].target_flags
1846 #define PREQ_TADDR(n) preq.preq_targets[n].target_addr
1847 #define PREQ_TSEQ(n) preq.preq_targets[n].target_seq
1856 struct ieee80211_meshpreq_ie preq; /* Optimize: storing first preq? */
1880 preq.preq_flags = 0;
1881 preq.preq_hopcount = 0;
1882 preq.preq_ttl = ms->ms_ttl;
1883 preq.preq_id = ++hs->hs_preqid;
1884 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr);
1885 preq.preq_origseq = hr->hr_origseq;
1886 preq.preq_lifetime = ticks_to_msecs(ieee80211_hwmp_pathtimeout);
1887 preq.preq_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
1888 preq.preq_tcount = 1;
1896 hwmp_send_preq(vap, broadcastaddr, &preq, &hr->hr_lastpreq,
1911 struct ieee80211_meshpreq_ie preq;
1976 preq.preq_flags = 0;
1977 preq.preq_hopcount = 0;
1978 preq.preq_ttl = ms->ms_ttl;
1979 preq.preq_id = ++hs->hs_preqid;
1980 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr);
1981 preq.preq_origseq = hr->hr_origseq;
1982 preq.preq_lifetime =
1984 preq.preq_metric = IEEE80211_MESHLMETRIC_INITIALVAL;
1985 preq.preq_tcount = 1;
1993 hwmp_send_preq(vap, broadcastaddr, &preq,