Lines Matching defs:lsta
39 * We call the internal versions lxxx (e.g., hw -> lhw, sta -> lsta).
230 lkpi_lsta_dump(struct lkpi_sta *lsta, struct ieee80211_node *ni,
237 if (lsta == NULL)
240 printf("%s:%d lsta %p ni %p sta %p\n",
241 _f, _l, lsta, ni, &lsta->sta);
244 printf("\ttxq_task txq len %d mtx\n", mbufq_len(&lsta->txq));
246 lsta->kc, lsta->state, lsta->added_to_drv, lsta->in_mgd);
251 lkpi_lsta_remove(struct lkpi_sta *lsta, struct lkpi_vif *lvif)
256 KASSERT(lsta->lsta_entry.tqe_prev != NULL,
257 ("%s: lsta %p lsta_entry.tqe_prev %p ni %p\n", __func__,
258 lsta, lsta->lsta_entry.tqe_prev, lsta->ni));
259 TAILQ_REMOVE(&lvif->lsta_head, lsta, lsta_entry);
267 struct lkpi_sta *lsta;
275 lsta = malloc(sizeof(*lsta) + hw->sta_data_size, M_LKPI80211,
277 if (lsta == NULL)
280 lsta->added_to_drv = false;
281 lsta->state = IEEE80211_STA_NOTEXIST;
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;
292 /* The back-pointer "drv_data" to net80211_node let's us get lsta. */
293 ni->ni_drv_data = lsta;
297 sta = LSTA_TO_STA(lsta);
373 LKPI_80211_LSTA_TXQ_LOCK_INIT(lsta);
374 TASK_INIT(&lsta->txq_task, 0, lkpi_80211_txq_task, lsta);
375 mbufq_init(&lsta->txq, IFQ_MAXLEN);
376 lsta->txq_ready = true;
378 return (lsta);
388 free(lsta, M_LKPI80211);
393 lkpi_lsta_free(struct lkpi_sta *lsta, struct ieee80211_node *ni)
397 if (lsta->added_to_drv)
398 panic("%s: Trying to free an lsta still known to firmware: "
399 "lsta %p ni %p added_to_drv %d\n",
400 __func__, lsta, ni, lsta->added_to_drv);
407 LKPI_80211_LSTA_TXQ_LOCK(lsta);
408 lsta->txq_ready = false;
409 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
412 while (taskqueue_cancel(taskqueue_thread, &lsta->txq_task, NULL) != 0)
413 taskqueue_drain(taskqueue_thread, &lsta->txq_task);
416 m = mbufq_dequeue(&lsta->txq);
424 m = mbufq_dequeue(&lsta->txq);
426 KASSERT(mbufq_empty(&lsta->txq), ("%s: lsta %p has txq len %d != 0\n",
427 __func__, lsta, mbufq_len(&lsta->txq)));
428 LKPI_80211_LSTA_TXQ_LOCK_DESTROY(lsta);
430 /* Remove lsta from vif; that is done by the state machine. Should assert it? */
434 /* Free lsta. */
435 lsta->ni = NULL;
437 free(lsta, M_LKPI80211);
759 struct lkpi_sta *lsta;
761 lsta = STA_TO_LSTA(sta);
762 lsta->kc = kc;
1072 * send it. scan_to_auth() would re-enable sending if the lsta would be
1076 lkpi_80211_flush_tx(struct lkpi_hw *lhw, struct lkpi_sta *lsta)
1085 LKPI_80211_LSTA_TXQ_LOCK(lsta);
1086 lsta->txq_ready = false;
1087 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
1089 while (taskqueue_cancel(taskqueue_thread, &lsta->txq_task, NULL) != 0)
1090 taskqueue_drain(taskqueue_thread, &lsta->txq_task);
1092 LKPI_80211_LSTA_TXQ_LOCK(lsta);
1093 len = mbufq_len(&lsta->txq);
1095 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
1100 mbufq_concat(&mq, &lsta->txq);
1101 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
1105 lkpi_80211_txq_tx_one(lsta, m);
1133 struct lkpi_sta *lsta;
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
1323 lsta = ni->ni_drv_data;
1329 LKPI_80211_LSTA_TXQ_LOCK(lsta);
1330 lsta->txq_ready = true;
1331 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
1335 TAILQ_INSERT_TAIL(&lvif->lsta_head, lsta, lsta_entry);
1339 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1340 KASSERT(lsta->state == IEEE80211_STA_NOTEXIST, ("%s: lsta %p state not "
1341 "NOTEXIST: %#x\n", __func__, lsta, lsta->state));
1342 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NONE);
1350 lsta->added_to_drv = true; /* mo manages. */
1353 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1364 lkpi_wake_tx_queues(hw, LSTA_TO_STA(lsta), false, false);
1371 lsta->in_mgd = true;
1388 lsta->ni != vap->iv_bss)
1390 "lvif_bss->ni %p synched %d, ni %p lsta %p\n", __func__, __LINE__,
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
1405 ieee80211_ref_node(lsta->ni);
1406 lvif->lvif_bss = lsta;
1407 if (lsta->ni == vap->iv_bss) {
1420 * ni : lsta == 1:1.
1447 struct lkpi_sta *lsta;
1468 lsta = lvif->lvif_bss;
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. */
1474 sta = LSTA_TO_STA(lsta);
1476 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1491 if (lsta->in_mgd) {
1495 lsta->in_mgd = false;
1507 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1508 KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
1509 "NONE: %#x, nstate %d arg %d\n", __func__, lsta, lsta->state, nstate, arg));
1510 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NOTEXIST);
1518 lsta->added_to_drv = false; /* mo manages. */
1521 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1524 /* Remove ni reference for this cache of lsta. */
1528 lkpi_lsta_remove(lsta, lvif);
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
1580 struct lkpi_sta *lsta;
1606 lsta = lvif->lvif_bss;
1609 KASSERT(lsta != NULL, ("%s: lsta %p\n", __func__, lsta));
1615 KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
1616 "NONE: %#x\n", __func__, lsta, lsta->state));
1617 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTH);
1625 if (lsta->in_mgd) {
1629 lsta->in_mgd = false;
1635 if (!lsta->in_mgd) {
1639 lsta->in_mgd = true;
1643 lkpi_wake_tx_queues(hw, LSTA_TO_STA(lsta), false, true);
1669 struct lkpi_sta *lsta;
1695 lsta = lvif->lvif_bss;
1698 KASSERT(lsta != NULL, ("%s: lsta %p! lvif %p vap %p\n", __func__,
1699 lsta, lvif, vap));
1704 if (lsta->in_mgd) {
1708 lsta->in_mgd = false;
1714 if (!lsta->in_mgd) {
1718 lsta->in_mgd = true;
1737 struct lkpi_sta *lsta;
1761 lsta = lvif->lvif_bss;
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. */
1768 sta = LSTA_TO_STA(lsta);
1770 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1777 !lsta->in_mgd) {
1782 lsta->in_mgd = true;
1799 lkpi_80211_flush_tx(lhw, lsta);
1803 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1812 if (lsta->in_mgd) {
1817 lsta->in_mgd = false;
1829 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1830 KASSERT(lsta->state == IEEE80211_STA_AUTH, ("%s: lsta %p state not "
1831 "AUTH: %#x\n", __func__, lsta, lsta->state));
1832 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NONE);
1843 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
1846 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
1847 KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
1848 "NONE: %#x, nstate %d arg %d\n", __func__, lsta, lsta->state, nstate, arg));
1849 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NOTEXIST);
1857 lkpi_lsta_dump(lsta, ni, __func__, __LINE__); /* sta no longer save to use. */
1868 /* Remove ni reference for this cache of lsta. */
1872 lkpi_lsta_remove(lsta, lvif);
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
1949 struct lkpi_sta *lsta;
1977 lsta = lvif->lvif_bss;
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. */
1990 KASSERT(lsta->state == IEEE80211_STA_AUTH, ("%s: lsta %p state not "
1991 "AUTH: %#x\n", __func__, lsta, lsta->state));
1992 sta = LSTA_TO_STA(lsta);
1998 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_ASSOC);
2045 if (lsta->in_mgd) {
2049 lsta->in_mgd = false;
2076 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2077 KASSERT(lsta->state == IEEE80211_STA_ASSOC, ("%s: lsta %p state not "
2078 "ASSOC: %#x\n", __func__, lsta, lsta->state));
2079 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTHORIZED);
2124 struct lkpi_sta *lsta;
2147 lsta = lvif->lvif_bss;
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. */
2154 sta = LSTA_TO_STA(lsta);
2156 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2166 !lsta->in_mgd) {
2171 lsta->in_mgd = true;
2188 lkpi_80211_flush_tx(lhw, lsta);
2192 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2201 if (lsta->in_mgd) {
2206 lsta->in_mgd = false;
2220 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2221 KASSERT(lsta->state == IEEE80211_STA_AUTHORIZED, ("%s: lsta %p state not "
2222 "AUTHORIZED: %#x\n", __func__, lsta, lsta->state));
2223 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_ASSOC);
2230 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2233 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2234 KASSERT(lsta->state == IEEE80211_STA_ASSOC, ("%s: lsta %p state not "
2235 "ASSOC: %#x\n", __func__, lsta, lsta->state));
2236 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTH);
2243 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2266 struct lkpi_sta *lsta;
2290 lsta = lvif->lvif_bss;
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. */
2297 sta = LSTA_TO_STA(lsta);
2299 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2306 !lsta->in_mgd) {
2311 lsta->in_mgd = true;
2328 lkpi_80211_flush_tx(lhw, lsta);
2332 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2341 if (lsta->in_mgd) {
2346 lsta->in_mgd = false;
2358 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2359 KASSERT(lsta->state == IEEE80211_STA_AUTHORIZED, ("%s: lsta %p state not "
2360 "AUTHORIZED: %#x\n", __func__, lsta, lsta->state));
2361 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_ASSOC);
2368 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2371 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2372 KASSERT(lsta->state == IEEE80211_STA_ASSOC, ("%s: lsta %p state not "
2373 "ASSOC: %#x\n", __func__, lsta, lsta->state));
2374 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_AUTH);
2381 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2384 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2385 KASSERT(lsta->state == IEEE80211_STA_AUTH, ("%s: lsta %p state not "
2386 "AUTH: %#x\n", __func__, lsta, lsta->state));
2387 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NONE);
2420 lkpi_lsta_dump(lsta, ni, __func__, __LINE__);
2423 KASSERT(lsta != NULL, ("%s: ni %p lsta is NULL\n", __func__, ni));
2424 KASSERT(lsta->state == IEEE80211_STA_NONE, ("%s: lsta %p state not "
2425 "NONE: %#x, nstate %d arg %d\n", __func__, lsta, lsta->state, nstate, arg));
2426 error = lkpi_80211_mo_sta_state(hw, vif, lsta, IEEE80211_STA_NOTEXIST);
2434 lkpi_lsta_remove(lsta, lvif);
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
2652 * new node without us knowing and thus our ni/lsta are out of sync.
3614 struct lkpi_sta *lsta;
3628 lsta = lkpi_lsta_alloc(vap, mac, hw, ni);
3629 if (lsta == NULL) {
3681 struct lkpi_sta *lsta;
3685 lsta = ni->ni_drv_data;
3687 /* KASSERT lsta is not NULL here. Print ni/ni__refcnt. */
3691 * it is the same as lsta->ni.
3693 lkpi_lsta_free(lsta, ni);
3703 struct lkpi_sta *lsta;
3705 lsta = ni->ni_drv_data;
3706 LKPI_80211_LSTA_TXQ_LOCK(lsta);
3708 if (!lsta->added_to_drv || !lsta->txq_ready) {
3715 if (!lsta->txq_ready) {
3717 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
3727 mbufq_enqueue(&lsta->txq, m);
3728 taskqueue_enqueue(taskqueue_thread, &lsta->txq_task);
3729 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
3733 printf("%s:%d lsta %p ni %p %6D mbuf_qlen %d\n",
3734 __func__, __LINE__, lsta, ni, ni->ni_macaddr, ":",
3735 mbufq_len(&lsta->txq));
3742 lkpi_80211_txq_tx_one(struct lkpi_sta *lsta, struct mbuf *m)
3770 ni = lsta->ni;
3879 sta = LSTA_TO_STA(lsta);
3881 info->control.hw_key = lsta->kc;
3889 lsta->added_to_drv &&
3892 } else if (lsta->added_to_drv &&
3899 KASSERT(ltxq != NULL, ("%s: lsta %p sta %p m %p skb %p "
3900 "ltxq %p != NULL\n", __func__, lsta, sta, m, skb, ltxq));
3906 printf("%s:%d mo_wake_tx_queue :: %d %u lsta %p sta %p "
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, ":",
3939 struct lkpi_sta *lsta;
3944 lsta = ctx;
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, ":",
3950 pending, mbufq_len(&lsta->txq));
3955 LKPI_80211_LSTA_TXQ_LOCK(lsta);
3957 * Do not re-check lsta->txq_ready here; we may have a pending
3965 shall_tx = lsta->added_to_drv && lsta->txq_ready;
3972 shall_tx = lsta->txq_ready;
3975 mbufq_concat(&mq, &lsta->txq);
3978 * lkpi_lsta_free() will drain the lsta->txq and free the mbufs.
3980 LKPI_80211_LSTA_TXQ_UNLOCK(lsta);
3984 lkpi_80211_txq_tx_one(lsta, m);
4064 struct lkpi_sta *lsta;
4075 lsta = ni->ni_drv_data;
4076 sta = LSTA_TO_STA(lsta);
4078 if (!lsta->added_to_drv) {
4079 ic_printf(ic, "%s: lsta %p ni %p, sta %p not added to firmware\n",
4080 __func__, lsta, ni, sta);
4124 struct lkpi_sta *lsta;
4135 lsta = ni->ni_drv_data;
4136 sta = LSTA_TO_STA(lsta);
4138 if (!lsta->added_to_drv) {
4139 ic_printf(ic, "%s: lsta %p ni %p, sta %p not added to firmware\n",
4140 __func__, lsta, ni, sta);
4200 struct lkpi_sta *lsta;
4211 lsta = ni->ni_drv_data;
4212 sta = LSTA_TO_STA(lsta);
4214 if (!lsta->added_to_drv) {
4215 ic_printf(ic, "%s: lsta %p ni %p, sta %p not added to firmware\n",
4216 __func__, lsta, ni, sta);
4286 struct lkpi_sta *lsta;
4297 lsta = ni->ni_drv_data;
4298 sta = LSTA_TO_STA(lsta);
4302 if (!lsta->added_to_drv) {
4303 ic_printf(ic, "%s: lsta %p ni %p vap %p, sta %p not added to firmware\n",
4304 __func__, lsta, ni, vap, sta);
4357 struct lkpi_sta *lsta;
4382 lsta = ni->ni_drv_data;
4383 sta = LSTA_TO_STA(lsta);
5130 struct lkpi_sta *lsta;
5142 TAILQ_FOREACH(lsta, &lvif->lsta_head, lsta_entry) {
5143 if (!lsta->added_to_drv)
5145 sta = LSTA_TO_STA(lsta);
5285 struct lkpi_sta *lsta;
5399 lsta = NULL;
5401 lsta = STA_TO_LSTA(sta);
5402 ni = ieee80211_ref_node(lsta->ni);
5409 lsta = ni->ni_drv_data;
5423 printf("TRACE-RX: %s: sta %p lsta %p state %d ni %p vap %p%s\n",
5424 __func__, sta, lsta, (lsta != NULL) ? lsta->state : -1,
5751 struct lkpi_sta *lsta, *temp;
5754 TAILQ_FOREACH_SAFE(lsta, &lvif->lsta_head, lsta_entry, temp) {
5755 if (lsta->ni == ni) {
5757 return (lsta);
5770 struct lkpi_sta *lsta, *temp;
5776 TAILQ_FOREACH_SAFE(lsta, &lvif->lsta_head, lsta_entry, temp) {
5777 sta = LSTA_TO_STA(lsta);
5793 struct lkpi_sta *lsta;
5816 lsta = STA_TO_LSTA(sta);
5817 if (!lsta->added_to_drv)
6286 struct lkpi_sta *lsta;
6324 TAILQ_FOREACH(lsta, &lvif->lsta_head, lsta_entry) {
6327 sta = LSTA_TO_STA(lsta);