Lines Matching refs:wcid

1160 void mt76_wcid_key_setup(struct mt76_dev *dev, struct mt76_wcid *wcid,  in mt76_wcid_key_setup()  argument
1166 wcid->rx_check_pn = false; in mt76_wcid_key_setup()
1174 wcid->rx_check_pn = true; in mt76_wcid_key_setup()
1179 memcpy(wcid->rx_key_pn[i], seq.ccmp.pn, sizeof(seq.ccmp.pn)); in mt76_wcid_key_setup()
1184 memcpy(wcid->rx_key_pn[i], seq.ccmp.pn, sizeof(seq.ccmp.pn)); in mt76_wcid_key_setup()
1265 if (mstat.wcid) { in mt76_rx_convert()
1266 status->link_valid = mstat.wcid->link_valid; in mt76_rx_convert()
1267 status->link_id = mstat.wcid->link_id; in mt76_rx_convert()
1270 *sta = wcid_to_sta(mstat.wcid); in mt76_rx_convert()
1278 struct mt76_wcid *wcid = status->wcid; in mt76_check_ccmp_pn() local
1289 if (!wcid || !wcid->rx_check_pn) in mt76_check_ccmp_pn()
1318 BUILD_BUG_ON(sizeof(status->iv) != sizeof(wcid->rx_key_pn[0])); in mt76_check_ccmp_pn()
1319 ret = memcmp(status->iv, wcid->rx_key_pn[security_idx], in mt76_check_ccmp_pn()
1326 memcpy(wcid->rx_key_pn[security_idx], status->iv, sizeof(status->iv)); in mt76_check_ccmp_pn()
1336 struct mt76_wcid *wcid = status->wcid; in mt76_airtime_report() local
1354 if (!wcid || !wcid->sta) in mt76_airtime_report()
1357 sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv); in mt76_airtime_report()
1364 struct mt76_wcid *wcid; in mt76_airtime_flush_ampdu() local
1371 if (wcid_idx < ARRAY_SIZE(dev->wcid)) in mt76_airtime_flush_ampdu()
1372 wcid = rcu_dereference(dev->wcid[wcid_idx]); in mt76_airtime_flush_ampdu()
1374 wcid = NULL; in mt76_airtime_flush_ampdu()
1375 dev->rx_ampdu_status.wcid = wcid; in mt76_airtime_flush_ampdu()
1387 struct mt76_wcid *wcid = status->wcid; in mt76_airtime_check() local
1392 if (!wcid || !wcid->sta) { in mt76_airtime_check()
1401 wcid = NULL; in mt76_airtime_check()
1412 dev->rx_ampdu_status.wcid_idx = wcid ? wcid->idx : 0xff; in mt76_airtime_check()
1430 struct mt76_wcid *wcid = status->wcid; in mt76_check_sta() local
1435 if (ieee80211_is_pspoll(hdr->frame_control) && !wcid && in mt76_check_sta()
1439 wcid = status->wcid = (struct mt76_wcid *)sta->drv_priv; in mt76_check_sta()
1444 if (!wcid || !wcid->sta) in mt76_check_sta()
1447 sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv); in mt76_check_sta()
1450 ewma_signal_add(&wcid->rssi, -status->signal); in mt76_check_sta()
1452 wcid->inactive_count = 0; in mt76_check_sta()
1457 if (!test_bit(MT_WCID_FLAG_CHECK_PS, &wcid->flags)) in mt76_check_sta()
1476 if (!!test_bit(MT_WCID_FLAG_PS, &wcid->flags) == ps) in mt76_check_sta()
1480 set_bit(MT_WCID_FLAG_PS, &wcid->flags); in mt76_check_sta()
1486 clear_bit(MT_WCID_FLAG_PS, &wcid->flags); in mt76_check_sta()
1559 struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv; in mt76_sta_add() local
1577 mtxq->wcid = wcid->idx; in mt76_sta_add()
1580 ewma_signal_init(&wcid->rssi); in mt76_sta_add()
1581 rcu_assign_pointer(dev->wcid[wcid->idx], wcid); in mt76_sta_add()
1584 mt76_wcid_init(wcid, phy->band_idx); in mt76_sta_add()
1595 struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv; in __mt76_sta_remove() local
1596 int i, idx = wcid->idx; in __mt76_sta_remove()
1598 for (i = 0; i < ARRAY_SIZE(wcid->aggr); i++) in __mt76_sta_remove()
1599 mt76_rx_aggr_stop(dev, wcid, i); in __mt76_sta_remove()
1604 mt76_wcid_cleanup(dev, wcid); in __mt76_sta_remove()
1667 struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv; in mt76_sta_pre_rcu_remove() local
1671 rcu_assign_pointer(dev->wcid[wcid->idx], NULL); in mt76_sta_pre_rcu_remove()
1677 void mt76_wcid_init(struct mt76_wcid *wcid, u8 band_idx) in mt76_wcid_init() argument
1679 wcid->hw_key_idx = -1; in mt76_wcid_init()
1680 wcid->phy_idx = band_idx; in mt76_wcid_init()
1682 INIT_LIST_HEAD(&wcid->tx_list); in mt76_wcid_init()
1683 skb_queue_head_init(&wcid->tx_pending); in mt76_wcid_init()
1684 skb_queue_head_init(&wcid->tx_offchannel); in mt76_wcid_init()
1686 INIT_LIST_HEAD(&wcid->list); in mt76_wcid_init()
1687 idr_init(&wcid->pktid); in mt76_wcid_init()
1689 INIT_LIST_HEAD(&wcid->poll_list); in mt76_wcid_init()
1693 void mt76_wcid_cleanup(struct mt76_dev *dev, struct mt76_wcid *wcid) in mt76_wcid_cleanup() argument
1695 struct mt76_phy *phy = mt76_dev_phy(dev, wcid->phy_idx); in mt76_wcid_cleanup()
1701 mt76_tx_status_skb_get(dev, wcid, -1, &list); in mt76_wcid_cleanup()
1704 idr_destroy(&wcid->pktid); in mt76_wcid_cleanup()
1708 if (!list_empty(&wcid->tx_list)) in mt76_wcid_cleanup()
1709 list_del_init(&wcid->tx_list); in mt76_wcid_cleanup()
1711 spin_lock(&wcid->tx_pending.lock); in mt76_wcid_cleanup()
1712 skb_queue_splice_tail_init(&wcid->tx_pending, &list); in mt76_wcid_cleanup()
1713 spin_unlock(&wcid->tx_pending.lock); in mt76_wcid_cleanup()
1724 void mt76_wcid_add_poll(struct mt76_dev *dev, struct mt76_wcid *wcid) in mt76_wcid_add_poll() argument
1730 if (list_empty(&wcid->poll_list)) in mt76_wcid_add_poll()
1731 list_add_tail(&wcid->poll_list, &dev->sta_poll_list); in mt76_wcid_add_poll()