Lines Matching refs:mdev

38 static void mctp_dev_destroy(struct mctp_dev *mdev)  in mctp_dev_destroy()  argument
40 struct net_device *dev = mdev->dev; in mctp_dev_destroy()
43 kfree_rcu(mdev, rcu); in mctp_dev_destroy()
47 struct mctp_dev *mdev, mctp_eid_t eid) in mctp_fill_addrinfo() argument
62 hdr->ifa_index = mdev->dev->ifindex; in mctp_fill_addrinfo()
79 static int mctp_dump_dev_addrinfo(struct mctp_dev *mdev, struct sk_buff *skb, in mctp_dump_dev_addrinfo() argument
85 for (; mcb->a_idx < mdev->num_addrs; mcb->a_idx++) { in mctp_dump_dev_addrinfo()
86 rc = mctp_fill_addrinfo(skb, cb, mdev, mdev->addrs[mcb->a_idx]); in mctp_dump_dev_addrinfo()
101 struct mctp_dev *mdev; in mctp_dump_addrinfo() local
116 mdev = __mctp_dev_get(dev); in mctp_dump_addrinfo()
117 if (mdev) { in mctp_dump_addrinfo()
118 rc = mctp_dump_dev_addrinfo(mdev, in mctp_dump_addrinfo()
150 struct mctp_dev *mdev; in mctp_rtm_newaddr() local
175 mdev = mctp_dev_get_rtnl(dev); in mctp_rtm_newaddr()
176 if (!mdev) in mctp_rtm_newaddr()
183 if (memchr(mdev->addrs, addr->s_addr, mdev->num_addrs)) in mctp_rtm_newaddr()
186 tmp_addrs = kmalloc(mdev->num_addrs + 1, GFP_KERNEL); in mctp_rtm_newaddr()
189 memcpy(tmp_addrs, mdev->addrs, mdev->num_addrs); in mctp_rtm_newaddr()
190 tmp_addrs[mdev->num_addrs] = addr->s_addr; in mctp_rtm_newaddr()
193 spin_lock_irqsave(&mdev->addrs_lock, flags); in mctp_rtm_newaddr()
194 mdev->num_addrs++; in mctp_rtm_newaddr()
195 swap(mdev->addrs, tmp_addrs); in mctp_rtm_newaddr()
196 spin_unlock_irqrestore(&mdev->addrs_lock, flags); in mctp_rtm_newaddr()
200 mctp_route_add_local(mdev, addr->s_addr); in mctp_rtm_newaddr()
212 struct mctp_dev *mdev; in mctp_rtm_deladdr() local
237 mdev = mctp_dev_get_rtnl(dev); in mctp_rtm_deladdr()
238 if (!mdev) in mctp_rtm_deladdr()
241 pos = memchr(mdev->addrs, addr->s_addr, mdev->num_addrs); in mctp_rtm_deladdr()
245 rc = mctp_route_remove_local(mdev, addr->s_addr); in mctp_rtm_deladdr()
250 spin_lock_irqsave(&mdev->addrs_lock, flags); in mctp_rtm_deladdr()
251 memmove(pos, pos + 1, mdev->num_addrs - 1 - (pos - mdev->addrs)); in mctp_rtm_deladdr()
252 mdev->num_addrs--; in mctp_rtm_deladdr()
253 spin_unlock_irqrestore(&mdev->addrs_lock, flags); in mctp_rtm_deladdr()
260 struct mctp_dev *mdev; in mctp_add_dev() local
264 mdev = kzalloc(sizeof(*mdev), GFP_KERNEL); in mctp_add_dev()
265 if (!mdev) in mctp_add_dev()
268 spin_lock_init(&mdev->addrs_lock); in mctp_add_dev()
270 mdev->net = mctp_default_net(dev_net(dev)); in mctp_add_dev()
273 rcu_assign_pointer(dev->mctp_ptr, mdev); in mctp_add_dev()
275 mdev->dev = dev; in mctp_add_dev()
277 return mdev; in mctp_add_dev()
283 struct mctp_dev *mdev; in mctp_fill_link_af() local
285 mdev = mctp_dev_get_rtnl(dev); in mctp_fill_link_af()
286 if (!mdev) in mctp_fill_link_af()
288 if (nla_put_u32(skb, IFLA_MCTP_NET, mdev->net)) in mctp_fill_link_af()
296 struct mctp_dev *mdev; in mctp_get_link_af_size() local
300 mdev = __mctp_dev_get(dev); in mctp_get_link_af_size()
301 if (!mdev) in mctp_get_link_af_size()
315 struct mctp_dev *mdev; in mctp_set_link_af() local
323 mdev = mctp_dev_get_rtnl(dev); in mctp_set_link_af()
324 if (!mdev) in mctp_set_link_af()
328 WRITE_ONCE(mdev->net, nla_get_u32(tb[IFLA_MCTP_NET])); in mctp_set_link_af()
335 struct mctp_dev *mdev; in mctp_unregister() local
337 mdev = mctp_dev_get_rtnl(dev); in mctp_unregister()
339 if (!mdev) in mctp_unregister()
342 RCU_INIT_POINTER(mdev->dev->mctp_ptr, NULL); in mctp_unregister()
344 mctp_route_remove_dev(mdev); in mctp_unregister()
345 mctp_neigh_remove_dev(mdev); in mctp_unregister()
346 kfree(mdev->addrs); in mctp_unregister()
348 mctp_dev_destroy(mdev); in mctp_unregister()
353 struct mctp_dev *mdev; in mctp_register() local
363 mdev = mctp_add_dev(dev); in mctp_register()
364 if (IS_ERR(mdev)) in mctp_register()
365 return PTR_ERR(mdev); in mctp_register()