Lines Matching refs:rx_sa

304 		struct macsec_rx_sa *rx_sa;  member
790 struct macsec_rx_sa *rx_sa = macsec_skb_cb(skb)->rx_sa; in macsec_post_decrypt() local
791 struct pcpu_rx_sc_stats *rxsc_stats = this_cpu_ptr(rx_sa->sc->stats); in macsec_post_decrypt()
795 spin_lock(&rx_sa->lock); in macsec_post_decrypt()
796 if (rx_sa->next_pn >= secy->replay_window) in macsec_post_decrypt()
797 lowest_pn = rx_sa->next_pn - secy->replay_window; in macsec_post_decrypt()
803 spin_unlock(&rx_sa->lock); in macsec_post_decrypt()
820 spin_unlock(&rx_sa->lock); in macsec_post_decrypt()
834 this_cpu_inc(rx_sa->stats->InPktsInvalid); in macsec_post_decrypt()
847 this_cpu_inc(rx_sa->stats->InPktsOK); in macsec_post_decrypt()
851 if (pn >= rx_sa->next_pn) in macsec_post_decrypt()
852 rx_sa->next_pn = pn + 1; in macsec_post_decrypt()
853 spin_unlock(&rx_sa->lock); in macsec_post_decrypt()
892 struct macsec_rx_sa *rx_sa = macsec_skb_cb(skb)->rx_sa; in macsec_decrypt_done() local
893 struct macsec_rx_sc *rx_sc = rx_sa->sc; in macsec_decrypt_done()
921 macsec_rxsa_put(rx_sa); in macsec_decrypt_done()
928 struct macsec_rx_sa *rx_sa, in macsec_decrypt() argument
950 req = macsec_alloc_req(rx_sa->key.tfm, &iv, &sg, ret); in macsec_decrypt()
1083 struct macsec_rx_sa *rx_sa; in macsec_handle_frame() local
1169 rx_sa = macsec_rxsa_get(rx_sc->sa[macsec_skb_cb(skb)->assoc_num]); in macsec_handle_frame()
1170 if (!rx_sa) { in macsec_handle_frame()
1198 spin_lock(&rx_sa->lock); in macsec_handle_frame()
1199 late = rx_sa->next_pn >= secy->replay_window && in macsec_handle_frame()
1200 pn < (rx_sa->next_pn - secy->replay_window); in macsec_handle_frame()
1201 spin_unlock(&rx_sa->lock); in macsec_handle_frame()
1211 macsec_skb_cb(skb)->rx_sa = rx_sa; in macsec_handle_frame()
1216 skb = macsec_decrypt(skb, dev, rx_sa, sci, secy); in macsec_handle_frame()
1221 macsec_rxsa_put(rx_sa); in macsec_handle_frame()
1237 if (rx_sa) in macsec_handle_frame()
1238 macsec_rxsa_put(rx_sa); in macsec_handle_frame()
1253 macsec_rxsa_put(rx_sa); in macsec_handle_frame()
1333 static int init_rx_sa(struct macsec_rx_sa *rx_sa, char *sak, int key_len, in init_rx_sa() argument
1336 rx_sa->stats = alloc_percpu(struct macsec_rx_sa_stats); in init_rx_sa()
1337 if (!rx_sa->stats) in init_rx_sa()
1340 rx_sa->key.tfm = macsec_alloc_tfm(sak, key_len, icv_len); in init_rx_sa()
1341 if (IS_ERR(rx_sa->key.tfm)) { in init_rx_sa()
1342 free_percpu(rx_sa->stats); in init_rx_sa()
1343 return PTR_ERR(rx_sa->key.tfm); in init_rx_sa()
1346 rx_sa->active = false; in init_rx_sa()
1347 rx_sa->next_pn = 1; in init_rx_sa()
1348 refcount_set(&rx_sa->refcnt, 1); in init_rx_sa()
1349 spin_lock_init(&rx_sa->lock); in init_rx_sa()
1354 static void clear_rx_sa(struct macsec_rx_sa *rx_sa) in clear_rx_sa() argument
1356 rx_sa->active = false; in clear_rx_sa()
1358 macsec_rxsa_put(rx_sa); in clear_rx_sa()
1566 struct macsec_rx_sa *rx_sa; in get_rxsa_from_nl() local
1579 rx_sa = rtnl_dereference(rx_sc->sa[*assoc_num]); in get_rxsa_from_nl()
1580 if (!rx_sa) in get_rxsa_from_nl()
1584 return rx_sa; in get_rxsa_from_nl()
1665 struct macsec_rx_sa *rx_sa; in macsec_add_rxsa() local
1699 rx_sa = rtnl_dereference(rx_sc->sa[assoc_num]); in macsec_add_rxsa()
1700 if (rx_sa) { in macsec_add_rxsa()
1705 rx_sa = kmalloc(sizeof(*rx_sa), GFP_KERNEL); in macsec_add_rxsa()
1706 if (!rx_sa) { in macsec_add_rxsa()
1711 err = init_rx_sa(rx_sa, nla_data(tb_sa[MACSEC_SA_ATTR_KEY]), in macsec_add_rxsa()
1714 kfree(rx_sa); in macsec_add_rxsa()
1720 spin_lock_bh(&rx_sa->lock); in macsec_add_rxsa()
1721 rx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]); in macsec_add_rxsa()
1722 spin_unlock_bh(&rx_sa->lock); in macsec_add_rxsa()
1726 rx_sa->active = !!nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]); in macsec_add_rxsa()
1728 nla_memcpy(rx_sa->key.id, tb_sa[MACSEC_SA_ATTR_KEYID], MACSEC_KEYID_LEN); in macsec_add_rxsa()
1729 rx_sa->sc = rx_sc; in macsec_add_rxsa()
1730 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa); in macsec_add_rxsa()
1899 struct macsec_rx_sa *rx_sa; in macsec_del_rxsa() local
1914 rx_sa = get_rxsa_from_nl(genl_info_net(info), attrs, tb_rxsc, tb_sa, in macsec_del_rxsa()
1916 if (IS_ERR(rx_sa)) { in macsec_del_rxsa()
1918 return PTR_ERR(rx_sa); in macsec_del_rxsa()
1921 if (rx_sa->active) { in macsec_del_rxsa()
1927 clear_rx_sa(rx_sa); in macsec_del_rxsa()
2082 struct macsec_rx_sa *rx_sa; in macsec_upd_rxsa() local
2100 rx_sa = get_rxsa_from_nl(genl_info_net(info), attrs, tb_rxsc, tb_sa, in macsec_upd_rxsa()
2102 if (IS_ERR(rx_sa)) { in macsec_upd_rxsa()
2104 return PTR_ERR(rx_sa); in macsec_upd_rxsa()
2108 spin_lock_bh(&rx_sa->lock); in macsec_upd_rxsa()
2109 rx_sa->next_pn = nla_get_u32(tb_sa[MACSEC_SA_ATTR_PN]); in macsec_upd_rxsa()
2110 spin_unlock_bh(&rx_sa->lock); in macsec_upd_rxsa()
2114 rx_sa->active = nla_get_u8(tb_sa[MACSEC_SA_ATTR_ACTIVE]); in macsec_upd_rxsa()
2542 struct macsec_rx_sa *rx_sa = rtnl_dereference(rx_sc->sa[i]); in dump_secy() local
2545 if (!rx_sa) in dump_secy()
2563 if (copy_rx_sa_stats(skb, rx_sa->stats)) { in dump_secy()
2573 nla_put_u32(skb, MACSEC_SA_ATTR_PN, rx_sa->next_pn) || in dump_secy()
2574 nla_put(skb, MACSEC_SA_ATTR_KEYID, MACSEC_KEYID_LEN, rx_sa->key.id) || in dump_secy()
2575 nla_put_u8(skb, MACSEC_SA_ATTR_ACTIVE, rx_sa->active)) { in dump_secy()