Lines Matching refs:tx_sa
303 struct macsec_tx_sa *tx_sa; member
540 static u32 tx_sa_update_pn(struct macsec_tx_sa *tx_sa, struct macsec_secy *secy) in tx_sa_update_pn() argument
544 spin_lock_bh(&tx_sa->lock); in tx_sa_update_pn()
545 pn = tx_sa->next_pn; in tx_sa_update_pn()
547 tx_sa->next_pn++; in tx_sa_update_pn()
548 if (tx_sa->next_pn == 0) { in tx_sa_update_pn()
550 tx_sa->active = false; in tx_sa_update_pn()
554 spin_unlock_bh(&tx_sa->lock); in tx_sa_update_pn()
569 struct macsec_tx_sa *tx_sa) in macsec_count_tx() argument
577 this_cpu_inc(tx_sa->stats->OutPktsEncrypted); in macsec_count_tx()
581 this_cpu_inc(tx_sa->stats->OutPktsProtected); in macsec_count_tx()
603 struct macsec_tx_sa *sa = macsec_skb_cb(skb)->tx_sa; in macsec_encrypt_done()
610 macsec_count_tx(skb, &macsec->secy.tx_sc, macsec_skb_cb(skb)->tx_sa); in macsec_encrypt_done()
663 struct macsec_tx_sa *tx_sa; in macsec_encrypt() local
672 tx_sa = macsec_txsa_get(tx_sc->sa[tx_sc->encoding_sa]); in macsec_encrypt()
673 if (!tx_sa) { in macsec_encrypt()
689 macsec_txsa_put(tx_sa); in macsec_encrypt()
696 macsec_txsa_put(tx_sa); in macsec_encrypt()
707 pn = tx_sa_update_pn(tx_sa, secy); in macsec_encrypt()
709 macsec_txsa_put(tx_sa); in macsec_encrypt()
725 macsec_txsa_put(tx_sa); in macsec_encrypt()
732 macsec_txsa_put(tx_sa); in macsec_encrypt()
737 req = macsec_alloc_req(tx_sa->key.tfm, &iv, &sg, ret); in macsec_encrypt()
739 macsec_txsa_put(tx_sa); in macsec_encrypt()
750 macsec_txsa_put(tx_sa); in macsec_encrypt()
766 macsec_skb_cb(skb)->tx_sa = tx_sa; in macsec_encrypt()
777 macsec_txsa_put(tx_sa); in macsec_encrypt()
783 macsec_txsa_put(tx_sa); in macsec_encrypt()
1431 static int init_tx_sa(struct macsec_tx_sa *tx_sa, char *sak, int key_len, in init_tx_sa() argument
1434 tx_sa->stats = alloc_percpu(struct macsec_tx_sa_stats); in init_tx_sa()
1435 if (!tx_sa->stats) in init_tx_sa()
1438 tx_sa->key.tfm = macsec_alloc_tfm(sak, key_len, icv_len); in init_tx_sa()
1439 if (IS_ERR(tx_sa->key.tfm)) { in init_tx_sa()
1440 free_percpu(tx_sa->stats); in init_tx_sa()
1441 return PTR_ERR(tx_sa->key.tfm); in init_tx_sa()
1444 tx_sa->active = false; in init_tx_sa()
1445 refcount_set(&tx_sa->refcnt, 1); in init_tx_sa()
1446 spin_lock_init(&tx_sa->lock); in init_tx_sa()
1451 static void clear_tx_sa(struct macsec_tx_sa *tx_sa) in clear_tx_sa() argument
1453 tx_sa->active = false; in clear_tx_sa()
1455 macsec_txsa_put(tx_sa); in clear_tx_sa()
1498 struct macsec_tx_sa *tx_sa; in get_txsa_from_nl() local
1515 tx_sa = rtnl_dereference(tx_sc->sa[*assoc_num]); in get_txsa_from_nl()
1516 if (!tx_sa) in get_txsa_from_nl()
1522 return tx_sa; in get_txsa_from_nl()
1821 struct macsec_tx_sa *tx_sa; in macsec_add_txsa() local
1854 tx_sa = rtnl_dereference(tx_sc->sa[assoc_num]); in macsec_add_txsa()
1855 if (tx_sa) { in macsec_add_txsa()
1860 tx_sa = kmalloc(sizeof(*tx_sa), GFP_KERNEL); in macsec_add_txsa()
1861 if (!tx_sa) { in macsec_add_txsa()
1866 err = init_tx_sa(tx_sa, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]), in macsec_add_txsa()
1869 kfree(tx_sa); in macsec_add_txsa()
1874 nla_memcpy(tx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEYID], MACSEC_KEYID_LEN); in macsec_add_txsa()
1876 spin_lock_bh(&tx_sa->lock); in macsec_add_txsa()
1877 tx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]); in macsec_add_txsa()
1878 spin_unlock_bh(&tx_sa->lock); in macsec_add_txsa()
1881 tx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]); in macsec_add_txsa()
1883 if (assoc_num == tx_sc->encoding_sa && tx_sa->active) in macsec_add_txsa()
1886 rcu_assign_pointer(tx_sc->sa[assoc_num], tx_sa); in macsec_add_txsa()
1980 struct macsec_tx_sa *tx_sa; in macsec_del_txsa() local
1991 tx_sa = get_txsa_from_nl(genl_info_net(info), attrs, tb_sa, in macsec_del_txsa()
1993 if (IS_ERR(tx_sa)) { in macsec_del_txsa()
1995 return PTR_ERR(tx_sa); in macsec_del_txsa()
1998 if (tx_sa->active) { in macsec_del_txsa()
2004 clear_tx_sa(tx_sa); in macsec_del_txsa()
2038 struct macsec_tx_sa *tx_sa; in macsec_upd_txsa() local
2052 tx_sa = get_txsa_from_nl(genl_info_net(info), attrs, tb_sa, in macsec_upd_txsa()
2054 if (IS_ERR(tx_sa)) { in macsec_upd_txsa()
2056 return PTR_ERR(tx_sa); in macsec_upd_txsa()
2060 spin_lock_bh(&tx_sa->lock); in macsec_upd_txsa()
2061 tx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]); in macsec_upd_txsa()
2062 spin_unlock_bh(&tx_sa->lock); in macsec_upd_txsa()
2066 tx_sa->active = nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]); in macsec_upd_txsa()
2069 secy->operational = tx_sa->active; in macsec_upd_txsa()
2458 struct macsec_tx_sa *tx_sa = rtnl_dereference(tx_sc->sa[i]); in dump_secy() local
2461 if (!tx_sa) in dump_secy()
2471 nla_put_u32(skb, MACSEC_SA_ATTR_PN, tx_sa->next_pn) || in dump_secy()
2472 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, tx_sa->key.id) || in dump_secy()
2473 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, tx_sa->active)) { in dump_secy()
2485 if (copy_tx_sa_stats(skb, tx_sa->stats)) { in dump_secy()
2743 macsec_count_tx(skb, &macsec->secy.tx_sc, macsec_skb_cb(skb)->tx_sa); in macsec_start_xmit()
3042 struct macsec_tx_sa *tx_sa; in macsec_changelink_common() local
3045 tx_sa = rtnl_dereference(tx_sc->sa[tx_sc->encoding_sa]); in macsec_changelink_common()
3047 secy->operational = tx_sa && tx_sa->active; in macsec_changelink_common()