Lines Matching defs:ni

123     struct ieee80211_node *ni)
134 if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) &&
142 if (ieee80211_pwrsave(ni, m) != 0)
144 ieee80211_free_node(ni);
153 if (ieee80211_classify(ni, m)) {
155 ni->ni_macaddr, NULL,
160 ieee80211_free_node(ni);
171 m->m_pkthdr.rcvif = (void *)ni;
188 do_ampdu = ((ni->ni_flags & IEEE80211_NODE_AMPDU_TX) &&
190 do_amsdu = ((ni->ni_flags & IEEE80211_NODE_AMSDU_TX) &&
193 ((ni->ni_flags & IEEE80211_NODE_HT) == 0) &&
194 ((ni->ni_flags & IEEE80211_NODE_VHT) == 0) &&
195 (IEEE80211_ATH_CAP(vap, ni, IEEE80211_NODE_FF));
217 struct ieee80211_tx_ampdu *tap = &ni->ni_tx_ampdu[tid];
228 ic->ic_ampdu_enable(ni, tap)) {
232 ieee80211_ampdu_request(ni, tap);
270 ieee80211_amsdu_tx_ok(ni)) {
271 m = ieee80211_amsdu_check(ni, m);
273 /* NB: any ni ref held on stageq */
280 m = ieee80211_ff_check(ni, m);
282 /* NB: any ni ref held on stageq */
308 m = ieee80211_encap(vap, ni, m);
312 ieee80211_free_node(ni);
349 struct ieee80211_node *ni;
364 ni = NULL;
401 ni = ieee80211_find_txnode(vap, eh->ether_dhost);
402 if (ni == NULL) {
409 if (ni->ni_associd == 0 &&
410 (ni->ni_flags & IEEE80211_NODE_ASSOCID)) {
418 ieee80211_free_node(ni);
446 ni = ieee80211_mesh_discover(vap, eh->ether_dhost, m);
447 if (ni == NULL) {
469 if (ieee80211_pwrsave(ni, m) != 0)
471 ieee80211_free_node(ni);
476 if (ieee80211_vap_pkt_send_dest(vap, m, ni) != 0)
557 ieee80211_raw_output(struct ieee80211vap *vap, struct ieee80211_node *ni,
568 m->m_pkthdr.rcvif = (void *)ni;
583 error = ic->ic_raw_xmit(ni, m, params);
586 ieee80211_free_node(ni);
645 ieee80211_validate_rate(struct ieee80211_node *ni, uint8_t rate)
647 struct ieee80211com *ic = ni->ni_ic;
701 ieee80211_sanitize_rates(struct ieee80211_node *ni, struct mbuf *m,
711 error = ieee80211_validate_rate(ni, params->ibp_rate0);
721 (error = ieee80211_validate_rate(ni, params->ibp_rate1)) != 0)
725 (error = ieee80211_validate_rate(ni, params->ibp_rate2)) != 0)
729 (error = ieee80211_validate_rate(ni, params->ibp_rate3)) != 0)
746 struct ieee80211_node *ni = NULL;
816 ni = ieee80211_find_txnode(vap, wh->i_addr1);
820 ni = ieee80211_find_txnode(vap, wh->i_addr3);
825 if (ni == NULL) {
832 ni = ieee80211_ref_node(vap->iv_bss);
846 if (ieee80211_classify(ni, m))
850 IEEE80211_NODE_STAT_ADD(ni, tx_bytes,
855 error = ieee80211_sanitize_rates(ni, m, params);
859 IEEE80211_NODE_STAT(ni, tx_data);
861 IEEE80211_NODE_STAT(ni, tx_mcast);
864 IEEE80211_NODE_STAT(ni, tx_ucast);
867 ret = ieee80211_raw_output(vap, ni, m, params);
873 if (ni != NULL)
874 ieee80211_free_node(ni);
887 struct ieee80211_node *ni,
895 struct ieee80211vap *vap = ni->ni_vap;
900 IEEE80211_TX_LOCK_ASSERT(ni->ni_ic);
975 tap = &ni->ni_tx_ampdu[tid];
989 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
991 seqno = ni->ni_txseqs[tid]++;
1015 ieee80211_mgmt_output(struct ieee80211_node *ni, struct mbuf *m, int type,
1018 struct ieee80211vap *vap = ni->ni_vap;
1019 struct ieee80211com *ic = ni->ni_ic;
1023 KASSERT(ni != NULL, ("null node"));
1027 ni, "block %s frame in CAC state",
1030 ieee80211_free_node(ni);
1037 ieee80211_free_node(ni);
1044 ieee80211_send_setup(ni, m,
1046 vap->iv_myaddr, ni->ni_macaddr, ni->ni_bssid);
1067 IEEE80211_NODE_STAT(ni, tx_mgmt);
1069 ret = ieee80211_raw_output(vap, ni, m, params);
1075 ieee80211_nulldata_transmitted(struct ieee80211_node *ni, void *arg,
1078 struct ieee80211vap *vap = ni->ni_vap;
1096 ieee80211_send_nulldata(struct ieee80211_node *ni)
1098 struct ieee80211vap *vap = ni->ni_vap;
1099 struct ieee80211com *ic = ni->ni_ic;
1108 ni, "block %s frame in CAC state", "null data");
1109 ieee80211_unref_node(&ni);
1114 if (ni->ni_flags & (IEEE80211_NODE_QOS|IEEE80211_NODE_HT))
1127 ieee80211_unref_node(&ni);
1136 ieee80211_free_node(ni);
1143 if (ni->ni_flags & IEEE80211_NODE_QOS) {
1147 ieee80211_send_setup(ni, m,
1149 tid, vap->iv_myaddr, ni->ni_macaddr, ni->ni_bssid);
1160 ieee80211_send_setup(ni, m,
1163 vap->iv_myaddr, ni->ni_macaddr, ni->ni_bssid);
1167 if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) &&
1172 (ni->ni_flags & IEEE80211_NODE_PWR_MGT)) {
1181 IEEE80211_NODE_STAT(ni, tx_data);
1183 IEEE80211_NOTE(vap, IEEE80211_MSG_DEBUG | IEEE80211_MSG_DUMPPKTS, ni,
1185 ni->ni_flags & IEEE80211_NODE_QOS ? "QoS " : "",
1189 ret = ieee80211_raw_output(vap, ni, m, NULL);
1201 ieee80211_classify(struct ieee80211_node *ni, struct mbuf *m)
1249 if ((ni->ni_flags & IEEE80211_NODE_QOS) == 0) {
1259 if (ni->ni_vlan != 0) {
1261 IEEE80211_NODE_STAT(ni, tx_novlantag);
1265 EVL_VLANOFTAG(ni->ni_vlan)) {
1266 IEEE80211_NODE_STAT(ni, tx_vlanmismatch);
1270 v_wme_ac = TID_TO_WME_AC(EVL_PRIOFTAG(ni->ni_vlan));
1320 if (ni->ni_vap->iv_opmode == IEEE80211_M_STA) {
1327 struct ieee80211com *ic = ni->ni_ic;
1428 struct ieee80211_node *ni)
1430 if (IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)) {
1436 return &ni->ni_ucastkey;
1447 struct ieee80211_node *ni)
1465 ieee80211_encap(struct ieee80211vap *vap, struct ieee80211_node *ni,
1470 struct ieee80211com *ic = ni->ni_ic;
1516 key = ieee80211_crypto_getucastkey(vap, ni);
1532 key = ieee80211_crypto_getucastkey(vap, ni);
1534 key = ieee80211_crypto_getmcastkey(vap, ni);
1560 (((is_mcast == 0) && (ni->ni_flags &
1674 if (ieee80211_amsdu_tx_ok(ni)) {
1697 IEEE80211_ADDR_COPY(wh->i_addr1, ni->ni_macaddr);
1704 IEEE80211_ADDR_COPY(wh->i_addr1, ni->ni_bssid);
1722 IEEE80211_ADDR_COPY(wh->i_addr2, ni->ni_bssid);
1736 ni->ni_macaddr);
1840 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
1842 seqno = ni->ni_txseqs[tid]++;
1869 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
1906 !IEEE80211_KEY_UNDEFINED(&ni->ni_ucastkey)))) {
1923 IEEE80211_NODE_STAT(ni, tx_data);
1925 IEEE80211_NODE_STAT(ni, tx_mcast);
1928 IEEE80211_NODE_STAT(ni, tx_ucast);
1929 IEEE80211_NODE_STAT_ADD(ni, tx_bytes, datalen);
2183 struct ieee80211_node *ni)
2186 struct ieee80211vap *vap = ni->ni_vap;
2412 ieee80211_add_qos(uint8_t *frm, const struct ieee80211_node *ni)
2414 if (ni->ni_flags & IEEE80211_NODE_QOS) {
2428 ieee80211_send_probereq(struct ieee80211_node *ni,
2434 struct ieee80211vap *vap = ni->ni_vap;
2435 struct ieee80211com *ic = ni->ni_ic;
2447 IEEE80211_NOTE(vap, IEEE80211_MSG_OUTPUT, ni,
2463 ni, ether_sprintf(ni->ni_macaddr),
2464 ieee80211_node_refcnt(ni)+1);
2466 ieee80211_ref_node(ni);
2494 ieee80211_free_node(ni);
2550 ieee80211_free_node(ni);
2556 ieee80211_send_setup(ni, m,
2564 IEEE80211_NODE_STAT(ni, tx_probereq);
2565 IEEE80211_NODE_STAT(ni, tx_mgmt);
2584 params.ibp_power = ni->ni_txpower;
2585 ret = ieee80211_raw_output(vap, ni, m, &params);
2625 ieee80211_send_mgmt(struct ieee80211_node *ni, int type, int arg)
2629 struct ieee80211vap *vap = ni->ni_vap;
2630 struct ieee80211com *ic = ni->ni_ic;
2638 KASSERT(ni != NULL, ("null node"));
2648 ni, ether_sprintf(ni->ni_macaddr),
2649 ieee80211_node_refcnt(ni)+1);
2650 ieee80211_ref_node(ni);
2660 ni->ni_challenge != NULL);
2693 memcpy(&((uint16_t *)frm)[4], ni->ni_challenge,
2698 IEEE80211_NOTE(vap, IEEE80211_MSG_AUTH, ni,
2708 IEEE80211_NODE_STAT(ni, tx_auth);
2710 IEEE80211_NODE_STAT(ni, tx_auth_fail);
2718 IEEE80211_NOTE(vap, IEEE80211_MSG_AUTH, ni,
2729 IEEE80211_NODE_STAT(ni, tx_deauth);
2730 IEEE80211_NODE_STAT_SET(ni, tx_deauth_code, arg);
2732 ieee80211_node_unauthorize(ni); /* port closed */
2794 if ((ni->ni_capinfo & IEEE80211_CAPINFO_SPECTRUM_MGMT) &&
2810 frm = ieee80211_add_ssid(frm, ni->ni_essid, ni->ni_esslen);
2811 frm = ieee80211_add_rates(frm, &ni->ni_rates);
2813 frm = ieee80211_add_xrates(frm, &ni->ni_rates);
2826 IEEE80211_IS_CHAN_HT(ni->ni_chan) &&
2827 ni->ni_ies.htcap_ie != NULL &&
2828 ni->ni_ies.htcap_ie[0] == IEEE80211_ELEMID_HTCAP) {
2829 frm = ieee80211_add_htcap(frm, ni);
2833 IEEE80211_IS_CHAN_VHT(ni->ni_chan) &&
2834 ni->ni_ies.vhtcap_ie != NULL &&
2835 ni->ni_ies.vhtcap_ie[0] == IEEE80211_ELEMID_VHT_CAP) {
2836 frm = ieee80211_add_vhtcap(frm, ni);
2841 ni->ni_ies.wme_ie != NULL)
2842 frm = ieee80211_add_wme_info(frm, &ic->ic_wme, ni);
2849 IEEE80211_IS_CHAN_HT(ni->ni_chan) &&
2850 ni->ni_ies.htcap_ie != NULL &&
2851 ni->ni_ies.htcap_ie[0] == IEEE80211_ELEMID_VENDOR) {
2852 frm = ieee80211_add_htcap_vendor(frm, ni);
2855 if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS)) {
2857 IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS),
2859 ni->ni_authmode != IEEE80211_AUTH_8021X) ?
2919 *(uint16_t *)frm = htole16(ni->ni_associd);
2920 IEEE80211_NODE_STAT(ni, tx_assoc);
2922 IEEE80211_NODE_STAT(ni, tx_assoc_fail);
2925 frm = ieee80211_add_rates(frm, &ni->ni_rates);
2926 frm = ieee80211_add_xrates(frm, &ni->ni_rates);
2928 if ((ni->ni_flags & HTFLAGS) == IEEE80211_NODE_HT) {
2929 frm = ieee80211_add_htcap(frm, ni);
2930 frm = ieee80211_add_htinfo(frm, ni);
2933 ni->ni_ies.wme_ie != NULL)
2936 if ((ni->ni_flags & HTFLAGS) == HTFLAGS) {
2937 frm = ieee80211_add_htcap_vendor(frm, ni);
2938 frm = ieee80211_add_htinfo_vendor(frm, ni);
2940 if (ni->ni_flags & IEEE80211_NODE_VHT) {
2941 frm = ieee80211_add_vhtcap(frm, ni);
2942 frm = ieee80211_add_vhtinfo(frm, ni);
2945 if (IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS))
2947 IEEE80211_ATH_CAP(vap, ni, IEEE80211_F_ATHEROS),
2949 ni->ni_authmode != IEEE80211_AUTH_8021X) ?
2958 IEEE80211_NOTE(vap, IEEE80211_MSG_ASSOC, ni,
2969 IEEE80211_NODE_STAT(ni, tx_disassoc);
2970 IEEE80211_NODE_STAT_SET(ni, tx_disassoc_code, arg);
2974 IEEE80211_NOTE(vap, IEEE80211_MSG_ANY, ni,
2986 return ieee80211_mgmt_output(ni, m, type, &params);
2988 ieee80211_free_node(ni);
3291 ieee80211_alloc_prot(struct ieee80211_node *ni, const struct mbuf *m,
3294 struct ieee80211com *ic = ni->ni_ic;
3295 struct ieee80211vap *vap = ni->ni_vap;
3354 ieee80211_tx_mgt_cb(struct ieee80211_node *ni, void *arg, int status)
3356 struct ieee80211vap *vap = ni->ni_vap;
3379 struct ieee80211_node *ni)
3381 struct ieee80211vap *vap = ni->ni_vap;
3383 struct ieee80211com *ic = ni->ni_ic;
3384 struct ieee80211_rateset *rs = &ni->ni_rates;
3448 *(uint16_t *)frm = htole16(ni->ni_intval);
3450 capinfo = ieee80211_getcapinfo(vap, ni->ni_chan);
3456 *frm++ = ni->ni_esslen;
3457 memcpy(frm, ni->ni_essid, ni->ni_esslen);
3458 frm += ni->ni_esslen;
3462 if (!IEEE80211_IS_CHAN_FHSS(ni->ni_chan)) {
3465 *frm++ = ieee80211_chan2ieee(ic, ni->ni_chan);
3496 if (IEEE80211_IS_CHAN_5GHZ(ni->ni_chan))
3522 if (IEEE80211_IS_CHAN_ANYG(ni->ni_chan)) {
3528 if (IEEE80211_IS_CHAN_HT(ni->ni_chan)) {
3529 frm = ieee80211_add_htcap(frm, ni);
3531 frm = ieee80211_add_htinfo(frm, ni);
3534 if (IEEE80211_IS_CHAN_VHT(ni->ni_chan)) {
3535 frm = ieee80211_add_vhtcap(frm, ni);
3537 frm = ieee80211_add_vhtinfo(frm, ni);
3549 if (IEEE80211_IS_CHAN_HT(ni->ni_chan) &&
3551 frm = ieee80211_add_htcap_vendor(frm, ni);
3552 frm = ieee80211_add_htinfo_vendor(frm, ni);
3558 frm = ieee80211_add_athcaps(frm, ni);
3590 ieee80211_beacon_alloc(struct ieee80211_node *ni)
3592 struct ieee80211vap *vap = ni->ni_vap;
3593 struct ieee80211com *ic = ni->ni_ic;
3646 + 2 + ni->ni_esslen /* ssid */
3674 + 2 + ni->ni_meshidlen
3687 ieee80211_beacon_construct(m, frm, ni);
3698 IEEE80211_ADDR_COPY(wh->i_addr3, ni->ni_bssid);
3708 ieee80211_beacon_update(struct ieee80211_node *ni, struct mbuf *m, int mcast)
3710 struct ieee80211vap *vap = ni->ni_vap;
3712 struct ieee80211com *ic = ni->ni_ic;
3741 mtod(m, uint8_t*) + sizeof(struct ieee80211_frame), ni);
3764 mtod(m, uint8_t*) + sizeof(struct ieee80211_frame), ni);
3778 mtod(m, uint8_t*) + sizeof(struct ieee80211_frame), ni);
3794 seqno = ni->ni_txseqs[IEEE80211_NONQOS_TID]++;
3800 capinfo = ieee80211_getcapinfo(vap, ni->ni_chan);
4014 ieee80211_add_athcaps(bo->bo_ath, ni);
4105 ieee80211_tx_complete(struct ieee80211_node *ni, struct mbuf *m, int status)
4108 if (ni != NULL) {
4109 struct ifnet *ifp = ni->ni_vap->iv_ifp;
4119 ieee80211_process_callback(ni, m, status);
4120 ieee80211_free_node(ni);