dev.c (5343da4c17429efaa5fb1594ea96aee1a283e694) dev.c (ab92d68fc22f9afab480153bd82a20f6e2533769)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * NET3 Protocol independent device support routines.
4 *
5 * Derived from the non IP parts of dev.c 1.0.19
6 * Authors: Ross Biro
7 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
8 * Mark Evans, <evansmp@uhura.aston.ac.uk>

--- 263 unchanged lines hidden (view full) ---

272/*
273 * Device drivers call our routines to queue packets here. We empty the
274 * queue in the local softnet handler.
275 */
276
277DEFINE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
278EXPORT_PER_CPU_SYMBOL(softnet_data);
279
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * NET3 Protocol independent device support routines.
4 *
5 * Derived from the non IP parts of dev.c 1.0.19
6 * Authors: Ross Biro
7 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
8 * Mark Evans, <evansmp@uhura.aston.ac.uk>

--- 263 unchanged lines hidden (view full) ---

272/*
273 * Device drivers call our routines to queue packets here. We empty the
274 * queue in the local softnet handler.
275 */
276
277DEFINE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
278EXPORT_PER_CPU_SYMBOL(softnet_data);
279
280#ifdef CONFIG_LOCKDEP
281/*
282 * register_netdevice() inits txq->_xmit_lock and sets lockdep class
283 * according to dev->type
284 */
285static const unsigned short netdev_lock_type[] = {
286 ARPHRD_NETROM, ARPHRD_ETHER, ARPHRD_EETHER, ARPHRD_AX25,
287 ARPHRD_PRONET, ARPHRD_CHAOS, ARPHRD_IEEE802, ARPHRD_ARCNET,
288 ARPHRD_APPLETLK, ARPHRD_DLCI, ARPHRD_ATM, ARPHRD_METRICOM,
289 ARPHRD_IEEE1394, ARPHRD_EUI64, ARPHRD_INFINIBAND, ARPHRD_SLIP,
290 ARPHRD_CSLIP, ARPHRD_SLIP6, ARPHRD_CSLIP6, ARPHRD_RSRVD,
291 ARPHRD_ADAPT, ARPHRD_ROSE, ARPHRD_X25, ARPHRD_HWX25,
292 ARPHRD_PPP, ARPHRD_CISCO, ARPHRD_LAPB, ARPHRD_DDCMP,
293 ARPHRD_RAWHDLC, ARPHRD_TUNNEL, ARPHRD_TUNNEL6, ARPHRD_FRAD,
294 ARPHRD_SKIP, ARPHRD_LOOPBACK, ARPHRD_LOCALTLK, ARPHRD_FDDI,
295 ARPHRD_BIF, ARPHRD_SIT, ARPHRD_IPDDP, ARPHRD_IPGRE,
296 ARPHRD_PIMREG, ARPHRD_HIPPI, ARPHRD_ASH, ARPHRD_ECONET,
297 ARPHRD_IRDA, ARPHRD_FCPP, ARPHRD_FCAL, ARPHRD_FCPL,
298 ARPHRD_FCFABRIC, ARPHRD_IEEE80211, ARPHRD_IEEE80211_PRISM,
299 ARPHRD_IEEE80211_RADIOTAP, ARPHRD_PHONET, ARPHRD_PHONET_PIPE,
300 ARPHRD_IEEE802154, ARPHRD_VOID, ARPHRD_NONE};
301
302static const char *const netdev_lock_name[] = {
303 "_xmit_NETROM", "_xmit_ETHER", "_xmit_EETHER", "_xmit_AX25",
304 "_xmit_PRONET", "_xmit_CHAOS", "_xmit_IEEE802", "_xmit_ARCNET",
305 "_xmit_APPLETLK", "_xmit_DLCI", "_xmit_ATM", "_xmit_METRICOM",
306 "_xmit_IEEE1394", "_xmit_EUI64", "_xmit_INFINIBAND", "_xmit_SLIP",
307 "_xmit_CSLIP", "_xmit_SLIP6", "_xmit_CSLIP6", "_xmit_RSRVD",
308 "_xmit_ADAPT", "_xmit_ROSE", "_xmit_X25", "_xmit_HWX25",
309 "_xmit_PPP", "_xmit_CISCO", "_xmit_LAPB", "_xmit_DDCMP",
310 "_xmit_RAWHDLC", "_xmit_TUNNEL", "_xmit_TUNNEL6", "_xmit_FRAD",
311 "_xmit_SKIP", "_xmit_LOOPBACK", "_xmit_LOCALTLK", "_xmit_FDDI",
312 "_xmit_BIF", "_xmit_SIT", "_xmit_IPDDP", "_xmit_IPGRE",
313 "_xmit_PIMREG", "_xmit_HIPPI", "_xmit_ASH", "_xmit_ECONET",
314 "_xmit_IRDA", "_xmit_FCPP", "_xmit_FCAL", "_xmit_FCPL",
315 "_xmit_FCFABRIC", "_xmit_IEEE80211", "_xmit_IEEE80211_PRISM",
316 "_xmit_IEEE80211_RADIOTAP", "_xmit_PHONET", "_xmit_PHONET_PIPE",
317 "_xmit_IEEE802154", "_xmit_VOID", "_xmit_NONE"};
318
319static struct lock_class_key netdev_xmit_lock_key[ARRAY_SIZE(netdev_lock_type)];
320static struct lock_class_key netdev_addr_lock_key[ARRAY_SIZE(netdev_lock_type)];
321
322static inline unsigned short netdev_lock_pos(unsigned short dev_type)
323{
324 int i;
325
326 for (i = 0; i < ARRAY_SIZE(netdev_lock_type); i++)
327 if (netdev_lock_type[i] == dev_type)
328 return i;
329 /* the last key is used by default */
330 return ARRAY_SIZE(netdev_lock_type) - 1;
331}
332
333static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
334 unsigned short dev_type)
335{
336 int i;
337
338 i = netdev_lock_pos(dev_type);
339 lockdep_set_class_and_name(lock, &netdev_xmit_lock_key[i],
340 netdev_lock_name[i]);
341}
342
343static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
344{
345 int i;
346
347 i = netdev_lock_pos(dev->type);
348 lockdep_set_class_and_name(&dev->addr_list_lock,
349 &netdev_addr_lock_key[i],
350 netdev_lock_name[i]);
351}
352#else
353static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
354 unsigned short dev_type)
355{
356}
357static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
358{
359}
360#endif
361
362/*******************************************************************************
363 *
364 * Protocol management and registration routines
365 *
366 *******************************************************************************/
367
368
369/*

--- 8424 unchanged lines hidden (view full) ---

8794 kvfree(dev->_rx);
8795}
8796
8797static void netdev_init_one_queue(struct net_device *dev,
8798 struct netdev_queue *queue, void *_unused)
8799{
8800 /* Initialize queue lock */
8801 spin_lock_init(&queue->_xmit_lock);
280/*******************************************************************************
281 *
282 * Protocol management and registration routines
283 *
284 *******************************************************************************/
285
286
287/*

--- 8424 unchanged lines hidden (view full) ---

8712 kvfree(dev->_rx);
8713}
8714
8715static void netdev_init_one_queue(struct net_device *dev,
8716 struct netdev_queue *queue, void *_unused)
8717{
8718 /* Initialize queue lock */
8719 spin_lock_init(&queue->_xmit_lock);
8802 netdev_set_xmit_lockdep_class(&queue->_xmit_lock, dev->type);
8720 lockdep_set_class(&queue->_xmit_lock, &dev->qdisc_xmit_lock_key);
8803 queue->xmit_lock_owner = -1;
8804 netdev_queue_numa_node_write(queue, NUMA_NO_NODE);
8805 queue->dev = dev;
8806#ifdef CONFIG_BQL
8807 dql_init(&queue->dql, HZ);
8808#endif
8809}
8810

