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 --- |