X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=net%2Fhsr%2Fhsr_netlink.c;h=6e14b7d2263992742a69203956da7dd5da448fdf;hb=de0083c7ed7dba036d1ed6e012157649d45313c8;hp=1decb25f6764a63578ca0079cd81c487edcc54e1;hpb=b835a71ef64a61383c414d6bf2896d2c0161deca;p=platform%2Fkernel%2Flinux-starfive.git diff --git a/net/hsr/hsr_netlink.c b/net/hsr/hsr_netlink.c index 1decb25..6e14b7d 100644 --- a/net/hsr/hsr_netlink.c +++ b/net/hsr/hsr_netlink.c @@ -83,6 +83,22 @@ static int hsr_newlink(struct net *src_net, struct net_device *dev, return hsr_dev_finalize(dev, link, multicast_spec, hsr_version, extack); } +static void hsr_dellink(struct net_device *dev, struct list_head *head) +{ + struct hsr_priv *hsr = netdev_priv(dev); + + del_timer_sync(&hsr->prune_timer); + del_timer_sync(&hsr->announce_timer); + + hsr_debugfs_term(hsr); + hsr_del_ports(hsr); + + hsr_del_self_node(hsr); + hsr_del_nodes(&hsr->node_db); + + unregister_netdevice_queue(dev, head); +} + static int hsr_fill_info(struct sk_buff *skb, const struct net_device *dev) { struct hsr_priv *hsr = netdev_priv(dev); @@ -118,6 +134,7 @@ static struct rtnl_link_ops hsr_link_ops __read_mostly = { .priv_size = sizeof(struct hsr_priv), .setup = hsr_dev_setup, .newlink = hsr_newlink, + .dellink = hsr_dellink, .fill_info = hsr_fill_info, };