Lines Matching full:ni
158 lkpi_sta_sync_ht_from_ni(struct ieee80211_sta *sta, struct ieee80211_node *ni, int *ht_rx_nss)
165 if ((ni->ni_flags & IEEE80211_NODE_HT) == 0)
168 if (IEEE80211_IS_CHAN_HT(ni->ni_chan) &&
169 IEEE80211_IS_CHAN_HT40(ni->ni_chan))
175 vap = ni->ni_vap;
176 sta->deflink.ht_cap.ampdu_density = _IEEE80211_MASKSHIFT(ni->ni_htparam, IEEE80211_HTCAP_MPDUDENSITY);
179 sta->deflink.ht_cap.ampdu_factor = _IEEE80211_MASKSHIFT(ni->ni_htparam, IEEE80211_HTCAP_MAXRXAMPDU);
183 ie = ni->ni_ies.htcap_ie;
184 KASSERT(ie != NULL, ("%s: HT but no htcap_ie on ni %p\n", __func__, ni));
206 lkpi_sta_sync_vht_from_ni(struct ieee80211_sta *sta, struct ieee80211_node *ni, int *vht_rx_nss)
209 if ((ni->ni_flags & IEEE80211_NODE_VHT) == 0)
212 if (IEEE80211_IS_CHAN_VHT(ni->ni_chan)) {
214 if (IEEE80211_IS_CHAN_VHT80P80(ni->ni_chan)) {
218 if (IEEE80211_IS_CHAN_VHT160(ni->ni_chan))
220 else if (IEEE80211_IS_CHAN_VHT80(ni->ni_chan))
224 IMPROVE("VHT sync ni to sta");
230 lkpi_lsta_dump(struct lkpi_sta *lsta, struct ieee80211_node *ni,
240 printf("%s:%d lsta %p ni %p sta %p\n",
241 _f, _l, lsta, ni, &lsta->sta);
242 if (ni != NULL)
243 ieee80211_dump_node(NULL, ni);
257 ("%s: lsta %p lsta_entry.tqe_prev %p ni %p\n", __func__,
258 lsta, lsta->lsta_entry.tqe_prev, lsta->ni));
265 struct ieee80211_hw *hw, struct ieee80211_node *ni)
283 * Link the ni to the lsta here without taking a reference.
286 * For the other a ni and an lsta are 1:1 mapped and always together
288 * using the ni references for the lsta as well despite it being
291 lsta->ni = ni;
293 ni->ni_drv_data = lsta;
343 /* or should we get them from the ni? */
354 lkpi_sta_sync_ht_from_ni(sta, ni, &ht_rx_nss);
358 lkpi_sta_sync_vht_from_ni(sta, ni, &vht_rx_nss);
393 lkpi_lsta_free(struct lkpi_sta *lsta, struct ieee80211_node *ni)
399 "lsta %p ni %p added_to_drv %d\n",
400 __func__, lsta, ni, lsta->added_to_drv);
415 /* Flush mbufq (make sure to release ni refs!). */
435 lsta->ni = NULL;
436 ni->ni_drv_data = NULL;
661 lkpi_get_lkpi80211_chan(struct ieee80211com *ic, struct ieee80211_node *ni)
668 if (ni != NULL && ni->ni_chan != IEEE80211_CHAN_ANYC)
669 c = ni->ni_chan;
721 struct ieee80211_node *ni;
756 ni = vap->iv_bss;
757 sta = ieee80211_find_sta(vif, ni->ni_bssid);
887 lkpi_update_dtim_tsf(struct ieee80211_vif *vif, struct ieee80211_node *ni,
908 if (vif->bss_conf.beacon_int != ni->ni_intval) {
909 vif->bss_conf.beacon_int = ni->ni_intval;
922 vif->bss_conf.sync_tsf = le64toh(ni->ni_tstamp.tsf);
1132 struct ieee80211_node *ni;
1150 * Keep the ni alive locally. In theory (and practice) iv_bss can change
1155 ni = ieee80211_ref_node(vap->iv_bss);
1156 if (ni->ni_chan == NULL || ni->ni_chan == IEEE80211_CHAN_ANYC) {
1157 ic_printf(vap->iv_ic, "%s: no channel set for iv_bss ni %p "
1158 "on vap %p\n", __func__, ni, vap);
1159 ieee80211_free_node(ni); /* Error handling for the local ni. */
1164 chan = lkpi_find_lkpi80211_chan(lhw, ni->ni_chan);
1167 "iv_bss ni %p on vap %p\n", __func__, ni, vap);
1168 ieee80211_free_node(ni); /* Error handling for the local ni. */
1180 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
1182 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
1185 ieee80211_free_node(ni); /* Error handling for the local ni. */
1214 KASSERT(ni->ni_chan != NULL && ni->ni_chan != IEEE80211_CHAN_ANYC,
1215 ("%s:%d: ni %p ni_chan %p\n", __func__, __LINE__, ni, ni->ni_chan));
1217 if (IEEE80211_IS_CHAN_HT(ni->ni_chan)) {
1218 if (IEEE80211_IS_CHAN_HT40(ni->ni_chan)) {
1225 if (IEEE80211_IS_CHAN_VHT(ni->ni_chan)) {
1227 if (IEEE80211_IS_CHAN_VHT80P80(ni->ni_chan)) {
1232 if (IEEE80211_IS_CHAN_VHT160(ni->ni_chan))
1234 else if (IEEE80211_IS_CHAN_VHT80(ni->ni_chan))
1247 vif->bss_conf.bssid = ni->ni_bssid;
1249 vif->bss_conf.txpower = ni->ni_txpower;
1260 bss_changed |= lkpi_update_dtim_tsf(vif, ni, vap, __func__, __LINE__);
1279 if (IEEE80211_IS_CHAN_HT40U(ni->ni_chan))
1281 else if (IEEE80211_IS_CHAN_HT40D(ni->ni_chan))
1317 * Given ni and lsta are 1:1 from alloc to free we can assert that
1318 * ni always has lsta data attach despite net80211 node swapping
1321 KASSERT(ni->ni_drv_data != NULL, ("%s: ni %p ni_drv_data %p\n",
1322 __func__, ni, ni->ni_drv_data));
1323 lsta = ni->ni_drv_data;
1339 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1353 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1388 lsta->ni != vap->iv_bss)
1390 "lvif_bss->ni %p synched %d, ni %p lsta %p\n", __func__, __LINE__,
1392 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
1393 lvif->lvif_bss_synched, ni, lsta);
1396 * Reference the "ni" for caching the lsta/ni in lvif->lvif_bss.
1397 * Given we cache lsta we use lsta->ni instead of ni here (even though
1398 * lsta->ni == ni) to be distinct from the rest of the code where we do
1399 * assume that ni == vap->iv_bss which it may or may not be.
1401 * function local ni already while ic was unlocked and would lead to
1405 ieee80211_ref_node(lsta->ni);
1407 if (lsta->ni == vap->iv_bss) {
1420 * ni : lsta == 1:1.
1431 * Release the reference that kept the ni stable locally
1434 if (ni != NULL)
1435 ieee80211_free_node(ni);
1446 struct ieee80211_node *ni;
1462 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
1464 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
1470 KASSERT(lsta != NULL && lsta->ni != NULL, ("%s: lsta %p ni %p "
1472 lsta, (lsta != NULL) ? lsta->ni : NULL, lvif, vap));
1473 ni = lsta->ni; /* Reference held for lvif_bss. */
1476 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1507 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1521 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1524 /* Remove ni reference for this cache of lsta. */
1530 * The very last release the reference on the ni for the ni/lsta on
1531 * lvif->lvif_bss. Upon return from this both ni and lsta are invalid
1534 ieee80211_free_node(ni);
1597 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
1599 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
1686 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
1688 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
1736 struct ieee80211_node *ni;
1756 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
1758 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
1763 KASSERT(lsta != NULL && lsta->ni != NULL, ("%s: lsta %p ni %p "
1765 lsta, (lsta != NULL) ? lsta->ni : NULL, lvif, vap));
1767 ni = lsta->ni; /* Reference held for lvif_bss. */
1770 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1803 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1829 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1843 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1846 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1857 lkpi_lsta_dump(lsta, ni, __func__, __LINE__); /* sta no longer save to use. */
1868 /* Remove ni reference for this cache of lsta. */
1874 * The very last release the reference on the ni for the ni/lsta on
1875 * lvif->lvif_bss. Upon return from this both ni and lsta are invalid
1878 ieee80211_free_node(ni);
1948 struct ieee80211_node *ni;
1968 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
1970 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
1979 KASSERT(lsta != NULL && lsta->ni != NULL, ("%s: lsta %p ni %p "
1981 lsta, (lsta != NULL) ? lsta->ni : NULL, lvif, vap));
1983 ni = lsta->ni; /* Reference held for lvif_bss. */
1993 sta->aid = IEEE80211_NODE_AID(ni);
2012 if (!vif->cfg.assoc || vif->cfg.aid != IEEE80211_NODE_AID(ni)) {
2014 vif->cfg.aid = IEEE80211_NODE_AID(ni);
2018 vif->cfg.ssid_len = ni->ni_esslen;
2019 memcpy(vif->cfg.ssid, ni->ni_essid, ni->ni_esslen);
2030 if ((ni->ni_flags & IEEE80211_NODE_QOS) !=
2036 bss_changed |= lkpi_update_dtim_tsf(vif, ni, vap, __func__, __LINE__);
2066 if (!ieee80211_node_is_authorized(ni)) {
2072 lkpi_sta_sync_ht_from_ni(sta, ni, NULL);
2076 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2096 bss_changed |= lkpi_update_dtim_tsf(vif, ni, vap, __func__, __LINE__);
2123 struct ieee80211_node *ni;
2142 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
2144 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
2149 KASSERT(lsta != NULL && lsta->ni != NULL, ("%s: lsta %p ni %p "
2151 lsta, (lsta != NULL) ? lsta->ni : NULL, lvif, vap));
2153 ni = lsta->ni; /* Reference held for lvif_bss. */
2156 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2192 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2220 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2230 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2233 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2243 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2265 struct ieee80211_node *ni;
2285 "lvif_bss->ni %p synched %d\n", __func__, __LINE__,
2287 (lvif->lvif_bss != NULL) ? lvif->lvif_bss->ni : NULL,
2292 KASSERT(lsta != NULL && lsta->ni != NULL, ("%s: lsta %p ni %p "
2294 lsta, (lsta != NULL) ? lsta->ni : NULL, lvif, vap));
2296 ni = lsta->ni; /* Reference held for lvif_bss. */
2299 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2332 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2358 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2368 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2371 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2381 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2384 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2420 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2423 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2436 lkpi_lsta_dump(lsta, ni, __func__, __LINE__); /* sta no longer save to use. */
2450 /* Remove ni reference for this cache of lsta. */
2455 * The very last release the reference on the ni for the ni/lsta on
2456 * lvif->lvif_bss. Upon return from this both ni and lsta are invalid
2459 ieee80211_free_node(ni);
2652 * new node without us knowing and thus our ni/lsta are out of sync.
2655 lkpi_iv_update_bss(struct ieee80211vap *vap, struct ieee80211_node *ni)
2668 rni = lvif->iv_update_bss(vap, ni);
3612 struct ieee80211_node *ni;
3623 ni = lhw->ic_node_alloc(vap, mac);
3624 if (ni == NULL)
3628 lsta = lkpi_lsta_alloc(vap, mac, hw, ni);
3631 lhw->ic_node_free(ni);
3635 return (ni);
3639 lkpi_ic_node_init(struct ieee80211_node *ni)
3645 ic = ni->ni_ic;
3649 error = lhw->ic_node_init(ni);
3661 lkpi_ic_node_cleanup(struct ieee80211_node *ni)
3666 ic = ni->ni_ic;
3673 lhw->ic_node_cleanup(ni);
3677 lkpi_ic_node_free(struct ieee80211_node *ni)
3683 ic = ni->ni_ic;
3685 lsta = ni->ni_drv_data;
3687 /* KASSERT lsta is not NULL here. Print ni/ni__refcnt. */
3690 * Pass in the original ni just in case of error we could check that
3691 * it is the same as lsta->ni.
3693 lkpi_lsta_free(lsta, ni);
3696 lhw->ic_node_free(ni);
3700 lkpi_ic_raw_xmit(struct ieee80211_node *ni, struct mbuf *m,
3705 lsta = ni->ni_drv_data;
3719 * Free the mbuf (do NOT release ni ref for the m_pkthdr.rcvif!
3733 printf("%s:%d lsta %p ni %p %6D mbuf_qlen %d\n",
3734 __func__, __LINE__, lsta, ni, ni->ni_macaddr, ":",
3744 struct ieee80211_node *ni;
3770 ni = lsta->ni;
3777 k = ieee80211_crypto_encap(ni, m);
3779 ieee80211_free_node(ni);
3786 ic = ni->ni_ic;
3789 c = ni->ni_chan;
3791 if (ieee80211_radiotap_active_vap(ni->ni_vap)) {
3807 ieee80211_radiotap_tx(ni->ni_vap, m);
3819 ieee80211_free_node(ni);
3835 /* Save the ni. */
3836 m->m_pkthdr.PH_loc.ptr = ni;
3838 lvif = VAP_TO_LVIF(ni->ni_vap);
3907 "ni %p %6D skb %p lxtq %p { qlen %u, ac %d tid %u } "
3911 lsta, sta, ni, ni->ni_macaddr, ":", skb, ltxq,
3924 printf("%s:%d mo_tx :: lsta %p sta %p ni %p %6D skb %p "
3926 __func__, __LINE__, lsta, sta, ni, ni->ni_macaddr, ":",
3948 printf("%s:%d lsta %p ni %p %6D pending %d mbuf_qlen %d\n",
3949 __func__, __LINE__, lsta, lsta->ni, lsta->ni->ni_macaddr, ":",
3997 struct ieee80211_node *ni;
3999 ni = (struct ieee80211_node *)m->m_pkthdr.rcvif;
4000 return (lkpi_ic_raw_xmit(ni, m, NULL));
4005 lkpi_ic_recv_action(struct ieee80211_node *ni, const struct ieee80211_frame *wh,
4011 ic = ni->ni_ic;
4016 return (lhw->ic_recv_action(ni, wh, frm, efrm));
4020 lkpi_ic_send_action(struct ieee80211_node *ni, int category, int action, void *sa)
4025 ic = ni->ni_ic;
4030 return (lhw->ic_send_action(ni, category, action, sa));
4035 lkpi_ic_ampdu_enable(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
4040 ic = ni->ni_ic;
4045 return (lhw->ic_ampdu_enable(ni, tap));
4055 lkpi_ic_addba_request(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap,
4069 ic = ni->ni_ic;
4072 vap = ni->ni_vap;
4075 lsta = ni->ni_drv_data;
4079 ic_printf(ic, "%s: lsta %p ni %p, sta %p not added to firmware\n",
4080 __func__, lsta, ni, sta);
4099 ic_printf(ic, "%s: mo_ampdu_action returned %d. ni %p tap %p\n",
4100 __func__, error, ni, tap);
4104 return (lhw->ic_addba_request(ni, tap, dialogtoken, baparamset, batimeout));
4115 lkpi_ic_addba_response(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap,
4129 ic = ni->ni_ic;
4132 vap = ni->ni_vap;
4135 lsta = ni->ni_drv_data;
4139 ic_printf(ic, "%s: lsta %p ni %p, sta %p not added to firmware\n",
4140 __func__, lsta, ni, sta);
4177 ic_printf(ic, "%s: mo_ampdu_action returned %d. ni %p tap %p\n",
4178 __func__, error, ni, tap);
4182 IMPROVE_HT("who unleashes the TXQ? and when?, do we need to ni->ni_txseqs[tid] = tap->txa_start & 0xfff;");
4184 return (lhw->ic_addba_response(ni, tap, status, baparamset, batimeout));
4192 lkpi_ic_addba_stop(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
4205 ic = ni->ni_ic;
4208 vap = ni->ni_vap;
4211 lsta = ni->ni_drv_data;
4215 ic_printf(ic, "%s: lsta %p ni %p, sta %p not added to firmware\n",
4216 __func__, lsta, ni, sta);
4236 ic_printf(ic, "%s: mo_ampdu_action returned %d. ni %p tap %p\n",
4237 __func__, error, ni, tap);
4244 lhw->ic_addba_stop(ni, tap);
4248 lkpi_ic_addba_response_timeout(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap)
4253 ic = ni->ni_ic;
4258 lhw->ic_addba_response_timeout(ni, tap);
4262 lkpi_ic_bar_response(struct ieee80211_node *ni, struct ieee80211_tx_ampdu *tap,
4268 ic = ni->ni_ic;
4273 lhw->ic_bar_response(ni, tap, status);
4277 lkpi_ic_ampdu_rx_start(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap,
4291 ic = ni->ni_ic;
4294 vap = ni->ni_vap;
4297 lsta = ni->ni_drv_data;
4303 ic_printf(ic, "%s: lsta %p ni %p vap %p, sta %p not added to firmware\n",
4304 __func__, lsta, ni, vap, sta);
4333 ic_printf(ic, "%s: mo_ampdu_action returned %d. ni %p rap %p\n",
4334 __func__, error, ni, rap);
4344 error = lhw->ic_ampdu_rx_start(ni, rap, baparamset, batimeout, baseqctl);
4349 lkpi_ic_ampdu_rx_stop(struct ieee80211_node *ni, struct ieee80211_rx_ampdu *rap)
4363 ic = ni->ni_ic;
4379 vap = ni->ni_vap;
4382 lsta = ni->ni_drv_data;
4387 if (&ni->ni_rx_ampdu[tid] == rap)
4405 ic_printf(ic, "%s: mo_ampdu_action returned %d. ni %p rap %p\n",
4406 __func__, error, ni, rap);
4409 lhw->ic_ampdu_rx_stop(ni, rap);
4691 /* Flush mbufq (make sure to release ni refs!). */
4701 ieee80211_free_node(rxni->ni);
5213 struct ieee80211_node *ni;
5217 ni = NULL;
5223 ni = rxni->ni;
5226 if (ni != NULL) {
5227 ok = ieee80211_input_mimo(ni, m);
5228 ieee80211_free_node(ni); /* Release the reference. */
5282 struct ieee80211_node *ni;
5402 ni = ieee80211_ref_node(lsta->ni);
5407 ni = ieee80211_find_rxnode(ic, wh);
5408 if (ni != NULL)
5409 lsta = ni->ni_drv_data;
5412 if (ni != NULL)
5413 vap = ni->ni_vap;
5423 printf("TRACE-RX: %s: sta %p lsta %p state %d ni %p vap %p%s\n",
5425 ni, vap, is_beacon ? " beacon" : "");
5428 if (ni != NULL && vap != NULL && is_beacon &&
5436 if (!IEEE80211_ADDR_EQ(wh->i_addr2, ni->ni_bssid))
5499 if (ni != NULL) {
5507 rxni->ni = ni; /* We hold a reference. */
5749 lkpi_find_lsta_by_ni(struct lkpi_vif *lvif, struct ieee80211_node *ni)
5755 if (lsta->ni == ni) {
5885 * passed back from the driver. rawx_mit() saves the ni on the m and the
5892 struct ieee80211_node *ni;
5899 ni = m->m_pkthdr.PH_loc.ptr;
5901 ieee80211_tx_complete(ni, m, status);
5902 /* ni & mbuf were consumed. */
5922 struct ieee80211_node *ni;
5930 ni = m->m_pkthdr.PH_loc.ptr;
5933 ni = NULL;
5945 if (ni != NULL) {
5950 old_rate = ni->ni_vap->iv_bss->ni_txrate;
5969 ieee80211_ratectl_tx_complete(ni, &txs);
5970 ridx = ieee80211_ratectl_rate(ni->ni_vap->iv_bss, NULL, 0);
5976 old_rate, ni->ni_vap->iv_bss->ni_txrate,
6038 struct ieee80211_node *ni;
6047 ni = m->m_pkthdr.PH_loc.ptr;
6049 if (ni != NULL)
6050 ieee80211_free_node(ni);