Lines Matching refs:wcid

1023 void mt76_wcid_key_setup(struct mt76_dev *dev, struct mt76_wcid *wcid,
1029 wcid->rx_check_pn = false;
1037 wcid->rx_check_pn = true;
1042 memcpy(wcid->rx_key_pn[i], seq.ccmp.pn, sizeof(seq.ccmp.pn));
1047 memcpy(wcid->rx_key_pn[i], seq.ccmp.pn, sizeof(seq.ccmp.pn));
1128 *sta = wcid_to_sta(mstat.wcid);
1136 struct mt76_wcid *wcid = status->wcid;
1147 if (!wcid || !wcid->rx_check_pn)
1176 BUILD_BUG_ON(sizeof(status->iv) != sizeof(wcid->rx_key_pn[0]));
1177 ret = memcmp(status->iv, wcid->rx_key_pn[security_idx],
1184 memcpy(wcid->rx_key_pn[security_idx], status->iv, sizeof(status->iv));
1194 struct mt76_wcid *wcid = status->wcid;
1212 if (!wcid || !wcid->sta)
1215 sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv);
1222 struct mt76_wcid *wcid;
1229 if (wcid_idx < ARRAY_SIZE(dev->wcid))
1230 wcid = rcu_dereference(dev->wcid[wcid_idx]);
1232 wcid = NULL;
1233 dev->rx_ampdu_status.wcid = wcid;
1245 struct mt76_wcid *wcid = status->wcid;
1250 if (!wcid || !wcid->sta) {
1259 wcid = NULL;
1270 dev->rx_ampdu_status.wcid_idx = wcid ? wcid->idx : 0xff;
1288 struct mt76_wcid *wcid = status->wcid;
1293 if (ieee80211_is_pspoll(hdr->frame_control) && !wcid &&
1297 wcid = status->wcid = (struct mt76_wcid *)sta->drv_priv;
1302 if (!wcid || !wcid->sta)
1305 sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv);
1308 ewma_signal_add(&wcid->rssi, -status->signal);
1310 wcid->inactive_count = 0;
1315 if (!test_bit(MT_WCID_FLAG_CHECK_PS, &wcid->flags))
1334 if (!!test_bit(MT_WCID_FLAG_PS, &wcid->flags) == ps)
1338 set_bit(MT_WCID_FLAG_PS, &wcid->flags);
1344 clear_bit(MT_WCID_FLAG_PS, &wcid->flags);
1413 struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv;
1431 mtxq->wcid = wcid->idx;
1434 ewma_signal_init(&wcid->rssi);
1436 mt76_wcid_mask_set(dev->wcid_phy_mask, wcid->idx);
1437 wcid->phy_idx = phy->band_idx;
1438 rcu_assign_pointer(dev->wcid[wcid->idx], wcid);
1440 mt76_wcid_init(wcid);
1450 struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv;
1451 int i, idx = wcid->idx;
1453 for (i = 0; i < ARRAY_SIZE(wcid->aggr); i++)
1454 mt76_rx_aggr_stop(dev, wcid, i);
1459 mt76_wcid_cleanup(dev, wcid);
1505 struct mt76_wcid *wcid = (struct mt76_wcid *)sta->drv_priv;
1509 rcu_assign_pointer(dev->wcid[wcid->idx], NULL);
1515 void mt76_wcid_init(struct mt76_wcid *wcid)
1517 INIT_LIST_HEAD(&wcid->tx_list);
1518 skb_queue_head_init(&wcid->tx_pending);
1520 INIT_LIST_HEAD(&wcid->list);
1521 idr_init(&wcid->pktid);
1525 void mt76_wcid_cleanup(struct mt76_dev *dev, struct mt76_wcid *wcid)
1527 struct mt76_phy *phy = dev->phys[wcid->phy_idx];
1533 mt76_tx_status_skb_get(dev, wcid, -1, &list);
1536 idr_destroy(&wcid->pktid);
1540 if (!list_empty(&wcid->tx_list))
1541 list_del_init(&wcid->tx_list);
1543 spin_lock(&wcid->tx_pending.lock);
1544 skb_queue_splice_tail_init(&wcid->tx_pending, &list);
1545 spin_unlock(&wcid->tx_pending.lock);