Lines Matching refs:dev
48 static struct phonet_device *__phonet_device_alloc(struct net_device *dev) in __phonet_device_alloc() argument
50 struct phonet_device_list *pndevs = phonet_device_list(dev_net(dev)); in __phonet_device_alloc()
54 pnd->netdev = dev; in __phonet_device_alloc()
62 static struct phonet_device *__phonet_get(struct net_device *dev) in __phonet_get() argument
64 struct phonet_device_list *pndevs = phonet_device_list(dev_net(dev)); in __phonet_get()
70 if (pnd->netdev == dev) in __phonet_get()
76 static struct phonet_device *__phonet_get_rcu(struct net_device *dev) in __phonet_get_rcu() argument
78 struct phonet_device_list *pndevs = phonet_device_list(dev_net(dev)); in __phonet_get_rcu()
82 if (pnd->netdev == dev) in __phonet_get_rcu()
88 static void phonet_device_destroy(struct net_device *dev) in phonet_device_destroy() argument
90 struct phonet_device_list *pndevs = phonet_device_list(dev_net(dev)); in phonet_device_destroy()
97 pnd = __phonet_get(dev); in phonet_device_destroy()
104 struct net *net = dev_net(dev); in phonet_device_destroy()
105 u32 ifindex = dev->ifindex; in phonet_device_destroy()
119 struct net_device *dev = NULL; in phonet_device_get() local
123 dev = pnd->netdev; in phonet_device_get()
124 BUG_ON(!dev); in phonet_device_get()
126 if ((dev->reg_state == NETREG_REGISTERED) && in phonet_device_get()
129 dev = NULL; in phonet_device_get()
131 dev_hold(dev); in phonet_device_get()
133 return dev; in phonet_device_get()
136 int phonet_address_add(struct net_device *dev, u8 addr) in phonet_address_add() argument
138 struct phonet_device_list *pndevs = phonet_device_list(dev_net(dev)); in phonet_address_add()
145 pnd = __phonet_get(dev); in phonet_address_add()
147 pnd = __phonet_device_alloc(dev); in phonet_address_add()
158 int phonet_address_del(struct net_device *dev, u8 addr) in phonet_address_del() argument
160 struct phonet_device_list *pndevs = phonet_device_list(dev_net(dev)); in phonet_address_del()
166 pnd = __phonet_get(dev); in phonet_address_del()
184 u8 phonet_address_get(struct net_device *dev, u8 daddr) in phonet_address_get() argument
190 pnd = __phonet_get_rcu(dev); in phonet_address_get()
207 def_dev = phonet_device_get(dev_net(dev)); in phonet_address_get()
209 if (def_dev != dev) in phonet_address_get()
241 static int phonet_device_autoconf(struct net_device *dev) in phonet_device_autoconf() argument
246 if (!dev->netdev_ops->ndo_siocdevprivate) in phonet_device_autoconf()
249 ret = dev->netdev_ops->ndo_siocdevprivate(dev, (struct ifreq *)&req, in phonet_device_autoconf()
255 ret = phonet_address_add(dev, req.ifr_phonet_autoconf.device); in phonet_device_autoconf()
259 phonet_address_notify(dev_net(dev), RTM_NEWADDR, dev->ifindex, in phonet_device_autoconf()
264 static void phonet_route_autodel(struct net_device *dev) in phonet_route_autodel() argument
266 struct net *net = dev_net(dev); in phonet_route_autodel()
268 u32 ifindex = dev->ifindex; in phonet_route_autodel()
279 if (rcu_access_pointer(pnn->routes.table[i]) == dev) { in phonet_route_autodel()
291 dev_put(dev); in phonet_route_autodel()
299 struct net_device *dev = netdev_notifier_info_to_dev(ptr); in phonet_device_notify() local
303 if (dev->type == ARPHRD_PHONET) in phonet_device_notify()
304 phonet_device_autoconf(dev); in phonet_device_notify()
307 phonet_device_destroy(dev); in phonet_device_notify()
308 phonet_route_autodel(dev); in phonet_device_notify()
374 int phonet_route_add(struct net_device *dev, u8 daddr) in phonet_route_add() argument
376 struct phonet_net *pnn = phonet_pernet(dev_net(dev)); in phonet_route_add()
384 rcu_assign_pointer(routes->table[daddr], dev); in phonet_route_add()
385 dev_hold(dev); in phonet_route_add()
393 int phonet_route_del(struct net_device *dev, u8 daddr) in phonet_route_del() argument
395 struct phonet_net *pnn = phonet_pernet(dev_net(dev)); in phonet_route_del()
401 if (rcu_access_pointer(routes->table[daddr]) == dev) in phonet_route_del()
404 dev = NULL; in phonet_route_del()
407 if (!dev) in phonet_route_del()
419 struct net_device *dev; in phonet_route_get_rcu() local
422 dev = rcu_dereference(routes->table[daddr]); in phonet_route_get_rcu()
423 return dev; in phonet_route_get_rcu()
430 struct net_device *dev; in phonet_route_output() local
434 dev = rcu_dereference(routes->table[daddr]); in phonet_route_output()
435 dev_hold(dev); in phonet_route_output()
438 if (!dev) in phonet_route_output()
439 dev = phonet_device_get(net); /* Default route */ in phonet_route_output()
440 return dev; in phonet_route_output()