Lines Matching refs:vap
254 hwmp_vattach(struct ieee80211vap *vap) in hwmp_vattach() argument
258 KASSERT(vap->iv_opmode == IEEE80211_M_MBSS, in hwmp_vattach()
259 ("not a mesh vap, opmode %d", vap->iv_opmode)); in hwmp_vattach()
269 vap->iv_hwmp = hs; in hwmp_vattach()
273 hwmp_vdetach(struct ieee80211vap *vap) in hwmp_vdetach() argument
275 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_vdetach()
278 IEEE80211_FREE(vap->iv_hwmp, M_80211_VAP); in hwmp_vdetach()
279 vap->iv_hwmp = NULL; in hwmp_vdetach()
283 hwmp_newstate(struct ieee80211vap *vap, enum ieee80211_state ostate, int arg) in hwmp_newstate() argument
285 enum ieee80211_state nstate = vap->iv_state; in hwmp_newstate()
286 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_newstate()
288 IEEE80211_DPRINTF(vap, IEEE80211_MSG_STATE, "%s: %s -> %s (%d)\n", in hwmp_newstate()
295 hwmp_rootmode_setup(vap); in hwmp_newstate()
304 verify_mesh_preq_len(struct ieee80211vap *vap, in verify_mesh_preq_len() argument
321 IEEE80211_DISCARD(vap, in verify_mesh_preq_len()
335 verify_mesh_prep_len(struct ieee80211vap *vap, in verify_mesh_prep_len() argument
345 IEEE80211_DISCARD(vap, in verify_mesh_prep_len()
359 verify_mesh_perr_len(struct ieee80211vap *vap, in verify_mesh_perr_len() argument
368 IEEE80211_DISCARD(vap, in verify_mesh_perr_len()
386 IEEE80211_DISCARD(vap, in verify_mesh_perr_len()
399 struct ieee80211vap *vap = ni->ni_vap; in hwmp_recv_action_meshpath() local
417 ndest = verify_mesh_preq_len(vap, wh, iefrm_t); in hwmp_recv_action_meshpath()
419 vap->iv_stats.is_rx_mgtdiscard++; in hwmp_recv_action_meshpath()
457 hwmp_recv_preq(vap, ni, wh, preq); in hwmp_recv_action_meshpath()
465 ndest = verify_mesh_prep_len(vap, wh, iefrm_t); in hwmp_recv_action_meshpath()
467 vap->iv_stats.is_rx_mgtdiscard++; in hwmp_recv_action_meshpath()
495 hwmp_recv_prep(vap, ni, wh, prep); in hwmp_recv_action_meshpath()
505 ndest = verify_mesh_perr_len(vap, wh, iefrm_t); in hwmp_recv_action_meshpath()
507 vap->iv_stats.is_rx_mgtdiscard++; in hwmp_recv_action_meshpath()
541 hwmp_recv_perr(vap, ni, wh, perr); in hwmp_recv_action_meshpath()
552 IEEE80211_DISCARD(vap, in hwmp_recv_action_meshpath()
555 vap->iv_stats.is_rx_mgtdiscard++; in hwmp_recv_action_meshpath()
562 hwmp_recv_rann(vap, ni, wh, &rann); in hwmp_recv_action_meshpath()
570 IEEE80211_DISCARD(vap, in hwmp_recv_action_meshpath()
573 vap->iv_stats.is_rx_mgtdiscard++; in hwmp_recv_action_meshpath()
579 hwmp_send_action(struct ieee80211vap *vap, in hwmp_send_action() argument
591 ni = ieee80211_ref_node(vap->iv_bss); in hwmp_send_action()
593 IEEE80211_DPRINTF(vap, IEEE80211_MSG_NODE, in hwmp_send_action()
602 ni = ieee80211_mesh_find_txnode(vap, da); in hwmp_send_action()
604 if (vap->iv_state == IEEE80211_S_CAC) { in hwmp_send_action()
605 IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni, in hwmp_send_action()
607 vap->iv_stats.is_tx_badstate++; in hwmp_send_action()
620 vap->iv_stats.is_tx_nobuf++; in hwmp_send_action()
648 vap->iv_stats.is_tx_nobuf++; in hwmp_send_action()
656 IEEE80211_NONQOS_TID, vap->iv_myaddr, da, vap->iv_myaddr); in hwmp_send_action()
669 ret = ieee80211_raw_output(vap, ni, m, ¶ms); in hwmp_send_action()
799 hwmp_rootmode_setup(struct ieee80211vap *vap) in hwmp_rootmode_setup() argument
801 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_rootmode_setup()
802 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_rootmode_setup()
812 hwmp_rootmode_cb, vap); in hwmp_rootmode_setup()
817 hwmp_rootmode_rann_cb, vap); in hwmp_rootmode_setup()
833 struct ieee80211vap *vap = (struct ieee80211vap *)arg; in hwmp_rootmode_cb() local
834 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_rootmode_cb()
835 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_rootmode_cb()
838 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, vap->iv_bss, in hwmp_rootmode_cb()
849 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr); in hwmp_rootmode_cb()
858 vap->iv_stats.is_hwmp_rootreqs++; in hwmp_rootmode_cb()
860 hwmp_send_preq(vap, broadcastaddr, &preq, NULL, NULL); in hwmp_rootmode_cb()
861 hwmp_rootmode_setup(vap); in hwmp_rootmode_cb()
874 struct ieee80211vap *vap = (struct ieee80211vap *)arg; in hwmp_rootmode_rann_cb() local
875 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_rootmode_rann_cb()
876 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_rootmode_rann_cb()
879 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, vap->iv_bss, in hwmp_rootmode_rann_cb()
887 IEEE80211_ADDR_COPY(rann.rann_addr, vap->iv_myaddr); in hwmp_rootmode_rann_cb()
892 vap->iv_stats.is_hwmp_rootrann++; in hwmp_rootmode_rann_cb()
893 hwmp_send_rann(vap, broadcastaddr, &rann); in hwmp_rootmode_rann_cb()
894 hwmp_rootmode_setup(vap); in hwmp_rootmode_rann_cb()
901 hwmp_update_transmitter(struct ieee80211vap *vap, struct ieee80211_node *ni, in hwmp_update_transmitter() argument
904 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_update_transmitter()
908 rttran = ieee80211_mesh_rt_find(vap, ni->ni_macaddr); in hwmp_update_transmitter()
910 rttran = ieee80211_mesh_rt_add(vap, ni->ni_macaddr); in hwmp_update_transmitter()
912 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_update_transmitter()
915 vap->iv_stats.is_mesh_rtaddfailed++; in hwmp_update_transmitter()
923 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_update_transmitter()
940 hwmp_recv_preq(struct ieee80211vap *vap, struct ieee80211_node *ni, in hwmp_recv_preq() argument
943 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_recv_preq()
949 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_recv_preq()
957 if (IEEE80211_ADDR_EQ(vap->iv_myaddr, preq->preq_origaddr)) in hwmp_recv_preq()
960 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
969 rttarg = ieee80211_mesh_rt_find(vap, PREQ_TADDR(0)); in hwmp_recv_preq()
971 (!IEEE80211_ADDR_EQ(vap->iv_myaddr, PREQ_TADDR(0)) || in hwmp_recv_preq()
975 IEEE80211_ADDR_EQ(vap->iv_myaddr, rttarg->rt_mesh_gate)))) { in hwmp_recv_preq()
976 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_HWMP, in hwmp_recv_preq()
990 !IEEE80211_ADDR_EQ(vap->iv_myaddr, PREQ_TADDR(0))) { in hwmp_recv_preq()
991 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_HWMP, in hwmp_recv_preq()
1000 rtorig = ieee80211_mesh_rt_find(vap, preq->preq_origaddr); in hwmp_recv_preq()
1002 rtorig = ieee80211_mesh_rt_add(vap, preq->preq_origaddr); in hwmp_recv_preq()
1004 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1007 vap->iv_stats.is_mesh_rtaddfailed++; in hwmp_recv_preq()
1010 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1040 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1050 hwmp_update_transmitter(vap, ni, "PREQ"); in hwmp_recv_preq()
1056 if (IEEE80211_ADDR_EQ(vap->iv_myaddr, PREQ_TADDR(0)) || in hwmp_recv_preq()
1059 IEEE80211_ADDR_EQ(vap->iv_myaddr, rttarg->rt_mesh_gate) && in hwmp_recv_preq()
1073 IEEE80211_ADDR_COPY(prep.prep_targetaddr, vap->iv_myaddr); in hwmp_recv_preq()
1076 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1096 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1098 hwmp_send_prep(vap, wh->i_addr2, &prep); in hwmp_recv_preq()
1104 ieee80211_mesh_rt_find(vap, preq->preq_orig_ext_addr); in hwmp_recv_preq()
1106 rtorig_ext = ieee80211_mesh_rt_add(vap, in hwmp_recv_preq()
1109 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1112 vap->iv_stats.is_mesh_rtaddfailed++; in hwmp_recv_preq()
1127 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1135 gr = ieee80211_mesh_mark_gate(vap, preq->preq_origaddr, in hwmp_recv_preq()
1157 vap->iv_myaddr); in hwmp_recv_preq()
1159 hwmp_send_prep(vap, rtorig->rt_nexthop, &prep); in hwmp_recv_preq()
1188 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1202 hwmp_send_prep(vap, rtorig->rt_nexthop, &prep); in hwmp_recv_preq()
1213 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_preq()
1221 hwmp_send_preq(vap, broadcastaddr, &ppreq, NULL, NULL); in hwmp_recv_preq()
1229 hwmp_send_preq(struct ieee80211vap *vap, in hwmp_send_preq() argument
1258 return hwmp_send_action(vap, da, (uint8_t *)preq, preq->preq_len+2); in hwmp_send_preq()
1262 hwmp_recv_prep(struct ieee80211vap *vap, struct ieee80211_node *ni, in hwmp_recv_prep() argument
1267 (IEEE80211_ADDR_EQ(vap->iv_myaddr, rt->rt_mesh_gate)) in hwmp_recv_prep()
1268 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_recv_prep()
1269 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_recv_prep()
1274 struct ieee80211com *ic = vap->iv_ic; in hwmp_recv_prep()
1279 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1288 rtorig = ieee80211_mesh_rt_find(vap, prep->prep_origaddr); in hwmp_recv_prep()
1289 if ((!IEEE80211_ADDR_EQ(vap->iv_myaddr, prep->prep_origaddr) || in hwmp_recv_prep()
1292 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1307 rt = ieee80211_mesh_rt_find(vap, prep->prep_targetaddr); in hwmp_recv_prep()
1309 rt = ieee80211_mesh_rt_add(vap, prep->prep_targetaddr); in hwmp_recv_prep()
1311 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1314 vap->iv_stats.is_mesh_rtaddfailed++; in hwmp_recv_prep()
1317 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1325 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1332 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1340 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1361 hwmp_update_transmitter(vap, ni, "PREP"); in hwmp_recv_prep()
1366 if (!IEEE80211_ADDR_EQ(vap->iv_myaddr, prep->prep_origaddr) && in hwmp_recv_prep()
1377 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1383 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1391 hwmp_send_prep(vap, rtorig->rt_nexthop, &pprep); in hwmp_recv_prep()
1402 rtext = ieee80211_mesh_rt_find(vap, in hwmp_recv_prep()
1405 rtext = ieee80211_mesh_rt_add(vap, in hwmp_recv_prep()
1408 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1411 vap->iv_stats.is_mesh_rtaddfailed++; in hwmp_recv_prep()
1415 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1459 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_prep()
1465 (void) ieee80211_vap_xmitpkt(vap, m); in hwmp_recv_prep()
1472 hwmp_send_prep(struct ieee80211vap *vap, in hwmp_send_prep() argument
1490 return hwmp_send_action(vap, da, (uint8_t *)prep, prep->prep_len + 2); in hwmp_send_prep()
1500 struct ieee80211vap *vap = ni->ni_vap; in hwmp_peerdown() local
1501 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_peerdown()
1506 rt = ieee80211_mesh_rt_find(vap, ni->ni_macaddr); in hwmp_peerdown()
1510 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_peerdown()
1522 ieee80211_mesh_rt_flush_peer(vap, ni->ni_macaddr); in hwmp_peerdown()
1523 hwmp_send_perr(vap, broadcastaddr, &perr); in hwmp_peerdown()
1535 hwmp_recv_perr(struct ieee80211vap *vap, struct ieee80211_node *ni, in hwmp_recv_perr() argument
1538 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_recv_perr()
1545 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_perr()
1563 rt = ieee80211_mesh_rt_find(vap, PERR_DADDR(i)); in hwmp_recv_perr()
1596 rt_ext = ieee80211_mesh_rt_find(vap, PERR_DEXTADDR(i)); in hwmp_recv_perr()
1604 IEEE80211_DISCARD(vap, IEEE80211_MSG_HWMP, wh, NULL, in hwmp_recv_perr()
1608 ieee80211_mesh_rt_flush_peer(vap, PERR_DADDR(i)); in hwmp_recv_perr()
1612 IEEE80211_DISCARD(vap, IEEE80211_MSG_HWMP, wh, NULL, "%s", in hwmp_recv_perr()
1621 IEEE80211_NOTE(vap, IEEE80211_MSG_HWMP, ni, in hwmp_recv_perr()
1625 hwmp_send_perr(vap, broadcastaddr, pperr); in hwmp_recv_perr()
1637 hwmp_send_perr(struct ieee80211vap *vap, in hwmp_send_perr() argument
1641 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_send_perr()
1672 return hwmp_send_action(vap, da, (uint8_t *)perr, perr->perr_len+2); in hwmp_send_perr()
1686 hwmp_senderror(struct ieee80211vap *vap, in hwmp_senderror() argument
1690 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_senderror()
1713 IEEE80211_ADDR_COPY(PERR_DADDR(0), vap->iv_myaddr); in hwmp_senderror()
1725 hwmp_send_perr(vap, broadcastaddr, &perr); in hwmp_senderror()
1734 hwmp_recv_rann(struct ieee80211vap *vap, struct ieee80211_node *ni, in hwmp_recv_rann() argument
1737 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_recv_rann()
1738 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_recv_rann()
1744 if (IEEE80211_ADDR_EQ(rann->rann_addr, vap->iv_myaddr)) in hwmp_recv_rann()
1747 rt = ieee80211_mesh_rt_find(vap, rann->rann_addr); in hwmp_recv_rann()
1753 IEEE80211_DISCARD(vap, IEEE80211_MSG_HWMP, wh, NULL, in hwmp_recv_rann()
1762 IEEE80211_DISCARD(vap, IEEE80211_MSG_HWMP, wh, NULL, in hwmp_recv_rann()
1773 rt = ieee80211_mesh_rt_add(vap, rann->rann_addr); in hwmp_recv_rann()
1775 IEEE80211_DISCARD(vap, IEEE80211_MSG_HWMP, wh, NULL, in hwmp_recv_rann()
1778 vap->iv_stats.is_mesh_rtaddfailed++; in hwmp_recv_rann()
1788 gr = ieee80211_mesh_mark_gate(vap, rann->rann_addr, in hwmp_recv_rann()
1800 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr); in hwmp_recv_rann()
1810 hwmp_send_preq(vap, wh->i_addr2, &preq, &hr->hr_lastrootconf, in hwmp_recv_rann()
1822 hwmp_send_rann(vap, broadcastaddr, &prann); in hwmp_recv_rann()
1827 hwmp_send_rann(struct ieee80211vap *vap, in hwmp_send_rann() argument
1842 return hwmp_send_action(vap, da, (uint8_t *)rann, rann->rann_len + 2); in hwmp_send_rann()
1852 struct ieee80211vap *vap = rt->rt_vap; in hwmp_rediscover_cb() local
1853 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_rediscover_cb()
1854 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_rediscover_cb()
1864 IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_ANY, in hwmp_rediscover_cb()
1867 ieee80211_mesh_forward_to_gates(vap, rt); in hwmp_rediscover_cb()
1868 vap->iv_stats.is_mesh_fwd_nopath++; in hwmp_rediscover_cb()
1874 IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_HWMP, rt->rt_dest, in hwmp_rediscover_cb()
1884 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr); in hwmp_rediscover_cb()
1896 hwmp_send_preq(vap, broadcastaddr, &preq, &hr->hr_lastpreq, in hwmp_rediscover_cb()
1904 hwmp_discover(struct ieee80211vap *vap, in hwmp_discover() argument
1907 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_discover()
1908 struct ieee80211_mesh_state *ms = vap->iv_mesh; in hwmp_discover()
1915 KASSERT(vap->iv_opmode == IEEE80211_M_MBSS, in hwmp_discover()
1916 ("not a mesh vap, opmode %d", vap->iv_opmode)); in hwmp_discover()
1918 KASSERT(!IEEE80211_ADDR_EQ(vap->iv_myaddr, dest), in hwmp_discover()
1923 rt = ieee80211_mesh_rt_find(vap, dest); in hwmp_discover()
1925 rt = ieee80211_mesh_rt_add(vap, dest); in hwmp_discover()
1927 IEEE80211_DPRINTF(vap, IEEE80211_MSG_HWMP, in hwmp_discover()
1930 vap->iv_stats.is_mesh_rtaddfailed++; in hwmp_discover()
1937 IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_HWMP, dest, in hwmp_discover()
1946 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, in hwmp_discover()
1955 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_ANY, in hwmp_discover()
1958 vap->iv_stats.is_mesh_fwd_nopath++; in hwmp_discover()
1967 IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_HWMP, dest, in hwmp_discover()
1980 IEEE80211_ADDR_COPY(preq.preq_origaddr, vap->iv_myaddr); in hwmp_discover()
1993 hwmp_send_preq(vap, broadcastaddr, &preq, in hwmp_discover()
2000 ni = ieee80211_find_txnode(vap, rt->rt_nexthop); in hwmp_discover()
2002 ni = ieee80211_find_txnode(vap, dest); in hwmp_discover()
2010 struct ieee80211com *ic = vap->iv_ic; in hwmp_discover()
2016 IEEE80211_NOTE_MAC(vap, IEEE80211_MSG_HWMP, dest, in hwmp_discover()
2025 IEEE80211_DISCARD_MAC(vap, IEEE80211_MSG_HWMP, in hwmp_discover()
2037 hwmp_ioctl_get80211(struct ieee80211vap *vap, struct ieee80211req *ireq) in hwmp_ioctl_get80211() argument
2039 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_ioctl_get80211()
2042 if (vap->iv_opmode != IEEE80211_M_MBSS) in hwmp_ioctl_get80211()
2060 hwmp_ioctl_set80211(struct ieee80211vap *vap, struct ieee80211req *ireq) in hwmp_ioctl_set80211() argument
2062 struct ieee80211_hwmp_state *hs = vap->iv_hwmp; in hwmp_ioctl_set80211()
2065 if (vap->iv_opmode != IEEE80211_M_MBSS) in hwmp_ioctl_set80211()
2073 hwmp_rootmode_setup(vap); in hwmp_ioctl_set80211()