Lines Matching refs:rx_sc
55 for (sc = rcu_dereference_bh(secy->rx_sc); \
59 for (sc = rtnl_dereference(secy->rx_sc); \
160 struct macsec_rx_sc *rx_sc = container_of(head, struct macsec_rx_sc, rcu_head); in free_rx_sc_rcu() local
162 free_percpu(rx_sc->stats); in free_rx_sc_rcu()
163 kfree(rx_sc); in free_rx_sc_rcu()
824 struct macsec_rx_sc *rx_sc = rx_sa->sc; in macsec_decrypt_done() local
853 macsec_rxsc_put(rx_sc); in macsec_decrypt_done()
960 struct macsec_rx_sc *rx_sc; in find_rx_sc() local
962 for_each_rxsc(secy, rx_sc) { in find_rx_sc()
963 if (rx_sc->sci == sci) in find_rx_sc()
964 return rx_sc; in find_rx_sc()
972 struct macsec_rx_sc *rx_sc; in find_rx_sc_rtnl() local
974 for_each_rxsc_rtnl(secy, rx_sc) { in find_rx_sc_rtnl()
975 if (rx_sc->sci == sci) in find_rx_sc_rtnl()
976 return rx_sc; in find_rx_sc_rtnl()
1014 struct macsec_rx_sc *rx_sc; in handle_not_macsec() local
1021 rx_sc = find_rx_sc(&macsec->secy, in handle_not_macsec()
1023 if (!rx_sc) in handle_not_macsec()
1107 struct macsec_rx_sc *rx_sc; in macsec_handle_frame() local
1171 rx_sc = sc; in macsec_handle_frame()
1182 rxsc_stats = this_cpu_ptr(rx_sc->stats); in macsec_handle_frame()
1192 rx_sa = macsec_rxsa_get(rx_sc->sa[macsec_skb_cb(skb)->assoc_num]); in macsec_handle_frame()
1250 macsec_rxsc_put(rx_sc); in macsec_handle_frame()
1268 macsec_rxsc_put(rx_sc); in macsec_handle_frame()
1285 macsec_rxsc_put(rx_sc); in macsec_handle_frame()
1393 static void free_rx_sc(struct macsec_rx_sc *rx_sc) in free_rx_sc() argument
1398 struct macsec_rx_sa *sa = rtnl_dereference(rx_sc->sa[i]); in free_rx_sc()
1400 RCU_INIT_POINTER(rx_sc->sa[i], NULL); in free_rx_sc()
1405 macsec_rxsc_put(rx_sc); in free_rx_sc()
1410 struct macsec_rx_sc *rx_sc, __rcu **rx_scp; in del_rx_sc() local
1412 for (rx_scp = &secy->rx_sc, rx_sc = rtnl_dereference(*rx_scp); in del_rx_sc()
1413 rx_sc; in del_rx_sc()
1414 rx_scp = &rx_sc->next, rx_sc = rtnl_dereference(*rx_scp)) { in del_rx_sc()
1415 if (rx_sc->sci == sci) { in del_rx_sc()
1416 if (rx_sc->active) in del_rx_sc()
1418 rcu_assign_pointer(*rx_scp, rx_sc->next); in del_rx_sc()
1419 return rx_sc; in del_rx_sc()
1429 struct macsec_rx_sc *rx_sc; in create_rx_sc() local
1440 rx_sc = kzalloc(sizeof(*rx_sc), GFP_KERNEL); in create_rx_sc()
1441 if (!rx_sc) in create_rx_sc()
1444 rx_sc->stats = netdev_alloc_pcpu_stats(struct pcpu_rx_sc_stats); in create_rx_sc()
1445 if (!rx_sc->stats) { in create_rx_sc()
1446 kfree(rx_sc); in create_rx_sc()
1450 rx_sc->sci = sci; in create_rx_sc()
1451 rx_sc->active = active; in create_rx_sc()
1452 refcount_set(&rx_sc->refcnt, 1); in create_rx_sc()
1455 rcu_assign_pointer(rx_sc->next, secy->rx_sc); in create_rx_sc()
1456 rcu_assign_pointer(secy->rx_sc, rx_sc); in create_rx_sc()
1458 if (rx_sc->active) in create_rx_sc()
1461 return rx_sc; in create_rx_sc()
1582 struct macsec_rx_sc *rx_sc; in get_rxsc_from_nl() local
1595 rx_sc = find_rx_sc_rtnl(secy, sci); in get_rxsc_from_nl()
1596 if (!rx_sc) in get_rxsc_from_nl()
1602 return rx_sc; in get_rxsc_from_nl()
1614 struct macsec_rx_sc *rx_sc; in get_rxsa_from_nl() local
1624 rx_sc = get_rxsc_from_nl(net, attrs, tb_rxsc, devp, secyp); in get_rxsa_from_nl()
1625 if (IS_ERR(rx_sc)) in get_rxsa_from_nl()
1626 return ERR_CAST(rx_sc); in get_rxsa_from_nl()
1628 rx_sa = rtnl_dereference(rx_sc->sa[*assoc_num]); in get_rxsa_from_nl()
1632 *scp = rx_sc; in get_rxsa_from_nl()
1737 struct macsec_rx_sc *rx_sc; in macsec_add_rxsa() local
1758 rx_sc = get_rxsc_from_nl(genl_info_net(info), attrs, tb_rxsc, &dev, &secy); in macsec_add_rxsa()
1759 if (IS_ERR(rx_sc)) { in macsec_add_rxsa()
1761 return PTR_ERR(rx_sc); in macsec_add_rxsa()
1797 rx_sa = rtnl_dereference(rx_sc->sa[assoc_num]); in macsec_add_rxsa()
1826 rx_sa->sc = rx_sc; in macsec_add_rxsa()
1858 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa); in macsec_add_rxsa()
1888 struct macsec_rx_sc *rx_sc; in macsec_add_rxsc() local
1916 rx_sc = create_rx_sc(dev, sci, active); in macsec_add_rxsc()
1917 if (IS_ERR(rx_sc)) { in macsec_add_rxsc()
1919 return PTR_ERR(rx_sc); in macsec_add_rxsc()
1932 ctx.rx_sc = rx_sc; in macsec_add_rxsc()
1946 free_rx_sc(rx_sc); in macsec_add_rxsc()
2119 struct macsec_rx_sc *rx_sc; in macsec_del_rxsa() local
2137 &dev, &secy, &rx_sc, &assoc_num); in macsec_del_rxsa()
2168 RCU_INIT_POINTER(rx_sc->sa[assoc_num], NULL); in macsec_del_rxsa()
2185 struct macsec_rx_sc *rx_sc; in macsec_del_rxsc() local
2209 rx_sc = del_rx_sc(secy, sci); in macsec_del_rxsc()
2210 if (!rx_sc) { in macsec_del_rxsc()
2226 ctx.rx_sc = rx_sc; in macsec_del_rxsc()
2233 free_rx_sc(rx_sc); in macsec_del_rxsc()
2427 struct macsec_rx_sc *rx_sc; in macsec_upd_rxsa() local
2452 &dev, &secy, &rx_sc, &assoc_num); in macsec_upd_rxsa()
2519 struct macsec_rx_sc *rx_sc; in macsec_upd_rxsc() local
2535 rx_sc = get_rxsc_from_nl(genl_info_net(info), attrs, tb_rxsc, &dev, &secy); in macsec_upd_rxsc()
2536 if (IS_ERR(rx_sc)) { in macsec_upd_rxsc()
2538 return PTR_ERR(rx_sc); in macsec_upd_rxsc()
2541 was_active = rx_sc->active; in macsec_upd_rxsc()
2546 if (rx_sc->active != new) in macsec_upd_rxsc()
2549 rx_sc->active = new; in macsec_upd_rxsc()
2563 ctx.rx_sc = rx_sc; in macsec_upd_rxsc()
2577 rx_sc->active = was_active; in macsec_upd_rxsc()
2588 if (secy->rx_sc) in macsec_is_configured()
2775 struct macsec_rx_sc *rx_sc, int an, in get_rx_sa_stats() argument
2793 ctx.rx_sc = rx_sc; in get_rx_sa_stats()
2829 struct macsec_rx_sc *rx_sc, in get_rx_sc_stats() argument
2844 ctx.rx_sc = rx_sc; in get_rx_sc_stats()
2855 stats = per_cpu_ptr(rx_sc->stats, cpu); in get_rx_sc_stats()
3102 struct macsec_rx_sc *rx_sc; in dump_secy() local
3209 for_each_rxsc_rtnl(secy, rx_sc) { in dump_secy()
3219 if (nla_put_u8(skb, MACSEC_RXSC_ATTR_ACTIVE, rx_sc->active) || in dump_secy()
3220 nla_put_sci(skb, MACSEC_RXSC_ATTR_SCI, rx_sc->sci, in dump_secy()
3234 get_rx_sc_stats(dev, rx_sc, &rx_sc_stats); in dump_secy()
3252 struct macsec_rx_sa *rx_sa = rtnl_dereference(rx_sc->sa[i]); in dump_secy()
3277 get_rx_sa_stats(dev, rx_sc, i, rx_sa, &rx_sa_stats); in dump_secy()
3998 while (macsec->secy.rx_sc) { in macsec_del_dev()
3999 struct macsec_rx_sc *rx_sc = rtnl_dereference(macsec->secy.rx_sc); in macsec_del_dev() local
4001 rcu_assign_pointer(macsec->secy.rx_sc, rx_sc->next); in macsec_del_dev()
4002 free_rx_sc(rx_sc); in macsec_del_dev()