Lines Matching refs:ni
158 struct ieee80211_node *ni)
225 if (ni == ic->ic_bss) {
228 ieee80211_send_error(ic, ni, wh->i_addr2,
234 if (ni->ni_associd == 0) {
237 IEEE80211_SEND_MGMT(ic, ni,
248 (ni->ni_flags & IEEE80211_NODE_PWR_MGT)))
249 ieee80211_node_pwrsave(ni,
275 IEEE80211_NODE_STAT(ni, rx_noprivacy);
278 key = ieee80211_crypto_decap(ic, ni, &m, hdrspace);
281 IEEE80211_NODE_STAT(ni, rx_wepfail);
292 m = ieee80211_defrag(ni, m, hdrspace);
305 ni->ni_macaddr, "data", "%s", "demic error");
306 IEEE80211_NODE_STAT(ni, rx_demicfail);
325 ni->ni_macaddr, "data", "%s", "decap error");
327 IEEE80211_NODE_STAT(ni, rx_decap);
332 if (!ieee80211_node_is_authorized(ni)) {
347 IEEE80211_NODE_STAT(ni, rx_unauth);
361 IEEE80211_NODE_STAT(ni, rx_unencrypted);
366 IEEE80211_NODE_STAT(ni, rx_data);
367 IEEE80211_NODE_STAT_ADD(ni, rx_bytes, m->m_pkthdr.len);
369 ieee80211_deliver_data(ic, ni, m);
386 struct ieee80211_node *ni, int rssi, u_int32_t rstamp)
400 IEEE80211_NODE_STAT(ni, rx_mgmt);
408 IEEE80211_DISCARD_MAC(ic, IEEE80211_MSG_ANY, ni->ni_macaddr,
447 key = ieee80211_crypto_decap(ic, ni, &m, hdrspace);
457 (*ic->ic_recv_mgmt)(ic, m, ni, subtype, rssi, rstamp);
475 struct ieee80211_node *ni)
477 IEEE80211_NODE_STAT(ni, rx_ctrl);
490 ieee80211_recv_pspoll(ic, ni, m);
511 struct ieee80211_node *ni, int rssi, u_int32_t rstamp)
524 IASSERT(ni != NULL, ("null node"));
525 ni->ni_inact = ni->ni_inact_reload;
543 ni->ni_macaddr, NULL,
560 ni->ni_macaddr, NULL, "wrong version %x", wh->i_fc[0]);
574 if (!IEEE80211_ADDR_EQ(bssid, ni->ni_bssid)) {
579 ni->ni_bssid), "not to bss");
608 IEEE80211_MSG_ANY, ni->ni_macaddr,
642 if (ni == ic->ic_bss &&
644 !IEEE80211_ADDR_EQ(wh->i_addr2, ni->ni_macaddr)) {
649 ni = ieee80211_fakeup_adhoc_node(&ic->ic_sta,
651 if (ni == NULL) {
662 ni->ni_rssi = rssi;
663 ni->ni_rstamp = rstamp;
676 ni->ni_macaddr, NULL,
694 orxno = ni->ni_rxseqs[tid] >> IEEE80211_SEQ_SEQ_SHIFT;
699 SEQ_LEQ(rxseq, ni->ni_rxseqs[tid]))
708 ni->ni_rxseqs[tid] &
712 IEEE80211_NODE_STAT(ni, rx_dup);
715 ni->ni_rxseqs[tid] = rxseq;
721 ret = ieee80211_input_data(ic, &m, ni);
728 ret = ieee80211_input_management(ic, &m, ni, rssi, rstamp);
735 ieee80211_input_control(ic, m, ni);
761 ieee80211_defrag(struct ieee80211_node *ni, struct mbuf *m, int hdrspace)
777 if (!more_frag && fragno == 0 && ni->ni_rxfrag[0] == NULL)
783 if (ni->ni_table == NULL) {
796 IEEE80211_NODE_LOCK(ni->ni_table);
797 mfrag = ni->ni_rxfrag[0];
798 ni->ni_rxfrag[0] = NULL;
799 IEEE80211_NODE_UNLOCK(ni->ni_table);
829 IEEE80211_NODE_STAT(ni, rx_defrag);
852 ni->ni_rxfragstamp = ticks;
853 ni->ni_rxfrag[0] = mfrag;
862 struct ieee80211_node *ni, struct mbuf *m)
924 if (ni->ni_vlan != 0)
925 vlan_set_tag(m, ni->ni_vlan);
1051 ieee80211_setup_rates(struct ieee80211_node *ni, const u_int8_t *rates,
1054 struct ieee80211com *ic = ni->ni_ic;
1055 struct ieee80211_rateset *rs = &ni->ni_rates;
1078 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr),
1087 return ieee80211_fix_rate(ni, flags);
1092 struct ieee80211_node *ni, int rssi, u_int32_t rstamp,
1097 if (ni->ni_authmode == IEEE80211_AUTH_SHARED) {
1099 ni->ni_macaddr, "open auth",
1100 "bad sta auth mode %u", ni->ni_authmode);
1105 ieee80211_send_error(ic, ni, wh->i_addr2,
1118 ni->ni_macaddr, "open auth",
1131 if (ni == ic->ic_bss) {
1132 ni = ieee80211_dup_bss(&ic->ic_sta, wh->i_addr2);
1133 if (ni == NULL)
1135 } else if ((ni->ni_flags & IEEE80211_NODE_AREF) == 0) {
1136 (void)ieee80211_ref_node(ni);
1144 ni->ni_flags |= IEEE80211_NODE_AREF;
1146 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_AUTH,
1150 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr));
1156 if (ni->ni_authmode != IEEE80211_AUTH_8021X)
1157 ieee80211_node_authorize(ni);
1171 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr),
1175 if (ni != ic->ic_bss)
1176 ni->ni_fails++;
1190 * station. If ni is associated with the station then use
1196 ieee80211_send_error(struct ieee80211com *ic, struct ieee80211_node *ni,
1201 if (ni == ic->ic_bss) {
1202 ni = ieee80211_tmp_node(ic, mac);
1203 if (ni == NULL) {
1212 IEEE80211_SEND_MGMT(ic, ni, subtype, arg);
1214 ieee80211_free_node(ni);
1218 alloc_challenge(struct ieee80211com *ic, struct ieee80211_node *ni)
1220 if (ni->ni_challenge == NULL) {
1221 ni->ni_challenge = malloc(IEEE80211_CHALLENGE_LEN,
1224 if (ni->ni_challenge == NULL) {
1229 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr));
1232 return (ni->ni_challenge != NULL);
1238 u_int8_t *frm, u_int8_t *efrm, struct ieee80211_node *ni, int rssi,
1255 ni->ni_macaddr, "shared key auth",
1266 if (ni->ni_authmode != IEEE80211_AUTH_AUTO &&
1267 ni->ni_authmode != IEEE80211_AUTH_SHARED) {
1269 ni->ni_macaddr, "shared key auth",
1270 "bad sta auth mode %u", ni->ni_authmode);
1280 ni->ni_macaddr, "shared key auth",
1297 ni->ni_macaddr, "shared key auth",
1305 ni->ni_macaddr, "shared key auth",
1320 ni->ni_macaddr, "shared key auth",
1330 ni->ni_macaddr, "shared key auth",
1337 if (ni == ic->ic_bss) {
1338 ni = ieee80211_dup_bss(&ic->ic_sta, wh->i_addr2);
1339 if (ni == NULL) {
1345 if ((ni->ni_flags & IEEE80211_NODE_AREF) == 0)
1346 (void)ieee80211_ref_node(ni);
1356 ni->ni_flags |= IEEE80211_NODE_AREF;
1357 ni->ni_rssi = rssi;
1358 ni->ni_rstamp = rstamp;
1359 if (!alloc_challenge(ic, ni)) {
1364 get_random_bytes(ni->ni_challenge,
1371 ni->ni_macaddr),
1376 if (ni == ic->ic_bss) {
1378 ni->ni_macaddr, "shared key response",
1384 if (ni->ni_challenge == NULL) {
1386 ni->ni_macaddr, "shared key response",
1393 if (memcmp(ni->ni_challenge, &challenge[2],
1396 ni->ni_macaddr, "shared key response",
1406 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr));
1408 ieee80211_node_authorize(ni);
1413 ni->ni_macaddr, "shared key auth",
1420 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_AUTH,
1431 if (ni->ni_challenge != NULL) {
1432 free(ni->ni_challenge, M_DEVBUF);
1433 ni->ni_challenge = NULL;
1444 if (ni != ic->ic_bss)
1445 ni->ni_fails++;
1456 if (!alloc_challenge(ic, ni))
1459 memcpy(ni->ni_challenge, &challenge[2], challenge[1]);
1461 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_AUTH,
1482 ieee80211_send_error(ic, ni, wh->i_addr2,
1971 ieee80211_update_adhoc_node(struct ieee80211com *ic, struct ieee80211_node *ni,
1975 if (!IEEE80211_ADDR_EQ(wh->i_addr2, ni->ni_macaddr)) {
1980 if ((ni = ieee80211_add_neighbor(ic, wh, scan)) == NULL)
1982 } else if (ni->ni_capinfo == 0) {
1987 * No need to check for a change of BSSID: ni could
1990 ieee80211_init_neighbor(ic, ni, wh, scan, 0);
1993 memcpy(ni->ni_tstamp.data, scan->sp_tstamp, sizeof(ni->ni_tstamp));
1996 ni->ni_rssi = rssi;
1997 ni->ni_rstamp = rstamp;
2000 if (IEEE80211_ADDR_EQ(wh->i_addr3, ni->ni_bssid))
2003 IEEE80211_ADDR_COPY(ni->ni_bssid, wh->i_addr3);
2005 if (ni != ic->ic_bss)
2009 * Now, ni does not represent a network we
2066 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
2086 (ic->ic_opmode == IEEE80211_M_STA && ni->ni_associd) ||
2238 if (ni != ic->ic_bss) {
2239 ni = ieee80211_refine_node_for_beacon(ic, ni,
2248 IEEE80211_NODE_STAT(ni, rx_beacons);
2250 IEEE80211_NODE_STAT(ni, rx_proberesp);
2258 if (ic->ic_opmode == IEEE80211_M_STA && ni->ni_associd != 0 &&
2260 IEEE80211_ADDR_EQ(wh->i_addr2, ni->ni_bssid))) {
2262 memcpy(ni->ni_tstamp.data, scan.sp_tstamp, sizeof(ni->ni_tstamp));
2264 if (ni->ni_erp != scan.sp_erp) {
2268 wh->i_addr2), ni->ni_erp, scan.sp_erp);
2271 (ni->ni_erp & IEEE80211_ERP_USE_PROTECTION)) {
2276 ni->ni_erp = scan.sp_erp;
2279 if ((ni->ni_capinfo ^ scan.sp_capinfo) & IEEE80211_CAPINFO_SHORT_SLOTTIME) {
2285 ni->ni_capinfo, scan.sp_capinfo);
2292 (ni->ni_capinfo & IEEE80211_CAPINFO_SHORT_SLOTTIME));
2293 ni->ni_capinfo = scan.sp_capinfo;
2296 if (scan.sp_wme != NULL && (ni->ni_flags & IEEE80211_NODE_QOS) &&
2305 ni->ni_dtim_count = ie->tim_count;
2306 ni->ni_dtim_period = ie->tim_period;
2339 ieee80211_update_adhoc_node(ic, ni, wh, &scan, rssi, rstamp);
2345 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
2407 ni == ic->ic_bss) {
2409 ni = ieee80211_tmp_node(ic, wh->i_addr2);
2411 } else if (IEEE80211_ADDR_EQ(wh->i_addr2, ni->ni_macaddr)) {
2420 ni = ieee80211_fakeup_adhoc_node(&ic->ic_sta,
2423 if (ni == NULL)
2430 ni->ni_rssi = rssi;
2431 ni->ni_rstamp = rstamp;
2432 rate = ieee80211_setup_rates(ni, rates, xrates,
2442 IEEE80211_SEND_MGMT(ic, ni,
2448 ieee80211_free_node(ni);
2454 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
2489 IEEE80211_SEND_MGMT(ic, ni,
2503 IEEE80211_SEND_MGMT(ic, ni,
2512 ieee80211_auth_shared(ic, wh, frm + 6, efrm, ni, rssi,
2515 ieee80211_auth_open(ic, wh, ni, rssi, rstamp, seq, status);
2523 IEEE80211_SEND_MGMT(ic, ni,
2533 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
2623 if (ni == ic->ic_bss) {
2628 ieee80211_send_error(ic, ni, wh->i_addr2,
2642 IEEE80211_SEND_MGMT(ic, ni,
2645 ieee80211_node_leave(ic, ni);
2660 rsn = ni->ni_rsn;
2667 IEEE80211_SEND_MGMT(ic, ni,
2669 ieee80211_node_leave(ic, ni);
2687 if (ni->ni_challenge != NULL) {
2688 free(ni->ni_challenge, M_DEVBUF);
2689 ni->ni_challenge = NULL;
2698 IEEE80211_SEND_MGMT(ic, ni, resp,
2700 ieee80211_node_leave(ic, ni);
2705 rate = ieee80211_setup_rates(ni, rates, xrates,
2721 IEEE80211_SEND_MGMT(ic, ni, resp,
2723 ieee80211_node_leave(ic, ni);
2728 ni->ni_rssi = rssi;
2729 ni->ni_rstamp = rstamp;
2730 ni->ni_intval = lintval;
2731 ni->ni_capinfo = capinfo;
2732 ni->ni_chan = ic->ic_bss->ni_chan;
2733 ni->ni_fhdwell = ic->ic_bss->ni_fhdwell;
2734 ni->ni_fhindex = ic->ic_bss->ni_fhindex;
2742 ni->ni_rsn = rsn;
2743 ieee80211_saveie(&ni->ni_wpa_ie, wpa);
2744 } else if (ni->ni_wpa_ie != NULL) {
2748 free(ni->ni_wpa_ie, M_DEVBUF);
2749 ni->ni_wpa_ie = NULL;
2758 ieee80211_saveie(&ni->ni_wme_ie, wme);
2759 ni->ni_flags |= IEEE80211_NODE_QOS;
2760 } else if (ni->ni_wme_ie != NULL) {
2764 free(ni->ni_wme_ie, M_DEVBUF);
2765 ni->ni_wme_ie = NULL;
2766 ni->ni_flags &= ~IEEE80211_NODE_QOS;
2769 ieee80211_node_join(ic, ni, resp);
2776 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
2806 ni = ic->ic_bss;
2816 if (ni != ic->ic_bss) /* XXX never true? */
2817 ni->ni_fails++;
2847 rate = ieee80211_setup_rates(ni, rates, xrates,
2856 if (ni != ic->ic_bss) /* XXX never true? */
2857 ni->ni_fails++;
2863 ni->ni_capinfo = capinfo;
2864 ni->ni_associd = associd;
2866 ni->ni_flags |= IEEE80211_NODE_QOS;
2869 ni->ni_flags &= ~IEEE80211_NODE_QOS;
2878 (ni->ni_capinfo & IEEE80211_CAPINFO_SHORT_PREAMBLE)) {
2887 (ni->ni_capinfo & IEEE80211_CAPINFO_SHORT_SLOTTIME));
2896 (ni->ni_erp & IEEE80211_ERP_USE_PROTECTION)) {
2909 ni->ni_flags & IEEE80211_NODE_QOS ? ", QoS" : ""
2917 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
2941 IEEE80211_NODE_STAT(ni, rx_deauth);
2951 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr), reason);
2960 if (ni != ic->ic_bss)
2961 ieee80211_node_leave(ic, ni);
2972 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
2998 IEEE80211_NODE_STAT(ni, rx_disassoc);
3008 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr), reason);
3017 if (ni != ic->ic_bss)
3018 ieee80211_node_leave(ic, ni);
3035 struct ieee80211_node *ni, int subtype, int rssi, u_int32_t rstamp)
3044 ieee80211_recv_mgmt_beacon(ic, m0, ni, subtype, rssi, rstamp);
3048 ieee80211_recv_mgmt_probe_req(ic, m0, ni, subtype, rssi, rstamp);
3052 ieee80211_recv_mgmt_auth(ic, m0, ni, subtype, rssi, rstamp);
3057 ieee80211_recv_mgmt_assoc_req(ic, m0, ni, subtype, rssi, rstamp);
3062 ieee80211_recv_mgmt_assoc_resp(ic, m0, ni, subtype, rssi, rstamp);
3066 ieee80211_recv_mgmt_deauth(ic, m0, ni, subtype, rssi, rstamp);
3070 ieee80211_recv_mgmt_disassoc(ic, m0, ni, subtype, rssi, rstamp);
3086 ieee80211_node_pwrsave(struct ieee80211_node *ni, int enable)
3088 struct ieee80211com *ic = ni->ni_ic;
3093 if ((ni->ni_flags & IEEE80211_NODE_PWR_MGT) == 0)
3095 ni->ni_flags |= IEEE80211_NODE_PWR_MGT;
3098 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr),
3103 if (ni->ni_flags & IEEE80211_NODE_PWR_MGT)
3105 ni->ni_flags &= ~IEEE80211_NODE_PWR_MGT;
3108 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr), ic->ic_ps_sta);
3114 if (IEEE80211_NODE_SAVEQ_QLEN(ni) == 0) {
3116 ic->ic_set_tim(ni, 0); /* just in case */
3122 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr),
3123 IEEE80211_NODE_SAVEQ_QLEN(ni));
3128 IEEE80211_NODE_SAVEQ_DEQUEUE(ni, m, qlen);
3147 ic->ic_set_tim(ni, 0);
3154 ieee80211_recv_pspoll(struct ieee80211com *ic, struct ieee80211_node *ni,
3164 if (ni->ni_associd == 0) {
3169 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
3175 if (aid != ni->ni_associd) {
3179 ni->ni_associd, aid);
3181 IEEE80211_SEND_MGMT(ic, ni, IEEE80211_FC0_SUBTYPE_DEAUTH,
3187 IEEE80211_NODE_SAVEQ_DEQUEUE(ni, m, qlen);
3192 ieee80211_send_nulldata(ieee80211_ref_node(ni));
3195 ic->ic_set_tim(ni, 0); /* just in case */
3207 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr), qlen);
3212 ether_snprintf(ebuf, sizeof(ebuf), ni->ni_macaddr));
3214 ic->ic_set_tim(ni, 0);