Lines Matching refs:secy

54 #define for_each_rxsc(secy, sc)				\  argument
55 for (sc = rcu_dereference_bh(secy->rx_sc); \
58 #define for_each_rxsc_rtnl(secy, sc) \ argument
59 for (sc = rtnl_dereference(secy->rx_sc); \
101 struct macsec_secy secy; member
280 const struct macsec_secy *secy, u32 pn, in macsec_fill_sectag() argument
283 const struct macsec_tx_sc *tx_sc = &secy->tx_sc; in macsec_fill_sectag()
290 memcpy(&h->secure_channel_id, &secy->sci, in macsec_fill_sectag()
304 else if (secy->icv_len != MACSEC_DEFAULT_ICV_LEN) in macsec_fill_sectag()
436 static void __macsec_pn_wrapped(struct macsec_secy *secy, in __macsec_pn_wrapped() argument
441 if (secy->protect_frames) in __macsec_pn_wrapped()
442 secy->operational = false; in __macsec_pn_wrapped()
445 void macsec_pn_wrapped(struct macsec_secy *secy, struct macsec_tx_sa *tx_sa) in macsec_pn_wrapped() argument
448 __macsec_pn_wrapped(secy, tx_sa); in macsec_pn_wrapped()
454 struct macsec_secy *secy) in tx_sa_update_pn() argument
461 if (secy->xpn) in tx_sa_update_pn()
467 __macsec_pn_wrapped(secy, tx_sa); in tx_sa_update_pn()
485 struct macsec_secy *secy = &macsec->secy; in macsec_msdu_len() local
488 return skb->len - macsec_hdr_len(sci_present) - secy->icv_len; in macsec_msdu_len()
527 macsec_count_tx(skb, &macsec->secy.tx_sc, macsec_skb_cb(skb)->tx_sa); in macsec_encrypt_done()
580 struct macsec_secy *secy; in macsec_encrypt() local
587 secy = &macsec->secy; in macsec_encrypt()
588 tx_sc = &secy->tx_sc; in macsec_encrypt()
593 secy->operational = false; in macsec_encrypt()
622 sci_present = macsec_send_sci(secy); in macsec_encrypt()
626 pn = tx_sa_update_pn(tx_sa, secy); in macsec_encrypt()
632 macsec_fill_sectag(hh, secy, pn.lower, sci_present); in macsec_encrypt()
635 skb_put(skb, secy->icv_len); in macsec_encrypt()
663 if (secy->xpn) in macsec_encrypt()
666 macsec_fill_iv(iv, secy->sci, pn.lower); in macsec_encrypt()
679 secy->icv_len; in macsec_encrypt()
684 aead_request_set_ad(req, skb->len - secy->icv_len); in macsec_encrypt()
711 static bool macsec_post_decrypt(struct sk_buff *skb, struct macsec_secy *secy, u32 pn) in macsec_post_decrypt() argument
719 if (rx_sa->next_pn_halves.lower >= secy->replay_window) in macsec_post_decrypt()
720 lowest_pn = rx_sa->next_pn_halves.lower - secy->replay_window; in macsec_post_decrypt()
725 if (secy->replay_protect && pn < lowest_pn && in macsec_post_decrypt()
726 (!secy->xpn || pn_same_half(pn, lowest_pn))) { in macsec_post_decrypt()
731 DEV_STATS_INC(secy->netdev, rx_dropped); in macsec_post_decrypt()
735 if (secy->validate_frames != MACSEC_VALIDATE_DISABLED) { in macsec_post_decrypt()
750 secy->validate_frames == MACSEC_VALIDATE_STRICT) { in macsec_post_decrypt()
755 DEV_STATS_INC(secy->netdev, rx_errors); in macsec_post_decrypt()
760 if (secy->validate_frames == MACSEC_VALIDATE_CHECK) { in macsec_post_decrypt()
782 } else if (secy->xpn && in macsec_post_decrypt()
835 if (!macsec_post_decrypt(skb, &macsec->secy, pn)) { in macsec_decrypt_done()
841 macsec_finalize_skb(skb, macsec->secy.icv_len, in macsec_decrypt_done()
844 macsec_reset_skb(skb, macsec->secy.netdev); in macsec_decrypt_done()
861 struct macsec_secy *secy) in macsec_decrypt() argument
870 u16 icv_len = secy->icv_len; in macsec_decrypt()
891 if (secy->xpn) { in macsec_decrypt()
958 static struct macsec_rx_sc *find_rx_sc(struct macsec_secy *secy, sci_t sci) in find_rx_sc() argument
962 for_each_rxsc(secy, rx_sc) { in find_rx_sc()
970 static struct macsec_rx_sc *find_rx_sc_rtnl(struct macsec_secy *secy, sci_t sci) in find_rx_sc_rtnl() argument
974 for_each_rxsc_rtnl(secy, rx_sc) { in find_rx_sc_rtnl()
1000 struct net_device *ndev = macsec->secy.netdev; in handle_not_macsec()
1021 rx_sc = find_rx_sc(&macsec->secy, in handle_not_macsec()
1074 if (macsec->secy.validate_frames == MACSEC_VALIDATE_STRICT) { in handle_not_macsec()
1078 DEV_STATS_INC(macsec->secy.netdev, rx_dropped); in handle_not_macsec()
1106 struct macsec_secy *secy = NULL; in macsec_handle_frame() local
1165 struct macsec_rx_sc *sc = find_rx_sc(&macsec->secy, sci); in macsec_handle_frame()
1170 secy = &macsec->secy; in macsec_handle_frame()
1176 if (!secy) in macsec_handle_frame()
1179 dev = secy->netdev; in macsec_handle_frame()
1184 if (!macsec_validate_skb(skb, secy->icv_len, secy->xpn)) { in macsec_handle_frame()
1188 DEV_STATS_INC(secy->netdev, rx_errors); in macsec_handle_frame()
1200 secy->validate_frames == MACSEC_VALIDATE_STRICT) { in macsec_handle_frame()
1204 DEV_STATS_INC(secy->netdev, rx_errors); in macsec_handle_frame()
1219 if (secy->replay_protect) { in macsec_handle_frame()
1223 late = rx_sa->next_pn_halves.lower >= secy->replay_window && in macsec_handle_frame()
1224 hdr_pn < (rx_sa->next_pn_halves.lower - secy->replay_window); in macsec_handle_frame()
1226 if (secy->xpn) in macsec_handle_frame()
1234 DEV_STATS_INC(macsec->secy.netdev, rx_dropped); in macsec_handle_frame()
1243 secy->validate_frames != MACSEC_VALIDATE_DISABLED) in macsec_handle_frame()
1244 skb = macsec_decrypt(skb, dev, rx_sa, sci, secy); in macsec_handle_frame()
1257 if (!macsec_post_decrypt(skb, secy, hdr_pn)) in macsec_handle_frame()
1261 macsec_finalize_skb(skb, secy->icv_len, in macsec_handle_frame()
1264 macsec_reset_skb(skb, secy->netdev); in macsec_handle_frame()
1275 DEV_STATS_INC(macsec->secy.netdev, rx_dropped); in macsec_handle_frame()
1308 macsec->secy.validate_frames == MACSEC_VALIDATE_STRICT) { in macsec_handle_frame()
1312 DEV_STATS_INC(macsec->secy.netdev, rx_errors); in macsec_handle_frame()
1323 macsec_reset_skb(nskb, macsec->secy.netdev); in macsec_handle_frame()
1331 DEV_STATS_INC(macsec->secy.netdev, rx_dropped); in macsec_handle_frame()
1408 static struct macsec_rx_sc *del_rx_sc(struct macsec_secy *secy, sci_t sci) in del_rx_sc() argument
1412 for (rx_scp = &secy->rx_sc, rx_sc = rtnl_dereference(*rx_scp); in del_rx_sc()
1417 secy->n_rx_sc--; in del_rx_sc()
1433 struct macsec_secy *secy; in create_rx_sc() local
1436 if (find_rx_sc_rtnl(&macsec->secy, sci)) in create_rx_sc()
1454 secy = &macsec_priv(dev)->secy; 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()
1459 secy->n_rx_sc++; in create_rx_sc()
1545 struct macsec_secy *secy; in get_txsa_from_nl() local
1561 secy = &macsec_priv(dev)->secy; in get_txsa_from_nl()
1562 tx_sc = &secy->tx_sc; in get_txsa_from_nl()
1570 *secyp = secy; in get_txsa_from_nl()
1581 struct macsec_secy *secy; in get_rxsc_from_nl() local
1589 secy = &macsec_priv(dev)->secy; in get_rxsc_from_nl()
1595 rx_sc = find_rx_sc_rtnl(secy, sci); in get_rxsc_from_nl()
1599 *secyp = secy; in get_rxsc_from_nl()
1736 struct macsec_secy *secy; 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()
1766 if (nla_len(tb_sa[MACSEC_SA_ATTR_KEY]) != secy->key_len) { in macsec_add_rxsa()
1768 nla_len(tb_sa[MACSEC_SA_ATTR_KEY]), secy->key_len); in macsec_add_rxsa()
1773 pn_len = secy->xpn ? MACSEC_XPN_PN_LEN : MACSEC_DEFAULT_PN_LEN; in macsec_add_rxsa()
1782 if (secy->xpn) { in macsec_add_rxsa()
1810 secy->key_len, secy->icv_len); in macsec_add_rxsa()
1828 if (secy->xpn) { in macsec_add_rxsa()
1847 ctx.secy = secy; in macsec_add_rxsa()
1849 secy->key_len); in macsec_add_rxsa()
1852 memzero_explicit(ctx.sa.key, secy->key_len); in macsec_add_rxsa()
1890 struct macsec_secy *secy; in macsec_add_rxsc() local
1910 secy = &macsec_priv(dev)->secy; in macsec_add_rxsc()
1933 ctx.secy = secy; in macsec_add_rxsc()
1945 del_rx_sc(secy, sci); in macsec_add_rxsc()
1980 struct macsec_secy *secy; in macsec_add_txsa() local
2005 secy = &macsec_priv(dev)->secy; in macsec_add_txsa()
2006 tx_sc = &secy->tx_sc; in macsec_add_txsa()
2010 if (nla_len(tb_sa[MACSEC_SA_ATTR_KEY]) != secy->key_len) { in macsec_add_txsa()
2012 nla_len(tb_sa[MACSEC_SA_ATTR_KEY]), secy->key_len); in macsec_add_txsa()
2017 pn_len = secy->xpn ? MACSEC_XPN_PN_LEN : MACSEC_DEFAULT_PN_LEN; in macsec_add_txsa()
2025 if (secy->xpn) { in macsec_add_txsa()
2053 secy->key_len, secy->icv_len); in macsec_add_txsa()
2067 was_operational = secy->operational; in macsec_add_txsa()
2069 secy->operational = true; in macsec_add_txsa()
2071 if (secy->xpn) { in macsec_add_txsa()
2090 ctx.secy = secy; in macsec_add_txsa()
2092 secy->key_len); in macsec_add_txsa()
2095 memzero_explicit(ctx.sa.key, secy->key_len); in macsec_add_txsa()
2108 secy->operational = was_operational; in macsec_add_txsa()
2118 struct macsec_secy *secy; in macsec_del_rxsa() local
2137 &dev, &secy, &rx_sc, &assoc_num); in macsec_del_rxsa()
2161 ctx.secy = secy; in macsec_del_rxsa()
2184 struct macsec_secy *secy; in macsec_del_rxsc() local
2206 secy = &macsec_priv(dev)->secy; in macsec_del_rxsc()
2209 rx_sc = del_rx_sc(secy, sci); in macsec_del_rxsc()
2227 ctx.secy = secy; in macsec_del_rxsc()
2247 struct macsec_secy *secy; in macsec_del_txsa() local
2262 &dev, &secy, &tx_sc, &assoc_num); in macsec_del_txsa()
2286 ctx.secy = secy; in macsec_del_txsa()
2332 struct macsec_secy *secy; in macsec_upd_txsa() local
2354 &dev, &secy, &tx_sc, &assoc_num); in macsec_upd_txsa()
2363 pn_len = secy->xpn ? MACSEC_XPN_PN_LEN : MACSEC_DEFAULT_PN_LEN; in macsec_upd_txsa()
2381 was_operational = secy->operational; in macsec_upd_txsa()
2383 secy->operational = tx_sa->active; in macsec_upd_txsa()
2399 ctx.secy = secy; in macsec_upd_txsa()
2417 secy->operational = was_operational; in macsec_upd_txsa()
2426 struct macsec_secy *secy; in macsec_upd_rxsa() local
2452 &dev, &secy, &rx_sc, &assoc_num); in macsec_upd_rxsa()
2461 pn_len = secy->xpn ? MACSEC_XPN_PN_LEN : MACSEC_DEFAULT_PN_LEN; in macsec_upd_rxsa()
2493 ctx.secy = secy; in macsec_upd_rxsa()
2518 struct macsec_secy *secy; 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()
2542 prev_n_rx_sc = secy->n_rx_sc; in macsec_upd_rxsc()
2547 secy->n_rx_sc += new ? 1 : -1; in macsec_upd_rxsc()
2564 ctx.secy = secy; in macsec_upd_rxsc()
2576 secy->n_rx_sc = prev_n_rx_sc; in macsec_upd_rxsc()
2584 struct macsec_secy *secy = &macsec->secy; in macsec_is_configured() local
2585 struct macsec_tx_sc *tx_sc = &secy->tx_sc; in macsec_is_configured()
2588 if (secy->rx_sc) in macsec_is_configured()
2670 ctx.secy = &macsec->secy; in macsec_update_offload()
2748 ctx.secy = &macsec_priv(dev)->secy; in get_tx_sa_stats()
2792 ctx.secy = &macsec_priv(dev)->secy; in get_rx_sa_stats()
2843 ctx.secy = &macsec_priv(dev)->secy; in get_rx_sc_stats()
2925 ctx.secy = &macsec_priv(dev)->secy; in get_tx_sc_stats()
2936 stats = per_cpu_ptr(macsec_priv(dev)->secy.tx_sc.stats, cpu); in get_tx_sc_stats()
2981 ctx.secy = &macsec_priv(dev)->secy; in get_secy_stats()
3040 static int nla_put_secy(struct macsec_secy *secy, struct sk_buff *skb) in nla_put_secy() argument
3042 struct macsec_tx_sc *tx_sc = &secy->tx_sc; in nla_put_secy()
3050 switch (secy->key_len) { in nla_put_secy()
3052 csid = secy->xpn ? MACSEC_CIPHER_ID_GCM_AES_XPN_128 : MACSEC_DEFAULT_CIPHER_ID; in nla_put_secy()
3055 csid = secy->xpn ? MACSEC_CIPHER_ID_GCM_AES_XPN_256 : MACSEC_CIPHER_ID_GCM_AES_256; in nla_put_secy()
3061 if (nla_put_sci(skb, MACSEC_SECY_ATTR_SCI, secy->sci, in nla_put_secy()
3065 nla_put_u8(skb, MACSEC_SECY_ATTR_ICV_LEN, secy->icv_len) || in nla_put_secy()
3066 nla_put_u8(skb, MACSEC_SECY_ATTR_OPER, secy->operational) || in nla_put_secy()
3067 nla_put_u8(skb, MACSEC_SECY_ATTR_PROTECT, secy->protect_frames) || in nla_put_secy()
3068 nla_put_u8(skb, MACSEC_SECY_ATTR_REPLAY, secy->replay_protect) || in nla_put_secy()
3069 nla_put_u8(skb, MACSEC_SECY_ATTR_VALIDATE, secy->validate_frames) || in nla_put_secy()
3077 if (secy->replay_protect) { in nla_put_secy()
3078 if (nla_put_u32(skb, MACSEC_SECY_ATTR_WINDOW, secy->replay_window)) in nla_put_secy()
3091 dump_secy(struct macsec_secy *secy, struct net_device *dev, in dump_secy() argument
3100 struct macsec_tx_sc *tx_sc = &secy->tx_sc; in dump_secy()
3124 if (nla_put_secy(secy, skb)) in dump_secy()
3182 if (secy->xpn) { in dump_secy()
3193 (secy->xpn && nla_put_ssci(skb, MACSEC_SA_ATTR_SSCI, tx_sa->ssci)) || in dump_secy()
3209 for_each_rxsc_rtnl(secy, rx_sc) { in dump_secy()
3287 if (secy->xpn) { in dump_secy()
3298 (secy->xpn && nla_put_ssci(skb, MACSEC_SA_ATTR_SSCI, rx_sa->ssci)) || in dump_secy()
3339 struct macsec_secy *secy; in macsec_dump_txsc() local
3347 secy = &macsec_priv(dev)->secy; in macsec_dump_txsc()
3348 if (dump_secy(secy, dev, skb, cb) < 0) in macsec_dump_txsc()
3479 struct macsec_secy *secy = &macsec->secy; in macsec_start_xmit() local
3484 struct metadata_dst *md_dst = secy->tx_sc.md_dst; in macsec_start_xmit()
3503 if (!secy->protect_frames) { in macsec_start_xmit()
3515 if (!secy->operational) { in macsec_start_xmit()
3529 macsec_count_tx(skb, &macsec->secy.tx_sc, macsec_skb_cb(skb)->tx_sa); in macsec_start_xmit()
3633 ctx.secy = &macsec->secy; in macsec_dev_open()
3666 ctx.secy = &macsec->secy; in macsec_dev_stop()
3739 ctx.secy = &macsec->secy; in macsec_set_mac_address()
3762 unsigned int extra = macsec->secy.icv_len + macsec_extra_len(true); in macsec_change_mtu()
3830 dst_release(&macsec->secy.tx_sc.md_dst->dst); in macsec_free_netdev()
3832 free_percpu(macsec->secy.tx_sc.stats); in macsec_free_netdev()
3855 struct macsec_secy *secy; in macsec_changelink_common() local
3858 secy = &macsec_priv(dev)->secy; in macsec_changelink_common()
3859 tx_sc = &secy->tx_sc; in macsec_changelink_common()
3867 secy->operational = tx_sa && tx_sa->active; in macsec_changelink_common()
3874 secy->protect_frames = !!nla_get_u8(data[IFLA_MACSEC_PROTECT]); in macsec_changelink_common()
3886 secy->replay_protect = !!nla_get_u8(data[IFLA_MACSEC_REPLAY_PROTECT]); in macsec_changelink_common()
3889 secy->validate_frames = nla_get_u8(data[IFLA_MACSEC_VALIDATION]); in macsec_changelink_common()
3895 secy->key_len = MACSEC_GCM_AES_128_SAK_LEN; in macsec_changelink_common()
3896 secy->xpn = false; in macsec_changelink_common()
3899 secy->key_len = MACSEC_GCM_AES_256_SAK_LEN; in macsec_changelink_common()
3900 secy->xpn = false; in macsec_changelink_common()
3903 secy->key_len = MACSEC_GCM_AES_128_SAK_LEN; in macsec_changelink_common()
3904 secy->xpn = true; in macsec_changelink_common()
3907 secy->key_len = MACSEC_GCM_AES_256_SAK_LEN; in macsec_changelink_common()
3908 secy->xpn = true; in macsec_changelink_common()
3916 secy->replay_window = nla_get_u32(data[IFLA_MACSEC_WINDOW]); in macsec_changelink_common()
3920 if (secy->xpn && in macsec_changelink_common()
3921 secy->replay_window > MACSEC_XPN_MAX_REPLAY_WINDOW) in macsec_changelink_common()
3936 struct macsec_secy secy; in macsec_changelink() local
3951 memcpy(&secy, &macsec->secy, sizeof(secy)); in macsec_changelink()
3952 memcpy(&tx_sc, &macsec->secy.tx_sc, sizeof(tx_sc)); in macsec_changelink()
3979 ctx.secy = &macsec->secy; in macsec_changelink()
3988 memcpy(&macsec->secy.tx_sc, &tx_sc, sizeof(tx_sc)); in macsec_changelink()
3989 memcpy(&macsec->secy, &secy, sizeof(secy)); in macsec_changelink()
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()
4001 rcu_assign_pointer(macsec->secy.rx_sc, rx_sc->next); in macsec_del_dev()
4006 struct macsec_tx_sa *sa = rtnl_dereference(macsec->secy.tx_sc.sa[i]); in macsec_del_dev()
4009 RCU_INIT_POINTER(macsec->secy.tx_sc.sa[i], NULL); in macsec_del_dev()
4027 ctx.secy = &macsec->secy; in macsec_common_dellink()
4087 if (macsec->secy.sci == sci) in sci_exists()
4102 struct macsec_secy *secy = &macsec->secy; in macsec_add_dev() local
4108 secy->tx_sc.stats = netdev_alloc_pcpu_stats(struct pcpu_tx_sc_stats); in macsec_add_dev()
4109 if (!secy->tx_sc.stats) in macsec_add_dev()
4112 secy->tx_sc.md_dst = metadata_dst_alloc(0, METADATA_MACSEC, GFP_KERNEL); in macsec_add_dev()
4113 if (!secy->tx_sc.md_dst) in macsec_add_dev()
4122 secy->netdev = dev; in macsec_add_dev()
4123 secy->operational = true; in macsec_add_dev()
4124 secy->key_len = DEFAULT_SAK_LEN; in macsec_add_dev()
4125 secy->icv_len = icv_len; in macsec_add_dev()
4126 secy->validate_frames = MACSEC_VALIDATE_DEFAULT; in macsec_add_dev()
4127 secy->protect_frames = true; in macsec_add_dev()
4128 secy->replay_protect = false; in macsec_add_dev()
4129 secy->xpn = DEFAULT_XPN; in macsec_add_dev()
4131 secy->sci = sci; in macsec_add_dev()
4132 secy->tx_sc.md_dst->u.macsec_info.sci = sci; in macsec_add_dev()
4133 secy->tx_sc.active = true; in macsec_add_dev()
4134 secy->tx_sc.encoding_sa = DEFAULT_ENCODING_SA; in macsec_add_dev()
4135 secy->tx_sc.encrypt = DEFAULT_ENCRYPT; in macsec_add_dev()
4136 secy->tx_sc.send_sci = DEFAULT_SEND_SCI; in macsec_add_dev()
4137 secy->tx_sc.end_station = false; in macsec_add_dev()
4138 secy->tx_sc.scb = false; in macsec_add_dev()
4247 ctx.secy = &macsec->secy; in macsec_newlink()
4393 struct macsec_secy *secy; in macsec_fill_info() local
4397 secy = &macsec->secy; in macsec_fill_info()
4398 tx_sc = &secy->tx_sc; in macsec_fill_info()
4400 switch (secy->key_len) { in macsec_fill_info()
4402 csid = secy->xpn ? MACSEC_CIPHER_ID_GCM_AES_XPN_128 : MACSEC_DEFAULT_CIPHER_ID; in macsec_fill_info()
4405 csid = secy->xpn ? MACSEC_CIPHER_ID_GCM_AES_XPN_256 : MACSEC_CIPHER_ID_GCM_AES_256; in macsec_fill_info()
4411 if (nla_put_sci(skb, IFLA_MACSEC_SCI, secy->sci, in macsec_fill_info()
4413 nla_put_u8(skb, IFLA_MACSEC_ICV_LEN, secy->icv_len) || in macsec_fill_info()
4418 nla_put_u8(skb, IFLA_MACSEC_PROTECT, secy->protect_frames) || in macsec_fill_info()
4422 nla_put_u8(skb, IFLA_MACSEC_REPLAY_PROTECT, secy->replay_protect) || in macsec_fill_info()
4423 nla_put_u8(skb, IFLA_MACSEC_VALIDATION, secy->validate_frames) || in macsec_fill_info()
4428 if (secy->replay_protect) { in macsec_fill_info()
4429 if (nla_put_u32(skb, IFLA_MACSEC_WINDOW, secy->replay_window)) in macsec_fill_info()
4477 struct net_device *dev = m->secy.netdev; in macsec_notify()
4484 macsec_common_dellink(m->secy.netdev, &head); in macsec_notify()
4494 struct net_device *dev = m->secy.netdev; in macsec_notify()
4495 unsigned int mtu = real_dev->mtu - (m->secy.icv_len + in macsec_notify()
4504 macsec_inherit_tso_max(m->secy.netdev); in macsec_notify()
4505 netdev_update_features(m->secy.netdev); in macsec_notify()