Lines Matching refs:tx_sa

133 		struct macsec_tx_sa *tx_sa;
446 struct macsec_tx_sa *tx_sa)
449 tx_sa->active = false;
454 void macsec_pn_wrapped(struct macsec_secy *secy, struct macsec_tx_sa *tx_sa)
456 spin_lock_bh(&tx_sa->lock);
457 __macsec_pn_wrapped(secy, tx_sa);
458 spin_unlock_bh(&tx_sa->lock);
462 static pn_t tx_sa_update_pn(struct macsec_tx_sa *tx_sa,
467 spin_lock_bh(&tx_sa->lock);
469 pn = tx_sa->next_pn_halves;
471 tx_sa->next_pn++;
473 tx_sa->next_pn_halves.lower++;
475 if (tx_sa->next_pn == 0)
476 __macsec_pn_wrapped(secy, tx_sa);
477 spin_unlock_bh(&tx_sa->lock);
501 struct macsec_tx_sa *tx_sa)
510 this_cpu_inc(tx_sa->stats->OutPktsEncrypted);
514 this_cpu_inc(tx_sa->stats->OutPktsProtected);
530 struct macsec_tx_sa *sa = macsec_skb_cb(skb)->tx_sa;
536 macsec_count_tx(skb, &macsec->secy.tx_sc, macsec_skb_cb(skb)->tx_sa);
591 struct macsec_tx_sa *tx_sa;
600 tx_sa = macsec_txsa_get(tx_sc->sa[tx_sc->encoding_sa]);
601 if (!tx_sa) {
617 macsec_txsa_put(tx_sa);
624 macsec_txsa_put(tx_sa);
635 pn = tx_sa_update_pn(tx_sa, secy);
637 macsec_txsa_put(tx_sa);
653 macsec_txsa_put(tx_sa);
660 macsec_txsa_put(tx_sa);
665 req = macsec_alloc_req(tx_sa->key.tfm, &iv, &sg, ret);
667 macsec_txsa_put(tx_sa);
673 macsec_fill_iv_xpn(iv, tx_sa->ssci, pn.full64, tx_sa->key.salt);
681 macsec_txsa_put(tx_sa);
697 macsec_skb_cb(skb)->tx_sa = tx_sa;
709 macsec_txsa_put(tx_sa);
715 macsec_txsa_put(tx_sa);
1452 static int init_tx_sa(struct macsec_tx_sa *tx_sa, char *sak, int key_len,
1455 tx_sa->stats = alloc_percpu(struct macsec_tx_sa_stats);
1456 if (!tx_sa->stats)
1459 tx_sa->key.tfm = macsec_alloc_tfm(sak, key_len, icv_len);
1460 if (IS_ERR(tx_sa->key.tfm)) {
1461 free_percpu(tx_sa->stats);
1462 return PTR_ERR(tx_sa->key.tfm);
1465 tx_sa->ssci = MACSEC_UNDEF_SSCI;
1466 tx_sa->active = false;
1467 refcount_set(&tx_sa->refcnt, 1);
1468 spin_lock_init(&tx_sa->lock);
1473 static void clear_tx_sa(struct macsec_tx_sa *tx_sa)
1475 tx_sa->active = false;
1477 macsec_txsa_put(tx_sa);
1535 struct macsec_tx_sa *tx_sa;
1552 tx_sa = rtnl_dereference(tx_sc->sa[*assoc_num]);
1553 if (!tx_sa)
1559 return tx_sa;
1970 struct macsec_tx_sa *tx_sa;
2028 tx_sa = rtnl_dereference(tx_sc->sa[assoc_num]);
2029 if (tx_sa) {
2034 tx_sa = kmalloc(sizeof(*tx_sa), GFP_KERNEL);
2035 if (!tx_sa) {
2040 err = init_tx_sa(tx_sa, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]),
2043 kfree(tx_sa);
2048 spin_lock_bh(&tx_sa->lock);
2049 tx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
2050 spin_unlock_bh(&tx_sa->lock);
2053 tx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]);
2056 if (assoc_num == tx_sc->encoding_sa && tx_sa->active)
2060 tx_sa->ssci = nla_get_ssci(tb_sa[MACSEC_SA_ATTR_SSCI]);
2061 nla_memcpy(tx_sa->key.salt.bytes, tb_sa[MACSEC_SA_ATTR_SALT],
2077 ctx.sa.tx_sa = tx_sa;
2088 nla_memcpy(tx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEYID], MACSEC_KEYID_LEN);
2089 rcu_assign_pointer(tx_sc->sa[assoc_num], tx_sa);
2097 macsec_txsa_put(tx_sa);
2237 struct macsec_tx_sa *tx_sa;
2249 tx_sa = get_txsa_from_nl(genl_info_net(info), attrs, tb_sa,
2251 if (IS_ERR(tx_sa)) {
2253 return PTR_ERR(tx_sa);
2256 if (tx_sa->active) {
2273 ctx.sa.tx_sa = tx_sa;
2282 clear_tx_sa(tx_sa);
2322 struct macsec_tx_sa *tx_sa;
2341 tx_sa = get_txsa_from_nl(genl_info_net(info), attrs, tb_sa,
2343 if (IS_ERR(tx_sa)) {
2345 return PTR_ERR(tx_sa);
2359 spin_lock_bh(&tx_sa->lock);
2360 prev_pn = tx_sa->next_pn_halves;
2361 tx_sa->next_pn = nla_get_u64(tb_sa[MACSEC_SA_ATTR_PN]);
2362 spin_unlock_bh(&tx_sa->lock);
2365 was_active = tx_sa->active;
2367 tx_sa->active = nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]);
2371 secy->operational = tx_sa->active;
2385 ctx.sa.tx_sa = tx_sa;
2400 spin_lock_bh(&tx_sa->lock);
2401 tx_sa->next_pn_halves = prev_pn;
2402 spin_unlock_bh(&tx_sa->lock);
2404 tx_sa->active = was_active;
2673 struct macsec_tx_sa *tx_sa,
2687 ctx.sa.tx_sa = tx_sa;
2697 per_cpu_ptr(tx_sa->stats, cpu);
3093 struct macsec_tx_sa *tx_sa = rtnl_dereference(tx_sc->sa[i]);
3098 if (!tx_sa)
3114 get_tx_sa_stats(dev, i, tx_sa, &tx_sa_stats);
3124 pn = tx_sa->next_pn;
3127 pn = tx_sa->next_pn_halves.lower;
3133 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, tx_sa->key.id) ||
3134 (secy->xpn && nla_put_ssci(skb, MACSEC_SA_ATTR_SSCI, tx_sa->ssci)) ||
3135 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, tx_sa->active)) {
3427 macsec_count_tx(skb, &macsec->secy.tx_sc, macsec_skb_cb(skb)->tx_sa);
3743 struct macsec_tx_sa *tx_sa;
3746 tx_sa = rtnl_dereference(tx_sc->sa[tx_sc->encoding_sa]);
3748 secy->operational = tx_sa && tx_sa->active;