Lines Matching refs:real_dev

24 static int rmnet_is_real_dev_registered(const struct net_device *real_dev)  in rmnet_is_real_dev_registered()  argument
26 return rcu_access_pointer(real_dev->rx_handler) == rmnet_rx_handler; in rmnet_is_real_dev_registered()
31 rmnet_get_port_rtnl(const struct net_device *real_dev) in rmnet_get_port_rtnl() argument
33 return rtnl_dereference(real_dev->rx_handler_data); in rmnet_get_port_rtnl()
36 static int rmnet_unregister_real_device(struct net_device *real_dev) in rmnet_unregister_real_device() argument
38 struct rmnet_port *port = rmnet_get_port_rtnl(real_dev); in rmnet_unregister_real_device()
45 netdev_rx_handler_unregister(real_dev); in rmnet_unregister_real_device()
49 netdev_dbg(real_dev, "Removed from rmnet\n"); in rmnet_unregister_real_device()
53 static int rmnet_register_real_device(struct net_device *real_dev, in rmnet_register_real_device() argument
61 if (rmnet_is_real_dev_registered(real_dev)) { in rmnet_register_real_device()
62 port = rmnet_get_port_rtnl(real_dev); in rmnet_register_real_device()
75 port->dev = real_dev; in rmnet_register_real_device()
76 rc = netdev_rx_handler_register(real_dev, rmnet_rx_handler, port); in rmnet_register_real_device()
87 netdev_dbg(real_dev, "registered with rmnet\n"); in rmnet_register_real_device()
93 struct net_device *bridge_dev, *real_dev, *rmnet_dev; in rmnet_unregister_bridge() local
102 real_dev = port->bridge_ep; in rmnet_unregister_bridge()
105 real_port = rmnet_get_port_rtnl(real_dev); in rmnet_unregister_bridge()
128 struct net_device *real_dev; in rmnet_newlink() local
140 real_dev = __dev_get_by_index(link_net, nla_get_u32(tb[IFLA_LINK])); in rmnet_newlink()
141 if (!real_dev) { in rmnet_newlink()
152 err = rmnet_register_real_device(real_dev, extack); in rmnet_newlink()
156 port = rmnet_get_port_rtnl(real_dev); in rmnet_newlink()
157 err = rmnet_vnd_newlink(mux_id, dev, port, real_dev, ep, extack); in rmnet_newlink()
161 err = netdev_upper_dev_link(real_dev, dev, extack); in rmnet_newlink()
187 rmnet_unregister_real_device(real_dev); in rmnet_newlink()
196 struct net_device *real_dev, *bridge_dev; in rmnet_dellink() local
201 real_dev = priv->real_dev; in rmnet_dellink()
203 if (!rmnet_is_real_dev_registered(real_dev)) in rmnet_dellink()
206 real_port = rmnet_get_port_rtnl(real_dev); in rmnet_dellink()
220 netdev_upper_dev_unlink(real_dev, dev); in rmnet_dellink()
221 rmnet_unregister_real_device(real_dev); in rmnet_dellink()
225 static void rmnet_force_unassociate_device(struct net_device *real_dev) in rmnet_force_unassociate_device() argument
233 port = rmnet_get_port_rtnl(real_dev); in rmnet_force_unassociate_device()
240 netdev_upper_dev_unlink(real_dev, ep->egress_dev); in rmnet_force_unassociate_device()
245 rmnet_unregister_real_device(real_dev); in rmnet_force_unassociate_device()
255 struct net_device *real_dev = netdev_notifier_info_to_dev(data); in rmnet_config_notify_cb() local
257 if (!rmnet_is_real_dev_registered(real_dev)) in rmnet_config_notify_cb()
262 netdev_dbg(real_dev, "Kernel unregister\n"); in rmnet_config_notify_cb()
263 rmnet_force_unassociate_device(real_dev); in rmnet_config_notify_cb()
266 if (rmnet_vnd_validate_real_dev_mtu(real_dev)) in rmnet_config_notify_cb()
304 struct net_device *real_dev; in rmnet_changelink() local
311 real_dev = priv->real_dev; in rmnet_changelink()
312 if (!rmnet_is_real_dev_registered(real_dev)) in rmnet_changelink()
315 port = rmnet_get_port_rtnl(real_dev); in rmnet_changelink()
351 if (rmnet_vnd_update_dev_mtu(port, real_dev)) { in rmnet_changelink()
373 struct net_device *real_dev; in rmnet_fill_info() local
377 real_dev = priv->real_dev; in rmnet_fill_info()
382 if (rmnet_is_real_dev_registered(real_dev)) { in rmnet_fill_info()
383 port = rmnet_get_port_rtnl(real_dev); in rmnet_fill_info()
414 struct rmnet_port *rmnet_get_port_rcu(struct net_device *real_dev) in rmnet_get_port_rcu() argument
416 if (rmnet_is_real_dev_registered(real_dev)) in rmnet_get_port_rcu()
417 return rcu_dereference_bh(real_dev->rx_handler_data); in rmnet_get_port_rcu()
439 struct net_device *real_dev = priv->real_dev; in rmnet_add_bridge() local
443 port = rmnet_get_port_rtnl(real_dev); in rmnet_add_bridge()
478 slave_port->bridge_ep = real_dev; in rmnet_add_bridge()