Lines Matching full:ni

122     struct ieee80211_node *ni)
135 if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) &&
143 if (ieee80211_pwrsave(ni, m) != 0)
145 ieee80211_free_node(ni);
154 if (ieee80211_classify(ni, m)) {
156 ni->ni_macaddr, NULL,
161 ieee80211_free_node(ni);
173 m->m_pkthdr.rcvif = (void *)ni;
189 do_ampdu = ((ni->ni_flags & IEEE80211_NODE_AMPDU_TX) &&
192 do_amsdu = ((ni->ni_flags & IEEE80211_NODE_AMSDU_TX) &&
195 ((ni->ni_flags & IEEE80211_NODE_HT) == 0) &&
196 ((ni->ni_flags & IEEE80211_NODE_VHT) == 0) &&
197 (IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_FF));
220 struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[tid];
231 ic->ic_ampdu_enable(ni, tap)) {
235 ieee80211_ampdu_request(ni, tap);
275 ieee80211_amsdu_tx_ok(ni)) {
276 m = ieee80211_amsdu_check(ni, m);
278 /* NB: any ni ref held on stageq */
285 m = ieee80211_ff_check(ni, m);
287 /* NB: any ni ref held on stageq */
313 m = ieee80211_encap(vap, ni, m);
317 ieee80211_free_node(ni);
352 struct ieee80211_node *ni;
367 ni = NULL;
404 ni = ieee80211_find_txnode(vap, eh->ether_dhost);
405 if (ni == NULL) {
412 if (ni->ni_associd == 0 &&
413 (ni->ni_flags & IEEE80211_NODE_ASSOCID)) {
421 ieee80211_free_node(ni);
449 ni = ieee80211_mesh_discover(vap, eh->ether_dhost, m);
450 if (ni == NULL) {
472 if (ieee80211_pwrsave(ni, m) != 0)
474 ieee80211_free_node(ni);
479 if (ieee80211_vap_pkt_send_dest(vap, m, ni) != 0)
560 ieee80211_raw_output(struct ieee80211vap *vap, struct ieee80211_node *ni,
572 m->m_pkthdr.rcvif = (void *)ni;
587 error = ic->ic_raw_xmit(ni, m, params);
590 ieee80211_free_node(ni);
648 ieee80211_validate_rate(struct ieee80211_node *ni, uint8_t rate)
650 struct ieee80211com *ic = ni->ni_ic;
704 ieee80211_sanitize_rates(struct ieee80211_node *ni, struct mbuf *m,
714 error = ieee80211_validate_rate(ni, params->ibp_rate0);
724 (error = ieee80211_validate_rate(ni, params->ibp_rate1)) != 0)
728 (error = ieee80211_validate_rate(ni, params->ibp_rate2)) != 0)
732 (error = ieee80211_validate_rate(ni, params->ibp_rate3)) != 0)
749 struct ieee80211_node *ni = NULL;
813 ni = ieee80211_find_txnode(vap, wh->i_addr1);
817 ni = ieee80211_find_txnode(vap, wh->i_addr3);
822 if (ni == NULL) {
829 ni = ieee80211_ref_node(vap->iv_bss);
843 if (ieee80211_classify(ni, m))
847 IEEE80211_NODE_STAT_ADD(ni, tx_bytes,
852 error = ieee80211_sanitize_rates(ni, m, params);
856 IEEE80211_NODE_STAT(ni, tx_data);
858 IEEE80211_NODE_STAT(ni, tx_mcast);
861 IEEE80211_NODE_STAT(ni, tx_ucast);
864 ret = ieee80211_raw_output(vap, ni, m, params);
870 if (ni != NULL)
871 ieee80211_free_node(ni);
884 struct ieee80211_node *ni,
892 struct ieee80211vap *vap = ni->ni_vap;
897 IEEE80211_TX_LOCK_ASSERT(ni->ni_ic);
972 tap = &ni->ni_tx_ampdu[tid];
986 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
988 seqno = ni->ni_txseqs[tid]++;
1012 ieee80211_mgmt_output(struct ieee80211_node *ni, struct mbuf *m, int type,
1015 struct ieee80211vap *vap = ni->ni_vap;
1016 struct ieee80211com *ic = ni->ni_ic;
1020 KASSERT(ni != NULL, ("null node"));
1024 ni, "block %s frame in CAC state",
1027 ieee80211_free_node(ni);
1034 ieee80211_free_node(ni);
1041 ieee80211_send_setup(ni, m,
1043 vap->iv_myaddr, ni->ni_macaddr, ni->ni_bssid);
1064 IEEE80211_NODE_STAT(ni, tx_mgmt);
1066 ret = ieee80211_raw_output(vap, ni, m, params);
1072 ieee80211_nulldata_transmitted(struct ieee80211_node *ni, void *arg,
1075 struct ieee80211vap *vap = ni->ni_vap;
1093 ieee80211_send_nulldata(struct ieee80211_node *ni)
1095 struct ieee80211vap *vap = ni->ni_vap;
1096 struct ieee80211com *ic = ni->ni_ic;
1105 ni, "block %s frame in CAC state", "null data");
1106 ieee80211_node_decref(ni);
1111 if (ni->ni_flags & (IEEE80211_NODE_QOS|IEEE80211_NODE_HT))
1124 ieee80211_node_decref(ni);
1133 ieee80211_free_node(ni);
1140 if (ni->ni_flags & IEEE80211_NODE_QOS) {
1144 ieee80211_send_setup(ni, m,
1146 tid, vap->iv_myaddr, ni->ni_macaddr, ni->ni_bssid);
1157 ieee80211_send_setup(ni, m,
1160 vap->iv_myaddr, ni->ni_macaddr, ni->ni_bssid);
1164 if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) &&
1169 (ni->ni_flags & IEEE80211_NODE_PWR_MGT)) {
1178 IEEE80211_NODE_STAT(ni, tx_data);
1180 IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_DUMPPKTS, ni,
1182 ni->ni_flags & IEEE80211_NODE_QOS ? "QoS " : "",
1186 ret = ieee80211_raw_output(vap, ni, m, NULL);
1198 ieee80211_classify(struct ieee80211_node *ni, struct mbuf *m)
1246 if ((ni->ni_flags & IEEE80211_NODE_QOS) == 0) {
1256 if (ni->ni_vlan != 0) {
1258 IEEE80211_NODE_STAT(ni, tx_novlantag);
1262 EVL_VLANOFTAG(ni->ni_vlan)) {
1263 IEEE80211_NODE_STAT(ni, tx_vlanmismatch);
1267 v_wme_ac = TID_TO_WME_AC(EVL_PRIOFTAG(ni->ni_vlan));
1324 if (ni->ni_vap->iv_opmode == IEEE80211_M_STA) {
1331 struct ieee80211com *ic = ni->ni_ic;
1432 struct ieee80211_node *ni)
1434 if (IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)) {
1440 return &ni->ni_ucastkey;
1451 struct ieee80211_node *ni)
1469 ieee80211_encap(struct ieee80211vap *vap, struct ieee80211_node *ni,
1474 struct ieee80211com *ic = ni->ni_ic;
1520 key = ieee80211_crypto_getucastkey(vap, ni);
1536 key = ieee80211_crypto_getucastkey(vap, ni);
1538 key = ieee80211_crypto_getmcastkey(vap, ni);
1564 (((is_mcast == 0) && (ni->ni_flags &
1678 if (ieee80211_amsdu_tx_ok(ni)) {
1701 IEEE80211_ADDR_COPY(wh->i_addr1, ni->ni_macaddr);
1708 IEEE80211_ADDR_COPY(wh->i_addr1, ni->ni_bssid);
1726 IEEE80211_ADDR_COPY(wh->i_addr2, ni->ni_bssid);
1740 ni->ni_macaddr);
1844 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
1846 seqno = ni->ni_txseqs[tid]++;
1873 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
1910 !IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)))) {
1927 IEEE80211_NODE_STAT(ni, tx_data);
1929 IEEE80211_NODE_STAT(ni, tx_mcast);
1932 IEEE80211_NODE_STAT(ni, tx_ucast);
1933 IEEE80211_NODE_STAT_ADD(ni, tx_bytes, datalen);
2187 struct ieee80211_node *ni)
2190 struct ieee80211vap *vap = ni->ni_vap;
2416 ieee80211_add_qos(uint8_t *frm, const struct ieee80211_node *ni)
2418 if (ni->ni_flags & IEEE80211_NODE_QOS) {
2549 ieee80211_send_probereq(struct ieee80211_node *ni,
2555 struct ieee80211vap *vap = ni->ni_vap;
2556 struct ieee80211com *ic = ni->ni_ic;
2568 IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni,
2583 ni, ether_sprintf(ni->ni_macaddr),
2584 ieee80211_node_refcnt(ni)+1);
2585 ieee80211_ref_node(ni);
2593 ieee80211_free_node(ni);
2609 ieee80211_free_node(ni);
2615 ieee80211_send_setup(ni, m,
2623 IEEE80211_NODE_STAT(ni, tx_probereq);
2624 IEEE80211_NODE_STAT(ni, tx_mgmt);
2643 params.ibp_power = ni->ni_txpower;
2644 ret = ieee80211_raw_output(vap, ni, m, &params);
2684 ieee80211_send_mgmt(struct ieee80211_node *ni, int type, int arg)
2688 struct ieee80211vap *vap = ni->ni_vap;
2689 struct ieee80211com *ic = ni->ni_ic;
2697 KASSERT(ni != NULL, ("null node"));
2707 ni, ether_sprintf(ni->ni_macaddr),
2708 ieee80211_node_refcnt(ni)+1);
2709 ieee80211_ref_node(ni);
2718 ni->ni_challenge != NULL);
2750 memcpy(&((uint16_t *)frm)[4], ni->ni_challenge,
2755 IEEE80211_NOTE(vap, IEEE80211_MSG_AUTH, ni,
2765 IEEE80211_NODE_STAT(ni, tx_auth);
2767 IEEE80211_NODE_STAT(ni, tx_auth_fail);
2775 IEEE80211_NOTE(vap, IEEE80211_MSG_AUTH, ni,
2786 IEEE80211_NODE_STAT(ni, tx_deauth);
2787 IEEE80211_NODE_STAT_SET(ni, tx_deauth_code, arg);
2789 ieee80211_node_unauthorize(ni); /* port closed */
2851 if ((ni->ni_capinfo & IEEE80211_CAPINFO_SPECTRUM_MGMT) &&
2867 frm = ieee80211_add_ssid(frm, ni->ni_essid, ni->ni_esslen);
2868 frm = ieee80211_add_rates(frm, &ni->ni_rates);
2870 frm = ieee80211_add_xrates(frm, &ni->ni_rates);
2883 IEEE80211_IS_CHAN_HT(ni->ni_chan) &&
2884 ni->ni_ies.htcap_ie != NULL &&
2885 ni->ni_ies.htcap_ie[0] == IEEE80211_ELEMID_HTCAP) {
2886 frm = ieee80211_add_htcap(frm, ni);
2890 IEEE80211_IS_CHAN_VHT(ni->ni_chan) &&
2891 ni->ni_ies.vhtcap_ie != NULL &&
2892 ni->ni_ies.vhtcap_ie[0] == IEEE80211_ELEMID_VHT_CAP) {
2893 frm = ieee80211_add_vhtcap(frm, ni);
2898 ni->ni_ies.wme_ie != NULL)
2899 frm = ieee80211_add_wme_info(frm, &ic->ic_wme, ni);
2906 IEEE80211_IS_CHAN_HT(ni->ni_chan) &&
2907 ni->ni_ies.htcap_ie != NULL &&
2908 ni->ni_ies.htcap_ie[0] == IEEE80211_ELEMID_VENDOR) {
2909 frm = ieee80211_add_htcap_vendor(frm, ni);
2912 if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS)) {
2914 IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS),
2916 ni->ni_authmode != IEEE80211_AUTH_8021X) ?
2976 *(uint16_t *)frm = htole16(ni->ni_associd);
2977 IEEE80211_NODE_STAT(ni, tx_assoc);
2979 IEEE80211_NODE_STAT(ni, tx_assoc_fail);
2982 frm = ieee80211_add_rates(frm, &ni->ni_rates);
2983 frm = ieee80211_add_xrates(frm, &ni->ni_rates);
2985 if ((ni->ni_flags & HTFLAGS) == IEEE80211_NODE_HT) {
2986 frm = ieee80211_add_htcap(frm, ni);
2987 frm = ieee80211_add_htinfo(frm, ni);
2990 ni->ni_ies.wme_ie != NULL)
2993 if ((ni->ni_flags & HTFLAGS) == HTFLAGS) {
2994 frm = ieee80211_add_htcap_vendor(frm, ni);
2995 frm = ieee80211_add_htinfo_vendor(frm, ni);
2997 if (ni->ni_flags & IEEE80211_NODE_VHT) {
2998 frm = ieee80211_add_vhtcap(frm, ni);
2999 frm = ieee80211_add_vhtinfo(frm, ni);
3002 if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS))
3004 IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS),
3006 ni->ni_authmode != IEEE80211_AUTH_8021X) ?
3015 IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC, ni,
3026 IEEE80211_NODE_STAT(ni, tx_disassoc);
3027 IEEE80211_NODE_STAT_SET(ni, tx_disassoc_code, arg);
3031 IEEE80211_NOTE(vap, IEEE80211_MSG_ANY, ni,
3043 return ieee80211_mgmt_output(ni, m, type, &params);
3045 ieee80211_free_node(ni);
3348 ieee80211_alloc_prot(struct ieee80211_node *ni, const struct mbuf *m,
3351 struct ieee80211com *ic = ni->ni_ic;
3352 struct ieee80211vap *vap = ni->ni_vap;
3417 ieee80211_tx_mgt_cb(struct ieee80211_node *ni, void *arg, int status)
3419 struct ieee80211vap *vap = ni->ni_vap;
3435 "ni %p mode %s state %s arg %p status %d\n", ni,
3447 struct ieee80211_node *ni)
3449 struct ieee80211vap *vap = ni->ni_vap;
3451 struct ieee80211com *ic = ni->ni_ic;
3452 struct ieee80211_rateset *rs = &ni->ni_rates;
3516 *(uint16_t *)frm = htole16(ni->ni_intval);
3518 capinfo = ieee80211_getcapinfo(vap, ni->ni_chan);
3524 *frm++ = ni->ni_esslen;
3525 memcpy(frm, ni->ni_essid, ni->ni_esslen);
3526 frm += ni->ni_esslen;
3530 if (!IEEE80211_IS_CHAN_FHSS(ni->ni_chan)) {
3533 *frm++ = ieee80211_chan2ieee(ic, ni->ni_chan);
3564 if (IEEE80211_IS_CHAN_5GHZ(ni->ni_chan))
3590 if (IEEE80211_IS_CHAN_ANYG(ni->ni_chan)) {
3596 if (IEEE80211_IS_CHAN_HT(ni->ni_chan)) {
3597 frm = ieee80211_add_htcap(frm, ni);
3599 frm = ieee80211_add_htinfo(frm, ni);
3602 if (IEEE80211_IS_CHAN_VHT(ni->ni_chan)) {
3603 frm = ieee80211_add_vhtcap(frm, ni);
3605 frm = ieee80211_add_vhtinfo(frm, ni);
3617 if (IEEE80211_IS_CHAN_HT(ni->ni_chan) &&
3619 frm = ieee80211_add_htcap_vendor(frm, ni);
3620 frm = ieee80211_add_htinfo_vendor(frm, ni);
3626 frm = ieee80211_add_athcaps(frm, ni);
3658 ieee80211_beacon_alloc(struct ieee80211_node *ni)
3660 struct ieee80211vap *vap = ni->ni_vap;
3661 struct ieee80211com *ic = ni->ni_ic;
3714 + 2 + ni->ni_esslen /* ssid */
3742 + 2 + ni->ni_meshidlen
3755 ieee80211_beacon_construct(m, frm, ni);
3766 IEEE80211_ADDR_COPY(wh->i_addr3, ni->ni_bssid);
3776 ieee80211_beacon_update(struct ieee80211_node *ni, struct mbuf *m, int mcast)
3778 struct ieee80211vap *vap = ni->ni_vap;
3780 struct ieee80211com *ic = ni->ni_ic;
3809 mtod(m, uint8_t*) + sizeof(struct ieee80211_frame), ni);
3832 mtod(m, uint8_t*) + sizeof(struct ieee80211_frame), ni);
3846 mtod(m, uint8_t*) + sizeof(struct ieee80211_frame), ni);
3862 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
3868 capinfo = ieee80211_getcapinfo(vap, ni->ni_chan);
4082 ieee80211_add_athcaps(bo->bo_ath, ni);
4173 ieee80211_tx_complete(struct ieee80211_node *ni, struct mbuf *m, int status)
4176 if (ni != NULL) {
4177 struct ifnet *ifp = ni->ni_vap->iv_ifp;
4187 IEEE80211_DPRINTF(ni->ni_vap, IEEE80211_MSG_STATE | IEEE80211_MSG_DEBUG,
4188 "ni %p vap %p mode %s state %s m %p status %d\n", ni, ni->ni_vap,
4189 ieee80211_opmode_name[ni->ni_vap->iv_opmode],
4190 ieee80211_state_name[ni->ni_vap->iv_state], m, status);
4191 ieee80211_process_callback(ni, m, status);
4193 ieee80211_free_node(ni);