Lines Matching refs:rx_sa

134 		struct macsec_rx_sa *rx_sa;
722 struct macsec_rx_sa *rx_sa = macsec_skb_cb(skb)->rx_sa;
723 struct pcpu_rx_sc_stats *rxsc_stats = this_cpu_ptr(rx_sa->sc->stats);
727 spin_lock(&rx_sa->lock);
728 if (rx_sa->next_pn_halves.lower >= secy->replay_window)
729 lowest_pn = rx_sa->next_pn_halves.lower - secy->replay_window;
736 spin_unlock(&rx_sa->lock);
755 spin_unlock(&rx_sa->lock);
763 this_cpu_inc(rx_sa->stats->InPktsNotValid);
771 this_cpu_inc(rx_sa->stats->InPktsInvalid);
784 this_cpu_inc(rx_sa->stats->InPktsOK);
789 if (pn + 1 > rx_sa->next_pn_halves.lower) {
790 rx_sa->next_pn_halves.lower = pn + 1;
792 !pn_same_half(pn, rx_sa->next_pn_halves.lower)) {
793 rx_sa->next_pn_halves.upper++;
794 rx_sa->next_pn_halves.lower = pn + 1;
797 spin_unlock(&rx_sa->lock);
832 struct macsec_rx_sa *rx_sa = macsec_skb_cb(skb)->rx_sa;
833 struct macsec_rx_sc *rx_sc = rx_sa->sc;
861 macsec_rxsa_put(rx_sa);
868 struct macsec_rx_sa *rx_sa,
891 req = macsec_alloc_req(rx_sa->key.tfm, &iv, &sg, ret);
901 pn_t recovered_pn = rx_sa->next_pn_halves;
904 if (hdr_pn < rx_sa->next_pn_halves.lower &&
905 !pn_same_half(hdr_pn, rx_sa->next_pn_halves.lower))
908 macsec_fill_iv_xpn(iv, rx_sa->ssci, recovered_pn.full64,
909 rx_sa->key.salt);
1091 struct macsec_rx_sa *rx_sa;
1175 rx_sa = macsec_rxsa_get(rx_sc->sa[macsec_skb_cb(skb)->assoc_num]);
1176 if (!rx_sa) {
1210 spin_lock(&rx_sa->lock);
1211 late = rx_sa->next_pn_halves.lower >= secy->replay_window &&
1212 hdr_pn < (rx_sa->next_pn_halves.lower - secy->replay_window);
1215 late = late && pn_same_half(rx_sa->next_pn_halves.lower, hdr_pn);
1216 spin_unlock(&rx_sa->lock);
1227 macsec_skb_cb(skb)->rx_sa = rx_sa;
1232 skb = macsec_decrypt(skb, dev, rx_sa, sci, secy);
1237 macsec_rxsa_put(rx_sa);
1254 if (rx_sa)
1255 macsec_rxsa_put(rx_sa);
1271 macsec_rxsa_put(rx_sa);
1352 static int init_rx_sa(struct macsec_rx_sa *rx_sa, char *sak, int key_len,
1355 rx_sa->stats = alloc_percpu(struct macsec_rx_sa_stats);
1356 if (!rx_sa->stats)
1359 rx_sa->key.tfm = macsec_alloc_tfm(sak, key_len, icv_len);
1360 if (IS_ERR(rx_sa->key.tfm)) {
1361 free_percpu(rx_sa->stats);
1362 return PTR_ERR(rx_sa->key.tfm);
1365 rx_sa->ssci = MACSEC_UNDEF_SSCI;
1366 rx_sa->active = false;
1367 rx_sa->next_pn = 1;
1368 refcount_set(&rx_sa->refcnt, 1);
1369 spin_lock_init(&rx_sa->lock);
1374 static void clear_rx_sa(struct macsec_rx_sa *rx_sa)
1376 rx_sa->active = false;
1378 macsec_rxsa_put(rx_sa);
1603 struct macsec_rx_sa *rx_sa;
1616 rx_sa = rtnl_dereference(rx_sc->sa[*assoc_num]);
1617 if (!rx_sa)
1621 return rx_sa;
1726 struct macsec_rx_sa *rx_sa;
1785 rx_sa = rtnl_dereference(rx_sc->sa[assoc_num]);
1786 if (rx_sa) {
1791 rx_sa = kmalloc(sizeof(*rx_sa), GFP_KERNEL);
1792 if (!rx_sa) {
1797 err = init_rx_sa(rx_sa, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
1800 kfree(rx_sa);
1806 spin_lock_bh(&rx_sa->lock);
1807 rx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
1808 spin_unlock_bh(&rx_sa->lock);
1812 rx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]);
1814 rx_sa->sc = rx_sc;
1817 rx_sa->ssci = nla_get_ssci(tb_sa[MACSEC_SA_ATTR_SSCI]);
1818 nla_memcpy(rx_sa->key.salt.bytes, tb_sa[MACSEC_SA_ATTR_SALT],
1834 ctx.sa.rx_sa = rx_sa;
1845 nla_memcpy(rx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEYID], MACSEC_KEYID_LEN);
1846 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa);
1853 macsec_rxsa_put(rx_sa);
2108 struct macsec_rx_sa *rx_sa;
2124 rx_sa = get_rxsa_from_nl(genl_info_net(info), attrs, tb_rxsc, tb_sa,
2126 if (IS_ERR(rx_sa)) {
2128 return PTR_ERR(rx_sa);
2131 if (rx_sa->active) {
2148 ctx.sa.rx_sa = rx_sa;
2157 clear_rx_sa(rx_sa);
2416 struct macsec_rx_sa *rx_sa;
2439 rx_sa = get_rxsa_from_nl(genl_info_net(info), attrs, tb_rxsc, tb_sa,
2441 if (IS_ERR(rx_sa)) {
2443 return PTR_ERR(rx_sa);
2457 spin_lock_bh(&rx_sa->lock);
2458 prev_pn = rx_sa->next_pn_halves;
2459 rx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
2460 spin_unlock_bh(&rx_sa->lock);
2463 was_active = rx_sa->active;
2465 rx_sa->active = nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]);
2479 ctx.sa.rx_sa = rx_sa;
2493 spin_lock_bh(&rx_sa->lock);
2494 rx_sa->next_pn_halves = prev_pn;
2495 spin_unlock_bh(&rx_sa->lock);
2497 rx_sa->active = was_active;
2717 struct macsec_rx_sa *rx_sa,
2731 ctx.sa.rx_sa = rx_sa;
2742 per_cpu_ptr(rx_sa->stats, cpu);
3193 struct macsec_rx_sa *rx_sa = rtnl_dereference(rx_sc->sa[i]);
3198 if (!rx_sa)
3218 get_rx_sa_stats(dev, rx_sc, i, rx_sa, &rx_sa_stats);
3229 pn = rx_sa->next_pn;
3232 pn = rx_sa->next_pn_halves.lower;
3238 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, rx_sa->key.id) ||
3239 (secy->xpn && nla_put_ssci(skb, MACSEC_SA_ATTR_SSCI, rx_sa->ssci)) ||
3240 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, rx_sa->active)) {