--- 30 unchanged lines hidden (view full) ---

8841 for (i = 0; i < dev->num_tx_queues; i++) {
8842 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
8843
8844 netif_tx_stop_queue(txq);
8845 }
8846}
8847EXPORT_SYMBOL(netif_tx_stop_all_queues);
8848
8721 queue->xmit_lock_owner = -1;
8722 netdev_queue_numa_node_write(queue, NUMA_NO_NODE);
8723 queue->dev = dev;
8724#ifdef CONFIG_BQL
8725 dql_init(&queue->dql, HZ);
8726#endif
8727}
8728

--- 30 unchanged lines hidden (view full) ---

8759 for (i = 0; i < dev->num_tx_queues; i++) {
8760 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
8761
8762 netif_tx_stop_queue(txq);
8763 }
8764}
8765EXPORT_SYMBOL(netif_tx_stop_all_queues);
8766
8767static void netdev_register_lockdep_key(struct net_device *dev)
8768{
8769 lockdep_register_key(&dev->qdisc_tx_busylock_key);
8770 lockdep_register_key(&dev->qdisc_running_key);
8771 lockdep_register_key(&dev->qdisc_xmit_lock_key);
8772 lockdep_register_key(&dev->addr_list_lock_key);
8773}
8774
8775static void netdev_unregister_lockdep_key(struct net_device *dev)
8776{
8777 lockdep_unregister_key(&dev->qdisc_tx_busylock_key);
8778 lockdep_unregister_key(&dev->qdisc_running_key);
8779 lockdep_unregister_key(&dev->qdisc_xmit_lock_key);
8780 lockdep_unregister_key(&dev->addr_list_lock_key);
8781}
8782
8783void netdev_update_lockdep_key(struct net_device *dev)
8784{
8785 struct netdev_queue *queue;
8786 int i;
8787
8788 lockdep_unregister_key(&dev->qdisc_xmit_lock_key);
8789 lockdep_unregister_key(&dev->addr_list_lock_key);
8790
8791 lockdep_register_key(&dev->qdisc_xmit_lock_key);
8792 lockdep_register_key(&dev->addr_list_lock_key);
8793
8794 lockdep_set_class(&dev->addr_list_lock, &dev->addr_list_lock_key);
8795 for (i = 0; i < dev->num_tx_queues; i++) {
8796 queue = netdev_get_tx_queue(dev, i);
8797
8798 lockdep_set_class(&queue->_xmit_lock,
8799 &dev->qdisc_xmit_lock_key);
8800 }
8801}
8802EXPORT_SYMBOL(netdev_update_lockdep_key);
8803
8849/**
8850 * register_netdevice - register a network device
8851 * @dev: device to register
8852 *
8853 * Take a completed network device structure and add it to the kernel
8854 * interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
8855 * chain. 0 is returned on success. A negative errno code is returned
8856 * on a failure to set up the device, or if the name is a duplicate.

--- 18 unchanged lines hidden (view full) ---

8875
8876 might_sleep();
8877
8878 /* When net_device's are persistent, this will be fatal. */
8879 BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
8880 BUG_ON(!net);
8881
8882 spin_lock_init(&dev->addr_list_lock);
8804/**
8805 * register_netdevice - register a network device
8806 * @dev: device to register
8807 *
8808 * Take a completed network device structure and add it to the kernel
8809 * interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
8810 * chain. 0 is returned on success. A negative errno code is returned
8811 * on a failure to set up the device, or if the name is a duplicate.

--- 18 unchanged lines hidden (view full) ---

8830
8831 might_sleep();
8832
8833 /* When net_device's are persistent, this will be fatal. */
8834 BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
8835 BUG_ON(!net);
8836
8837 spin_lock_init(&dev->addr_list_lock);
8883 netdev_set_addr_lockdep_class(dev);
8838 lockdep_set_class(&dev->addr_list_lock, &dev->addr_list_lock_key);
8884
8885 ret = dev_get_valid_name(net, dev, dev->name);
8886 if (ret < 0)
8887 goto out;
8888
8889 /* Init, if this function is available */
8890 if (dev->netdev_ops->ndo_init) {
8891 ret = dev->netdev_ops->ndo_init(dev);

--- 493 unchanged lines hidden (view full) ---

9385 if (dev_addr_init(dev))
9386 goto free_pcpu;
9387
9388 dev_mc_init(dev);
9389 dev_uc_init(dev);
9390
9391 dev_net_set(dev, &init_net);
9392
8839
8840 ret = dev_get_valid_name(net, dev, dev->name);
8841 if (ret < 0)
8842 goto out;
8843
8844 /* Init, if this function is available */
8845 if (dev->netdev_ops->ndo_init) {
8846 ret = dev->netdev_ops->ndo_init(dev);

--- 493 unchanged lines hidden (view full) ---

9340 if (dev_addr_init(dev))
9341 goto free_pcpu;
9342
9343 dev_mc_init(dev);
9344 dev_uc_init(dev);
9345
9346 dev_net_set(dev, &init_net);
9347
9348 netdev_register_lockdep_key(dev);
9349
9393 dev->gso_max_size = GSO_MAX_SIZE;
9394 dev->gso_max_segs = GSO_MAX_SEGS;
9395 dev->upper_level = 1;
9396 dev->lower_level = 1;
9397
9398 INIT_LIST_HEAD(&dev->napi_list);
9399 INIT_LIST_HEAD(&dev->unreg_list);
9400 INIT_LIST_HEAD(&dev->close_list);

--- 68 unchanged lines hidden (view full) ---

9469 dev_addr_flush(dev);
9470
9471 list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
9472 netif_napi_del(p);
9473
9474 free_percpu(dev->pcpu_refcnt);
9475 dev->pcpu_refcnt = NULL;
9476
9350 dev->gso_max_size = GSO_MAX_SIZE;
9351 dev->gso_max_segs = GSO_MAX_SEGS;
9352 dev->upper_level = 1;
9353 dev->lower_level = 1;
9354
9355 INIT_LIST_HEAD(&dev->napi_list);
9356 INIT_LIST_HEAD(&dev->unreg_list);
9357 INIT_LIST_HEAD(&dev->close_list);

--- 68 unchanged lines hidden (view full) ---

9426 dev_addr_flush(dev);
9427
9428 list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
9429 netif_napi_del(p);
9430
9431 free_percpu(dev->pcpu_refcnt);
9432 dev->pcpu_refcnt = NULL;
9433
9434 netdev_unregister_lockdep_key(dev);
9435
9477 /* Compatibility with error handling in drivers */
9478 if (dev->reg_state == NETREG_UNINITIALIZED) {
9479 netdev_freemem(dev);
9480 return;
9481 }
9482
9483 BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
9484 dev->reg_state = NETREG_RELEASED;

--- 630 unchanged lines hidden ---
9436 /* Compatibility with error handling in drivers */
9437 if (dev->reg_state == NETREG_UNINITIALIZED) {
9438 netdev_freemem(dev);
9439 return;
9440 }
9441
9442 BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
9443 dev->reg_state = NETREG_RELEASED;

--- 630 unchanged lines hidden ---