Lines Matching refs:rx_sc
64 for (sc = rcu_dereference_bh(secy->rx_sc); \
68 for (sc = rtnl_dereference(secy->rx_sc); \
249 struct macsec_rx_sc __rcu *rx_sc; member
321 struct macsec_rx_sc *rx_sc = container_of(head, struct macsec_rx_sc, rcu_head); in free_rx_sc_rcu() local
323 free_percpu(rx_sc->stats); in free_rx_sc_rcu()
324 kfree(rx_sc); in free_rx_sc_rcu()
889 struct macsec_rx_sc *rx_sc = rx_sa->sc; in macsec_decrypt_done() local
918 macsec_rxsc_put(rx_sc); in macsec_decrypt_done()
1010 struct macsec_rx_sc *rx_sc; in find_rx_sc() local
1012 for_each_rxsc(secy, rx_sc) { in find_rx_sc()
1013 if (rx_sc->sci == sci) in find_rx_sc()
1014 return rx_sc; in find_rx_sc()
1022 struct macsec_rx_sc *rx_sc; in find_rx_sc_rtnl() local
1024 for_each_rxsc_rtnl(secy, rx_sc) { in find_rx_sc_rtnl()
1025 if (rx_sc->sci == sci) in find_rx_sc_rtnl()
1026 return rx_sc; in find_rx_sc_rtnl()
1078 struct macsec_rx_sc *rx_sc; in macsec_handle_frame() local
1145 rx_sc = sc; in macsec_handle_frame()
1156 rxsc_stats = this_cpu_ptr(rx_sc->stats); in macsec_handle_frame()
1165 rx_sa = macsec_rxsa_get(rx_sc->sa[macsec_skb_cb(skb)->assoc_num]); in macsec_handle_frame()
1218 macsec_rxsc_put(rx_sc); in macsec_handle_frame()
1235 macsec_rxsc_put(rx_sc); in macsec_handle_frame()
1252 macsec_rxsc_put(rx_sc); in macsec_handle_frame()
1358 static void free_rx_sc(struct macsec_rx_sc *rx_sc) in free_rx_sc() argument
1363 struct macsec_rx_sa *sa = rtnl_dereference(rx_sc->sa[i]); in free_rx_sc()
1365 RCU_INIT_POINTER(rx_sc->sa[i], NULL); in free_rx_sc()
1370 macsec_rxsc_put(rx_sc); in free_rx_sc()
1375 struct macsec_rx_sc *rx_sc, __rcu **rx_scp; in del_rx_sc() local
1377 for (rx_scp = &secy->rx_sc, rx_sc = rtnl_dereference(*rx_scp); in del_rx_sc()
1378 rx_sc; in del_rx_sc()
1379 rx_scp = &rx_sc->next, rx_sc = rtnl_dereference(*rx_scp)) { in del_rx_sc()
1380 if (rx_sc->sci == sci) { in del_rx_sc()
1381 if (rx_sc->active) in del_rx_sc()
1383 rcu_assign_pointer(*rx_scp, rx_sc->next); in del_rx_sc()
1384 return rx_sc; in del_rx_sc()
1393 struct macsec_rx_sc *rx_sc; in create_rx_sc() local
1404 rx_sc = kzalloc(sizeof(*rx_sc), GFP_KERNEL); in create_rx_sc()
1405 if (!rx_sc) in create_rx_sc()
1408 rx_sc->stats = netdev_alloc_pcpu_stats(struct pcpu_rx_sc_stats); in create_rx_sc()
1409 if (!rx_sc->stats) { in create_rx_sc()
1410 kfree(rx_sc); in create_rx_sc()
1414 rx_sc->sci = sci; in create_rx_sc()
1415 rx_sc->active = true; in create_rx_sc()
1416 refcount_set(&rx_sc->refcnt, 1); in create_rx_sc()
1419 rcu_assign_pointer(rx_sc->next, secy->rx_sc); in create_rx_sc()
1420 rcu_assign_pointer(secy->rx_sc, rx_sc); in create_rx_sc()
1422 if (rx_sc->active) in create_rx_sc()
1425 return rx_sc; in create_rx_sc()
1530 struct macsec_rx_sc *rx_sc; in get_rxsc_from_nl() local
1543 rx_sc = find_rx_sc_rtnl(secy, sci); in get_rxsc_from_nl()
1544 if (!rx_sc) in get_rxsc_from_nl()
1550 return rx_sc; in get_rxsc_from_nl()
1562 struct macsec_rx_sc *rx_sc; in get_rxsa_from_nl() local
1572 rx_sc = get_rxsc_from_nl(net, attrs, tb_rxsc, devp, secyp); in get_rxsa_from_nl()
1573 if (IS_ERR(rx_sc)) in get_rxsa_from_nl()
1574 return ERR_CAST(rx_sc); in get_rxsa_from_nl()
1576 rx_sa = rtnl_dereference(rx_sc->sa[*assoc_num]); in get_rxsa_from_nl()
1580 *scp = rx_sc; in get_rxsa_from_nl()
1656 struct macsec_rx_sc *rx_sc; in macsec_add_rxsa() local
1676 rx_sc = get_rxsc_from_nl(genl_info_net(info), attrs, tb_rxsc, &dev, &secy); in macsec_add_rxsa()
1677 if (IS_ERR(rx_sc)) { in macsec_add_rxsa()
1679 return PTR_ERR(rx_sc); in macsec_add_rxsa()
1691 rx_sa = rtnl_dereference(rx_sc->sa[assoc_num]); in macsec_add_rxsa()
1721 rx_sa->sc = rx_sc; in macsec_add_rxsa()
1722 rcu_assign_pointer(rx_sc->sa[assoc_num], rx_sa); in macsec_add_rxsa()
1747 struct macsec_rx_sc *rx_sc; in macsec_add_rxsc() local
1768 rx_sc = create_rx_sc(dev, sci); in macsec_add_rxsc()
1769 if (IS_ERR(rx_sc)) { in macsec_add_rxsc()
1771 return PTR_ERR(rx_sc); in macsec_add_rxsc()
1775 rx_sc->active = !!nla_get_u8(tb_rxsc[MACSEC_RXSC_ATTR_ACTIVE]); in macsec_add_rxsc()
1890 struct macsec_rx_sc *rx_sc; in macsec_del_rxsa() local
1907 &dev, &secy, &rx_sc, &assoc_num); in macsec_del_rxsa()
1918 RCU_INIT_POINTER(rx_sc->sa[assoc_num], NULL); in macsec_del_rxsa()
1931 struct macsec_rx_sc *rx_sc; in macsec_del_rxsc() local
1954 rx_sc = del_rx_sc(secy, sci); in macsec_del_rxsc()
1955 if (!rx_sc) { in macsec_del_rxsc()
1960 free_rx_sc(rx_sc); in macsec_del_rxsc()
2073 struct macsec_rx_sc *rx_sc; in macsec_upd_rxsa() local
2093 &dev, &secy, &rx_sc, &assoc_num); in macsec_upd_rxsa()
2117 struct macsec_rx_sc *rx_sc; in macsec_upd_rxsc() local
2130 rx_sc = get_rxsc_from_nl(genl_info_net(info), attrs, tb_rxsc, &dev, &secy); in macsec_upd_rxsc()
2131 if (IS_ERR(rx_sc)) { in macsec_upd_rxsc()
2133 return PTR_ERR(rx_sc); in macsec_upd_rxsc()
2139 if (rx_sc->active != new) in macsec_upd_rxsc()
2142 rx_sc->active = new; in macsec_upd_rxsc()
2411 struct macsec_rx_sc *rx_sc; in dump_secy() local
2497 for_each_rxsc_rtnl(secy, rx_sc) { in dump_secy()
2507 if (nla_put_u8(skb, MACSEC_RXSC_ATTR_ACTIVE, rx_sc->active) || in dump_secy()
2508 nla_put_sci(skb, MACSEC_RXSC_ATTR_SCI, rx_sc->sci, in dump_secy()
2521 if (copy_rx_sc_stats(skb, rx_sc->stats)) { in dump_secy()
2538 struct macsec_rx_sa *rx_sa = rtnl_dereference(rx_sc->sa[i]); in dump_secy()
3095 while (macsec->secy.rx_sc) { in macsec_del_dev()
3096 struct macsec_rx_sc *rx_sc = rtnl_dereference(macsec->secy.rx_sc); in macsec_del_dev() local
3098 rcu_assign_pointer(macsec->secy.rx_sc, rx_sc->next); in macsec_del_dev()
3099 free_rx_sc(rx_sc); in macsec_del_dev()