Loading...
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>
9 *
10 * Additional Authors:
11 * Florian la Roche <rzsfl@rz.uni-sb.de>
12 * Alan Cox <gw4pts@gw4pts.ampr.org>
13 * David Hinds <dahinds@users.sourceforge.net>
14 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
15 * Adam Sulmicki <adam@cfar.umd.edu>
16 * Pekka Riikonen <priikone@poesidon.pspt.fi>
17 *
18 * Changes:
19 * D.J. Barrow : Fixed bug where dev->refcnt gets set
20 * to 2 if register_netdev gets called
21 * before net_dev_init & also removed a
22 * few lines of code in the process.
23 * Alan Cox : device private ioctl copies fields back.
24 * Alan Cox : Transmit queue code does relevant
25 * stunts to keep the queue safe.
26 * Alan Cox : Fixed double lock.
27 * Alan Cox : Fixed promisc NULL pointer trap
28 * ???????? : Support the full private ioctl range
29 * Alan Cox : Moved ioctl permission check into
30 * drivers
31 * Tim Kordas : SIOCADDMULTI/SIOCDELMULTI
32 * Alan Cox : 100 backlog just doesn't cut it when
33 * you start doing multicast video 8)
34 * Alan Cox : Rewrote net_bh and list manager.
35 * Alan Cox : Fix ETH_P_ALL echoback lengths.
36 * Alan Cox : Took out transmit every packet pass
37 * Saved a few bytes in the ioctl handler
38 * Alan Cox : Network driver sets packet type before
39 * calling netif_rx. Saves a function
40 * call a packet.
41 * Alan Cox : Hashed net_bh()
42 * Richard Kooijman: Timestamp fixes.
43 * Alan Cox : Wrong field in SIOCGIFDSTADDR
44 * Alan Cox : Device lock protection.
45 * Alan Cox : Fixed nasty side effect of device close
46 * changes.
47 * Rudi Cilibrasi : Pass the right thing to
48 * set_mac_address()
49 * Dave Miller : 32bit quantity for the device lock to
50 * make it work out on a Sparc.
51 * Bjorn Ekwall : Added KERNELD hack.
52 * Alan Cox : Cleaned up the backlog initialise.
53 * Craig Metz : SIOCGIFCONF fix if space for under
54 * 1 device.
55 * Thomas Bogendoerfer : Return ENODEV for dev_open, if there
56 * is no device open function.
57 * Andi Kleen : Fix error reporting for SIOCGIFCONF
58 * Michael Chastain : Fix signed/unsigned for SIOCGIFCONF
59 * Cyrus Durgin : Cleaned for KMOD
60 * Adam Sulmicki : Bug Fix : Network Device Unload
61 * A network device unload needs to purge
62 * the backlog queue.
63 * Paul Rusty Russell : SIOCSIFNAME
64 * Pekka Riikonen : Netdev boot-time settings code
65 * Andrew Morton : Make unregister_netdevice wait
66 * indefinitely on dev->refcnt
67 * J Hadi Salim : - Backlog queue sampling
68 * - netif_rx() feedback
69 */
70
71#include <linux/uaccess.h>
72#include <linux/bitops.h>
73#include <linux/capability.h>
74#include <linux/cpu.h>
75#include <linux/types.h>
76#include <linux/kernel.h>
77#include <linux/hash.h>
78#include <linux/slab.h>
79#include <linux/sched.h>
80#include <linux/sched/mm.h>
81#include <linux/mutex.h>
82#include <linux/rwsem.h>
83#include <linux/string.h>
84#include <linux/mm.h>
85#include <linux/socket.h>
86#include <linux/sockios.h>
87#include <linux/errno.h>
88#include <linux/interrupt.h>
89#include <linux/if_ether.h>
90#include <linux/netdevice.h>
91#include <linux/etherdevice.h>
92#include <linux/ethtool.h>
93#include <linux/skbuff.h>
94#include <linux/kthread.h>
95#include <linux/bpf.h>
96#include <linux/bpf_trace.h>
97#include <net/net_namespace.h>
98#include <net/sock.h>
99#include <net/busy_poll.h>
100#include <linux/rtnetlink.h>
101#include <linux/stat.h>
102#include <net/dsa.h>
103#include <net/dst.h>
104#include <net/dst_metadata.h>
105#include <net/gro.h>
106#include <net/pkt_sched.h>
107#include <net/pkt_cls.h>
108#include <net/checksum.h>
109#include <net/xfrm.h>
110#include <linux/highmem.h>
111#include <linux/init.h>
112#include <linux/module.h>
113#include <linux/netpoll.h>
114#include <linux/rcupdate.h>
115#include <linux/delay.h>
116#include <net/iw_handler.h>
117#include <asm/current.h>
118#include <linux/audit.h>
119#include <linux/dmaengine.h>
120#include <linux/err.h>
121#include <linux/ctype.h>
122#include <linux/if_arp.h>
123#include <linux/if_vlan.h>
124#include <linux/ip.h>
125#include <net/ip.h>
126#include <net/mpls.h>
127#include <linux/ipv6.h>
128#include <linux/in.h>
129#include <linux/jhash.h>
130#include <linux/random.h>
131#include <trace/events/napi.h>
132#include <trace/events/net.h>
133#include <trace/events/skb.h>
134#include <trace/events/qdisc.h>
135#include <linux/inetdevice.h>
136#include <linux/cpu_rmap.h>
137#include <linux/static_key.h>
138#include <linux/hashtable.h>
139#include <linux/vmalloc.h>
140#include <linux/if_macvlan.h>
141#include <linux/errqueue.h>
142#include <linux/hrtimer.h>
143#include <linux/netfilter_netdev.h>
144#include <linux/crash_dump.h>
145#include <linux/sctp.h>
146#include <net/udp_tunnel.h>
147#include <linux/net_namespace.h>
148#include <linux/indirect_call_wrapper.h>
149#include <net/devlink.h>
150#include <linux/pm_runtime.h>
151#include <linux/prandom.h>
152#include <linux/once_lite.h>
153
154#include "dev.h"
155#include "net-sysfs.h"
156
157
158static DEFINE_SPINLOCK(ptype_lock);
159struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly;
160struct list_head ptype_all __read_mostly; /* Taps */
161
162static int netif_rx_internal(struct sk_buff *skb);
163static int call_netdevice_notifiers_info(unsigned long val,
164 struct netdev_notifier_info *info);
165static int call_netdevice_notifiers_extack(unsigned long val,
166 struct net_device *dev,
167 struct netlink_ext_ack *extack);
168static struct napi_struct *napi_by_id(unsigned int napi_id);
169
170/*
171 * The @dev_base_head list is protected by @dev_base_lock and the rtnl
172 * semaphore.
173 *
174 * Pure readers hold dev_base_lock for reading, or rcu_read_lock()
175 *
176 * Writers must hold the rtnl semaphore while they loop through the
177 * dev_base_head list, and hold dev_base_lock for writing when they do the
178 * actual updates. This allows pure readers to access the list even
179 * while a writer is preparing to update it.
180 *
181 * To put it another way, dev_base_lock is held for writing only to
182 * protect against pure readers; the rtnl semaphore provides the
183 * protection against other writers.
184 *
185 * See, for example usages, register_netdevice() and
186 * unregister_netdevice(), which must be called with the rtnl
187 * semaphore held.
188 */
189DEFINE_RWLOCK(dev_base_lock);
190EXPORT_SYMBOL(dev_base_lock);
191
192static DEFINE_MUTEX(ifalias_mutex);
193
194/* protects napi_hash addition/deletion and napi_gen_id */
195static DEFINE_SPINLOCK(napi_hash_lock);
196
197static unsigned int napi_gen_id = NR_CPUS;
198static DEFINE_READ_MOSTLY_HASHTABLE(napi_hash, 8);
199
200static DECLARE_RWSEM(devnet_rename_sem);
201
202static inline void dev_base_seq_inc(struct net *net)
203{
204 while (++net->dev_base_seq == 0)
205 ;
206}
207
208static inline struct hlist_head *dev_name_hash(struct net *net, const char *name)
209{
210 unsigned int hash = full_name_hash(net, name, strnlen(name, IFNAMSIZ));
211
212 return &net->dev_name_head[hash_32(hash, NETDEV_HASHBITS)];
213}
214
215static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
216{
217 return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)];
218}
219
220static inline void rps_lock_irqsave(struct softnet_data *sd,
221 unsigned long *flags)
222{
223 if (IS_ENABLED(CONFIG_RPS))
224 spin_lock_irqsave(&sd->input_pkt_queue.lock, *flags);
225 else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
226 local_irq_save(*flags);
227}
228
229static inline void rps_lock_irq_disable(struct softnet_data *sd)
230{
231 if (IS_ENABLED(CONFIG_RPS))
232 spin_lock_irq(&sd->input_pkt_queue.lock);
233 else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
234 local_irq_disable();
235}
236
237static inline void rps_unlock_irq_restore(struct softnet_data *sd,
238 unsigned long *flags)
239{
240 if (IS_ENABLED(CONFIG_RPS))
241 spin_unlock_irqrestore(&sd->input_pkt_queue.lock, *flags);
242 else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
243 local_irq_restore(*flags);
244}
245
246static inline void rps_unlock_irq_enable(struct softnet_data *sd)
247{
248 if (IS_ENABLED(CONFIG_RPS))
249 spin_unlock_irq(&sd->input_pkt_queue.lock);
250 else if (!IS_ENABLED(CONFIG_PREEMPT_RT))
251 local_irq_enable();
252}
253
254static struct netdev_name_node *netdev_name_node_alloc(struct net_device *dev,
255 const char *name)
256{
257 struct netdev_name_node *name_node;
258
259 name_node = kmalloc(sizeof(*name_node), GFP_KERNEL);
260 if (!name_node)
261 return NULL;
262 INIT_HLIST_NODE(&name_node->hlist);
263 name_node->dev = dev;
264 name_node->name = name;
265 return name_node;
266}
267
268static struct netdev_name_node *
269netdev_name_node_head_alloc(struct net_device *dev)
270{
271 struct netdev_name_node *name_node;
272
273 name_node = netdev_name_node_alloc(dev, dev->name);
274 if (!name_node)
275 return NULL;
276 INIT_LIST_HEAD(&name_node->list);
277 return name_node;
278}
279
280static void netdev_name_node_free(struct netdev_name_node *name_node)
281{
282 kfree(name_node);
283}
284
285static void netdev_name_node_add(struct net *net,
286 struct netdev_name_node *name_node)
287{
288 hlist_add_head_rcu(&name_node->hlist,
289 dev_name_hash(net, name_node->name));
290}
291
292static void netdev_name_node_del(struct netdev_name_node *name_node)
293{
294 hlist_del_rcu(&name_node->hlist);
295}
296
297static struct netdev_name_node *netdev_name_node_lookup(struct net *net,
298 const char *name)
299{
300 struct hlist_head *head = dev_name_hash(net, name);
301 struct netdev_name_node *name_node;
302
303 hlist_for_each_entry(name_node, head, hlist)
304 if (!strcmp(name_node->name, name))
305 return name_node;
306 return NULL;
307}
308
309static struct netdev_name_node *netdev_name_node_lookup_rcu(struct net *net,
310 const char *name)
311{
312 struct hlist_head *head = dev_name_hash(net, name);
313 struct netdev_name_node *name_node;
314
315 hlist_for_each_entry_rcu(name_node, head, hlist)
316 if (!strcmp(name_node->name, name))
317 return name_node;
318 return NULL;
319}
320
321bool netdev_name_in_use(struct net *net, const char *name)
322{
323 return netdev_name_node_lookup(net, name);
324}
325EXPORT_SYMBOL(netdev_name_in_use);
326
327int netdev_name_node_alt_create(struct net_device *dev, const char *name)
328{
329 struct netdev_name_node *name_node;
330 struct net *net = dev_net(dev);
331
332 name_node = netdev_name_node_lookup(net, name);
333 if (name_node)
334 return -EEXIST;
335 name_node = netdev_name_node_alloc(dev, name);
336 if (!name_node)
337 return -ENOMEM;
338 netdev_name_node_add(net, name_node);
339 /* The node that holds dev->name acts as a head of per-device list. */
340 list_add_tail(&name_node->list, &dev->name_node->list);
341
342 return 0;
343}
344
345static void __netdev_name_node_alt_destroy(struct netdev_name_node *name_node)
346{
347 list_del(&name_node->list);
348 netdev_name_node_del(name_node);
349 kfree(name_node->name);
350 netdev_name_node_free(name_node);
351}
352
353int netdev_name_node_alt_destroy(struct net_device *dev, const char *name)
354{
355 struct netdev_name_node *name_node;
356 struct net *net = dev_net(dev);
357
358 name_node = netdev_name_node_lookup(net, name);
359 if (!name_node)
360 return -ENOENT;
361 /* lookup might have found our primary name or a name belonging
362 * to another device.
363 */
364 if (name_node == dev->name_node || name_node->dev != dev)
365 return -EINVAL;
366
367 __netdev_name_node_alt_destroy(name_node);
368
369 return 0;
370}
371
372static void netdev_name_node_alt_flush(struct net_device *dev)
373{
374 struct netdev_name_node *name_node, *tmp;
375
376 list_for_each_entry_safe(name_node, tmp, &dev->name_node->list, list)
377 __netdev_name_node_alt_destroy(name_node);
378}
379
380/* Device list insertion */
381static void list_netdevice(struct net_device *dev)
382{
383 struct net *net = dev_net(dev);
384
385 ASSERT_RTNL();
386
387 write_lock(&dev_base_lock);
388 list_add_tail_rcu(&dev->dev_list, &net->dev_base_head);
389 netdev_name_node_add(net, dev->name_node);
390 hlist_add_head_rcu(&dev->index_hlist,
391 dev_index_hash(net, dev->ifindex));
392 write_unlock(&dev_base_lock);
393
394 dev_base_seq_inc(net);
395}
396
397/* Device list removal
398 * caller must respect a RCU grace period before freeing/reusing dev
399 */
400static void unlist_netdevice(struct net_device *dev, bool lock)
401{
402 ASSERT_RTNL();
403
404 /* Unlink dev from the device chain */
405 if (lock)
406 write_lock(&dev_base_lock);
407 list_del_rcu(&dev->dev_list);
408 netdev_name_node_del(dev->name_node);
409 hlist_del_rcu(&dev->index_hlist);
410 if (lock)
411 write_unlock(&dev_base_lock);
412
413 dev_base_seq_inc(dev_net(dev));
414}
415
416/*
417 * Our notifier list
418 */
419
420static RAW_NOTIFIER_HEAD(netdev_chain);
421
422/*
423 * Device drivers call our routines to queue packets here. We empty the
424 * queue in the local softnet handler.
425 */
426
427DEFINE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
428EXPORT_PER_CPU_SYMBOL(softnet_data);
429
430#ifdef CONFIG_LOCKDEP
431/*
432 * register_netdevice() inits txq->_xmit_lock and sets lockdep class
433 * according to dev->type
434 */
435static const unsigned short netdev_lock_type[] = {
436 ARPHRD_NETROM, ARPHRD_ETHER, ARPHRD_EETHER, ARPHRD_AX25,
437 ARPHRD_PRONET, ARPHRD_CHAOS, ARPHRD_IEEE802, ARPHRD_ARCNET,
438 ARPHRD_APPLETLK, ARPHRD_DLCI, ARPHRD_ATM, ARPHRD_METRICOM,
439 ARPHRD_IEEE1394, ARPHRD_EUI64, ARPHRD_INFINIBAND, ARPHRD_SLIP,
440 ARPHRD_CSLIP, ARPHRD_SLIP6, ARPHRD_CSLIP6, ARPHRD_RSRVD,
441 ARPHRD_ADAPT, ARPHRD_ROSE, ARPHRD_X25, ARPHRD_HWX25,
442 ARPHRD_PPP, ARPHRD_CISCO, ARPHRD_LAPB, ARPHRD_DDCMP,
443 ARPHRD_RAWHDLC, ARPHRD_TUNNEL, ARPHRD_TUNNEL6, ARPHRD_FRAD,
444 ARPHRD_SKIP, ARPHRD_LOOPBACK, ARPHRD_LOCALTLK, ARPHRD_FDDI,
445 ARPHRD_BIF, ARPHRD_SIT, ARPHRD_IPDDP, ARPHRD_IPGRE,
446 ARPHRD_PIMREG, ARPHRD_HIPPI, ARPHRD_ASH, ARPHRD_ECONET,
447 ARPHRD_IRDA, ARPHRD_FCPP, ARPHRD_FCAL, ARPHRD_FCPL,
448 ARPHRD_FCFABRIC, ARPHRD_IEEE80211, ARPHRD_IEEE80211_PRISM,
449 ARPHRD_IEEE80211_RADIOTAP, ARPHRD_PHONET, ARPHRD_PHONET_PIPE,
450 ARPHRD_IEEE802154, ARPHRD_VOID, ARPHRD_NONE};
451
452static const char *const netdev_lock_name[] = {
453 "_xmit_NETROM", "_xmit_ETHER", "_xmit_EETHER", "_xmit_AX25",
454 "_xmit_PRONET", "_xmit_CHAOS", "_xmit_IEEE802", "_xmit_ARCNET",
455 "_xmit_APPLETLK", "_xmit_DLCI", "_xmit_ATM", "_xmit_METRICOM",
456 "_xmit_IEEE1394", "_xmit_EUI64", "_xmit_INFINIBAND", "_xmit_SLIP",
457 "_xmit_CSLIP", "_xmit_SLIP6", "_xmit_CSLIP6", "_xmit_RSRVD",
458 "_xmit_ADAPT", "_xmit_ROSE", "_xmit_X25", "_xmit_HWX25",
459 "_xmit_PPP", "_xmit_CISCO", "_xmit_LAPB", "_xmit_DDCMP",
460 "_xmit_RAWHDLC", "_xmit_TUNNEL", "_xmit_TUNNEL6", "_xmit_FRAD",
461 "_xmit_SKIP", "_xmit_LOOPBACK", "_xmit_LOCALTLK", "_xmit_FDDI",
462 "_xmit_BIF", "_xmit_SIT", "_xmit_IPDDP", "_xmit_IPGRE",
463 "_xmit_PIMREG", "_xmit_HIPPI", "_xmit_ASH", "_xmit_ECONET",
464 "_xmit_IRDA", "_xmit_FCPP", "_xmit_FCAL", "_xmit_FCPL",
465 "_xmit_FCFABRIC", "_xmit_IEEE80211", "_xmit_IEEE80211_PRISM",
466 "_xmit_IEEE80211_RADIOTAP", "_xmit_PHONET", "_xmit_PHONET_PIPE",
467 "_xmit_IEEE802154", "_xmit_VOID", "_xmit_NONE"};
468
469static struct lock_class_key netdev_xmit_lock_key[ARRAY_SIZE(netdev_lock_type)];
470static struct lock_class_key netdev_addr_lock_key[ARRAY_SIZE(netdev_lock_type)];
471
472static inline unsigned short netdev_lock_pos(unsigned short dev_type)
473{
474 int i;
475
476 for (i = 0; i < ARRAY_SIZE(netdev_lock_type); i++)
477 if (netdev_lock_type[i] == dev_type)
478 return i;
479 /* the last key is used by default */
480 return ARRAY_SIZE(netdev_lock_type) - 1;
481}
482
483static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
484 unsigned short dev_type)
485{
486 int i;
487
488 i = netdev_lock_pos(dev_type);
489 lockdep_set_class_and_name(lock, &netdev_xmit_lock_key[i],
490 netdev_lock_name[i]);
491}
492
493static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
494{
495 int i;
496
497 i = netdev_lock_pos(dev->type);
498 lockdep_set_class_and_name(&dev->addr_list_lock,
499 &netdev_addr_lock_key[i],
500 netdev_lock_name[i]);
501}
502#else
503static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
504 unsigned short dev_type)
505{
506}
507
508static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
509{
510}
511#endif
512
513/*******************************************************************************
514 *
515 * Protocol management and registration routines
516 *
517 *******************************************************************************/
518
519
520/*
521 * Add a protocol ID to the list. Now that the input handler is
522 * smarter we can dispense with all the messy stuff that used to be
523 * here.
524 *
525 * BEWARE!!! Protocol handlers, mangling input packets,
526 * MUST BE last in hash buckets and checking protocol handlers
527 * MUST start from promiscuous ptype_all chain in net_bh.
528 * It is true now, do not change it.
529 * Explanation follows: if protocol handler, mangling packet, will
530 * be the first on list, it is not able to sense, that packet
531 * is cloned and should be copied-on-write, so that it will
532 * change it and subsequent readers will get broken packet.
533 * --ANK (980803)
534 */
535
536static inline struct list_head *ptype_head(const struct packet_type *pt)
537{
538 if (pt->type == htons(ETH_P_ALL))
539 return pt->dev ? &pt->dev->ptype_all : &ptype_all;
540 else
541 return pt->dev ? &pt->dev->ptype_specific :
542 &ptype_base[ntohs(pt->type) & PTYPE_HASH_MASK];
543}
544
545/**
546 * dev_add_pack - add packet handler
547 * @pt: packet type declaration
548 *
549 * Add a protocol handler to the networking stack. The passed &packet_type
550 * is linked into kernel lists and may not be freed until it has been
551 * removed from the kernel lists.
552 *
553 * This call does not sleep therefore it can not
554 * guarantee all CPU's that are in middle of receiving packets
555 * will see the new packet type (until the next received packet).
556 */
557
558void dev_add_pack(struct packet_type *pt)
559{
560 struct list_head *head = ptype_head(pt);
561
562 spin_lock(&ptype_lock);
563 list_add_rcu(&pt->list, head);
564 spin_unlock(&ptype_lock);
565}
566EXPORT_SYMBOL(dev_add_pack);
567
568/**
569 * __dev_remove_pack - remove packet handler
570 * @pt: packet type declaration
571 *
572 * Remove a protocol handler that was previously added to the kernel
573 * protocol handlers by dev_add_pack(). The passed &packet_type is removed
574 * from the kernel lists and can be freed or reused once this function
575 * returns.
576 *
577 * The packet type might still be in use by receivers
578 * and must not be freed until after all the CPU's have gone
579 * through a quiescent state.
580 */
581void __dev_remove_pack(struct packet_type *pt)
582{
583 struct list_head *head = ptype_head(pt);
584 struct packet_type *pt1;
585
586 spin_lock(&ptype_lock);
587
588 list_for_each_entry(pt1, head, list) {
589 if (pt == pt1) {
590 list_del_rcu(&pt->list);
591 goto out;
592 }
593 }
594
595 pr_warn("dev_remove_pack: %p not found\n", pt);
596out:
597 spin_unlock(&ptype_lock);
598}
599EXPORT_SYMBOL(__dev_remove_pack);
600
601/**
602 * dev_remove_pack - remove packet handler
603 * @pt: packet type declaration
604 *
605 * Remove a protocol handler that was previously added to the kernel
606 * protocol handlers by dev_add_pack(). The passed &packet_type is removed
607 * from the kernel lists and can be freed or reused once this function
608 * returns.
609 *
610 * This call sleeps to guarantee that no CPU is looking at the packet
611 * type after return.
612 */
613void dev_remove_pack(struct packet_type *pt)
614{
615 __dev_remove_pack(pt);
616
617 synchronize_net();
618}
619EXPORT_SYMBOL(dev_remove_pack);
620
621
622/*******************************************************************************
623 *
624 * Device Interface Subroutines
625 *
626 *******************************************************************************/
627
628/**
629 * dev_get_iflink - get 'iflink' value of a interface
630 * @dev: targeted interface
631 *
632 * Indicates the ifindex the interface is linked to.
633 * Physical interfaces have the same 'ifindex' and 'iflink' values.
634 */
635
636int dev_get_iflink(const struct net_device *dev)
637{
638 if (dev->netdev_ops && dev->netdev_ops->ndo_get_iflink)
639 return dev->netdev_ops->ndo_get_iflink(dev);
640
641 return dev->ifindex;
642}
643EXPORT_SYMBOL(dev_get_iflink);
644
645/**
646 * dev_fill_metadata_dst - Retrieve tunnel egress information.
647 * @dev: targeted interface
648 * @skb: The packet.
649 *
650 * For better visibility of tunnel traffic OVS needs to retrieve
651 * egress tunnel information for a packet. Following API allows
652 * user to get this info.
653 */
654int dev_fill_metadata_dst(struct net_device *dev, struct sk_buff *skb)
655{
656 struct ip_tunnel_info *info;
657
658 if (!dev->netdev_ops || !dev->netdev_ops->ndo_fill_metadata_dst)
659 return -EINVAL;
660
661 info = skb_tunnel_info_unclone(skb);
662 if (!info)
663 return -ENOMEM;
664 if (unlikely(!(info->mode & IP_TUNNEL_INFO_TX)))
665 return -EINVAL;
666
667 return dev->netdev_ops->ndo_fill_metadata_dst(dev, skb);
668}
669EXPORT_SYMBOL_GPL(dev_fill_metadata_dst);
670
671static struct net_device_path *dev_fwd_path(struct net_device_path_stack *stack)
672{
673 int k = stack->num_paths++;
674
675 if (WARN_ON_ONCE(k >= NET_DEVICE_PATH_STACK_MAX))
676 return NULL;
677
678 return &stack->path[k];
679}
680
681int dev_fill_forward_path(const struct net_device *dev, const u8 *daddr,
682 struct net_device_path_stack *stack)
683{
684 const struct net_device *last_dev;
685 struct net_device_path_ctx ctx = {
686 .dev = dev,
687 };
688 struct net_device_path *path;
689 int ret = 0;
690
691 memcpy(ctx.daddr, daddr, sizeof(ctx.daddr));
692 stack->num_paths = 0;
693 while (ctx.dev && ctx.dev->netdev_ops->ndo_fill_forward_path) {
694 last_dev = ctx.dev;
695 path = dev_fwd_path(stack);
696 if (!path)
697 return -1;
698
699 memset(path, 0, sizeof(struct net_device_path));
700 ret = ctx.dev->netdev_ops->ndo_fill_forward_path(&ctx, path);
701 if (ret < 0)
702 return -1;
703
704 if (WARN_ON_ONCE(last_dev == ctx.dev))
705 return -1;
706 }
707
708 if (!ctx.dev)
709 return ret;
710
711 path = dev_fwd_path(stack);
712 if (!path)
713 return -1;
714 path->type = DEV_PATH_ETHERNET;
715 path->dev = ctx.dev;
716
717 return ret;
718}
719EXPORT_SYMBOL_GPL(dev_fill_forward_path);
720
721/**
722 * __dev_get_by_name - find a device by its name
723 * @net: the applicable net namespace
724 * @name: name to find
725 *
726 * Find an interface by name. Must be called under RTNL semaphore
727 * or @dev_base_lock. If the name is found a pointer to the device
728 * is returned. If the name is not found then %NULL is returned. The
729 * reference counters are not incremented so the caller must be
730 * careful with locks.
731 */
732
733struct net_device *__dev_get_by_name(struct net *net, const char *name)
734{
735 struct netdev_name_node *node_name;
736
737 node_name = netdev_name_node_lookup(net, name);
738 return node_name ? node_name->dev : NULL;
739}
740EXPORT_SYMBOL(__dev_get_by_name);
741
742/**
743 * dev_get_by_name_rcu - find a device by its name
744 * @net: the applicable net namespace
745 * @name: name to find
746 *
747 * Find an interface by name.
748 * If the name is found a pointer to the device is returned.
749 * If the name is not found then %NULL is returned.
750 * The reference counters are not incremented so the caller must be
751 * careful with locks. The caller must hold RCU lock.
752 */
753
754struct net_device *dev_get_by_name_rcu(struct net *net, const char *name)
755{
756 struct netdev_name_node *node_name;
757
758 node_name = netdev_name_node_lookup_rcu(net, name);
759 return node_name ? node_name->dev : NULL;
760}
761EXPORT_SYMBOL(dev_get_by_name_rcu);
762
763/**
764 * dev_get_by_name - find a device by its name
765 * @net: the applicable net namespace
766 * @name: name to find
767 *
768 * Find an interface by name. This can be called from any
769 * context and does its own locking. The returned handle has
770 * the usage count incremented and the caller must use dev_put() to
771 * release it when it is no longer needed. %NULL is returned if no
772 * matching device is found.
773 */
774
775struct net_device *dev_get_by_name(struct net *net, const char *name)
776{
777 struct net_device *dev;
778
779 rcu_read_lock();
780 dev = dev_get_by_name_rcu(net, name);
781 dev_hold(dev);
782 rcu_read_unlock();
783 return dev;
784}
785EXPORT_SYMBOL(dev_get_by_name);
786
787/**
788 * __dev_get_by_index - find a device by its ifindex
789 * @net: the applicable net namespace
790 * @ifindex: index of device
791 *
792 * Search for an interface by index. Returns %NULL if the device
793 * is not found or a pointer to the device. The device has not
794 * had its reference counter increased so the caller must be careful
795 * about locking. The caller must hold either the RTNL semaphore
796 * or @dev_base_lock.
797 */
798
799struct net_device *__dev_get_by_index(struct net *net, int ifindex)
800{
801 struct net_device *dev;
802 struct hlist_head *head = dev_index_hash(net, ifindex);
803
804 hlist_for_each_entry(dev, head, index_hlist)
805 if (dev->ifindex == ifindex)
806 return dev;
807
808 return NULL;
809}
810EXPORT_SYMBOL(__dev_get_by_index);
811
812/**
813 * dev_get_by_index_rcu - find a device by its ifindex
814 * @net: the applicable net namespace
815 * @ifindex: index of device
816 *
817 * Search for an interface by index. Returns %NULL if the device
818 * is not found or a pointer to the device. The device has not
819 * had its reference counter increased so the caller must be careful
820 * about locking. The caller must hold RCU lock.
821 */
822
823struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex)
824{
825 struct net_device *dev;
826 struct hlist_head *head = dev_index_hash(net, ifindex);
827
828 hlist_for_each_entry_rcu(dev, head, index_hlist)
829 if (dev->ifindex == ifindex)
830 return dev;
831
832 return NULL;
833}
834EXPORT_SYMBOL(dev_get_by_index_rcu);
835
836
837/**
838 * dev_get_by_index - find a device by its ifindex
839 * @net: the applicable net namespace
840 * @ifindex: index of device
841 *
842 * Search for an interface by index. Returns NULL if the device
843 * is not found or a pointer to the device. The device returned has
844 * had a reference added and the pointer is safe until the user calls
845 * dev_put to indicate they have finished with it.
846 */
847
848struct net_device *dev_get_by_index(struct net *net, int ifindex)
849{
850 struct net_device *dev;
851
852 rcu_read_lock();
853 dev = dev_get_by_index_rcu(net, ifindex);
854 dev_hold(dev);
855 rcu_read_unlock();
856 return dev;
857}
858EXPORT_SYMBOL(dev_get_by_index);
859
860/**
861 * dev_get_by_napi_id - find a device by napi_id
862 * @napi_id: ID of the NAPI struct
863 *
864 * Search for an interface by NAPI ID. Returns %NULL if the device
865 * is not found or a pointer to the device. The device has not had
866 * its reference counter increased so the caller must be careful
867 * about locking. The caller must hold RCU lock.
868 */
869
870struct net_device *dev_get_by_napi_id(unsigned int napi_id)
871{
872 struct napi_struct *napi;
873
874 WARN_ON_ONCE(!rcu_read_lock_held());
875
876 if (napi_id < MIN_NAPI_ID)
877 return NULL;
878
879 napi = napi_by_id(napi_id);
880
881 return napi ? napi->dev : NULL;
882}
883EXPORT_SYMBOL(dev_get_by_napi_id);
884
885/**
886 * netdev_get_name - get a netdevice name, knowing its ifindex.
887 * @net: network namespace
888 * @name: a pointer to the buffer where the name will be stored.
889 * @ifindex: the ifindex of the interface to get the name from.
890 */
891int netdev_get_name(struct net *net, char *name, int ifindex)
892{
893 struct net_device *dev;
894 int ret;
895
896 down_read(&devnet_rename_sem);
897 rcu_read_lock();
898
899 dev = dev_get_by_index_rcu(net, ifindex);
900 if (!dev) {
901 ret = -ENODEV;
902 goto out;
903 }
904
905 strcpy(name, dev->name);
906
907 ret = 0;
908out:
909 rcu_read_unlock();
910 up_read(&devnet_rename_sem);
911 return ret;
912}
913
914/**
915 * dev_getbyhwaddr_rcu - find a device by its hardware address
916 * @net: the applicable net namespace
917 * @type: media type of device
918 * @ha: hardware address
919 *
920 * Search for an interface by MAC address. Returns NULL if the device
921 * is not found or a pointer to the device.
922 * The caller must hold RCU or RTNL.
923 * The returned device has not had its ref count increased
924 * and the caller must therefore be careful about locking
925 *
926 */
927
928struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
929 const char *ha)
930{
931 struct net_device *dev;
932
933 for_each_netdev_rcu(net, dev)
934 if (dev->type == type &&
935 !memcmp(dev->dev_addr, ha, dev->addr_len))
936 return dev;
937
938 return NULL;
939}
940EXPORT_SYMBOL(dev_getbyhwaddr_rcu);
941
942struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type)
943{
944 struct net_device *dev, *ret = NULL;
945
946 rcu_read_lock();
947 for_each_netdev_rcu(net, dev)
948 if (dev->type == type) {
949 dev_hold(dev);
950 ret = dev;
951 break;
952 }
953 rcu_read_unlock();
954 return ret;
955}
956EXPORT_SYMBOL(dev_getfirstbyhwtype);
957
958/**
959 * __dev_get_by_flags - find any device with given flags
960 * @net: the applicable net namespace
961 * @if_flags: IFF_* values
962 * @mask: bitmask of bits in if_flags to check
963 *
964 * Search for any interface with the given flags. Returns NULL if a device
965 * is not found or a pointer to the device. Must be called inside
966 * rtnl_lock(), and result refcount is unchanged.
967 */
968
969struct net_device *__dev_get_by_flags(struct net *net, unsigned short if_flags,
970 unsigned short mask)
971{
972 struct net_device *dev, *ret;
973
974 ASSERT_RTNL();
975
976 ret = NULL;
977 for_each_netdev(net, dev) {
978 if (((dev->flags ^ if_flags) & mask) == 0) {
979 ret = dev;
980 break;
981 }
982 }
983 return ret;
984}
985EXPORT_SYMBOL(__dev_get_by_flags);
986
987/**
988 * dev_valid_name - check if name is okay for network device
989 * @name: name string
990 *
991 * Network device names need to be valid file names to
992 * allow sysfs to work. We also disallow any kind of
993 * whitespace.
994 */
995bool dev_valid_name(const char *name)
996{
997 if (*name == '\0')
998 return false;
999 if (strnlen(name, IFNAMSIZ) == IFNAMSIZ)
1000 return false;
1001 if (!strcmp(name, ".") || !strcmp(name, ".."))
1002 return false;
1003
1004 while (*name) {
1005 if (*name == '/' || *name == ':' || isspace(*name))
1006 return false;
1007 name++;
1008 }
1009 return true;
1010}
1011EXPORT_SYMBOL(dev_valid_name);
1012
1013/**
1014 * __dev_alloc_name - allocate a name for a device
1015 * @net: network namespace to allocate the device name in
1016 * @name: name format string
1017 * @buf: scratch buffer and result name string
1018 *
1019 * Passed a format string - eg "lt%d" it will try and find a suitable
1020 * id. It scans list of devices to build up a free map, then chooses
1021 * the first empty slot. The caller must hold the dev_base or rtnl lock
1022 * while allocating the name and adding the device in order to avoid
1023 * duplicates.
1024 * Limited to bits_per_byte * page size devices (ie 32K on most platforms).
1025 * Returns the number of the unit assigned or a negative errno code.
1026 */
1027
1028static int __dev_alloc_name(struct net *net, const char *name, char *buf)
1029{
1030 int i = 0;
1031 const char *p;
1032 const int max_netdevices = 8*PAGE_SIZE;
1033 unsigned long *inuse;
1034 struct net_device *d;
1035
1036 if (!dev_valid_name(name))
1037 return -EINVAL;
1038
1039 p = strchr(name, '%');
1040 if (p) {
1041 /*
1042 * Verify the string as this thing may have come from
1043 * the user. There must be either one "%d" and no other "%"
1044 * characters.
1045 */
1046 if (p[1] != 'd' || strchr(p + 2, '%'))
1047 return -EINVAL;
1048
1049 /* Use one page as a bit array of possible slots */
1050 inuse = (unsigned long *) get_zeroed_page(GFP_ATOMIC);
1051 if (!inuse)
1052 return -ENOMEM;
1053
1054 for_each_netdev(net, d) {
1055 struct netdev_name_node *name_node;
1056 list_for_each_entry(name_node, &d->name_node->list, list) {
1057 if (!sscanf(name_node->name, name, &i))
1058 continue;
1059 if (i < 0 || i >= max_netdevices)
1060 continue;
1061
1062 /* avoid cases where sscanf is not exact inverse of printf */
1063 snprintf(buf, IFNAMSIZ, name, i);
1064 if (!strncmp(buf, name_node->name, IFNAMSIZ))
1065 __set_bit(i, inuse);
1066 }
1067 if (!sscanf(d->name, name, &i))
1068 continue;
1069 if (i < 0 || i >= max_netdevices)
1070 continue;
1071
1072 /* avoid cases where sscanf is not exact inverse of printf */
1073 snprintf(buf, IFNAMSIZ, name, i);
1074 if (!strncmp(buf, d->name, IFNAMSIZ))
1075 __set_bit(i, inuse);
1076 }
1077
1078 i = find_first_zero_bit(inuse, max_netdevices);
1079 free_page((unsigned long) inuse);
1080 }
1081
1082 snprintf(buf, IFNAMSIZ, name, i);
1083 if (!netdev_name_in_use(net, buf))
1084 return i;
1085
1086 /* It is possible to run out of possible slots
1087 * when the name is long and there isn't enough space left
1088 * for the digits, or if all bits are used.
1089 */
1090 return -ENFILE;
1091}
1092
1093static int dev_alloc_name_ns(struct net *net,
1094 struct net_device *dev,
1095 const char *name)
1096{
1097 char buf[IFNAMSIZ];
1098 int ret;
1099
1100 BUG_ON(!net);
1101 ret = __dev_alloc_name(net, name, buf);
1102 if (ret >= 0)
1103 strscpy(dev->name, buf, IFNAMSIZ);
1104 return ret;
1105}
1106
1107/**
1108 * dev_alloc_name - allocate a name for a device
1109 * @dev: device
1110 * @name: name format string
1111 *
1112 * Passed a format string - eg "lt%d" it will try and find a suitable
1113 * id. It scans list of devices to build up a free map, then chooses
1114 * the first empty slot. The caller must hold the dev_base or rtnl lock
1115 * while allocating the name and adding the device in order to avoid
1116 * duplicates.
1117 * Limited to bits_per_byte * page size devices (ie 32K on most platforms).
1118 * Returns the number of the unit assigned or a negative errno code.
1119 */
1120
1121int dev_alloc_name(struct net_device *dev, const char *name)
1122{
1123 return dev_alloc_name_ns(dev_net(dev), dev, name);
1124}
1125EXPORT_SYMBOL(dev_alloc_name);
1126
1127static int dev_get_valid_name(struct net *net, struct net_device *dev,
1128 const char *name)
1129{
1130 BUG_ON(!net);
1131
1132 if (!dev_valid_name(name))
1133 return -EINVAL;
1134
1135 if (strchr(name, '%'))
1136 return dev_alloc_name_ns(net, dev, name);
1137 else if (netdev_name_in_use(net, name))
1138 return -EEXIST;
1139 else if (dev->name != name)
1140 strscpy(dev->name, name, IFNAMSIZ);
1141
1142 return 0;
1143}
1144
1145/**
1146 * dev_change_name - change name of a device
1147 * @dev: device
1148 * @newname: name (or format string) must be at least IFNAMSIZ
1149 *
1150 * Change name of a device, can pass format strings "eth%d".
1151 * for wildcarding.
1152 */
1153int dev_change_name(struct net_device *dev, const char *newname)
1154{
1155 unsigned char old_assign_type;
1156 char oldname[IFNAMSIZ];
1157 int err = 0;
1158 int ret;
1159 struct net *net;
1160
1161 ASSERT_RTNL();
1162 BUG_ON(!dev_net(dev));
1163
1164 net = dev_net(dev);
1165
1166 down_write(&devnet_rename_sem);
1167
1168 if (strncmp(newname, dev->name, IFNAMSIZ) == 0) {
1169 up_write(&devnet_rename_sem);
1170 return 0;
1171 }
1172
1173 memcpy(oldname, dev->name, IFNAMSIZ);
1174
1175 err = dev_get_valid_name(net, dev, newname);
1176 if (err < 0) {
1177 up_write(&devnet_rename_sem);
1178 return err;
1179 }
1180
1181 if (oldname[0] && !strchr(oldname, '%'))
1182 netdev_info(dev, "renamed from %s%s\n", oldname,
1183 dev->flags & IFF_UP ? " (while UP)" : "");
1184
1185 old_assign_type = dev->name_assign_type;
1186 dev->name_assign_type = NET_NAME_RENAMED;
1187
1188rollback:
1189 ret = device_rename(&dev->dev, dev->name);
1190 if (ret) {
1191 memcpy(dev->name, oldname, IFNAMSIZ);
1192 dev->name_assign_type = old_assign_type;
1193 up_write(&devnet_rename_sem);
1194 return ret;
1195 }
1196
1197 up_write(&devnet_rename_sem);
1198
1199 netdev_adjacent_rename_links(dev, oldname);
1200
1201 write_lock(&dev_base_lock);
1202 netdev_name_node_del(dev->name_node);
1203 write_unlock(&dev_base_lock);
1204
1205 synchronize_rcu();
1206
1207 write_lock(&dev_base_lock);
1208 netdev_name_node_add(net, dev->name_node);
1209 write_unlock(&dev_base_lock);
1210
1211 ret = call_netdevice_notifiers(NETDEV_CHANGENAME, dev);
1212 ret = notifier_to_errno(ret);
1213
1214 if (ret) {
1215 /* err >= 0 after dev_alloc_name() or stores the first errno */
1216 if (err >= 0) {
1217 err = ret;
1218 down_write(&devnet_rename_sem);
1219 memcpy(dev->name, oldname, IFNAMSIZ);
1220 memcpy(oldname, newname, IFNAMSIZ);
1221 dev->name_assign_type = old_assign_type;
1222 old_assign_type = NET_NAME_RENAMED;
1223 goto rollback;
1224 } else {
1225 netdev_err(dev, "name change rollback failed: %d\n",
1226 ret);
1227 }
1228 }
1229
1230 return err;
1231}
1232
1233/**
1234 * dev_set_alias - change ifalias of a device
1235 * @dev: device
1236 * @alias: name up to IFALIASZ
1237 * @len: limit of bytes to copy from info
1238 *
1239 * Set ifalias for a device,
1240 */
1241int dev_set_alias(struct net_device *dev, const char *alias, size_t len)
1242{
1243 struct dev_ifalias *new_alias = NULL;
1244
1245 if (len >= IFALIASZ)
1246 return -EINVAL;
1247
1248 if (len) {
1249 new_alias = kmalloc(sizeof(*new_alias) + len + 1, GFP_KERNEL);
1250 if (!new_alias)
1251 return -ENOMEM;
1252
1253 memcpy(new_alias->ifalias, alias, len);
1254 new_alias->ifalias[len] = 0;
1255 }
1256
1257 mutex_lock(&ifalias_mutex);
1258 new_alias = rcu_replace_pointer(dev->ifalias, new_alias,
1259 mutex_is_locked(&ifalias_mutex));
1260 mutex_unlock(&ifalias_mutex);
1261
1262 if (new_alias)
1263 kfree_rcu(new_alias, rcuhead);
1264
1265 return len;
1266}
1267EXPORT_SYMBOL(dev_set_alias);
1268
1269/**
1270 * dev_get_alias - get ifalias of a device
1271 * @dev: device
1272 * @name: buffer to store name of ifalias
1273 * @len: size of buffer
1274 *
1275 * get ifalias for a device. Caller must make sure dev cannot go
1276 * away, e.g. rcu read lock or own a reference count to device.
1277 */
1278int dev_get_alias(const struct net_device *dev, char *name, size_t len)
1279{
1280 const struct dev_ifalias *alias;
1281 int ret = 0;
1282
1283 rcu_read_lock();
1284 alias = rcu_dereference(dev->ifalias);
1285 if (alias)
1286 ret = snprintf(name, len, "%s", alias->ifalias);
1287 rcu_read_unlock();
1288
1289 return ret;
1290}
1291
1292/**
1293 * netdev_features_change - device changes features
1294 * @dev: device to cause notification
1295 *
1296 * Called to indicate a device has changed features.
1297 */
1298void netdev_features_change(struct net_device *dev)
1299{
1300 call_netdevice_notifiers(NETDEV_FEAT_CHANGE, dev);
1301}
1302EXPORT_SYMBOL(netdev_features_change);
1303
1304/**
1305 * netdev_state_change - device changes state
1306 * @dev: device to cause notification
1307 *
1308 * Called to indicate a device has changed state. This function calls
1309 * the notifier chains for netdev_chain and sends a NEWLINK message
1310 * to the routing socket.
1311 */
1312void netdev_state_change(struct net_device *dev)
1313{
1314 if (dev->flags & IFF_UP) {
1315 struct netdev_notifier_change_info change_info = {
1316 .info.dev = dev,
1317 };
1318
1319 call_netdevice_notifiers_info(NETDEV_CHANGE,
1320 &change_info.info);
1321 rtmsg_ifinfo(RTM_NEWLINK, dev, 0, GFP_KERNEL, 0, NULL);
1322 }
1323}
1324EXPORT_SYMBOL(netdev_state_change);
1325
1326/**
1327 * __netdev_notify_peers - notify network peers about existence of @dev,
1328 * to be called when rtnl lock is already held.
1329 * @dev: network device
1330 *
1331 * Generate traffic such that interested network peers are aware of
1332 * @dev, such as by generating a gratuitous ARP. This may be used when
1333 * a device wants to inform the rest of the network about some sort of
1334 * reconfiguration such as a failover event or virtual machine
1335 * migration.
1336 */
1337void __netdev_notify_peers(struct net_device *dev)
1338{
1339 ASSERT_RTNL();
1340 call_netdevice_notifiers(NETDEV_NOTIFY_PEERS, dev);
1341 call_netdevice_notifiers(NETDEV_RESEND_IGMP, dev);
1342}
1343EXPORT_SYMBOL(__netdev_notify_peers);
1344
1345/**
1346 * netdev_notify_peers - notify network peers about existence of @dev
1347 * @dev: network device
1348 *
1349 * Generate traffic such that interested network peers are aware of
1350 * @dev, such as by generating a gratuitous ARP. This may be used when
1351 * a device wants to inform the rest of the network about some sort of
1352 * reconfiguration such as a failover event or virtual machine
1353 * migration.
1354 */
1355void netdev_notify_peers(struct net_device *dev)
1356{
1357 rtnl_lock();
1358 __netdev_notify_peers(dev);
1359 rtnl_unlock();
1360}
1361EXPORT_SYMBOL(netdev_notify_peers);
1362
1363static int napi_threaded_poll(void *data);
1364
1365static int napi_kthread_create(struct napi_struct *n)
1366{
1367 int err = 0;
1368
1369 /* Create and wake up the kthread once to put it in
1370 * TASK_INTERRUPTIBLE mode to avoid the blocked task
1371 * warning and work with loadavg.
1372 */
1373 n->thread = kthread_run(napi_threaded_poll, n, "napi/%s-%d",
1374 n->dev->name, n->napi_id);
1375 if (IS_ERR(n->thread)) {
1376 err = PTR_ERR(n->thread);
1377 pr_err("kthread_run failed with err %d\n", err);
1378 n->thread = NULL;
1379 }
1380
1381 return err;
1382}
1383
1384static int __dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
1385{
1386 const struct net_device_ops *ops = dev->netdev_ops;
1387 int ret;
1388
1389 ASSERT_RTNL();
1390 dev_addr_check(dev);
1391
1392 if (!netif_device_present(dev)) {
1393 /* may be detached because parent is runtime-suspended */
1394 if (dev->dev.parent)
1395 pm_runtime_resume(dev->dev.parent);
1396 if (!netif_device_present(dev))
1397 return -ENODEV;
1398 }
1399
1400 /* Block netpoll from trying to do any rx path servicing.
1401 * If we don't do this there is a chance ndo_poll_controller
1402 * or ndo_poll may be running while we open the device
1403 */
1404 netpoll_poll_disable(dev);
1405
1406 ret = call_netdevice_notifiers_extack(NETDEV_PRE_UP, dev, extack);
1407 ret = notifier_to_errno(ret);
1408 if (ret)
1409 return ret;
1410
1411 set_bit(__LINK_STATE_START, &dev->state);
1412
1413 if (ops->ndo_validate_addr)
1414 ret = ops->ndo_validate_addr(dev);
1415
1416 if (!ret && ops->ndo_open)
1417 ret = ops->ndo_open(dev);
1418
1419 netpoll_poll_enable(dev);
1420
1421 if (ret)
1422 clear_bit(__LINK_STATE_START, &dev->state);
1423 else {
1424 dev->flags |= IFF_UP;
1425 dev_set_rx_mode(dev);
1426 dev_activate(dev);
1427 add_device_randomness(dev->dev_addr, dev->addr_len);
1428 }
1429
1430 return ret;
1431}
1432
1433/**
1434 * dev_open - prepare an interface for use.
1435 * @dev: device to open
1436 * @extack: netlink extended ack
1437 *
1438 * Takes a device from down to up state. The device's private open
1439 * function is invoked and then the multicast lists are loaded. Finally
1440 * the device is moved into the up state and a %NETDEV_UP message is
1441 * sent to the netdev notifier chain.
1442 *
1443 * Calling this function on an active interface is a nop. On a failure
1444 * a negative errno code is returned.
1445 */
1446int dev_open(struct net_device *dev, struct netlink_ext_ack *extack)
1447{
1448 int ret;
1449
1450 if (dev->flags & IFF_UP)
1451 return 0;
1452
1453 ret = __dev_open(dev, extack);
1454 if (ret < 0)
1455 return ret;
1456
1457 rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP | IFF_RUNNING, GFP_KERNEL, 0, NULL);
1458 call_netdevice_notifiers(NETDEV_UP, dev);
1459
1460 return ret;
1461}
1462EXPORT_SYMBOL(dev_open);
1463
1464static void __dev_close_many(struct list_head *head)
1465{
1466 struct net_device *dev;
1467
1468 ASSERT_RTNL();
1469 might_sleep();
1470
1471 list_for_each_entry(dev, head, close_list) {
1472 /* Temporarily disable netpoll until the interface is down */
1473 netpoll_poll_disable(dev);
1474
1475 call_netdevice_notifiers(NETDEV_GOING_DOWN, dev);
1476
1477 clear_bit(__LINK_STATE_START, &dev->state);
1478
1479 /* Synchronize to scheduled poll. We cannot touch poll list, it
1480 * can be even on different cpu. So just clear netif_running().
1481 *
1482 * dev->stop() will invoke napi_disable() on all of it's
1483 * napi_struct instances on this device.
1484 */
1485 smp_mb__after_atomic(); /* Commit netif_running(). */
1486 }
1487
1488 dev_deactivate_many(head);
1489
1490 list_for_each_entry(dev, head, close_list) {
1491 const struct net_device_ops *ops = dev->netdev_ops;
1492
1493 /*
1494 * Call the device specific close. This cannot fail.
1495 * Only if device is UP
1496 *
1497 * We allow it to be called even after a DETACH hot-plug
1498 * event.
1499 */
1500 if (ops->ndo_stop)
1501 ops->ndo_stop(dev);
1502
1503 dev->flags &= ~IFF_UP;
1504 netpoll_poll_enable(dev);
1505 }
1506}
1507
1508static void __dev_close(struct net_device *dev)
1509{
1510 LIST_HEAD(single);
1511
1512 list_add(&dev->close_list, &single);
1513 __dev_close_many(&single);
1514 list_del(&single);
1515}
1516
1517void dev_close_many(struct list_head *head, bool unlink)
1518{
1519 struct net_device *dev, *tmp;
1520
1521 /* Remove the devices that don't need to be closed */
1522 list_for_each_entry_safe(dev, tmp, head, close_list)
1523 if (!(dev->flags & IFF_UP))
1524 list_del_init(&dev->close_list);
1525
1526 __dev_close_many(head);
1527
1528 list_for_each_entry_safe(dev, tmp, head, close_list) {
1529 rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP | IFF_RUNNING, GFP_KERNEL, 0, NULL);
1530 call_netdevice_notifiers(NETDEV_DOWN, dev);
1531 if (unlink)
1532 list_del_init(&dev->close_list);
1533 }
1534}
1535EXPORT_SYMBOL(dev_close_many);
1536
1537/**
1538 * dev_close - shutdown an interface.
1539 * @dev: device to shutdown
1540 *
1541 * This function moves an active device into down state. A
1542 * %NETDEV_GOING_DOWN is sent to the netdev notifier chain. The device
1543 * is then deactivated and finally a %NETDEV_DOWN is sent to the notifier
1544 * chain.
1545 */
1546void dev_close(struct net_device *dev)
1547{
1548 if (dev->flags & IFF_UP) {
1549 LIST_HEAD(single);
1550
1551 list_add(&dev->close_list, &single);
1552 dev_close_many(&single, true);
1553 list_del(&single);
1554 }
1555}
1556EXPORT_SYMBOL(dev_close);
1557
1558
1559/**
1560 * dev_disable_lro - disable Large Receive Offload on a device
1561 * @dev: device
1562 *
1563 * Disable Large Receive Offload (LRO) on a net device. Must be
1564 * called under RTNL. This is needed if received packets may be
1565 * forwarded to another interface.
1566 */
1567void dev_disable_lro(struct net_device *dev)
1568{
1569 struct net_device *lower_dev;
1570 struct list_head *iter;
1571
1572 dev->wanted_features &= ~NETIF_F_LRO;
1573 netdev_update_features(dev);
1574
1575 if (unlikely(dev->features & NETIF_F_LRO))
1576 netdev_WARN(dev, "failed to disable LRO!\n");
1577
1578 netdev_for_each_lower_dev(dev, lower_dev, iter)
1579 dev_disable_lro(lower_dev);
1580}
1581EXPORT_SYMBOL(dev_disable_lro);
1582
1583/**
1584 * dev_disable_gro_hw - disable HW Generic Receive Offload on a device
1585 * @dev: device
1586 *
1587 * Disable HW Generic Receive Offload (GRO_HW) on a net device. Must be
1588 * called under RTNL. This is needed if Generic XDP is installed on
1589 * the device.
1590 */
1591static void dev_disable_gro_hw(struct net_device *dev)
1592{
1593 dev->wanted_features &= ~NETIF_F_GRO_HW;
1594 netdev_update_features(dev);
1595
1596 if (unlikely(dev->features & NETIF_F_GRO_HW))
1597 netdev_WARN(dev, "failed to disable GRO_HW!\n");
1598}
1599
1600const char *netdev_cmd_to_name(enum netdev_cmd cmd)
1601{
1602#define N(val) \
1603 case NETDEV_##val: \
1604 return "NETDEV_" __stringify(val);
1605 switch (cmd) {
1606 N(UP) N(DOWN) N(REBOOT) N(CHANGE) N(REGISTER) N(UNREGISTER)
1607 N(CHANGEMTU) N(CHANGEADDR) N(GOING_DOWN) N(CHANGENAME) N(FEAT_CHANGE)
1608 N(BONDING_FAILOVER) N(PRE_UP) N(PRE_TYPE_CHANGE) N(POST_TYPE_CHANGE)
1609 N(POST_INIT) N(PRE_UNINIT) N(RELEASE) N(NOTIFY_PEERS) N(JOIN)
1610 N(CHANGEUPPER) N(RESEND_IGMP) N(PRECHANGEMTU) N(CHANGEINFODATA)
1611 N(BONDING_INFO) N(PRECHANGEUPPER) N(CHANGELOWERSTATE)
1612 N(UDP_TUNNEL_PUSH_INFO) N(UDP_TUNNEL_DROP_INFO) N(CHANGE_TX_QUEUE_LEN)
1613 N(CVLAN_FILTER_PUSH_INFO) N(CVLAN_FILTER_DROP_INFO)
1614 N(SVLAN_FILTER_PUSH_INFO) N(SVLAN_FILTER_DROP_INFO)
1615 N(PRE_CHANGEADDR) N(OFFLOAD_XSTATS_ENABLE) N(OFFLOAD_XSTATS_DISABLE)
1616 N(OFFLOAD_XSTATS_REPORT_USED) N(OFFLOAD_XSTATS_REPORT_DELTA)
1617 }
1618#undef N
1619 return "UNKNOWN_NETDEV_EVENT";
1620}
1621EXPORT_SYMBOL_GPL(netdev_cmd_to_name);
1622
1623static int call_netdevice_notifier(struct notifier_block *nb, unsigned long val,
1624 struct net_device *dev)
1625{
1626 struct netdev_notifier_info info = {
1627 .dev = dev,
1628 };
1629
1630 return nb->notifier_call(nb, val, &info);
1631}
1632
1633static int call_netdevice_register_notifiers(struct notifier_block *nb,
1634 struct net_device *dev)
1635{
1636 int err;
1637
1638 err = call_netdevice_notifier(nb, NETDEV_REGISTER, dev);
1639 err = notifier_to_errno(err);
1640 if (err)
1641 return err;
1642
1643 if (!(dev->flags & IFF_UP))
1644 return 0;
1645
1646 call_netdevice_notifier(nb, NETDEV_UP, dev);
1647 return 0;
1648}
1649
1650static void call_netdevice_unregister_notifiers(struct notifier_block *nb,
1651 struct net_device *dev)
1652{
1653 if (dev->flags & IFF_UP) {
1654 call_netdevice_notifier(nb, NETDEV_GOING_DOWN,
1655 dev);
1656 call_netdevice_notifier(nb, NETDEV_DOWN, dev);
1657 }
1658 call_netdevice_notifier(nb, NETDEV_UNREGISTER, dev);
1659}
1660
1661static int call_netdevice_register_net_notifiers(struct notifier_block *nb,
1662 struct net *net)
1663{
1664 struct net_device *dev;
1665 int err;
1666
1667 for_each_netdev(net, dev) {
1668 err = call_netdevice_register_notifiers(nb, dev);
1669 if (err)
1670 goto rollback;
1671 }
1672 return 0;
1673
1674rollback:
1675 for_each_netdev_continue_reverse(net, dev)
1676 call_netdevice_unregister_notifiers(nb, dev);
1677 return err;
1678}
1679
1680static void call_netdevice_unregister_net_notifiers(struct notifier_block *nb,
1681 struct net *net)
1682{
1683 struct net_device *dev;
1684
1685 for_each_netdev(net, dev)
1686 call_netdevice_unregister_notifiers(nb, dev);
1687}
1688
1689static int dev_boot_phase = 1;
1690
1691/**
1692 * register_netdevice_notifier - register a network notifier block
1693 * @nb: notifier
1694 *
1695 * Register a notifier to be called when network device events occur.
1696 * The notifier passed is linked into the kernel structures and must
1697 * not be reused until it has been unregistered. A negative errno code
1698 * is returned on a failure.
1699 *
1700 * When registered all registration and up events are replayed
1701 * to the new notifier to allow device to have a race free
1702 * view of the network device list.
1703 */
1704
1705int register_netdevice_notifier(struct notifier_block *nb)
1706{
1707 struct net *net;
1708 int err;
1709
1710 /* Close race with setup_net() and cleanup_net() */
1711 down_write(&pernet_ops_rwsem);
1712 rtnl_lock();
1713 err = raw_notifier_chain_register(&netdev_chain, nb);
1714 if (err)
1715 goto unlock;
1716 if (dev_boot_phase)
1717 goto unlock;
1718 for_each_net(net) {
1719 err = call_netdevice_register_net_notifiers(nb, net);
1720 if (err)
1721 goto rollback;
1722 }
1723
1724unlock:
1725 rtnl_unlock();
1726 up_write(&pernet_ops_rwsem);
1727 return err;
1728
1729rollback:
1730 for_each_net_continue_reverse(net)
1731 call_netdevice_unregister_net_notifiers(nb, net);
1732
1733 raw_notifier_chain_unregister(&netdev_chain, nb);
1734 goto unlock;
1735}
1736EXPORT_SYMBOL(register_netdevice_notifier);
1737
1738/**
1739 * unregister_netdevice_notifier - unregister a network notifier block
1740 * @nb: notifier
1741 *
1742 * Unregister a notifier previously registered by
1743 * register_netdevice_notifier(). The notifier is unlinked into the
1744 * kernel structures and may then be reused. A negative errno code
1745 * is returned on a failure.
1746 *
1747 * After unregistering unregister and down device events are synthesized
1748 * for all devices on the device list to the removed notifier to remove
1749 * the need for special case cleanup code.
1750 */
1751
1752int unregister_netdevice_notifier(struct notifier_block *nb)
1753{
1754 struct net *net;
1755 int err;
1756
1757 /* Close race with setup_net() and cleanup_net() */
1758 down_write(&pernet_ops_rwsem);
1759 rtnl_lock();
1760 err = raw_notifier_chain_unregister(&netdev_chain, nb);
1761 if (err)
1762 goto unlock;
1763
1764 for_each_net(net)
1765 call_netdevice_unregister_net_notifiers(nb, net);
1766
1767unlock:
1768 rtnl_unlock();
1769 up_write(&pernet_ops_rwsem);
1770 return err;
1771}
1772EXPORT_SYMBOL(unregister_netdevice_notifier);
1773
1774static int __register_netdevice_notifier_net(struct net *net,
1775 struct notifier_block *nb,
1776 bool ignore_call_fail)
1777{
1778 int err;
1779
1780 err = raw_notifier_chain_register(&net->netdev_chain, nb);
1781 if (err)
1782 return err;
1783 if (dev_boot_phase)
1784 return 0;
1785
1786 err = call_netdevice_register_net_notifiers(nb, net);
1787 if (err && !ignore_call_fail)
1788 goto chain_unregister;
1789
1790 return 0;
1791
1792chain_unregister:
1793 raw_notifier_chain_unregister(&net->netdev_chain, nb);
1794 return err;
1795}
1796
1797static int __unregister_netdevice_notifier_net(struct net *net,
1798 struct notifier_block *nb)
1799{
1800 int err;
1801
1802 err = raw_notifier_chain_unregister(&net->netdev_chain, nb);
1803 if (err)
1804 return err;
1805
1806 call_netdevice_unregister_net_notifiers(nb, net);
1807 return 0;
1808}
1809
1810/**
1811 * register_netdevice_notifier_net - register a per-netns network notifier block
1812 * @net: network namespace
1813 * @nb: notifier
1814 *
1815 * Register a notifier to be called when network device events occur.
1816 * The notifier passed is linked into the kernel structures and must
1817 * not be reused until it has been unregistered. A negative errno code
1818 * is returned on a failure.
1819 *
1820 * When registered all registration and up events are replayed
1821 * to the new notifier to allow device to have a race free
1822 * view of the network device list.
1823 */
1824
1825int register_netdevice_notifier_net(struct net *net, struct notifier_block *nb)
1826{
1827 int err;
1828
1829 rtnl_lock();
1830 err = __register_netdevice_notifier_net(net, nb, false);
1831 rtnl_unlock();
1832 return err;
1833}
1834EXPORT_SYMBOL(register_netdevice_notifier_net);
1835
1836/**
1837 * unregister_netdevice_notifier_net - unregister a per-netns
1838 * network notifier block
1839 * @net: network namespace
1840 * @nb: notifier
1841 *
1842 * Unregister a notifier previously registered by
1843 * register_netdevice_notifier(). The notifier is unlinked into the
1844 * kernel structures and may then be reused. A negative errno code
1845 * is returned on a failure.
1846 *
1847 * After unregistering unregister and down device events are synthesized
1848 * for all devices on the device list to the removed notifier to remove
1849 * the need for special case cleanup code.
1850 */
1851
1852int unregister_netdevice_notifier_net(struct net *net,
1853 struct notifier_block *nb)
1854{
1855 int err;
1856
1857 rtnl_lock();
1858 err = __unregister_netdevice_notifier_net(net, nb);
1859 rtnl_unlock();
1860 return err;
1861}
1862EXPORT_SYMBOL(unregister_netdevice_notifier_net);
1863
1864static void __move_netdevice_notifier_net(struct net *src_net,
1865 struct net *dst_net,
1866 struct notifier_block *nb)
1867{
1868 __unregister_netdevice_notifier_net(src_net, nb);
1869 __register_netdevice_notifier_net(dst_net, nb, true);
1870}
1871
1872int register_netdevice_notifier_dev_net(struct net_device *dev,
1873 struct notifier_block *nb,
1874 struct netdev_net_notifier *nn)
1875{
1876 int err;
1877
1878 rtnl_lock();
1879 err = __register_netdevice_notifier_net(dev_net(dev), nb, false);
1880 if (!err) {
1881 nn->nb = nb;
1882 list_add(&nn->list, &dev->net_notifier_list);
1883 }
1884 rtnl_unlock();
1885 return err;
1886}
1887EXPORT_SYMBOL(register_netdevice_notifier_dev_net);
1888
1889int unregister_netdevice_notifier_dev_net(struct net_device *dev,
1890 struct notifier_block *nb,
1891 struct netdev_net_notifier *nn)
1892{
1893 int err;
1894
1895 rtnl_lock();
1896 list_del(&nn->list);
1897 err = __unregister_netdevice_notifier_net(dev_net(dev), nb);
1898 rtnl_unlock();
1899 return err;
1900}
1901EXPORT_SYMBOL(unregister_netdevice_notifier_dev_net);
1902
1903static void move_netdevice_notifiers_dev_net(struct net_device *dev,
1904 struct net *net)
1905{
1906 struct netdev_net_notifier *nn;
1907
1908 list_for_each_entry(nn, &dev->net_notifier_list, list)
1909 __move_netdevice_notifier_net(dev_net(dev), net, nn->nb);
1910}
1911
1912/**
1913 * call_netdevice_notifiers_info - call all network notifier blocks
1914 * @val: value passed unmodified to notifier function
1915 * @info: notifier information data
1916 *
1917 * Call all network notifier blocks. Parameters and return value
1918 * are as for raw_notifier_call_chain().
1919 */
1920
1921static int call_netdevice_notifiers_info(unsigned long val,
1922 struct netdev_notifier_info *info)
1923{
1924 struct net *net = dev_net(info->dev);
1925 int ret;
1926
1927 ASSERT_RTNL();
1928
1929 /* Run per-netns notifier block chain first, then run the global one.
1930 * Hopefully, one day, the global one is going to be removed after
1931 * all notifier block registrators get converted to be per-netns.
1932 */
1933 ret = raw_notifier_call_chain(&net->netdev_chain, val, info);
1934 if (ret & NOTIFY_STOP_MASK)
1935 return ret;
1936 return raw_notifier_call_chain(&netdev_chain, val, info);
1937}
1938
1939/**
1940 * call_netdevice_notifiers_info_robust - call per-netns notifier blocks
1941 * for and rollback on error
1942 * @val_up: value passed unmodified to notifier function
1943 * @val_down: value passed unmodified to the notifier function when
1944 * recovering from an error on @val_up
1945 * @info: notifier information data
1946 *
1947 * Call all per-netns network notifier blocks, but not notifier blocks on
1948 * the global notifier chain. Parameters and return value are as for
1949 * raw_notifier_call_chain_robust().
1950 */
1951
1952static int
1953call_netdevice_notifiers_info_robust(unsigned long val_up,
1954 unsigned long val_down,
1955 struct netdev_notifier_info *info)
1956{
1957 struct net *net = dev_net(info->dev);
1958
1959 ASSERT_RTNL();
1960
1961 return raw_notifier_call_chain_robust(&net->netdev_chain,
1962 val_up, val_down, info);
1963}
1964
1965static int call_netdevice_notifiers_extack(unsigned long val,
1966 struct net_device *dev,
1967 struct netlink_ext_ack *extack)
1968{
1969 struct netdev_notifier_info info = {
1970 .dev = dev,
1971 .extack = extack,
1972 };
1973
1974 return call_netdevice_notifiers_info(val, &info);
1975}
1976
1977/**
1978 * call_netdevice_notifiers - call all network notifier blocks
1979 * @val: value passed unmodified to notifier function
1980 * @dev: net_device pointer passed unmodified to notifier function
1981 *
1982 * Call all network notifier blocks. Parameters and return value
1983 * are as for raw_notifier_call_chain().
1984 */
1985
1986int call_netdevice_notifiers(unsigned long val, struct net_device *dev)
1987{
1988 return call_netdevice_notifiers_extack(val, dev, NULL);
1989}
1990EXPORT_SYMBOL(call_netdevice_notifiers);
1991
1992/**
1993 * call_netdevice_notifiers_mtu - call all network notifier blocks
1994 * @val: value passed unmodified to notifier function
1995 * @dev: net_device pointer passed unmodified to notifier function
1996 * @arg: additional u32 argument passed to the notifier function
1997 *
1998 * Call all network notifier blocks. Parameters and return value
1999 * are as for raw_notifier_call_chain().
2000 */
2001static int call_netdevice_notifiers_mtu(unsigned long val,
2002 struct net_device *dev, u32 arg)
2003{
2004 struct netdev_notifier_info_ext info = {
2005 .info.dev = dev,
2006 .ext.mtu = arg,
2007 };
2008
2009 BUILD_BUG_ON(offsetof(struct netdev_notifier_info_ext, info) != 0);
2010
2011 return call_netdevice_notifiers_info(val, &info.info);
2012}
2013
2014#ifdef CONFIG_NET_INGRESS
2015static DEFINE_STATIC_KEY_FALSE(ingress_needed_key);
2016
2017void net_inc_ingress_queue(void)
2018{
2019 static_branch_inc(&ingress_needed_key);
2020}
2021EXPORT_SYMBOL_GPL(net_inc_ingress_queue);
2022
2023void net_dec_ingress_queue(void)
2024{
2025 static_branch_dec(&ingress_needed_key);
2026}
2027EXPORT_SYMBOL_GPL(net_dec_ingress_queue);
2028#endif
2029
2030#ifdef CONFIG_NET_EGRESS
2031static DEFINE_STATIC_KEY_FALSE(egress_needed_key);
2032
2033void net_inc_egress_queue(void)
2034{
2035 static_branch_inc(&egress_needed_key);
2036}
2037EXPORT_SYMBOL_GPL(net_inc_egress_queue);
2038
2039void net_dec_egress_queue(void)
2040{
2041 static_branch_dec(&egress_needed_key);
2042}
2043EXPORT_SYMBOL_GPL(net_dec_egress_queue);
2044#endif
2045
2046DEFINE_STATIC_KEY_FALSE(netstamp_needed_key);
2047EXPORT_SYMBOL(netstamp_needed_key);
2048#ifdef CONFIG_JUMP_LABEL
2049static atomic_t netstamp_needed_deferred;
2050static atomic_t netstamp_wanted;
2051static void netstamp_clear(struct work_struct *work)
2052{
2053 int deferred = atomic_xchg(&netstamp_needed_deferred, 0);
2054 int wanted;
2055
2056 wanted = atomic_add_return(deferred, &netstamp_wanted);
2057 if (wanted > 0)
2058 static_branch_enable(&netstamp_needed_key);
2059 else
2060 static_branch_disable(&netstamp_needed_key);
2061}
2062static DECLARE_WORK(netstamp_work, netstamp_clear);
2063#endif
2064
2065void net_enable_timestamp(void)
2066{
2067#ifdef CONFIG_JUMP_LABEL
2068 int wanted = atomic_read(&netstamp_wanted);
2069
2070 while (wanted > 0) {
2071 if (atomic_try_cmpxchg(&netstamp_wanted, &wanted, wanted + 1))
2072 return;
2073 }
2074 atomic_inc(&netstamp_needed_deferred);
2075 schedule_work(&netstamp_work);
2076#else
2077 static_branch_inc(&netstamp_needed_key);
2078#endif
2079}
2080EXPORT_SYMBOL(net_enable_timestamp);
2081
2082void net_disable_timestamp(void)
2083{
2084#ifdef CONFIG_JUMP_LABEL
2085 int wanted = atomic_read(&netstamp_wanted);
2086
2087 while (wanted > 1) {
2088 if (atomic_try_cmpxchg(&netstamp_wanted, &wanted, wanted - 1))
2089 return;
2090 }
2091 atomic_dec(&netstamp_needed_deferred);
2092 schedule_work(&netstamp_work);
2093#else
2094 static_branch_dec(&netstamp_needed_key);
2095#endif
2096}
2097EXPORT_SYMBOL(net_disable_timestamp);
2098
2099static inline void net_timestamp_set(struct sk_buff *skb)
2100{
2101 skb->tstamp = 0;
2102 skb->mono_delivery_time = 0;
2103 if (static_branch_unlikely(&netstamp_needed_key))
2104 skb->tstamp = ktime_get_real();
2105}
2106
2107#define net_timestamp_check(COND, SKB) \
2108 if (static_branch_unlikely(&netstamp_needed_key)) { \
2109 if ((COND) && !(SKB)->tstamp) \
2110 (SKB)->tstamp = ktime_get_real(); \
2111 } \
2112
2113bool is_skb_forwardable(const struct net_device *dev, const struct sk_buff *skb)
2114{
2115 return __is_skb_forwardable(dev, skb, true);
2116}
2117EXPORT_SYMBOL_GPL(is_skb_forwardable);
2118
2119static int __dev_forward_skb2(struct net_device *dev, struct sk_buff *skb,
2120 bool check_mtu)
2121{
2122 int ret = ____dev_forward_skb(dev, skb, check_mtu);
2123
2124 if (likely(!ret)) {
2125 skb->protocol = eth_type_trans(skb, dev);
2126 skb_postpull_rcsum(skb, eth_hdr(skb), ETH_HLEN);
2127 }
2128
2129 return ret;
2130}
2131
2132int __dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
2133{
2134 return __dev_forward_skb2(dev, skb, true);
2135}
2136EXPORT_SYMBOL_GPL(__dev_forward_skb);
2137
2138/**
2139 * dev_forward_skb - loopback an skb to another netif
2140 *
2141 * @dev: destination network device
2142 * @skb: buffer to forward
2143 *
2144 * return values:
2145 * NET_RX_SUCCESS (no congestion)
2146 * NET_RX_DROP (packet was dropped, but freed)
2147 *
2148 * dev_forward_skb can be used for injecting an skb from the
2149 * start_xmit function of one device into the receive queue
2150 * of another device.
2151 *
2152 * The receiving device may be in another namespace, so
2153 * we have to clear all information in the skb that could
2154 * impact namespace isolation.
2155 */
2156int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
2157{
2158 return __dev_forward_skb(dev, skb) ?: netif_rx_internal(skb);
2159}
2160EXPORT_SYMBOL_GPL(dev_forward_skb);
2161
2162int dev_forward_skb_nomtu(struct net_device *dev, struct sk_buff *skb)
2163{
2164 return __dev_forward_skb2(dev, skb, false) ?: netif_rx_internal(skb);
2165}
2166
2167static inline int deliver_skb(struct sk_buff *skb,
2168 struct packet_type *pt_prev,
2169 struct net_device *orig_dev)
2170{
2171 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC)))
2172 return -ENOMEM;
2173 refcount_inc(&skb->users);
2174 return pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
2175}
2176
2177static inline void deliver_ptype_list_skb(struct sk_buff *skb,
2178 struct packet_type **pt,
2179 struct net_device *orig_dev,
2180 __be16 type,
2181 struct list_head *ptype_list)
2182{
2183 struct packet_type *ptype, *pt_prev = *pt;
2184
2185 list_for_each_entry_rcu(ptype, ptype_list, list) {
2186 if (ptype->type != type)
2187 continue;
2188 if (pt_prev)
2189 deliver_skb(skb, pt_prev, orig_dev);
2190 pt_prev = ptype;
2191 }
2192 *pt = pt_prev;
2193}
2194
2195static inline bool skb_loop_sk(struct packet_type *ptype, struct sk_buff *skb)
2196{
2197 if (!ptype->af_packet_priv || !skb->sk)
2198 return false;
2199
2200 if (ptype->id_match)
2201 return ptype->id_match(ptype, skb->sk);
2202 else if ((struct sock *)ptype->af_packet_priv == skb->sk)
2203 return true;
2204
2205 return false;
2206}
2207
2208/**
2209 * dev_nit_active - return true if any network interface taps are in use
2210 *
2211 * @dev: network device to check for the presence of taps
2212 */
2213bool dev_nit_active(struct net_device *dev)
2214{
2215 return !list_empty(&ptype_all) || !list_empty(&dev->ptype_all);
2216}
2217EXPORT_SYMBOL_GPL(dev_nit_active);
2218
2219/*
2220 * Support routine. Sends outgoing frames to any network
2221 * taps currently in use.
2222 */
2223
2224void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
2225{
2226 struct packet_type *ptype;
2227 struct sk_buff *skb2 = NULL;
2228 struct packet_type *pt_prev = NULL;
2229 struct list_head *ptype_list = &ptype_all;
2230
2231 rcu_read_lock();
2232again:
2233 list_for_each_entry_rcu(ptype, ptype_list, list) {
2234 if (ptype->ignore_outgoing)
2235 continue;
2236
2237 /* Never send packets back to the socket
2238 * they originated from - MvS (miquels@drinkel.ow.org)
2239 */
2240 if (skb_loop_sk(ptype, skb))
2241 continue;
2242
2243 if (pt_prev) {
2244 deliver_skb(skb2, pt_prev, skb->dev);
2245 pt_prev = ptype;
2246 continue;
2247 }
2248
2249 /* need to clone skb, done only once */
2250 skb2 = skb_clone(skb, GFP_ATOMIC);
2251 if (!skb2)
2252 goto out_unlock;
2253
2254 net_timestamp_set(skb2);
2255
2256 /* skb->nh should be correctly
2257 * set by sender, so that the second statement is
2258 * just protection against buggy protocols.
2259 */
2260 skb_reset_mac_header(skb2);
2261
2262 if (skb_network_header(skb2) < skb2->data ||
2263 skb_network_header(skb2) > skb_tail_pointer(skb2)) {
2264 net_crit_ratelimited("protocol %04x is buggy, dev %s\n",
2265 ntohs(skb2->protocol),
2266 dev->name);
2267 skb_reset_network_header(skb2);
2268 }
2269
2270 skb2->transport_header = skb2->network_header;
2271 skb2->pkt_type = PACKET_OUTGOING;
2272 pt_prev = ptype;
2273 }
2274
2275 if (ptype_list == &ptype_all) {
2276 ptype_list = &dev->ptype_all;
2277 goto again;
2278 }
2279out_unlock:
2280 if (pt_prev) {
2281 if (!skb_orphan_frags_rx(skb2, GFP_ATOMIC))
2282 pt_prev->func(skb2, skb->dev, pt_prev, skb->dev);
2283 else
2284 kfree_skb(skb2);
2285 }
2286 rcu_read_unlock();
2287}
2288EXPORT_SYMBOL_GPL(dev_queue_xmit_nit);
2289
2290/**
2291 * netif_setup_tc - Handle tc mappings on real_num_tx_queues change
2292 * @dev: Network device
2293 * @txq: number of queues available
2294 *
2295 * If real_num_tx_queues is changed the tc mappings may no longer be
2296 * valid. To resolve this verify the tc mapping remains valid and if
2297 * not NULL the mapping. With no priorities mapping to this
2298 * offset/count pair it will no longer be used. In the worst case TC0
2299 * is invalid nothing can be done so disable priority mappings. If is
2300 * expected that drivers will fix this mapping if they can before
2301 * calling netif_set_real_num_tx_queues.
2302 */
2303static void netif_setup_tc(struct net_device *dev, unsigned int txq)
2304{
2305 int i;
2306 struct netdev_tc_txq *tc = &dev->tc_to_txq[0];
2307
2308 /* If TC0 is invalidated disable TC mapping */
2309 if (tc->offset + tc->count > txq) {
2310 netdev_warn(dev, "Number of in use tx queues changed invalidating tc mappings. Priority traffic classification disabled!\n");
2311 dev->num_tc = 0;
2312 return;
2313 }
2314
2315 /* Invalidated prio to tc mappings set to TC0 */
2316 for (i = 1; i < TC_BITMASK + 1; i++) {
2317 int q = netdev_get_prio_tc_map(dev, i);
2318
2319 tc = &dev->tc_to_txq[q];
2320 if (tc->offset + tc->count > txq) {
2321 netdev_warn(dev, "Number of in use tx queues changed. Priority %i to tc mapping %i is no longer valid. Setting map to 0\n",
2322 i, q);
2323 netdev_set_prio_tc_map(dev, i, 0);
2324 }
2325 }
2326}
2327
2328int netdev_txq_to_tc(struct net_device *dev, unsigned int txq)
2329{
2330 if (dev->num_tc) {
2331 struct netdev_tc_txq *tc = &dev->tc_to_txq[0];
2332 int i;
2333
2334 /* walk through the TCs and see if it falls into any of them */
2335 for (i = 0; i < TC_MAX_QUEUE; i++, tc++) {
2336 if ((txq - tc->offset) < tc->count)
2337 return i;
2338 }
2339
2340 /* didn't find it, just return -1 to indicate no match */
2341 return -1;
2342 }
2343
2344 return 0;
2345}
2346EXPORT_SYMBOL(netdev_txq_to_tc);
2347
2348#ifdef CONFIG_XPS
2349static struct static_key xps_needed __read_mostly;
2350static struct static_key xps_rxqs_needed __read_mostly;
2351static DEFINE_MUTEX(xps_map_mutex);
2352#define xmap_dereference(P) \
2353 rcu_dereference_protected((P), lockdep_is_held(&xps_map_mutex))
2354
2355static bool remove_xps_queue(struct xps_dev_maps *dev_maps,
2356 struct xps_dev_maps *old_maps, int tci, u16 index)
2357{
2358 struct xps_map *map = NULL;
2359 int pos;
2360
2361 if (dev_maps)
2362 map = xmap_dereference(dev_maps->attr_map[tci]);
2363 if (!map)
2364 return false;
2365
2366 for (pos = map->len; pos--;) {
2367 if (map->queues[pos] != index)
2368 continue;
2369
2370 if (map->len > 1) {
2371 map->queues[pos] = map->queues[--map->len];
2372 break;
2373 }
2374
2375 if (old_maps)
2376 RCU_INIT_POINTER(old_maps->attr_map[tci], NULL);
2377 RCU_INIT_POINTER(dev_maps->attr_map[tci], NULL);
2378 kfree_rcu(map, rcu);
2379 return false;
2380 }
2381
2382 return true;
2383}
2384
2385static bool remove_xps_queue_cpu(struct net_device *dev,
2386 struct xps_dev_maps *dev_maps,
2387 int cpu, u16 offset, u16 count)
2388{
2389 int num_tc = dev_maps->num_tc;
2390 bool active = false;
2391 int tci;
2392
2393 for (tci = cpu * num_tc; num_tc--; tci++) {
2394 int i, j;
2395
2396 for (i = count, j = offset; i--; j++) {
2397 if (!remove_xps_queue(dev_maps, NULL, tci, j))
2398 break;
2399 }
2400
2401 active |= i < 0;
2402 }
2403
2404 return active;
2405}
2406
2407static void reset_xps_maps(struct net_device *dev,
2408 struct xps_dev_maps *dev_maps,
2409 enum xps_map_type type)
2410{
2411 static_key_slow_dec_cpuslocked(&xps_needed);
2412 if (type == XPS_RXQS)
2413 static_key_slow_dec_cpuslocked(&xps_rxqs_needed);
2414
2415 RCU_INIT_POINTER(dev->xps_maps[type], NULL);
2416
2417 kfree_rcu(dev_maps, rcu);
2418}
2419
2420static void clean_xps_maps(struct net_device *dev, enum xps_map_type type,
2421 u16 offset, u16 count)
2422{
2423 struct xps_dev_maps *dev_maps;
2424 bool active = false;
2425 int i, j;
2426
2427 dev_maps = xmap_dereference(dev->xps_maps[type]);
2428 if (!dev_maps)
2429 return;
2430
2431 for (j = 0; j < dev_maps->nr_ids; j++)
2432 active |= remove_xps_queue_cpu(dev, dev_maps, j, offset, count);
2433 if (!active)
2434 reset_xps_maps(dev, dev_maps, type);
2435
2436 if (type == XPS_CPUS) {
2437 for (i = offset + (count - 1); count--; i--)
2438 netdev_queue_numa_node_write(
2439 netdev_get_tx_queue(dev, i), NUMA_NO_NODE);
2440 }
2441}
2442
2443static void netif_reset_xps_queues(struct net_device *dev, u16 offset,
2444 u16 count)
2445{
2446 if (!static_key_false(&xps_needed))
2447 return;
2448
2449 cpus_read_lock();
2450 mutex_lock(&xps_map_mutex);
2451
2452 if (static_key_false(&xps_rxqs_needed))
2453 clean_xps_maps(dev, XPS_RXQS, offset, count);
2454
2455 clean_xps_maps(dev, XPS_CPUS, offset, count);
2456
2457 mutex_unlock(&xps_map_mutex);
2458 cpus_read_unlock();
2459}
2460
2461static void netif_reset_xps_queues_gt(struct net_device *dev, u16 index)
2462{
2463 netif_reset_xps_queues(dev, index, dev->num_tx_queues - index);
2464}
2465
2466static struct xps_map *expand_xps_map(struct xps_map *map, int attr_index,
2467 u16 index, bool is_rxqs_map)
2468{
2469 struct xps_map *new_map;
2470 int alloc_len = XPS_MIN_MAP_ALLOC;
2471 int i, pos;
2472
2473 for (pos = 0; map && pos < map->len; pos++) {
2474 if (map->queues[pos] != index)
2475 continue;
2476 return map;
2477 }
2478
2479 /* Need to add tx-queue to this CPU's/rx-queue's existing map */
2480 if (map) {
2481 if (pos < map->alloc_len)
2482 return map;
2483
2484 alloc_len = map->alloc_len * 2;
2485 }
2486
2487 /* Need to allocate new map to store tx-queue on this CPU's/rx-queue's
2488 * map
2489 */
2490 if (is_rxqs_map)
2491 new_map = kzalloc(XPS_MAP_SIZE(alloc_len), GFP_KERNEL);
2492 else
2493 new_map = kzalloc_node(XPS_MAP_SIZE(alloc_len), GFP_KERNEL,
2494 cpu_to_node(attr_index));
2495 if (!new_map)
2496 return NULL;
2497
2498 for (i = 0; i < pos; i++)
2499 new_map->queues[i] = map->queues[i];
2500 new_map->alloc_len = alloc_len;
2501 new_map->len = pos;
2502
2503 return new_map;
2504}
2505
2506/* Copy xps maps at a given index */
2507static void xps_copy_dev_maps(struct xps_dev_maps *dev_maps,
2508 struct xps_dev_maps *new_dev_maps, int index,
2509 int tc, bool skip_tc)
2510{
2511 int i, tci = index * dev_maps->num_tc;
2512 struct xps_map *map;
2513
2514 /* copy maps belonging to foreign traffic classes */
2515 for (i = 0; i < dev_maps->num_tc; i++, tci++) {
2516 if (i == tc && skip_tc)
2517 continue;
2518
2519 /* fill in the new device map from the old device map */
2520 map = xmap_dereference(dev_maps->attr_map[tci]);
2521 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map);
2522 }
2523}
2524
2525/* Must be called under cpus_read_lock */
2526int __netif_set_xps_queue(struct net_device *dev, const unsigned long *mask,
2527 u16 index, enum xps_map_type type)
2528{
2529 struct xps_dev_maps *dev_maps, *new_dev_maps = NULL, *old_dev_maps = NULL;
2530 const unsigned long *online_mask = NULL;
2531 bool active = false, copy = false;
2532 int i, j, tci, numa_node_id = -2;
2533 int maps_sz, num_tc = 1, tc = 0;
2534 struct xps_map *map, *new_map;
2535 unsigned int nr_ids;
2536
2537 if (dev->num_tc) {
2538 /* Do not allow XPS on subordinate device directly */
2539 num_tc = dev->num_tc;
2540 if (num_tc < 0)
2541 return -EINVAL;
2542
2543 /* If queue belongs to subordinate dev use its map */
2544 dev = netdev_get_tx_queue(dev, index)->sb_dev ? : dev;
2545
2546 tc = netdev_txq_to_tc(dev, index);
2547 if (tc < 0)
2548 return -EINVAL;
2549 }
2550
2551 mutex_lock(&xps_map_mutex);
2552
2553 dev_maps = xmap_dereference(dev->xps_maps[type]);
2554 if (type == XPS_RXQS) {
2555 maps_sz = XPS_RXQ_DEV_MAPS_SIZE(num_tc, dev->num_rx_queues);
2556 nr_ids = dev->num_rx_queues;
2557 } else {
2558 maps_sz = XPS_CPU_DEV_MAPS_SIZE(num_tc);
2559 if (num_possible_cpus() > 1)
2560 online_mask = cpumask_bits(cpu_online_mask);
2561 nr_ids = nr_cpu_ids;
2562 }
2563
2564 if (maps_sz < L1_CACHE_BYTES)
2565 maps_sz = L1_CACHE_BYTES;
2566
2567 /* The old dev_maps could be larger or smaller than the one we're
2568 * setting up now, as dev->num_tc or nr_ids could have been updated in
2569 * between. We could try to be smart, but let's be safe instead and only
2570 * copy foreign traffic classes if the two map sizes match.
2571 */
2572 if (dev_maps &&
2573 dev_maps->num_tc == num_tc && dev_maps->nr_ids == nr_ids)
2574 copy = true;
2575
2576 /* allocate memory for queue storage */
2577 for (j = -1; j = netif_attrmask_next_and(j, online_mask, mask, nr_ids),
2578 j < nr_ids;) {
2579 if (!new_dev_maps) {
2580 new_dev_maps = kzalloc(maps_sz, GFP_KERNEL);
2581 if (!new_dev_maps) {
2582 mutex_unlock(&xps_map_mutex);
2583 return -ENOMEM;
2584 }
2585
2586 new_dev_maps->nr_ids = nr_ids;
2587 new_dev_maps->num_tc = num_tc;
2588 }
2589
2590 tci = j * num_tc + tc;
2591 map = copy ? xmap_dereference(dev_maps->attr_map[tci]) : NULL;
2592
2593 map = expand_xps_map(map, j, index, type == XPS_RXQS);
2594 if (!map)
2595 goto error;
2596
2597 RCU_INIT_POINTER(new_dev_maps->attr_map[tci], map);
2598 }
2599
2600 if (!new_dev_maps)
2601 goto out_no_new_maps;
2602
2603 if (!dev_maps) {
2604 /* Increment static keys at most once per type */
2605 static_key_slow_inc_cpuslocked(&xps_needed);
2606 if (type == XPS_RXQS)
2607 static_key_slow_inc_cpuslocked(&xps_rxqs_needed);
2608 }
2609
2610 for (j = 0; j < nr_ids; j++) {
2611 bool skip_tc = false;
2612
2613 tci = j * num_tc + tc;
2614 if (netif_attr_test_mask(j, mask, nr_ids) &&
2615 netif_attr_test_online(j, online_mask, nr_ids)) {
2616 /* add tx-queue to CPU/rx-queue maps */
2617 int pos = 0;
2618
2619 skip_tc = true;
2620
2621 map = xmap_dereference(new_dev_maps->attr_map[tci]);
2622 while ((pos < map->len) && (map->queues[pos] != index))
2623 pos++;
2624
2625 if (pos == map->len)
2626 map->queues[map->len++] = index;
2627#ifdef CONFIG_NUMA
2628 if (type == XPS_CPUS) {
2629 if (numa_node_id == -2)
2630 numa_node_id = cpu_to_node(j);
2631 else if (numa_node_id != cpu_to_node(j))
2632 numa_node_id = -1;
2633 }
2634#endif
2635 }
2636
2637 if (copy)
2638 xps_copy_dev_maps(dev_maps, new_dev_maps, j, tc,
2639 skip_tc);
2640 }
2641
2642 rcu_assign_pointer(dev->xps_maps[type], new_dev_maps);
2643
2644 /* Cleanup old maps */
2645 if (!dev_maps)
2646 goto out_no_old_maps;
2647
2648 for (j = 0; j < dev_maps->nr_ids; j++) {
2649 for (i = num_tc, tci = j * dev_maps->num_tc; i--; tci++) {
2650 map = xmap_dereference(dev_maps->attr_map[tci]);
2651 if (!map)
2652 continue;
2653
2654 if (copy) {
2655 new_map = xmap_dereference(new_dev_maps->attr_map[tci]);
2656 if (map == new_map)
2657 continue;
2658 }
2659
2660 RCU_INIT_POINTER(dev_maps->attr_map[tci], NULL);
2661 kfree_rcu(map, rcu);
2662 }
2663 }
2664
2665 old_dev_maps = dev_maps;
2666
2667out_no_old_maps:
2668 dev_maps = new_dev_maps;
2669 active = true;
2670
2671out_no_new_maps:
2672 if (type == XPS_CPUS)
2673 /* update Tx queue numa node */
2674 netdev_queue_numa_node_write(netdev_get_tx_queue(dev, index),
2675 (numa_node_id >= 0) ?
2676 numa_node_id : NUMA_NO_NODE);
2677
2678 if (!dev_maps)
2679 goto out_no_maps;
2680
2681 /* removes tx-queue from unused CPUs/rx-queues */
2682 for (j = 0; j < dev_maps->nr_ids; j++) {
2683 tci = j * dev_maps->num_tc;
2684
2685 for (i = 0; i < dev_maps->num_tc; i++, tci++) {
2686 if (i == tc &&
2687 netif_attr_test_mask(j, mask, dev_maps->nr_ids) &&
2688 netif_attr_test_online(j, online_mask, dev_maps->nr_ids))
2689 continue;
2690
2691 active |= remove_xps_queue(dev_maps,
2692 copy ? old_dev_maps : NULL,
2693 tci, index);
2694 }
2695 }
2696
2697 if (old_dev_maps)
2698 kfree_rcu(old_dev_maps, rcu);
2699
2700 /* free map if not active */
2701 if (!active)
2702 reset_xps_maps(dev, dev_maps, type);
2703
2704out_no_maps:
2705 mutex_unlock(&xps_map_mutex);
2706
2707 return 0;
2708error:
2709 /* remove any maps that we added */
2710 for (j = 0; j < nr_ids; j++) {
2711 for (i = num_tc, tci = j * num_tc; i--; tci++) {
2712 new_map = xmap_dereference(new_dev_maps->attr_map[tci]);
2713 map = copy ?
2714 xmap_dereference(dev_maps->attr_map[tci]) :
2715 NULL;
2716 if (new_map && new_map != map)
2717 kfree(new_map);
2718 }
2719 }
2720
2721 mutex_unlock(&xps_map_mutex);
2722
2723 kfree(new_dev_maps);
2724 return -ENOMEM;
2725}
2726EXPORT_SYMBOL_GPL(__netif_set_xps_queue);
2727
2728int netif_set_xps_queue(struct net_device *dev, const struct cpumask *mask,
2729 u16 index)
2730{
2731 int ret;
2732
2733 cpus_read_lock();
2734 ret = __netif_set_xps_queue(dev, cpumask_bits(mask), index, XPS_CPUS);
2735 cpus_read_unlock();
2736
2737 return ret;
2738}
2739EXPORT_SYMBOL(netif_set_xps_queue);
2740
2741#endif
2742static void netdev_unbind_all_sb_channels(struct net_device *dev)
2743{
2744 struct netdev_queue *txq = &dev->_tx[dev->num_tx_queues];
2745
2746 /* Unbind any subordinate channels */
2747 while (txq-- != &dev->_tx[0]) {
2748 if (txq->sb_dev)
2749 netdev_unbind_sb_channel(dev, txq->sb_dev);
2750 }
2751}
2752
2753void netdev_reset_tc(struct net_device *dev)
2754{
2755#ifdef CONFIG_XPS
2756 netif_reset_xps_queues_gt(dev, 0);
2757#endif
2758 netdev_unbind_all_sb_channels(dev);
2759
2760 /* Reset TC configuration of device */
2761 dev->num_tc = 0;
2762 memset(dev->tc_to_txq, 0, sizeof(dev->tc_to_txq));
2763 memset(dev->prio_tc_map, 0, sizeof(dev->prio_tc_map));
2764}
2765EXPORT_SYMBOL(netdev_reset_tc);
2766
2767int netdev_set_tc_queue(struct net_device *dev, u8 tc, u16 count, u16 offset)
2768{
2769 if (tc >= dev->num_tc)
2770 return -EINVAL;
2771
2772#ifdef CONFIG_XPS
2773 netif_reset_xps_queues(dev, offset, count);
2774#endif
2775 dev->tc_to_txq[tc].count = count;
2776 dev->tc_to_txq[tc].offset = offset;
2777 return 0;
2778}
2779EXPORT_SYMBOL(netdev_set_tc_queue);
2780
2781int netdev_set_num_tc(struct net_device *dev, u8 num_tc)
2782{
2783 if (num_tc > TC_MAX_QUEUE)
2784 return -EINVAL;
2785
2786#ifdef CONFIG_XPS
2787 netif_reset_xps_queues_gt(dev, 0);
2788#endif
2789 netdev_unbind_all_sb_channels(dev);
2790
2791 dev->num_tc = num_tc;
2792 return 0;
2793}
2794EXPORT_SYMBOL(netdev_set_num_tc);
2795
2796void netdev_unbind_sb_channel(struct net_device *dev,
2797 struct net_device *sb_dev)
2798{
2799 struct netdev_queue *txq = &dev->_tx[dev->num_tx_queues];
2800
2801#ifdef CONFIG_XPS
2802 netif_reset_xps_queues_gt(sb_dev, 0);
2803#endif
2804 memset(sb_dev->tc_to_txq, 0, sizeof(sb_dev->tc_to_txq));
2805 memset(sb_dev->prio_tc_map, 0, sizeof(sb_dev->prio_tc_map));
2806
2807 while (txq-- != &dev->_tx[0]) {
2808 if (txq->sb_dev == sb_dev)
2809 txq->sb_dev = NULL;
2810 }
2811}
2812EXPORT_SYMBOL(netdev_unbind_sb_channel);
2813
2814int netdev_bind_sb_channel_queue(struct net_device *dev,
2815 struct net_device *sb_dev,
2816 u8 tc, u16 count, u16 offset)
2817{
2818 /* Make certain the sb_dev and dev are already configured */
2819 if (sb_dev->num_tc >= 0 || tc >= dev->num_tc)
2820 return -EINVAL;
2821
2822 /* We cannot hand out queues we don't have */
2823 if ((offset + count) > dev->real_num_tx_queues)
2824 return -EINVAL;
2825
2826 /* Record the mapping */
2827 sb_dev->tc_to_txq[tc].count = count;
2828 sb_dev->tc_to_txq[tc].offset = offset;
2829
2830 /* Provide a way for Tx queue to find the tc_to_txq map or
2831 * XPS map for itself.
2832 */
2833 while (count--)
2834 netdev_get_tx_queue(dev, count + offset)->sb_dev = sb_dev;
2835
2836 return 0;
2837}
2838EXPORT_SYMBOL(netdev_bind_sb_channel_queue);
2839
2840int netdev_set_sb_channel(struct net_device *dev, u16 channel)
2841{
2842 /* Do not use a multiqueue device to represent a subordinate channel */
2843 if (netif_is_multiqueue(dev))
2844 return -ENODEV;
2845
2846 /* We allow channels 1 - 32767 to be used for subordinate channels.
2847 * Channel 0 is meant to be "native" mode and used only to represent
2848 * the main root device. We allow writing 0 to reset the device back
2849 * to normal mode after being used as a subordinate channel.
2850 */
2851 if (channel > S16_MAX)
2852 return -EINVAL;
2853
2854 dev->num_tc = -channel;
2855
2856 return 0;
2857}
2858EXPORT_SYMBOL(netdev_set_sb_channel);
2859
2860/*
2861 * Routine to help set real_num_tx_queues. To avoid skbs mapped to queues
2862 * greater than real_num_tx_queues stale skbs on the qdisc must be flushed.
2863 */
2864int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq)
2865{
2866 bool disabling;
2867 int rc;
2868
2869 disabling = txq < dev->real_num_tx_queues;
2870
2871 if (txq < 1 || txq > dev->num_tx_queues)
2872 return -EINVAL;
2873
2874 if (dev->reg_state == NETREG_REGISTERED ||
2875 dev->reg_state == NETREG_UNREGISTERING) {
2876 ASSERT_RTNL();
2877
2878 rc = netdev_queue_update_kobjects(dev, dev->real_num_tx_queues,
2879 txq);
2880 if (rc)
2881 return rc;
2882
2883 if (dev->num_tc)
2884 netif_setup_tc(dev, txq);
2885
2886 dev_qdisc_change_real_num_tx(dev, txq);
2887
2888 dev->real_num_tx_queues = txq;
2889
2890 if (disabling) {
2891 synchronize_net();
2892 qdisc_reset_all_tx_gt(dev, txq);
2893#ifdef CONFIG_XPS
2894 netif_reset_xps_queues_gt(dev, txq);
2895#endif
2896 }
2897 } else {
2898 dev->real_num_tx_queues = txq;
2899 }
2900
2901 return 0;
2902}
2903EXPORT_SYMBOL(netif_set_real_num_tx_queues);
2904
2905#ifdef CONFIG_SYSFS
2906/**
2907 * netif_set_real_num_rx_queues - set actual number of RX queues used
2908 * @dev: Network device
2909 * @rxq: Actual number of RX queues
2910 *
2911 * This must be called either with the rtnl_lock held or before
2912 * registration of the net device. Returns 0 on success, or a
2913 * negative error code. If called before registration, it always
2914 * succeeds.
2915 */
2916int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq)
2917{
2918 int rc;
2919
2920 if (rxq < 1 || rxq > dev->num_rx_queues)
2921 return -EINVAL;
2922
2923 if (dev->reg_state == NETREG_REGISTERED) {
2924 ASSERT_RTNL();
2925
2926 rc = net_rx_queue_update_kobjects(dev, dev->real_num_rx_queues,
2927 rxq);
2928 if (rc)
2929 return rc;
2930 }
2931
2932 dev->real_num_rx_queues = rxq;
2933 return 0;
2934}
2935EXPORT_SYMBOL(netif_set_real_num_rx_queues);
2936#endif
2937
2938/**
2939 * netif_set_real_num_queues - set actual number of RX and TX queues used
2940 * @dev: Network device
2941 * @txq: Actual number of TX queues
2942 * @rxq: Actual number of RX queues
2943 *
2944 * Set the real number of both TX and RX queues.
2945 * Does nothing if the number of queues is already correct.
2946 */
2947int netif_set_real_num_queues(struct net_device *dev,
2948 unsigned int txq, unsigned int rxq)
2949{
2950 unsigned int old_rxq = dev->real_num_rx_queues;
2951 int err;
2952
2953 if (txq < 1 || txq > dev->num_tx_queues ||
2954 rxq < 1 || rxq > dev->num_rx_queues)
2955 return -EINVAL;
2956
2957 /* Start from increases, so the error path only does decreases -
2958 * decreases can't fail.
2959 */
2960 if (rxq > dev->real_num_rx_queues) {
2961 err = netif_set_real_num_rx_queues(dev, rxq);
2962 if (err)
2963 return err;
2964 }
2965 if (txq > dev->real_num_tx_queues) {
2966 err = netif_set_real_num_tx_queues(dev, txq);
2967 if (err)
2968 goto undo_rx;
2969 }
2970 if (rxq < dev->real_num_rx_queues)
2971 WARN_ON(netif_set_real_num_rx_queues(dev, rxq));
2972 if (txq < dev->real_num_tx_queues)
2973 WARN_ON(netif_set_real_num_tx_queues(dev, txq));
2974
2975 return 0;
2976undo_rx:
2977 WARN_ON(netif_set_real_num_rx_queues(dev, old_rxq));
2978 return err;
2979}
2980EXPORT_SYMBOL(netif_set_real_num_queues);
2981
2982/**
2983 * netif_set_tso_max_size() - set the max size of TSO frames supported
2984 * @dev: netdev to update
2985 * @size: max skb->len of a TSO frame
2986 *
2987 * Set the limit on the size of TSO super-frames the device can handle.
2988 * Unless explicitly set the stack will assume the value of
2989 * %GSO_LEGACY_MAX_SIZE.
2990 */
2991void netif_set_tso_max_size(struct net_device *dev, unsigned int size)
2992{
2993 dev->tso_max_size = min(GSO_MAX_SIZE, size);
2994 if (size < READ_ONCE(dev->gso_max_size))
2995 netif_set_gso_max_size(dev, size);
2996}
2997EXPORT_SYMBOL(netif_set_tso_max_size);
2998
2999/**
3000 * netif_set_tso_max_segs() - set the max number of segs supported for TSO
3001 * @dev: netdev to update
3002 * @segs: max number of TCP segments
3003 *
3004 * Set the limit on the number of TCP segments the device can generate from
3005 * a single TSO super-frame.
3006 * Unless explicitly set the stack will assume the value of %GSO_MAX_SEGS.
3007 */
3008void netif_set_tso_max_segs(struct net_device *dev, unsigned int segs)
3009{
3010 dev->tso_max_segs = segs;
3011 if (segs < READ_ONCE(dev->gso_max_segs))
3012 netif_set_gso_max_segs(dev, segs);
3013}
3014EXPORT_SYMBOL(netif_set_tso_max_segs);
3015
3016/**
3017 * netif_inherit_tso_max() - copy all TSO limits from a lower device to an upper
3018 * @to: netdev to update
3019 * @from: netdev from which to copy the limits
3020 */
3021void netif_inherit_tso_max(struct net_device *to, const struct net_device *from)
3022{
3023 netif_set_tso_max_size(to, from->tso_max_size);
3024 netif_set_tso_max_segs(to, from->tso_max_segs);
3025}
3026EXPORT_SYMBOL(netif_inherit_tso_max);
3027
3028/**
3029 * netif_get_num_default_rss_queues - default number of RSS queues
3030 *
3031 * Default value is the number of physical cores if there are only 1 or 2, or
3032 * divided by 2 if there are more.
3033 */
3034int netif_get_num_default_rss_queues(void)
3035{
3036 cpumask_var_t cpus;
3037 int cpu, count = 0;
3038
3039 if (unlikely(is_kdump_kernel() || !zalloc_cpumask_var(&cpus, GFP_KERNEL)))
3040 return 1;
3041
3042 cpumask_copy(cpus, cpu_online_mask);
3043 for_each_cpu(cpu, cpus) {
3044 ++count;
3045 cpumask_andnot(cpus, cpus, topology_sibling_cpumask(cpu));
3046 }
3047 free_cpumask_var(cpus);
3048
3049 return count > 2 ? DIV_ROUND_UP(count, 2) : count;
3050}
3051EXPORT_SYMBOL(netif_get_num_default_rss_queues);
3052
3053static void __netif_reschedule(struct Qdisc *q)
3054{
3055 struct softnet_data *sd;
3056 unsigned long flags;
3057
3058 local_irq_save(flags);
3059 sd = this_cpu_ptr(&softnet_data);
3060 q->next_sched = NULL;
3061 *sd->output_queue_tailp = q;
3062 sd->output_queue_tailp = &q->next_sched;
3063 raise_softirq_irqoff(NET_TX_SOFTIRQ);
3064 local_irq_restore(flags);
3065}
3066
3067void __netif_schedule(struct Qdisc *q)
3068{
3069 if (!test_and_set_bit(__QDISC_STATE_SCHED, &q->state))
3070 __netif_reschedule(q);
3071}
3072EXPORT_SYMBOL(__netif_schedule);
3073
3074struct dev_kfree_skb_cb {
3075 enum skb_free_reason reason;
3076};
3077
3078static struct dev_kfree_skb_cb *get_kfree_skb_cb(const struct sk_buff *skb)
3079{
3080 return (struct dev_kfree_skb_cb *)skb->cb;
3081}
3082
3083void netif_schedule_queue(struct netdev_queue *txq)
3084{
3085 rcu_read_lock();
3086 if (!netif_xmit_stopped(txq)) {
3087 struct Qdisc *q = rcu_dereference(txq->qdisc);
3088
3089 __netif_schedule(q);
3090 }
3091 rcu_read_unlock();
3092}
3093EXPORT_SYMBOL(netif_schedule_queue);
3094
3095void netif_tx_wake_queue(struct netdev_queue *dev_queue)
3096{
3097 if (test_and_clear_bit(__QUEUE_STATE_DRV_XOFF, &dev_queue->state)) {
3098 struct Qdisc *q;
3099
3100 rcu_read_lock();
3101 q = rcu_dereference(dev_queue->qdisc);
3102 __netif_schedule(q);
3103 rcu_read_unlock();
3104 }
3105}
3106EXPORT_SYMBOL(netif_tx_wake_queue);
3107
3108void __dev_kfree_skb_irq(struct sk_buff *skb, enum skb_free_reason reason)
3109{
3110 unsigned long flags;
3111
3112 if (unlikely(!skb))
3113 return;
3114
3115 if (likely(refcount_read(&skb->users) == 1)) {
3116 smp_rmb();
3117 refcount_set(&skb->users, 0);
3118 } else if (likely(!refcount_dec_and_test(&skb->users))) {
3119 return;
3120 }
3121 get_kfree_skb_cb(skb)->reason = reason;
3122 local_irq_save(flags);
3123 skb->next = __this_cpu_read(softnet_data.completion_queue);
3124 __this_cpu_write(softnet_data.completion_queue, skb);
3125 raise_softirq_irqoff(NET_TX_SOFTIRQ);
3126 local_irq_restore(flags);
3127}
3128EXPORT_SYMBOL(__dev_kfree_skb_irq);
3129
3130void __dev_kfree_skb_any(struct sk_buff *skb, enum skb_free_reason reason)
3131{
3132 if (in_hardirq() || irqs_disabled())
3133 __dev_kfree_skb_irq(skb, reason);
3134 else
3135 dev_kfree_skb(skb);
3136}
3137EXPORT_SYMBOL(__dev_kfree_skb_any);
3138
3139
3140/**
3141 * netif_device_detach - mark device as removed
3142 * @dev: network device
3143 *
3144 * Mark device as removed from system and therefore no longer available.
3145 */
3146void netif_device_detach(struct net_device *dev)
3147{
3148 if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
3149 netif_running(dev)) {
3150 netif_tx_stop_all_queues(dev);
3151 }
3152}
3153EXPORT_SYMBOL(netif_device_detach);
3154
3155/**
3156 * netif_device_attach - mark device as attached
3157 * @dev: network device
3158 *
3159 * Mark device as attached from system and restart if needed.
3160 */
3161void netif_device_attach(struct net_device *dev)
3162{
3163 if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
3164 netif_running(dev)) {
3165 netif_tx_wake_all_queues(dev);
3166 __netdev_watchdog_up(dev);
3167 }
3168}
3169EXPORT_SYMBOL(netif_device_attach);
3170
3171/*
3172 * Returns a Tx hash based on the given packet descriptor a Tx queues' number
3173 * to be used as a distribution range.
3174 */
3175static u16 skb_tx_hash(const struct net_device *dev,
3176 const struct net_device *sb_dev,
3177 struct sk_buff *skb)
3178{
3179 u32 hash;
3180 u16 qoffset = 0;
3181 u16 qcount = dev->real_num_tx_queues;
3182
3183 if (dev->num_tc) {
3184 u8 tc = netdev_get_prio_tc_map(dev, skb->priority);
3185
3186 qoffset = sb_dev->tc_to_txq[tc].offset;
3187 qcount = sb_dev->tc_to_txq[tc].count;
3188 if (unlikely(!qcount)) {
3189 net_warn_ratelimited("%s: invalid qcount, qoffset %u for tc %u\n",
3190 sb_dev->name, qoffset, tc);
3191 qoffset = 0;
3192 qcount = dev->real_num_tx_queues;
3193 }
3194 }
3195
3196 if (skb_rx_queue_recorded(skb)) {
3197 hash = skb_get_rx_queue(skb);
3198 if (hash >= qoffset)
3199 hash -= qoffset;
3200 while (unlikely(hash >= qcount))
3201 hash -= qcount;
3202 return hash + qoffset;
3203 }
3204
3205 return (u16) reciprocal_scale(skb_get_hash(skb), qcount) + qoffset;
3206}
3207
3208static void skb_warn_bad_offload(const struct sk_buff *skb)
3209{
3210 static const netdev_features_t null_features;
3211 struct net_device *dev = skb->dev;
3212 const char *name = "";
3213
3214 if (!net_ratelimit())
3215 return;
3216
3217 if (dev) {
3218 if (dev->dev.parent)
3219 name = dev_driver_string(dev->dev.parent);
3220 else
3221 name = netdev_name(dev);
3222 }
3223 skb_dump(KERN_WARNING, skb, false);
3224 WARN(1, "%s: caps=(%pNF, %pNF)\n",
3225 name, dev ? &dev->features : &null_features,
3226 skb->sk ? &skb->sk->sk_route_caps : &null_features);
3227}
3228
3229/*
3230 * Invalidate hardware checksum when packet is to be mangled, and
3231 * complete checksum manually on outgoing path.
3232 */
3233int skb_checksum_help(struct sk_buff *skb)
3234{
3235 __wsum csum;
3236 int ret = 0, offset;
3237
3238 if (skb->ip_summed == CHECKSUM_COMPLETE)
3239 goto out_set_summed;
3240
3241 if (unlikely(skb_is_gso(skb))) {
3242 skb_warn_bad_offload(skb);
3243 return -EINVAL;
3244 }
3245
3246 /* Before computing a checksum, we should make sure no frag could
3247 * be modified by an external entity : checksum could be wrong.
3248 */
3249 if (skb_has_shared_frag(skb)) {
3250 ret = __skb_linearize(skb);
3251 if (ret)
3252 goto out;
3253 }
3254
3255 offset = skb_checksum_start_offset(skb);
3256 ret = -EINVAL;
3257 if (WARN_ON_ONCE(offset >= skb_headlen(skb))) {
3258 DO_ONCE_LITE(skb_dump, KERN_ERR, skb, false);
3259 goto out;
3260 }
3261 csum = skb_checksum(skb, offset, skb->len - offset, 0);
3262
3263 offset += skb->csum_offset;
3264 if (WARN_ON_ONCE(offset + sizeof(__sum16) > skb_headlen(skb))) {
3265 DO_ONCE_LITE(skb_dump, KERN_ERR, skb, false);
3266 goto out;
3267 }
3268 ret = skb_ensure_writable(skb, offset + sizeof(__sum16));
3269 if (ret)
3270 goto out;
3271
3272 *(__sum16 *)(skb->data + offset) = csum_fold(csum) ?: CSUM_MANGLED_0;
3273out_set_summed:
3274 skb->ip_summed = CHECKSUM_NONE;
3275out:
3276 return ret;
3277}
3278EXPORT_SYMBOL(skb_checksum_help);
3279
3280int skb_crc32c_csum_help(struct sk_buff *skb)
3281{
3282 __le32 crc32c_csum;
3283 int ret = 0, offset, start;
3284
3285 if (skb->ip_summed != CHECKSUM_PARTIAL)
3286 goto out;
3287
3288 if (unlikely(skb_is_gso(skb)))
3289 goto out;
3290
3291 /* Before computing a checksum, we should make sure no frag could
3292 * be modified by an external entity : checksum could be wrong.
3293 */
3294 if (unlikely(skb_has_shared_frag(skb))) {
3295 ret = __skb_linearize(skb);
3296 if (ret)
3297 goto out;
3298 }
3299 start = skb_checksum_start_offset(skb);
3300 offset = start + offsetof(struct sctphdr, checksum);
3301 if (WARN_ON_ONCE(offset >= skb_headlen(skb))) {
3302 ret = -EINVAL;
3303 goto out;
3304 }
3305
3306 ret = skb_ensure_writable(skb, offset + sizeof(__le32));
3307 if (ret)
3308 goto out;
3309
3310 crc32c_csum = cpu_to_le32(~__skb_checksum(skb, start,
3311 skb->len - start, ~(__u32)0,
3312 crc32c_csum_stub));
3313 *(__le32 *)(skb->data + offset) = crc32c_csum;
3314 skb->ip_summed = CHECKSUM_NONE;
3315 skb->csum_not_inet = 0;
3316out:
3317 return ret;
3318}
3319
3320__be16 skb_network_protocol(struct sk_buff *skb, int *depth)
3321{
3322 __be16 type = skb->protocol;
3323
3324 /* Tunnel gso handlers can set protocol to ethernet. */
3325 if (type == htons(ETH_P_TEB)) {
3326 struct ethhdr *eth;
3327
3328 if (unlikely(!pskb_may_pull(skb, sizeof(struct ethhdr))))
3329 return 0;
3330
3331 eth = (struct ethhdr *)skb->data;
3332 type = eth->h_proto;
3333 }
3334
3335 return __vlan_get_protocol(skb, type, depth);
3336}
3337
3338/* openvswitch calls this on rx path, so we need a different check.
3339 */
3340static inline bool skb_needs_check(struct sk_buff *skb, bool tx_path)
3341{
3342 if (tx_path)
3343 return skb->ip_summed != CHECKSUM_PARTIAL &&
3344 skb->ip_summed != CHECKSUM_UNNECESSARY;
3345
3346 return skb->ip_summed == CHECKSUM_NONE;
3347}
3348
3349/**
3350 * __skb_gso_segment - Perform segmentation on skb.
3351 * @skb: buffer to segment
3352 * @features: features for the output path (see dev->features)
3353 * @tx_path: whether it is called in TX path
3354 *
3355 * This function segments the given skb and returns a list of segments.
3356 *
3357 * It may return NULL if the skb requires no segmentation. This is
3358 * only possible when GSO is used for verifying header integrity.
3359 *
3360 * Segmentation preserves SKB_GSO_CB_OFFSET bytes of previous skb cb.
3361 */
3362struct sk_buff *__skb_gso_segment(struct sk_buff *skb,
3363 netdev_features_t features, bool tx_path)
3364{
3365 struct sk_buff *segs;
3366
3367 if (unlikely(skb_needs_check(skb, tx_path))) {
3368 int err;
3369
3370 /* We're going to init ->check field in TCP or UDP header */
3371 err = skb_cow_head(skb, 0);
3372 if (err < 0)
3373 return ERR_PTR(err);
3374 }
3375
3376 /* Only report GSO partial support if it will enable us to
3377 * support segmentation on this frame without needing additional
3378 * work.
3379 */
3380 if (features & NETIF_F_GSO_PARTIAL) {
3381 netdev_features_t partial_features = NETIF_F_GSO_ROBUST;
3382 struct net_device *dev = skb->dev;
3383
3384 partial_features |= dev->features & dev->gso_partial_features;
3385 if (!skb_gso_ok(skb, features | partial_features))
3386 features &= ~NETIF_F_GSO_PARTIAL;
3387 }
3388
3389 BUILD_BUG_ON(SKB_GSO_CB_OFFSET +
3390 sizeof(*SKB_GSO_CB(skb)) > sizeof(skb->cb));
3391
3392 SKB_GSO_CB(skb)->mac_offset = skb_headroom(skb);
3393 SKB_GSO_CB(skb)->encap_level = 0;
3394
3395 skb_reset_mac_header(skb);
3396 skb_reset_mac_len(skb);
3397
3398 segs = skb_mac_gso_segment(skb, features);
3399
3400 if (segs != skb && unlikely(skb_needs_check(skb, tx_path) && !IS_ERR(segs)))
3401 skb_warn_bad_offload(skb);
3402
3403 return segs;
3404}
3405EXPORT_SYMBOL(__skb_gso_segment);
3406
3407/* Take action when hardware reception checksum errors are detected. */
3408#ifdef CONFIG_BUG
3409static void do_netdev_rx_csum_fault(struct net_device *dev, struct sk_buff *skb)
3410{
3411 netdev_err(dev, "hw csum failure\n");
3412 skb_dump(KERN_ERR, skb, true);
3413 dump_stack();
3414}
3415
3416void netdev_rx_csum_fault(struct net_device *dev, struct sk_buff *skb)
3417{
3418 DO_ONCE_LITE(do_netdev_rx_csum_fault, dev, skb);
3419}
3420EXPORT_SYMBOL(netdev_rx_csum_fault);
3421#endif
3422
3423/* XXX: check that highmem exists at all on the given machine. */
3424static int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
3425{
3426#ifdef CONFIG_HIGHMEM
3427 int i;
3428
3429 if (!(dev->features & NETIF_F_HIGHDMA)) {
3430 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
3431 skb_frag_t *frag = &skb_shinfo(skb)->frags[i];
3432
3433 if (PageHighMem(skb_frag_page(frag)))
3434 return 1;
3435 }
3436 }
3437#endif
3438 return 0;
3439}
3440
3441/* If MPLS offload request, verify we are testing hardware MPLS features
3442 * instead of standard features for the netdev.
3443 */
3444#if IS_ENABLED(CONFIG_NET_MPLS_GSO)
3445static netdev_features_t net_mpls_features(struct sk_buff *skb,
3446 netdev_features_t features,
3447 __be16 type)
3448{
3449 if (eth_p_mpls(type))
3450 features &= skb->dev->mpls_features;
3451
3452 return features;
3453}
3454#else
3455static netdev_features_t net_mpls_features(struct sk_buff *skb,
3456 netdev_features_t features,
3457 __be16 type)
3458{
3459 return features;
3460}
3461#endif
3462
3463static netdev_features_t harmonize_features(struct sk_buff *skb,
3464 netdev_features_t features)
3465{
3466 __be16 type;
3467
3468 type = skb_network_protocol(skb, NULL);
3469 features = net_mpls_features(skb, features, type);
3470
3471 if (skb->ip_summed != CHECKSUM_NONE &&
3472 !can_checksum_protocol(features, type)) {
3473 features &= ~(NETIF_F_CSUM_MASK | NETIF_F_GSO_MASK);
3474 }
3475 if (illegal_highdma(skb->dev, skb))
3476 features &= ~NETIF_F_SG;
3477
3478 return features;
3479}
3480
3481netdev_features_t passthru_features_check(struct sk_buff *skb,
3482 struct net_device *dev,
3483 netdev_features_t features)
3484{
3485 return features;
3486}
3487EXPORT_SYMBOL(passthru_features_check);
3488
3489static netdev_features_t dflt_features_check(struct sk_buff *skb,
3490 struct net_device *dev,
3491 netdev_features_t features)
3492{
3493 return vlan_features_check(skb, features);
3494}
3495
3496static netdev_features_t gso_features_check(const struct sk_buff *skb,
3497 struct net_device *dev,
3498 netdev_features_t features)
3499{
3500 u16 gso_segs = skb_shinfo(skb)->gso_segs;
3501
3502 if (gso_segs > READ_ONCE(dev->gso_max_segs))
3503 return features & ~NETIF_F_GSO_MASK;
3504
3505 if (!skb_shinfo(skb)->gso_type) {
3506 skb_warn_bad_offload(skb);
3507 return features & ~NETIF_F_GSO_MASK;
3508 }
3509
3510 /* Support for GSO partial features requires software
3511 * intervention before we can actually process the packets
3512 * so we need to strip support for any partial features now
3513 * and we can pull them back in after we have partially
3514 * segmented the frame.
3515 */
3516 if (!(skb_shinfo(skb)->gso_type & SKB_GSO_PARTIAL))
3517 features &= ~dev->gso_partial_features;
3518
3519 /* Make sure to clear the IPv4 ID mangling feature if the
3520 * IPv4 header has the potential to be fragmented.
3521 */
3522 if (skb_shinfo(skb)->gso_type & SKB_GSO_TCPV4) {
3523 struct iphdr *iph = skb->encapsulation ?
3524 inner_ip_hdr(skb) : ip_hdr(skb);
3525
3526 if (!(iph->frag_off & htons(IP_DF)))
3527 features &= ~NETIF_F_TSO_MANGLEID;
3528 }
3529
3530 return features;
3531}
3532
3533netdev_features_t netif_skb_features(struct sk_buff *skb)
3534{
3535 struct net_device *dev = skb->dev;
3536 netdev_features_t features = dev->features;
3537
3538 if (skb_is_gso(skb))
3539 features = gso_features_check(skb, dev, features);
3540
3541 /* If encapsulation offload request, verify we are testing
3542 * hardware encapsulation features instead of standard
3543 * features for the netdev
3544 */
3545 if (skb->encapsulation)
3546 features &= dev->hw_enc_features;
3547
3548 if (skb_vlan_tagged(skb))
3549 features = netdev_intersect_features(features,
3550 dev->vlan_features |
3551 NETIF_F_HW_VLAN_CTAG_TX |
3552 NETIF_F_HW_VLAN_STAG_TX);
3553
3554 if (dev->netdev_ops->ndo_features_check)
3555 features &= dev->netdev_ops->ndo_features_check(skb, dev,
3556 features);
3557 else
3558 features &= dflt_features_check(skb, dev, features);
3559
3560 return harmonize_features(skb, features);
3561}
3562EXPORT_SYMBOL(netif_skb_features);
3563
3564static int xmit_one(struct sk_buff *skb, struct net_device *dev,
3565 struct netdev_queue *txq, bool more)
3566{
3567 unsigned int len;
3568 int rc;
3569
3570 if (dev_nit_active(dev))
3571 dev_queue_xmit_nit(skb, dev);
3572
3573 len = skb->len;
3574 trace_net_dev_start_xmit(skb, dev);
3575 rc = netdev_start_xmit(skb, dev, txq, more);
3576 trace_net_dev_xmit(skb, rc, dev, len);
3577
3578 return rc;
3579}
3580
3581struct sk_buff *dev_hard_start_xmit(struct sk_buff *first, struct net_device *dev,
3582 struct netdev_queue *txq, int *ret)
3583{
3584 struct sk_buff *skb = first;
3585 int rc = NETDEV_TX_OK;
3586
3587 while (skb) {
3588 struct sk_buff *next = skb->next;
3589
3590 skb_mark_not_on_list(skb);
3591 rc = xmit_one(skb, dev, txq, next != NULL);
3592 if (unlikely(!dev_xmit_complete(rc))) {
3593 skb->next = next;
3594 goto out;
3595 }
3596
3597 skb = next;
3598 if (netif_tx_queue_stopped(txq) && skb) {
3599 rc = NETDEV_TX_BUSY;
3600 break;
3601 }
3602 }
3603
3604out:
3605 *ret = rc;
3606 return skb;
3607}
3608
3609static struct sk_buff *validate_xmit_vlan(struct sk_buff *skb,
3610 netdev_features_t features)
3611{
3612 if (skb_vlan_tag_present(skb) &&
3613 !vlan_hw_offload_capable(features, skb->vlan_proto))
3614 skb = __vlan_hwaccel_push_inside(skb);
3615 return skb;
3616}
3617
3618int skb_csum_hwoffload_help(struct sk_buff *skb,
3619 const netdev_features_t features)
3620{
3621 if (unlikely(skb_csum_is_sctp(skb)))
3622 return !!(features & NETIF_F_SCTP_CRC) ? 0 :
3623 skb_crc32c_csum_help(skb);
3624
3625 if (features & NETIF_F_HW_CSUM)
3626 return 0;
3627
3628 if (features & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM)) {
3629 switch (skb->csum_offset) {
3630 case offsetof(struct tcphdr, check):
3631 case offsetof(struct udphdr, check):
3632 return 0;
3633 }
3634 }
3635
3636 return skb_checksum_help(skb);
3637}
3638EXPORT_SYMBOL(skb_csum_hwoffload_help);
3639
3640static struct sk_buff *validate_xmit_skb(struct sk_buff *skb, struct net_device *dev, bool *again)
3641{
3642 netdev_features_t features;
3643
3644 features = netif_skb_features(skb);
3645 skb = validate_xmit_vlan(skb, features);
3646 if (unlikely(!skb))
3647 goto out_null;
3648
3649 skb = sk_validate_xmit_skb(skb, dev);
3650 if (unlikely(!skb))
3651 goto out_null;
3652
3653 if (netif_needs_gso(skb, features)) {
3654 struct sk_buff *segs;
3655
3656 segs = skb_gso_segment(skb, features);
3657 if (IS_ERR(segs)) {
3658 goto out_kfree_skb;
3659 } else if (segs) {
3660 consume_skb(skb);
3661 skb = segs;
3662 }
3663 } else {
3664 if (skb_needs_linearize(skb, features) &&
3665 __skb_linearize(skb))
3666 goto out_kfree_skb;
3667
3668 /* If packet is not checksummed and device does not
3669 * support checksumming for this protocol, complete
3670 * checksumming here.
3671 */
3672 if (skb->ip_summed == CHECKSUM_PARTIAL) {
3673 if (skb->encapsulation)
3674 skb_set_inner_transport_header(skb,
3675 skb_checksum_start_offset(skb));
3676 else
3677 skb_set_transport_header(skb,
3678 skb_checksum_start_offset(skb));
3679 if (skb_csum_hwoffload_help(skb, features))
3680 goto out_kfree_skb;
3681 }
3682 }
3683
3684 skb = validate_xmit_xfrm(skb, features, again);
3685
3686 return skb;
3687
3688out_kfree_skb:
3689 kfree_skb(skb);
3690out_null:
3691 dev_core_stats_tx_dropped_inc(dev);
3692 return NULL;
3693}
3694
3695struct sk_buff *validate_xmit_skb_list(struct sk_buff *skb, struct net_device *dev, bool *again)
3696{
3697 struct sk_buff *next, *head = NULL, *tail;
3698
3699 for (; skb != NULL; skb = next) {
3700 next = skb->next;
3701 skb_mark_not_on_list(skb);
3702
3703 /* in case skb wont be segmented, point to itself */
3704 skb->prev = skb;
3705
3706 skb = validate_xmit_skb(skb, dev, again);
3707 if (!skb)
3708 continue;
3709
3710 if (!head)
3711 head = skb;
3712 else
3713 tail->next = skb;
3714 /* If skb was segmented, skb->prev points to
3715 * the last segment. If not, it still contains skb.
3716 */
3717 tail = skb->prev;
3718 }
3719 return head;
3720}
3721EXPORT_SYMBOL_GPL(validate_xmit_skb_list);
3722
3723static void qdisc_pkt_len_init(struct sk_buff *skb)
3724{
3725 const struct skb_shared_info *shinfo = skb_shinfo(skb);
3726
3727 qdisc_skb_cb(skb)->pkt_len = skb->len;
3728
3729 /* To get more precise estimation of bytes sent on wire,
3730 * we add to pkt_len the headers size of all segments
3731 */
3732 if (shinfo->gso_size && skb_transport_header_was_set(skb)) {
3733 unsigned int hdr_len;
3734 u16 gso_segs = shinfo->gso_segs;
3735
3736 /* mac layer + network layer */
3737 hdr_len = skb_transport_header(skb) - skb_mac_header(skb);
3738
3739 /* + transport layer */
3740 if (likely(shinfo->gso_type & (SKB_GSO_TCPV4 | SKB_GSO_TCPV6))) {
3741 const struct tcphdr *th;
3742 struct tcphdr _tcphdr;
3743
3744 th = skb_header_pointer(skb, skb_transport_offset(skb),
3745 sizeof(_tcphdr), &_tcphdr);
3746 if (likely(th))
3747 hdr_len += __tcp_hdrlen(th);
3748 } else {
3749 struct udphdr _udphdr;
3750
3751 if (skb_header_pointer(skb, skb_transport_offset(skb),
3752 sizeof(_udphdr), &_udphdr))
3753 hdr_len += sizeof(struct udphdr);
3754 }
3755
3756 if (shinfo->gso_type & SKB_GSO_DODGY)
3757 gso_segs = DIV_ROUND_UP(skb->len - hdr_len,
3758 shinfo->gso_size);
3759
3760 qdisc_skb_cb(skb)->pkt_len += (gso_segs - 1) * hdr_len;
3761 }
3762}
3763
3764static int dev_qdisc_enqueue(struct sk_buff *skb, struct Qdisc *q,
3765 struct sk_buff **to_free,
3766 struct netdev_queue *txq)
3767{
3768 int rc;
3769
3770 rc = q->enqueue(skb, q, to_free) & NET_XMIT_MASK;
3771 if (rc == NET_XMIT_SUCCESS)
3772 trace_qdisc_enqueue(q, txq, skb);
3773 return rc;
3774}
3775
3776static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q,
3777 struct net_device *dev,
3778 struct netdev_queue *txq)
3779{
3780 spinlock_t *root_lock = qdisc_lock(q);
3781 struct sk_buff *to_free = NULL;
3782 bool contended;
3783 int rc;
3784
3785 qdisc_calculate_pkt_len(skb, q);
3786
3787 if (q->flags & TCQ_F_NOLOCK) {
3788 if (q->flags & TCQ_F_CAN_BYPASS && nolock_qdisc_is_empty(q) &&
3789 qdisc_run_begin(q)) {
3790 /* Retest nolock_qdisc_is_empty() within the protection
3791 * of q->seqlock to protect from racing with requeuing.
3792 */
3793 if (unlikely(!nolock_qdisc_is_empty(q))) {
3794 rc = dev_qdisc_enqueue(skb, q, &to_free, txq);
3795 __qdisc_run(q);
3796 qdisc_run_end(q);
3797
3798 goto no_lock_out;
3799 }
3800
3801 qdisc_bstats_cpu_update(q, skb);
3802 if (sch_direct_xmit(skb, q, dev, txq, NULL, true) &&
3803 !nolock_qdisc_is_empty(q))
3804 __qdisc_run(q);
3805
3806 qdisc_run_end(q);
3807 return NET_XMIT_SUCCESS;
3808 }
3809
3810 rc = dev_qdisc_enqueue(skb, q, &to_free, txq);
3811 qdisc_run(q);
3812
3813no_lock_out:
3814 if (unlikely(to_free))
3815 kfree_skb_list_reason(to_free,
3816 SKB_DROP_REASON_QDISC_DROP);
3817 return rc;
3818 }
3819
3820 /*
3821 * Heuristic to force contended enqueues to serialize on a
3822 * separate lock before trying to get qdisc main lock.
3823 * This permits qdisc->running owner to get the lock more
3824 * often and dequeue packets faster.
3825 * On PREEMPT_RT it is possible to preempt the qdisc owner during xmit
3826 * and then other tasks will only enqueue packets. The packets will be
3827 * sent after the qdisc owner is scheduled again. To prevent this
3828 * scenario the task always serialize on the lock.
3829 */
3830 contended = qdisc_is_running(q) || IS_ENABLED(CONFIG_PREEMPT_RT);
3831 if (unlikely(contended))
3832 spin_lock(&q->busylock);
3833
3834 spin_lock(root_lock);
3835 if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) {
3836 __qdisc_drop(skb, &to_free);
3837 rc = NET_XMIT_DROP;
3838 } else if ((q->flags & TCQ_F_CAN_BYPASS) && !qdisc_qlen(q) &&
3839 qdisc_run_begin(q)) {
3840 /*
3841 * This is a work-conserving queue; there are no old skbs
3842 * waiting to be sent out; and the qdisc is not running -
3843 * xmit the skb directly.
3844 */
3845
3846 qdisc_bstats_update(q, skb);
3847
3848 if (sch_direct_xmit(skb, q, dev, txq, root_lock, true)) {
3849 if (unlikely(contended)) {
3850 spin_unlock(&q->busylock);
3851 contended = false;
3852 }
3853 __qdisc_run(q);
3854 }
3855
3856 qdisc_run_end(q);
3857 rc = NET_XMIT_SUCCESS;
3858 } else {
3859 rc = dev_qdisc_enqueue(skb, q, &to_free, txq);
3860 if (qdisc_run_begin(q)) {
3861 if (unlikely(contended)) {
3862 spin_unlock(&q->busylock);
3863 contended = false;
3864 }
3865 __qdisc_run(q);
3866 qdisc_run_end(q);
3867 }
3868 }
3869 spin_unlock(root_lock);
3870 if (unlikely(to_free))
3871 kfree_skb_list_reason(to_free, SKB_DROP_REASON_QDISC_DROP);
3872 if (unlikely(contended))
3873 spin_unlock(&q->busylock);
3874 return rc;
3875}
3876
3877#if IS_ENABLED(CONFIG_CGROUP_NET_PRIO)
3878static void skb_update_prio(struct sk_buff *skb)
3879{
3880 const struct netprio_map *map;
3881 const struct sock *sk;
3882 unsigned int prioidx;
3883
3884 if (skb->priority)
3885 return;
3886 map = rcu_dereference_bh(skb->dev->priomap);
3887 if (!map)
3888 return;
3889 sk = skb_to_full_sk(skb);
3890 if (!sk)
3891 return;
3892
3893 prioidx = sock_cgroup_prioidx(&sk->sk_cgrp_data);
3894
3895 if (prioidx < map->priomap_len)
3896 skb->priority = map->priomap[prioidx];
3897}
3898#else
3899#define skb_update_prio(skb)
3900#endif
3901
3902/**
3903 * dev_loopback_xmit - loop back @skb
3904 * @net: network namespace this loopback is happening in
3905 * @sk: sk needed to be a netfilter okfn
3906 * @skb: buffer to transmit
3907 */
3908int dev_loopback_xmit(struct net *net, struct sock *sk, struct sk_buff *skb)
3909{
3910 skb_reset_mac_header(skb);
3911 __skb_pull(skb, skb_network_offset(skb));
3912 skb->pkt_type = PACKET_LOOPBACK;
3913 if (skb->ip_summed == CHECKSUM_NONE)
3914 skb->ip_summed = CHECKSUM_UNNECESSARY;
3915 DEBUG_NET_WARN_ON_ONCE(!skb_dst(skb));
3916 skb_dst_force(skb);
3917 netif_rx(skb);
3918 return 0;
3919}
3920EXPORT_SYMBOL(dev_loopback_xmit);
3921
3922#ifdef CONFIG_NET_EGRESS
3923static struct sk_buff *
3924sch_handle_egress(struct sk_buff *skb, int *ret, struct net_device *dev)
3925{
3926#ifdef CONFIG_NET_CLS_ACT
3927 struct mini_Qdisc *miniq = rcu_dereference_bh(dev->miniq_egress);
3928 struct tcf_result cl_res;
3929
3930 if (!miniq)
3931 return skb;
3932
3933 /* qdisc_skb_cb(skb)->pkt_len was already set by the caller. */
3934 tc_skb_cb(skb)->mru = 0;
3935 tc_skb_cb(skb)->post_ct = false;
3936 mini_qdisc_bstats_cpu_update(miniq, skb);
3937
3938 switch (tcf_classify(skb, miniq->block, miniq->filter_list, &cl_res, false)) {
3939 case TC_ACT_OK:
3940 case TC_ACT_RECLASSIFY:
3941 skb->tc_index = TC_H_MIN(cl_res.classid);
3942 break;
3943 case TC_ACT_SHOT:
3944 mini_qdisc_qstats_cpu_drop(miniq);
3945 *ret = NET_XMIT_DROP;
3946 kfree_skb_reason(skb, SKB_DROP_REASON_TC_EGRESS);
3947 return NULL;
3948 case TC_ACT_STOLEN:
3949 case TC_ACT_QUEUED:
3950 case TC_ACT_TRAP:
3951 *ret = NET_XMIT_SUCCESS;
3952 consume_skb(skb);
3953 return NULL;
3954 case TC_ACT_REDIRECT:
3955 /* No need to push/pop skb's mac_header here on egress! */
3956 skb_do_redirect(skb);
3957 *ret = NET_XMIT_SUCCESS;
3958 return NULL;
3959 default:
3960 break;
3961 }
3962#endif /* CONFIG_NET_CLS_ACT */
3963
3964 return skb;
3965}
3966
3967static struct netdev_queue *
3968netdev_tx_queue_mapping(struct net_device *dev, struct sk_buff *skb)
3969{
3970 int qm = skb_get_queue_mapping(skb);
3971
3972 return netdev_get_tx_queue(dev, netdev_cap_txqueue(dev, qm));
3973}
3974
3975static bool netdev_xmit_txqueue_skipped(void)
3976{
3977 return __this_cpu_read(softnet_data.xmit.skip_txqueue);
3978}
3979
3980void netdev_xmit_skip_txqueue(bool skip)
3981{
3982 __this_cpu_write(softnet_data.xmit.skip_txqueue, skip);
3983}
3984EXPORT_SYMBOL_GPL(netdev_xmit_skip_txqueue);
3985#endif /* CONFIG_NET_EGRESS */
3986
3987#ifdef CONFIG_XPS
3988static int __get_xps_queue_idx(struct net_device *dev, struct sk_buff *skb,
3989 struct xps_dev_maps *dev_maps, unsigned int tci)
3990{
3991 int tc = netdev_get_prio_tc_map(dev, skb->priority);
3992 struct xps_map *map;
3993 int queue_index = -1;
3994
3995 if (tc >= dev_maps->num_tc || tci >= dev_maps->nr_ids)
3996 return queue_index;
3997
3998 tci *= dev_maps->num_tc;
3999 tci += tc;
4000
4001 map = rcu_dereference(dev_maps->attr_map[tci]);
4002 if (map) {
4003 if (map->len == 1)
4004 queue_index = map->queues[0];
4005 else
4006 queue_index = map->queues[reciprocal_scale(
4007 skb_get_hash(skb), map->len)];
4008 if (unlikely(queue_index >= dev->real_num_tx_queues))
4009 queue_index = -1;
4010 }
4011 return queue_index;
4012}
4013#endif
4014
4015static int get_xps_queue(struct net_device *dev, struct net_device *sb_dev,
4016 struct sk_buff *skb)
4017{
4018#ifdef CONFIG_XPS
4019 struct xps_dev_maps *dev_maps;
4020 struct sock *sk = skb->sk;
4021 int queue_index = -1;
4022
4023 if (!static_key_false(&xps_needed))
4024 return -1;
4025
4026 rcu_read_lock();
4027 if (!static_key_false(&xps_rxqs_needed))
4028 goto get_cpus_map;
4029
4030 dev_maps = rcu_dereference(sb_dev->xps_maps[XPS_RXQS]);
4031 if (dev_maps) {
4032 int tci = sk_rx_queue_get(sk);
4033
4034 if (tci >= 0)
4035 queue_index = __get_xps_queue_idx(dev, skb, dev_maps,
4036 tci);
4037 }
4038
4039get_cpus_map:
4040 if (queue_index < 0) {
4041 dev_maps = rcu_dereference(sb_dev->xps_maps[XPS_CPUS]);
4042 if (dev_maps) {
4043 unsigned int tci = skb->sender_cpu - 1;
4044
4045 queue_index = __get_xps_queue_idx(dev, skb, dev_maps,
4046 tci);
4047 }
4048 }
4049 rcu_read_unlock();
4050
4051 return queue_index;
4052#else
4053 return -1;
4054#endif
4055}
4056
4057u16 dev_pick_tx_zero(struct net_device *dev, struct sk_buff *skb,
4058 struct net_device *sb_dev)
4059{
4060 return 0;
4061}
4062EXPORT_SYMBOL(dev_pick_tx_zero);
4063
4064u16 dev_pick_tx_cpu_id(struct net_device *dev, struct sk_buff *skb,
4065 struct net_device *sb_dev)
4066{
4067 return (u16)raw_smp_processor_id() % dev->real_num_tx_queues;
4068}
4069EXPORT_SYMBOL(dev_pick_tx_cpu_id);
4070
4071u16 netdev_pick_tx(struct net_device *dev, struct sk_buff *skb,
4072 struct net_device *sb_dev)
4073{
4074 struct sock *sk = skb->sk;
4075 int queue_index = sk_tx_queue_get(sk);
4076
4077 sb_dev = sb_dev ? : dev;
4078
4079 if (queue_index < 0 || skb->ooo_okay ||
4080 queue_index >= dev->real_num_tx_queues) {
4081 int new_index = get_xps_queue(dev, sb_dev, skb);
4082
4083 if (new_index < 0)
4084 new_index = skb_tx_hash(dev, sb_dev, skb);
4085
4086 if (queue_index != new_index && sk &&
4087 sk_fullsock(sk) &&
4088 rcu_access_pointer(sk->sk_dst_cache))
4089 sk_tx_queue_set(sk, new_index);
4090
4091 queue_index = new_index;
4092 }
4093
4094 return queue_index;
4095}
4096EXPORT_SYMBOL(netdev_pick_tx);
4097
4098struct netdev_queue *netdev_core_pick_tx(struct net_device *dev,
4099 struct sk_buff *skb,
4100 struct net_device *sb_dev)
4101{
4102 int queue_index = 0;
4103
4104#ifdef CONFIG_XPS
4105 u32 sender_cpu = skb->sender_cpu - 1;
4106
4107 if (sender_cpu >= (u32)NR_CPUS)
4108 skb->sender_cpu = raw_smp_processor_id() + 1;
4109#endif
4110
4111 if (dev->real_num_tx_queues != 1) {
4112 const struct net_device_ops *ops = dev->netdev_ops;
4113
4114 if (ops->ndo_select_queue)
4115 queue_index = ops->ndo_select_queue(dev, skb, sb_dev);
4116 else
4117 queue_index = netdev_pick_tx(dev, skb, sb_dev);
4118
4119 queue_index = netdev_cap_txqueue(dev, queue_index);
4120 }
4121
4122 skb_set_queue_mapping(skb, queue_index);
4123 return netdev_get_tx_queue(dev, queue_index);
4124}
4125
4126/**
4127 * __dev_queue_xmit() - transmit a buffer
4128 * @skb: buffer to transmit
4129 * @sb_dev: suboordinate device used for L2 forwarding offload
4130 *
4131 * Queue a buffer for transmission to a network device. The caller must
4132 * have set the device and priority and built the buffer before calling
4133 * this function. The function can be called from an interrupt.
4134 *
4135 * When calling this method, interrupts MUST be enabled. This is because
4136 * the BH enable code must have IRQs enabled so that it will not deadlock.
4137 *
4138 * Regardless of the return value, the skb is consumed, so it is currently
4139 * difficult to retry a send to this method. (You can bump the ref count
4140 * before sending to hold a reference for retry if you are careful.)
4141 *
4142 * Return:
4143 * * 0 - buffer successfully transmitted
4144 * * positive qdisc return code - NET_XMIT_DROP etc.
4145 * * negative errno - other errors
4146 */
4147int __dev_queue_xmit(struct sk_buff *skb, struct net_device *sb_dev)
4148{
4149 struct net_device *dev = skb->dev;
4150 struct netdev_queue *txq = NULL;
4151 struct Qdisc *q;
4152 int rc = -ENOMEM;
4153 bool again = false;
4154
4155 skb_reset_mac_header(skb);
4156 skb_assert_len(skb);
4157
4158 if (unlikely(skb_shinfo(skb)->tx_flags & SKBTX_SCHED_TSTAMP))
4159 __skb_tstamp_tx(skb, NULL, NULL, skb->sk, SCM_TSTAMP_SCHED);
4160
4161 /* Disable soft irqs for various locks below. Also
4162 * stops preemption for RCU.
4163 */
4164 rcu_read_lock_bh();
4165
4166 skb_update_prio(skb);
4167
4168 qdisc_pkt_len_init(skb);
4169#ifdef CONFIG_NET_CLS_ACT
4170 skb->tc_at_ingress = 0;
4171#endif
4172#ifdef CONFIG_NET_EGRESS
4173 if (static_branch_unlikely(&egress_needed_key)) {
4174 if (nf_hook_egress_active()) {
4175 skb = nf_hook_egress(skb, &rc, dev);
4176 if (!skb)
4177 goto out;
4178 }
4179
4180 netdev_xmit_skip_txqueue(false);
4181
4182 nf_skip_egress(skb, true);
4183 skb = sch_handle_egress(skb, &rc, dev);
4184 if (!skb)
4185 goto out;
4186 nf_skip_egress(skb, false);
4187
4188 if (netdev_xmit_txqueue_skipped())
4189 txq = netdev_tx_queue_mapping(dev, skb);
4190 }
4191#endif
4192 /* If device/qdisc don't need skb->dst, release it right now while
4193 * its hot in this cpu cache.
4194 */
4195 if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
4196 skb_dst_drop(skb);
4197 else
4198 skb_dst_force(skb);
4199
4200 if (!txq)
4201 txq = netdev_core_pick_tx(dev, skb, sb_dev);
4202
4203 q = rcu_dereference_bh(txq->qdisc);
4204
4205 trace_net_dev_queue(skb);
4206 if (q->enqueue) {
4207 rc = __dev_xmit_skb(skb, q, dev, txq);
4208 goto out;
4209 }
4210
4211 /* The device has no queue. Common case for software devices:
4212 * loopback, all the sorts of tunnels...
4213
4214 * Really, it is unlikely that netif_tx_lock protection is necessary
4215 * here. (f.e. loopback and IP tunnels are clean ignoring statistics
4216 * counters.)
4217 * However, it is possible, that they rely on protection
4218 * made by us here.
4219
4220 * Check this and shot the lock. It is not prone from deadlocks.
4221 *Either shot noqueue qdisc, it is even simpler 8)
4222 */
4223 if (dev->flags & IFF_UP) {
4224 int cpu = smp_processor_id(); /* ok because BHs are off */
4225
4226 /* Other cpus might concurrently change txq->xmit_lock_owner
4227 * to -1 or to their cpu id, but not to our id.
4228 */
4229 if (READ_ONCE(txq->xmit_lock_owner) != cpu) {
4230 if (dev_xmit_recursion())
4231 goto recursion_alert;
4232
4233 skb = validate_xmit_skb(skb, dev, &again);
4234 if (!skb)
4235 goto out;
4236
4237 HARD_TX_LOCK(dev, txq, cpu);
4238
4239 if (!netif_xmit_stopped(txq)) {
4240 dev_xmit_recursion_inc();
4241 skb = dev_hard_start_xmit(skb, dev, txq, &rc);
4242 dev_xmit_recursion_dec();
4243 if (dev_xmit_complete(rc)) {
4244 HARD_TX_UNLOCK(dev, txq);
4245 goto out;
4246 }
4247 }
4248 HARD_TX_UNLOCK(dev, txq);
4249 net_crit_ratelimited("Virtual device %s asks to queue packet!\n",
4250 dev->name);
4251 } else {
4252 /* Recursion is detected! It is possible,
4253 * unfortunately
4254 */
4255recursion_alert:
4256 net_crit_ratelimited("Dead loop on virtual device %s, fix it urgently!\n",
4257 dev->name);
4258 }
4259 }
4260
4261 rc = -ENETDOWN;
4262 rcu_read_unlock_bh();
4263
4264 dev_core_stats_tx_dropped_inc(dev);
4265 kfree_skb_list(skb);
4266 return rc;
4267out:
4268 rcu_read_unlock_bh();
4269 return rc;
4270}
4271EXPORT_SYMBOL(__dev_queue_xmit);
4272
4273int __dev_direct_xmit(struct sk_buff *skb, u16 queue_id)
4274{
4275 struct net_device *dev = skb->dev;
4276 struct sk_buff *orig_skb = skb;
4277 struct netdev_queue *txq;
4278 int ret = NETDEV_TX_BUSY;
4279 bool again = false;
4280
4281 if (unlikely(!netif_running(dev) ||
4282 !netif_carrier_ok(dev)))
4283 goto drop;
4284
4285 skb = validate_xmit_skb_list(skb, dev, &again);
4286 if (skb != orig_skb)
4287 goto drop;
4288
4289 skb_set_queue_mapping(skb, queue_id);
4290 txq = skb_get_tx_queue(dev, skb);
4291
4292 local_bh_disable();
4293
4294 dev_xmit_recursion_inc();
4295 HARD_TX_LOCK(dev, txq, smp_processor_id());
4296 if (!netif_xmit_frozen_or_drv_stopped(txq))
4297 ret = netdev_start_xmit(skb, dev, txq, false);
4298 HARD_TX_UNLOCK(dev, txq);
4299 dev_xmit_recursion_dec();
4300
4301 local_bh_enable();
4302 return ret;
4303drop:
4304 dev_core_stats_tx_dropped_inc(dev);
4305 kfree_skb_list(skb);
4306 return NET_XMIT_DROP;
4307}
4308EXPORT_SYMBOL(__dev_direct_xmit);
4309
4310/*************************************************************************
4311 * Receiver routines
4312 *************************************************************************/
4313
4314int netdev_max_backlog __read_mostly = 1000;
4315EXPORT_SYMBOL(netdev_max_backlog);
4316
4317int netdev_tstamp_prequeue __read_mostly = 1;
4318unsigned int sysctl_skb_defer_max __read_mostly = 64;
4319int netdev_budget __read_mostly = 300;
4320/* Must be at least 2 jiffes to guarantee 1 jiffy timeout */
4321unsigned int __read_mostly netdev_budget_usecs = 2 * USEC_PER_SEC / HZ;
4322int weight_p __read_mostly = 64; /* old backlog weight */
4323int dev_weight_rx_bias __read_mostly = 1; /* bias for backlog weight */
4324int dev_weight_tx_bias __read_mostly = 1; /* bias for output_queue quota */
4325int dev_rx_weight __read_mostly = 64;
4326int dev_tx_weight __read_mostly = 64;
4327
4328/* Called with irq disabled */
4329static inline void ____napi_schedule(struct softnet_data *sd,
4330 struct napi_struct *napi)
4331{
4332 struct task_struct *thread;
4333
4334 lockdep_assert_irqs_disabled();
4335
4336 if (test_bit(NAPI_STATE_THREADED, &napi->state)) {
4337 /* Paired with smp_mb__before_atomic() in
4338 * napi_enable()/dev_set_threaded().
4339 * Use READ_ONCE() to guarantee a complete
4340 * read on napi->thread. Only call
4341 * wake_up_process() when it's not NULL.
4342 */
4343 thread = READ_ONCE(napi->thread);
4344 if (thread) {
4345 /* Avoid doing set_bit() if the thread is in
4346 * INTERRUPTIBLE state, cause napi_thread_wait()
4347 * makes sure to proceed with napi polling
4348 * if the thread is explicitly woken from here.
4349 */
4350 if (READ_ONCE(thread->__state) != TASK_INTERRUPTIBLE)
4351 set_bit(NAPI_STATE_SCHED_THREADED, &napi->state);
4352 wake_up_process(thread);
4353 return;
4354 }
4355 }
4356
4357 list_add_tail(&napi->poll_list, &sd->poll_list);
4358 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
4359}
4360
4361#ifdef CONFIG_RPS
4362
4363/* One global table that all flow-based protocols share. */
4364struct rps_sock_flow_table __rcu *rps_sock_flow_table __read_mostly;
4365EXPORT_SYMBOL(rps_sock_flow_table);
4366u32 rps_cpu_mask __read_mostly;
4367EXPORT_SYMBOL(rps_cpu_mask);
4368
4369struct static_key_false rps_needed __read_mostly;
4370EXPORT_SYMBOL(rps_needed);
4371struct static_key_false rfs_needed __read_mostly;
4372EXPORT_SYMBOL(rfs_needed);
4373
4374static struct rps_dev_flow *
4375set_rps_cpu(struct net_device *dev, struct sk_buff *skb,
4376 struct rps_dev_flow *rflow, u16 next_cpu)
4377{
4378 if (next_cpu < nr_cpu_ids) {
4379#ifdef CONFIG_RFS_ACCEL
4380 struct netdev_rx_queue *rxqueue;
4381 struct rps_dev_flow_table *flow_table;
4382 struct rps_dev_flow *old_rflow;
4383 u32 flow_id;
4384 u16 rxq_index;
4385 int rc;
4386
4387 /* Should we steer this flow to a different hardware queue? */
4388 if (!skb_rx_queue_recorded(skb) || !dev->rx_cpu_rmap ||
4389 !(dev->features & NETIF_F_NTUPLE))
4390 goto out;
4391 rxq_index = cpu_rmap_lookup_index(dev->rx_cpu_rmap, next_cpu);
4392 if (rxq_index == skb_get_rx_queue(skb))
4393 goto out;
4394
4395 rxqueue = dev->_rx + rxq_index;
4396 flow_table = rcu_dereference(rxqueue->rps_flow_table);
4397 if (!flow_table)
4398 goto out;
4399 flow_id = skb_get_hash(skb) & flow_table->mask;
4400 rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb,
4401 rxq_index, flow_id);
4402 if (rc < 0)
4403 goto out;
4404 old_rflow = rflow;
4405 rflow = &flow_table->flows[flow_id];
4406 rflow->filter = rc;
4407 if (old_rflow->filter == rflow->filter)
4408 old_rflow->filter = RPS_NO_FILTER;
4409 out:
4410#endif
4411 rflow->last_qtail =
4412 per_cpu(softnet_data, next_cpu).input_queue_head;
4413 }
4414
4415 rflow->cpu = next_cpu;
4416 return rflow;
4417}
4418
4419/*
4420 * get_rps_cpu is called from netif_receive_skb and returns the target
4421 * CPU from the RPS map of the receiving queue for a given skb.
4422 * rcu_read_lock must be held on entry.
4423 */
4424static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb,
4425 struct rps_dev_flow **rflowp)
4426{
4427 const struct rps_sock_flow_table *sock_flow_table;
4428 struct netdev_rx_queue *rxqueue = dev->_rx;
4429 struct rps_dev_flow_table *flow_table;
4430 struct rps_map *map;
4431 int cpu = -1;
4432 u32 tcpu;
4433 u32 hash;
4434
4435 if (skb_rx_queue_recorded(skb)) {
4436 u16 index = skb_get_rx_queue(skb);
4437
4438 if (unlikely(index >= dev->real_num_rx_queues)) {
4439 WARN_ONCE(dev->real_num_rx_queues > 1,
4440 "%s received packet on queue %u, but number "
4441 "of RX queues is %u\n",
4442 dev->name, index, dev->real_num_rx_queues);
4443 goto done;
4444 }
4445 rxqueue += index;
4446 }
4447
4448 /* Avoid computing hash if RFS/RPS is not active for this rxqueue */
4449
4450 flow_table = rcu_dereference(rxqueue->rps_flow_table);
4451 map = rcu_dereference(rxqueue->rps_map);
4452 if (!flow_table && !map)
4453 goto done;
4454
4455 skb_reset_network_header(skb);
4456 hash = skb_get_hash(skb);
4457 if (!hash)
4458 goto done;
4459
4460 sock_flow_table = rcu_dereference(rps_sock_flow_table);
4461 if (flow_table && sock_flow_table) {
4462 struct rps_dev_flow *rflow;
4463 u32 next_cpu;
4464 u32 ident;
4465
4466 /* First check into global flow table if there is a match */
4467 ident = sock_flow_table->ents[hash & sock_flow_table->mask];
4468 if ((ident ^ hash) & ~rps_cpu_mask)
4469 goto try_rps;
4470
4471 next_cpu = ident & rps_cpu_mask;
4472
4473 /* OK, now we know there is a match,
4474 * we can look at the local (per receive queue) flow table
4475 */
4476 rflow = &flow_table->flows[hash & flow_table->mask];
4477 tcpu = rflow->cpu;
4478
4479 /*
4480 * If the desired CPU (where last recvmsg was done) is
4481 * different from current CPU (one in the rx-queue flow
4482 * table entry), switch if one of the following holds:
4483 * - Current CPU is unset (>= nr_cpu_ids).
4484 * - Current CPU is offline.
4485 * - The current CPU's queue tail has advanced beyond the
4486 * last packet that was enqueued using this table entry.
4487 * This guarantees that all previous packets for the flow
4488 * have been dequeued, thus preserving in order delivery.
4489 */
4490 if (unlikely(tcpu != next_cpu) &&
4491 (tcpu >= nr_cpu_ids || !cpu_online(tcpu) ||
4492 ((int)(per_cpu(softnet_data, tcpu).input_queue_head -
4493 rflow->last_qtail)) >= 0)) {
4494 tcpu = next_cpu;
4495 rflow = set_rps_cpu(dev, skb, rflow, next_cpu);
4496 }
4497
4498 if (tcpu < nr_cpu_ids && cpu_online(tcpu)) {
4499 *rflowp = rflow;
4500 cpu = tcpu;
4501 goto done;
4502 }
4503 }
4504
4505try_rps:
4506
4507 if (map) {
4508 tcpu = map->cpus[reciprocal_scale(hash, map->len)];
4509 if (cpu_online(tcpu)) {
4510 cpu = tcpu;
4511 goto done;
4512 }
4513 }
4514
4515done:
4516 return cpu;
4517}
4518
4519#ifdef CONFIG_RFS_ACCEL
4520
4521/**
4522 * rps_may_expire_flow - check whether an RFS hardware filter may be removed
4523 * @dev: Device on which the filter was set
4524 * @rxq_index: RX queue index
4525 * @flow_id: Flow ID passed to ndo_rx_flow_steer()
4526 * @filter_id: Filter ID returned by ndo_rx_flow_steer()
4527 *
4528 * Drivers that implement ndo_rx_flow_steer() should periodically call
4529 * this function for each installed filter and remove the filters for
4530 * which it returns %true.
4531 */
4532bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index,
4533 u32 flow_id, u16 filter_id)
4534{
4535 struct netdev_rx_queue *rxqueue = dev->_rx + rxq_index;
4536 struct rps_dev_flow_table *flow_table;
4537 struct rps_dev_flow *rflow;
4538 bool expire = true;
4539 unsigned int cpu;
4540
4541 rcu_read_lock();
4542 flow_table = rcu_dereference(rxqueue->rps_flow_table);
4543 if (flow_table && flow_id <= flow_table->mask) {
4544 rflow = &flow_table->flows[flow_id];
4545 cpu = READ_ONCE(rflow->cpu);
4546 if (rflow->filter == filter_id && cpu < nr_cpu_ids &&
4547 ((int)(per_cpu(softnet_data, cpu).input_queue_head -
4548 rflow->last_qtail) <
4549 (int)(10 * flow_table->mask)))
4550 expire = false;
4551 }
4552 rcu_read_unlock();
4553 return expire;
4554}
4555EXPORT_SYMBOL(rps_may_expire_flow);
4556
4557#endif /* CONFIG_RFS_ACCEL */
4558
4559/* Called from hardirq (IPI) context */
4560static void rps_trigger_softirq(void *data)
4561{
4562 struct softnet_data *sd = data;
4563
4564 ____napi_schedule(sd, &sd->backlog);
4565 sd->received_rps++;
4566}
4567
4568#endif /* CONFIG_RPS */
4569
4570/* Called from hardirq (IPI) context */
4571static void trigger_rx_softirq(void *data)
4572{
4573 struct softnet_data *sd = data;
4574
4575 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
4576 smp_store_release(&sd->defer_ipi_scheduled, 0);
4577}
4578
4579/*
4580 * Check if this softnet_data structure is another cpu one
4581 * If yes, queue it to our IPI list and return 1
4582 * If no, return 0
4583 */
4584static int napi_schedule_rps(struct softnet_data *sd)
4585{
4586 struct softnet_data *mysd = this_cpu_ptr(&softnet_data);
4587
4588#ifdef CONFIG_RPS
4589 if (sd != mysd) {
4590 sd->rps_ipi_next = mysd->rps_ipi_list;
4591 mysd->rps_ipi_list = sd;
4592
4593 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
4594 return 1;
4595 }
4596#endif /* CONFIG_RPS */
4597 __napi_schedule_irqoff(&mysd->backlog);
4598 return 0;
4599}
4600
4601#ifdef CONFIG_NET_FLOW_LIMIT
4602int netdev_flow_limit_table_len __read_mostly = (1 << 12);
4603#endif
4604
4605static bool skb_flow_limit(struct sk_buff *skb, unsigned int qlen)
4606{
4607#ifdef CONFIG_NET_FLOW_LIMIT
4608 struct sd_flow_limit *fl;
4609 struct softnet_data *sd;
4610 unsigned int old_flow, new_flow;
4611
4612 if (qlen < (READ_ONCE(netdev_max_backlog) >> 1))
4613 return false;
4614
4615 sd = this_cpu_ptr(&softnet_data);
4616
4617 rcu_read_lock();
4618 fl = rcu_dereference(sd->flow_limit);
4619 if (fl) {
4620 new_flow = skb_get_hash(skb) & (fl->num_buckets - 1);
4621 old_flow = fl->history[fl->history_head];
4622 fl->history[fl->history_head] = new_flow;
4623
4624 fl->history_head++;
4625 fl->history_head &= FLOW_LIMIT_HISTORY - 1;
4626
4627 if (likely(fl->buckets[old_flow]))
4628 fl->buckets[old_flow]--;
4629
4630 if (++fl->buckets[new_flow] > (FLOW_LIMIT_HISTORY >> 1)) {
4631 fl->count++;
4632 rcu_read_unlock();
4633 return true;
4634 }
4635 }
4636 rcu_read_unlock();
4637#endif
4638 return false;
4639}
4640
4641/*
4642 * enqueue_to_backlog is called to queue an skb to a per CPU backlog
4643 * queue (may be a remote CPU queue).
4644 */
4645static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
4646 unsigned int *qtail)
4647{
4648 enum skb_drop_reason reason;
4649 struct softnet_data *sd;
4650 unsigned long flags;
4651 unsigned int qlen;
4652
4653 reason = SKB_DROP_REASON_NOT_SPECIFIED;
4654 sd = &per_cpu(softnet_data, cpu);
4655
4656 rps_lock_irqsave(sd, &flags);
4657 if (!netif_running(skb->dev))
4658 goto drop;
4659 qlen = skb_queue_len(&sd->input_pkt_queue);
4660 if (qlen <= READ_ONCE(netdev_max_backlog) && !skb_flow_limit(skb, qlen)) {
4661 if (qlen) {
4662enqueue:
4663 __skb_queue_tail(&sd->input_pkt_queue, skb);
4664 input_queue_tail_incr_save(sd, qtail);
4665 rps_unlock_irq_restore(sd, &flags);
4666 return NET_RX_SUCCESS;
4667 }
4668
4669 /* Schedule NAPI for backlog device
4670 * We can use non atomic operation since we own the queue lock
4671 */
4672 if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state))
4673 napi_schedule_rps(sd);
4674 goto enqueue;
4675 }
4676 reason = SKB_DROP_REASON_CPU_BACKLOG;
4677
4678drop:
4679 sd->dropped++;
4680 rps_unlock_irq_restore(sd, &flags);
4681
4682 dev_core_stats_rx_dropped_inc(skb->dev);
4683 kfree_skb_reason(skb, reason);
4684 return NET_RX_DROP;
4685}
4686
4687static struct netdev_rx_queue *netif_get_rxqueue(struct sk_buff *skb)
4688{
4689 struct net_device *dev = skb->dev;
4690 struct netdev_rx_queue *rxqueue;
4691
4692 rxqueue = dev->_rx;
4693
4694 if (skb_rx_queue_recorded(skb)) {
4695 u16 index = skb_get_rx_queue(skb);
4696
4697 if (unlikely(index >= dev->real_num_rx_queues)) {
4698 WARN_ONCE(dev->real_num_rx_queues > 1,
4699 "%s received packet on queue %u, but number "
4700 "of RX queues is %u\n",
4701 dev->name, index, dev->real_num_rx_queues);
4702
4703 return rxqueue; /* Return first rxqueue */
4704 }
4705 rxqueue += index;
4706 }
4707 return rxqueue;
4708}
4709
4710u32 bpf_prog_run_generic_xdp(struct sk_buff *skb, struct xdp_buff *xdp,
4711 struct bpf_prog *xdp_prog)
4712{
4713 void *orig_data, *orig_data_end, *hard_start;
4714 struct netdev_rx_queue *rxqueue;
4715 bool orig_bcast, orig_host;
4716 u32 mac_len, frame_sz;
4717 __be16 orig_eth_type;
4718 struct ethhdr *eth;
4719 u32 metalen, act;
4720 int off;
4721
4722 /* The XDP program wants to see the packet starting at the MAC
4723 * header.
4724 */
4725 mac_len = skb->data - skb_mac_header(skb);
4726 hard_start = skb->data - skb_headroom(skb);
4727
4728 /* SKB "head" area always have tailroom for skb_shared_info */
4729 frame_sz = (void *)skb_end_pointer(skb) - hard_start;
4730 frame_sz += SKB_DATA_ALIGN(sizeof(struct skb_shared_info));
4731
4732 rxqueue = netif_get_rxqueue(skb);
4733 xdp_init_buff(xdp, frame_sz, &rxqueue->xdp_rxq);
4734 xdp_prepare_buff(xdp, hard_start, skb_headroom(skb) - mac_len,
4735 skb_headlen(skb) + mac_len, true);
4736
4737 orig_data_end = xdp->data_end;
4738 orig_data = xdp->data;
4739 eth = (struct ethhdr *)xdp->data;
4740 orig_host = ether_addr_equal_64bits(eth->h_dest, skb->dev->dev_addr);
4741 orig_bcast = is_multicast_ether_addr_64bits(eth->h_dest);
4742 orig_eth_type = eth->h_proto;
4743
4744 act = bpf_prog_run_xdp(xdp_prog, xdp);
4745
4746 /* check if bpf_xdp_adjust_head was used */
4747 off = xdp->data - orig_data;
4748 if (off) {
4749 if (off > 0)
4750 __skb_pull(skb, off);
4751 else if (off < 0)
4752 __skb_push(skb, -off);
4753
4754 skb->mac_header += off;
4755 skb_reset_network_header(skb);
4756 }
4757
4758 /* check if bpf_xdp_adjust_tail was used */
4759 off = xdp->data_end - orig_data_end;
4760 if (off != 0) {
4761 skb_set_tail_pointer(skb, xdp->data_end - xdp->data);
4762 skb->len += off; /* positive on grow, negative on shrink */
4763 }
4764
4765 /* check if XDP changed eth hdr such SKB needs update */
4766 eth = (struct ethhdr *)xdp->data;
4767 if ((orig_eth_type != eth->h_proto) ||
4768 (orig_host != ether_addr_equal_64bits(eth->h_dest,
4769 skb->dev->dev_addr)) ||
4770 (orig_bcast != is_multicast_ether_addr_64bits(eth->h_dest))) {
4771 __skb_push(skb, ETH_HLEN);
4772 skb->pkt_type = PACKET_HOST;
4773 skb->protocol = eth_type_trans(skb, skb->dev);
4774 }
4775
4776 /* Redirect/Tx gives L2 packet, code that will reuse skb must __skb_pull
4777 * before calling us again on redirect path. We do not call do_redirect
4778 * as we leave that up to the caller.
4779 *
4780 * Caller is responsible for managing lifetime of skb (i.e. calling
4781 * kfree_skb in response to actions it cannot handle/XDP_DROP).
4782 */
4783 switch (act) {
4784 case XDP_REDIRECT:
4785 case XDP_TX:
4786 __skb_push(skb, mac_len);
4787 break;
4788 case XDP_PASS:
4789 metalen = xdp->data - xdp->data_meta;
4790 if (metalen)
4791 skb_metadata_set(skb, metalen);
4792 break;
4793 }
4794
4795 return act;
4796}
4797
4798static u32 netif_receive_generic_xdp(struct sk_buff *skb,
4799 struct xdp_buff *xdp,
4800 struct bpf_prog *xdp_prog)
4801{
4802 u32 act = XDP_DROP;
4803
4804 /* Reinjected packets coming from act_mirred or similar should
4805 * not get XDP generic processing.
4806 */
4807 if (skb_is_redirected(skb))
4808 return XDP_PASS;
4809
4810 /* XDP packets must be linear and must have sufficient headroom
4811 * of XDP_PACKET_HEADROOM bytes. This is the guarantee that also
4812 * native XDP provides, thus we need to do it here as well.
4813 */
4814 if (skb_cloned(skb) || skb_is_nonlinear(skb) ||
4815 skb_headroom(skb) < XDP_PACKET_HEADROOM) {
4816 int hroom = XDP_PACKET_HEADROOM - skb_headroom(skb);
4817 int troom = skb->tail + skb->data_len - skb->end;
4818
4819 /* In case we have to go down the path and also linearize,
4820 * then lets do the pskb_expand_head() work just once here.
4821 */
4822 if (pskb_expand_head(skb,
4823 hroom > 0 ? ALIGN(hroom, NET_SKB_PAD) : 0,
4824 troom > 0 ? troom + 128 : 0, GFP_ATOMIC))
4825 goto do_drop;
4826 if (skb_linearize(skb))
4827 goto do_drop;
4828 }
4829
4830 act = bpf_prog_run_generic_xdp(skb, xdp, xdp_prog);
4831 switch (act) {
4832 case XDP_REDIRECT:
4833 case XDP_TX:
4834 case XDP_PASS:
4835 break;
4836 default:
4837 bpf_warn_invalid_xdp_action(skb->dev, xdp_prog, act);
4838 fallthrough;
4839 case XDP_ABORTED:
4840 trace_xdp_exception(skb->dev, xdp_prog, act);
4841 fallthrough;
4842 case XDP_DROP:
4843 do_drop:
4844 kfree_skb(skb);
4845 break;
4846 }
4847
4848 return act;
4849}
4850
4851/* When doing generic XDP we have to bypass the qdisc layer and the
4852 * network taps in order to match in-driver-XDP behavior. This also means
4853 * that XDP packets are able to starve other packets going through a qdisc,
4854 * and DDOS attacks will be more effective. In-driver-XDP use dedicated TX
4855 * queues, so they do not have this starvation issue.
4856 */
4857void generic_xdp_tx(struct sk_buff *skb, struct bpf_prog *xdp_prog)
4858{
4859 struct net_device *dev = skb->dev;
4860 struct netdev_queue *txq;
4861 bool free_skb = true;
4862 int cpu, rc;
4863
4864 txq = netdev_core_pick_tx(dev, skb, NULL);
4865 cpu = smp_processor_id();
4866 HARD_TX_LOCK(dev, txq, cpu);
4867 if (!netif_xmit_frozen_or_drv_stopped(txq)) {
4868 rc = netdev_start_xmit(skb, dev, txq, 0);
4869 if (dev_xmit_complete(rc))
4870 free_skb = false;
4871 }
4872 HARD_TX_UNLOCK(dev, txq);
4873 if (free_skb) {
4874 trace_xdp_exception(dev, xdp_prog, XDP_TX);
4875 dev_core_stats_tx_dropped_inc(dev);
4876 kfree_skb(skb);
4877 }
4878}
4879
4880static DEFINE_STATIC_KEY_FALSE(generic_xdp_needed_key);
4881
4882int do_xdp_generic(struct bpf_prog *xdp_prog, struct sk_buff *skb)
4883{
4884 if (xdp_prog) {
4885 struct xdp_buff xdp;
4886 u32 act;
4887 int err;
4888
4889 act = netif_receive_generic_xdp(skb, &xdp, xdp_prog);
4890 if (act != XDP_PASS) {
4891 switch (act) {
4892 case XDP_REDIRECT:
4893 err = xdp_do_generic_redirect(skb->dev, skb,
4894 &xdp, xdp_prog);
4895 if (err)
4896 goto out_redir;
4897 break;
4898 case XDP_TX:
4899 generic_xdp_tx(skb, xdp_prog);
4900 break;
4901 }
4902 return XDP_DROP;
4903 }
4904 }
4905 return XDP_PASS;
4906out_redir:
4907 kfree_skb_reason(skb, SKB_DROP_REASON_XDP);
4908 return XDP_DROP;
4909}
4910EXPORT_SYMBOL_GPL(do_xdp_generic);
4911
4912static int netif_rx_internal(struct sk_buff *skb)
4913{
4914 int ret;
4915
4916 net_timestamp_check(READ_ONCE(netdev_tstamp_prequeue), skb);
4917
4918 trace_netif_rx(skb);
4919
4920#ifdef CONFIG_RPS
4921 if (static_branch_unlikely(&rps_needed)) {
4922 struct rps_dev_flow voidflow, *rflow = &voidflow;
4923 int cpu;
4924
4925 rcu_read_lock();
4926
4927 cpu = get_rps_cpu(skb->dev, skb, &rflow);
4928 if (cpu < 0)
4929 cpu = smp_processor_id();
4930
4931 ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
4932
4933 rcu_read_unlock();
4934 } else
4935#endif
4936 {
4937 unsigned int qtail;
4938
4939 ret = enqueue_to_backlog(skb, smp_processor_id(), &qtail);
4940 }
4941 return ret;
4942}
4943
4944/**
4945 * __netif_rx - Slightly optimized version of netif_rx
4946 * @skb: buffer to post
4947 *
4948 * This behaves as netif_rx except that it does not disable bottom halves.
4949 * As a result this function may only be invoked from the interrupt context
4950 * (either hard or soft interrupt).
4951 */
4952int __netif_rx(struct sk_buff *skb)
4953{
4954 int ret;
4955
4956 lockdep_assert_once(hardirq_count() | softirq_count());
4957
4958 trace_netif_rx_entry(skb);
4959 ret = netif_rx_internal(skb);
4960 trace_netif_rx_exit(ret);
4961 return ret;
4962}
4963EXPORT_SYMBOL(__netif_rx);
4964
4965/**
4966 * netif_rx - post buffer to the network code
4967 * @skb: buffer to post
4968 *
4969 * This function receives a packet from a device driver and queues it for
4970 * the upper (protocol) levels to process via the backlog NAPI device. It
4971 * always succeeds. The buffer may be dropped during processing for
4972 * congestion control or by the protocol layers.
4973 * The network buffer is passed via the backlog NAPI device. Modern NIC
4974 * driver should use NAPI and GRO.
4975 * This function can used from interrupt and from process context. The
4976 * caller from process context must not disable interrupts before invoking
4977 * this function.
4978 *
4979 * return values:
4980 * NET_RX_SUCCESS (no congestion)
4981 * NET_RX_DROP (packet was dropped)
4982 *
4983 */
4984int netif_rx(struct sk_buff *skb)
4985{
4986 bool need_bh_off = !(hardirq_count() | softirq_count());
4987 int ret;
4988
4989 if (need_bh_off)
4990 local_bh_disable();
4991 trace_netif_rx_entry(skb);
4992 ret = netif_rx_internal(skb);
4993 trace_netif_rx_exit(ret);
4994 if (need_bh_off)
4995 local_bh_enable();
4996 return ret;
4997}
4998EXPORT_SYMBOL(netif_rx);
4999
5000static __latent_entropy void net_tx_action(struct softirq_action *h)
5001{
5002 struct softnet_data *sd = this_cpu_ptr(&softnet_data);
5003
5004 if (sd->completion_queue) {
5005 struct sk_buff *clist;
5006
5007 local_irq_disable();
5008 clist = sd->completion_queue;
5009 sd->completion_queue = NULL;
5010 local_irq_enable();
5011
5012 while (clist) {
5013 struct sk_buff *skb = clist;
5014
5015 clist = clist->next;
5016
5017 WARN_ON(refcount_read(&skb->users));
5018 if (likely(get_kfree_skb_cb(skb)->reason == SKB_REASON_CONSUMED))
5019 trace_consume_skb(skb);
5020 else
5021 trace_kfree_skb(skb, net_tx_action,
5022 SKB_DROP_REASON_NOT_SPECIFIED);
5023
5024 if (skb->fclone != SKB_FCLONE_UNAVAILABLE)
5025 __kfree_skb(skb);
5026 else
5027 __kfree_skb_defer(skb);
5028 }
5029 }
5030
5031 if (sd->output_queue) {
5032 struct Qdisc *head;
5033
5034 local_irq_disable();
5035 head = sd->output_queue;
5036 sd->output_queue = NULL;
5037 sd->output_queue_tailp = &sd->output_queue;
5038 local_irq_enable();
5039
5040 rcu_read_lock();
5041
5042 while (head) {
5043 struct Qdisc *q = head;
5044 spinlock_t *root_lock = NULL;
5045
5046 head = head->next_sched;
5047
5048 /* We need to make sure head->next_sched is read
5049 * before clearing __QDISC_STATE_SCHED
5050 */
5051 smp_mb__before_atomic();
5052
5053 if (!(q->flags & TCQ_F_NOLOCK)) {
5054 root_lock = qdisc_lock(q);
5055 spin_lock(root_lock);
5056 } else if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED,
5057 &q->state))) {
5058 /* There is a synchronize_net() between
5059 * STATE_DEACTIVATED flag being set and
5060 * qdisc_reset()/some_qdisc_is_busy() in
5061 * dev_deactivate(), so we can safely bail out
5062 * early here to avoid data race between
5063 * qdisc_deactivate() and some_qdisc_is_busy()
5064 * for lockless qdisc.
5065 */
5066 clear_bit(__QDISC_STATE_SCHED, &q->state);
5067 continue;
5068 }
5069
5070 clear_bit(__QDISC_STATE_SCHED, &q->state);
5071 qdisc_run(q);
5072 if (root_lock)
5073 spin_unlock(root_lock);
5074 }
5075
5076 rcu_read_unlock();
5077 }
5078
5079 xfrm_dev_backlog(sd);
5080}
5081
5082#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_ATM_LANE)
5083/* This hook is defined here for ATM LANE */
5084int (*br_fdb_test_addr_hook)(struct net_device *dev,
5085 unsigned char *addr) __read_mostly;
5086EXPORT_SYMBOL_GPL(br_fdb_test_addr_hook);
5087#endif
5088
5089static inline struct sk_buff *
5090sch_handle_ingress(struct sk_buff *skb, struct packet_type **pt_prev, int *ret,
5091 struct net_device *orig_dev, bool *another)
5092{
5093#ifdef CONFIG_NET_CLS_ACT
5094 struct mini_Qdisc *miniq = rcu_dereference_bh(skb->dev->miniq_ingress);
5095 struct tcf_result cl_res;
5096
5097 /* If there's at least one ingress present somewhere (so
5098 * we get here via enabled static key), remaining devices
5099 * that are not configured with an ingress qdisc will bail
5100 * out here.
5101 */
5102 if (!miniq)
5103 return skb;
5104
5105 if (*pt_prev) {
5106 *ret = deliver_skb(skb, *pt_prev, orig_dev);
5107 *pt_prev = NULL;
5108 }
5109
5110 qdisc_skb_cb(skb)->pkt_len = skb->len;
5111 tc_skb_cb(skb)->mru = 0;
5112 tc_skb_cb(skb)->post_ct = false;
5113 skb->tc_at_ingress = 1;
5114 mini_qdisc_bstats_cpu_update(miniq, skb);
5115
5116 switch (tcf_classify(skb, miniq->block, miniq->filter_list, &cl_res, false)) {
5117 case TC_ACT_OK:
5118 case TC_ACT_RECLASSIFY:
5119 skb->tc_index = TC_H_MIN(cl_res.classid);
5120 break;
5121 case TC_ACT_SHOT:
5122 mini_qdisc_qstats_cpu_drop(miniq);
5123 kfree_skb_reason(skb, SKB_DROP_REASON_TC_INGRESS);
5124 *ret = NET_RX_DROP;
5125 return NULL;
5126 case TC_ACT_STOLEN:
5127 case TC_ACT_QUEUED:
5128 case TC_ACT_TRAP:
5129 consume_skb(skb);
5130 *ret = NET_RX_SUCCESS;
5131 return NULL;
5132 case TC_ACT_REDIRECT:
5133 /* skb_mac_header check was done by cls/act_bpf, so
5134 * we can safely push the L2 header back before
5135 * redirecting to another netdev
5136 */
5137 __skb_push(skb, skb->mac_len);
5138 if (skb_do_redirect(skb) == -EAGAIN) {
5139 __skb_pull(skb, skb->mac_len);
5140 *another = true;
5141 break;
5142 }
5143 *ret = NET_RX_SUCCESS;
5144 return NULL;
5145 case TC_ACT_CONSUMED:
5146 *ret = NET_RX_SUCCESS;
5147 return NULL;
5148 default:
5149 break;
5150 }
5151#endif /* CONFIG_NET_CLS_ACT */
5152 return skb;
5153}
5154
5155/**
5156 * netdev_is_rx_handler_busy - check if receive handler is registered
5157 * @dev: device to check
5158 *
5159 * Check if a receive handler is already registered for a given device.
5160 * Return true if there one.
5161 *
5162 * The caller must hold the rtnl_mutex.
5163 */
5164bool netdev_is_rx_handler_busy(struct net_device *dev)
5165{
5166 ASSERT_RTNL();
5167 return dev && rtnl_dereference(dev->rx_handler);
5168}
5169EXPORT_SYMBOL_GPL(netdev_is_rx_handler_busy);
5170
5171/**
5172 * netdev_rx_handler_register - register receive handler
5173 * @dev: device to register a handler for
5174 * @rx_handler: receive handler to register
5175 * @rx_handler_data: data pointer that is used by rx handler
5176 *
5177 * Register a receive handler for a device. This handler will then be
5178 * called from __netif_receive_skb. A negative errno code is returned
5179 * on a failure.
5180 *
5181 * The caller must hold the rtnl_mutex.
5182 *
5183 * For a general description of rx_handler, see enum rx_handler_result.
5184 */
5185int netdev_rx_handler_register(struct net_device *dev,
5186 rx_handler_func_t *rx_handler,
5187 void *rx_handler_data)
5188{
5189 if (netdev_is_rx_handler_busy(dev))
5190 return -EBUSY;
5191
5192 if (dev->priv_flags & IFF_NO_RX_HANDLER)
5193 return -EINVAL;
5194
5195 /* Note: rx_handler_data must be set before rx_handler */
5196 rcu_assign_pointer(dev->rx_handler_data, rx_handler_data);
5197 rcu_assign_pointer(dev->rx_handler, rx_handler);
5198
5199 return 0;
5200}
5201EXPORT_SYMBOL_GPL(netdev_rx_handler_register);
5202
5203/**
5204 * netdev_rx_handler_unregister - unregister receive handler
5205 * @dev: device to unregister a handler from
5206 *
5207 * Unregister a receive handler from a device.
5208 *
5209 * The caller must hold the rtnl_mutex.
5210 */
5211void netdev_rx_handler_unregister(struct net_device *dev)
5212{
5213
5214 ASSERT_RTNL();
5215 RCU_INIT_POINTER(dev->rx_handler, NULL);
5216 /* a reader seeing a non NULL rx_handler in a rcu_read_lock()
5217 * section has a guarantee to see a non NULL rx_handler_data
5218 * as well.
5219 */
5220 synchronize_net();
5221 RCU_INIT_POINTER(dev->rx_handler_data, NULL);
5222}
5223EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
5224
5225/*
5226 * Limit the use of PFMEMALLOC reserves to those protocols that implement
5227 * the special handling of PFMEMALLOC skbs.
5228 */
5229static bool skb_pfmemalloc_protocol(struct sk_buff *skb)
5230{
5231 switch (skb->protocol) {
5232 case htons(ETH_P_ARP):
5233 case htons(ETH_P_IP):
5234 case htons(ETH_P_IPV6):
5235 case htons(ETH_P_8021Q):
5236 case htons(ETH_P_8021AD):
5237 return true;
5238 default:
5239 return false;
5240 }
5241}
5242
5243static inline int nf_ingress(struct sk_buff *skb, struct packet_type **pt_prev,
5244 int *ret, struct net_device *orig_dev)
5245{
5246 if (nf_hook_ingress_active(skb)) {
5247 int ingress_retval;
5248
5249 if (*pt_prev) {
5250 *ret = deliver_skb(skb, *pt_prev, orig_dev);
5251 *pt_prev = NULL;
5252 }
5253
5254 rcu_read_lock();
5255 ingress_retval = nf_hook_ingress(skb);
5256 rcu_read_unlock();
5257 return ingress_retval;
5258 }
5259 return 0;
5260}
5261
5262static int __netif_receive_skb_core(struct sk_buff **pskb, bool pfmemalloc,
5263 struct packet_type **ppt_prev)
5264{
5265 struct packet_type *ptype, *pt_prev;
5266 rx_handler_func_t *rx_handler;
5267 struct sk_buff *skb = *pskb;
5268 struct net_device *orig_dev;
5269 bool deliver_exact = false;
5270 int ret = NET_RX_DROP;
5271 __be16 type;
5272
5273 net_timestamp_check(!READ_ONCE(netdev_tstamp_prequeue), skb);
5274
5275 trace_netif_receive_skb(skb);
5276
5277 orig_dev = skb->dev;
5278
5279 skb_reset_network_header(skb);
5280 if (!skb_transport_header_was_set(skb))
5281 skb_reset_transport_header(skb);
5282 skb_reset_mac_len(skb);
5283
5284 pt_prev = NULL;
5285
5286another_round:
5287 skb->skb_iif = skb->dev->ifindex;
5288
5289 __this_cpu_inc(softnet_data.processed);
5290
5291 if (static_branch_unlikely(&generic_xdp_needed_key)) {
5292 int ret2;
5293
5294 migrate_disable();
5295 ret2 = do_xdp_generic(rcu_dereference(skb->dev->xdp_prog), skb);
5296 migrate_enable();
5297
5298 if (ret2 != XDP_PASS) {
5299 ret = NET_RX_DROP;
5300 goto out;
5301 }
5302 }
5303
5304 if (eth_type_vlan(skb->protocol)) {
5305 skb = skb_vlan_untag(skb);
5306 if (unlikely(!skb))
5307 goto out;
5308 }
5309
5310 if (skb_skip_tc_classify(skb))
5311 goto skip_classify;
5312
5313 if (pfmemalloc)
5314 goto skip_taps;
5315
5316 list_for_each_entry_rcu(ptype, &ptype_all, list) {
5317 if (pt_prev)
5318 ret = deliver_skb(skb, pt_prev, orig_dev);
5319 pt_prev = ptype;
5320 }
5321
5322 list_for_each_entry_rcu(ptype, &skb->dev->ptype_all, list) {
5323 if (pt_prev)
5324 ret = deliver_skb(skb, pt_prev, orig_dev);
5325 pt_prev = ptype;
5326 }
5327
5328skip_taps:
5329#ifdef CONFIG_NET_INGRESS
5330 if (static_branch_unlikely(&ingress_needed_key)) {
5331 bool another = false;
5332
5333 nf_skip_egress(skb, true);
5334 skb = sch_handle_ingress(skb, &pt_prev, &ret, orig_dev,
5335 &another);
5336 if (another)
5337 goto another_round;
5338 if (!skb)
5339 goto out;
5340
5341 nf_skip_egress(skb, false);
5342 if (nf_ingress(skb, &pt_prev, &ret, orig_dev) < 0)
5343 goto out;
5344 }
5345#endif
5346 skb_reset_redirect(skb);
5347skip_classify:
5348 if (pfmemalloc && !skb_pfmemalloc_protocol(skb))
5349 goto drop;
5350
5351 if (skb_vlan_tag_present(skb)) {
5352 if (pt_prev) {
5353 ret = deliver_skb(skb, pt_prev, orig_dev);
5354 pt_prev = NULL;
5355 }
5356 if (vlan_do_receive(&skb))
5357 goto another_round;
5358 else if (unlikely(!skb))
5359 goto out;
5360 }
5361
5362 rx_handler = rcu_dereference(skb->dev->rx_handler);
5363 if (rx_handler) {
5364 if (pt_prev) {
5365 ret = deliver_skb(skb, pt_prev, orig_dev);
5366 pt_prev = NULL;
5367 }
5368 switch (rx_handler(&skb)) {
5369 case RX_HANDLER_CONSUMED:
5370 ret = NET_RX_SUCCESS;
5371 goto out;
5372 case RX_HANDLER_ANOTHER:
5373 goto another_round;
5374 case RX_HANDLER_EXACT:
5375 deliver_exact = true;
5376 break;
5377 case RX_HANDLER_PASS:
5378 break;
5379 default:
5380 BUG();
5381 }
5382 }
5383
5384 if (unlikely(skb_vlan_tag_present(skb)) && !netdev_uses_dsa(skb->dev)) {
5385check_vlan_id:
5386 if (skb_vlan_tag_get_id(skb)) {
5387 /* Vlan id is non 0 and vlan_do_receive() above couldn't
5388 * find vlan device.
5389 */
5390 skb->pkt_type = PACKET_OTHERHOST;
5391 } else if (eth_type_vlan(skb->protocol)) {
5392 /* Outer header is 802.1P with vlan 0, inner header is
5393 * 802.1Q or 802.1AD and vlan_do_receive() above could
5394 * not find vlan dev for vlan id 0.
5395 */
5396 __vlan_hwaccel_clear_tag(skb);
5397 skb = skb_vlan_untag(skb);
5398 if (unlikely(!skb))
5399 goto out;
5400 if (vlan_do_receive(&skb))
5401 /* After stripping off 802.1P header with vlan 0
5402 * vlan dev is found for inner header.
5403 */
5404 goto another_round;
5405 else if (unlikely(!skb))
5406 goto out;
5407 else
5408 /* We have stripped outer 802.1P vlan 0 header.
5409 * But could not find vlan dev.
5410 * check again for vlan id to set OTHERHOST.
5411 */
5412 goto check_vlan_id;
5413 }
5414 /* Note: we might in the future use prio bits
5415 * and set skb->priority like in vlan_do_receive()
5416 * For the time being, just ignore Priority Code Point
5417 */
5418 __vlan_hwaccel_clear_tag(skb);
5419 }
5420
5421 type = skb->protocol;
5422
5423 /* deliver only exact match when indicated */
5424 if (likely(!deliver_exact)) {
5425 deliver_ptype_list_skb(skb, &pt_prev, orig_dev, type,
5426 &ptype_base[ntohs(type) &
5427 PTYPE_HASH_MASK]);
5428 }
5429
5430 deliver_ptype_list_skb(skb, &pt_prev, orig_dev, type,
5431 &orig_dev->ptype_specific);
5432
5433 if (unlikely(skb->dev != orig_dev)) {
5434 deliver_ptype_list_skb(skb, &pt_prev, orig_dev, type,
5435 &skb->dev->ptype_specific);
5436 }
5437
5438 if (pt_prev) {
5439 if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC)))
5440 goto drop;
5441 *ppt_prev = pt_prev;
5442 } else {
5443drop:
5444 if (!deliver_exact)
5445 dev_core_stats_rx_dropped_inc(skb->dev);
5446 else
5447 dev_core_stats_rx_nohandler_inc(skb->dev);
5448 kfree_skb_reason(skb, SKB_DROP_REASON_UNHANDLED_PROTO);
5449 /* Jamal, now you will not able to escape explaining
5450 * me how you were going to use this. :-)
5451 */
5452 ret = NET_RX_DROP;
5453 }
5454
5455out:
5456 /* The invariant here is that if *ppt_prev is not NULL
5457 * then skb should also be non-NULL.
5458 *
5459 * Apparently *ppt_prev assignment above holds this invariant due to
5460 * skb dereferencing near it.
5461 */
5462 *pskb = skb;
5463 return ret;
5464}
5465
5466static int __netif_receive_skb_one_core(struct sk_buff *skb, bool pfmemalloc)
5467{
5468 struct net_device *orig_dev = skb->dev;
5469 struct packet_type *pt_prev = NULL;
5470 int ret;
5471
5472 ret = __netif_receive_skb_core(&skb, pfmemalloc, &pt_prev);
5473 if (pt_prev)
5474 ret = INDIRECT_CALL_INET(pt_prev->func, ipv6_rcv, ip_rcv, skb,
5475 skb->dev, pt_prev, orig_dev);
5476 return ret;
5477}
5478
5479/**
5480 * netif_receive_skb_core - special purpose version of netif_receive_skb
5481 * @skb: buffer to process
5482 *
5483 * More direct receive version of netif_receive_skb(). It should
5484 * only be used by callers that have a need to skip RPS and Generic XDP.
5485 * Caller must also take care of handling if ``(page_is_)pfmemalloc``.
5486 *
5487 * This function may only be called from softirq context and interrupts
5488 * should be enabled.
5489 *
5490 * Return values (usually ignored):
5491 * NET_RX_SUCCESS: no congestion
5492 * NET_RX_DROP: packet was dropped
5493 */
5494int netif_receive_skb_core(struct sk_buff *skb)
5495{
5496 int ret;
5497
5498 rcu_read_lock();
5499 ret = __netif_receive_skb_one_core(skb, false);
5500 rcu_read_unlock();
5501
5502 return ret;
5503}
5504EXPORT_SYMBOL(netif_receive_skb_core);
5505
5506static inline void __netif_receive_skb_list_ptype(struct list_head *head,
5507 struct packet_type *pt_prev,
5508 struct net_device *orig_dev)
5509{
5510 struct sk_buff *skb, *next;
5511
5512 if (!pt_prev)
5513 return;
5514 if (list_empty(head))
5515 return;
5516 if (pt_prev->list_func != NULL)
5517 INDIRECT_CALL_INET(pt_prev->list_func, ipv6_list_rcv,
5518 ip_list_rcv, head, pt_prev, orig_dev);
5519 else
5520 list_for_each_entry_safe(skb, next, head, list) {
5521 skb_list_del_init(skb);
5522 pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
5523 }
5524}
5525
5526static void __netif_receive_skb_list_core(struct list_head *head, bool pfmemalloc)
5527{
5528 /* Fast-path assumptions:
5529 * - There is no RX handler.
5530 * - Only one packet_type matches.
5531 * If either of these fails, we will end up doing some per-packet
5532 * processing in-line, then handling the 'last ptype' for the whole
5533 * sublist. This can't cause out-of-order delivery to any single ptype,
5534 * because the 'last ptype' must be constant across the sublist, and all
5535 * other ptypes are handled per-packet.
5536 */
5537 /* Current (common) ptype of sublist */
5538 struct packet_type *pt_curr = NULL;
5539 /* Current (common) orig_dev of sublist */
5540 struct net_device *od_curr = NULL;
5541 struct list_head sublist;
5542 struct sk_buff *skb, *next;
5543
5544 INIT_LIST_HEAD(&sublist);
5545 list_for_each_entry_safe(skb, next, head, list) {
5546 struct net_device *orig_dev = skb->dev;
5547 struct packet_type *pt_prev = NULL;
5548
5549 skb_list_del_init(skb);
5550 __netif_receive_skb_core(&skb, pfmemalloc, &pt_prev);
5551 if (!pt_prev)
5552 continue;
5553 if (pt_curr != pt_prev || od_curr != orig_dev) {
5554 /* dispatch old sublist */
5555 __netif_receive_skb_list_ptype(&sublist, pt_curr, od_curr);
5556 /* start new sublist */
5557 INIT_LIST_HEAD(&sublist);
5558 pt_curr = pt_prev;
5559 od_curr = orig_dev;
5560 }
5561 list_add_tail(&skb->list, &sublist);
5562 }
5563
5564 /* dispatch final sublist */
5565 __netif_receive_skb_list_ptype(&sublist, pt_curr, od_curr);
5566}
5567
5568static int __netif_receive_skb(struct sk_buff *skb)
5569{
5570 int ret;
5571
5572 if (sk_memalloc_socks() && skb_pfmemalloc(skb)) {
5573 unsigned int noreclaim_flag;
5574
5575 /*
5576 * PFMEMALLOC skbs are special, they should
5577 * - be delivered to SOCK_MEMALLOC sockets only
5578 * - stay away from userspace
5579 * - have bounded memory usage
5580 *
5581 * Use PF_MEMALLOC as this saves us from propagating the allocation
5582 * context down to all allocation sites.
5583 */
5584 noreclaim_flag = memalloc_noreclaim_save();
5585 ret = __netif_receive_skb_one_core(skb, true);
5586 memalloc_noreclaim_restore(noreclaim_flag);
5587 } else
5588 ret = __netif_receive_skb_one_core(skb, false);
5589
5590 return ret;
5591}
5592
5593static void __netif_receive_skb_list(struct list_head *head)
5594{
5595 unsigned long noreclaim_flag = 0;
5596 struct sk_buff *skb, *next;
5597 bool pfmemalloc = false; /* Is current sublist PF_MEMALLOC? */
5598
5599 list_for_each_entry_safe(skb, next, head, list) {
5600 if ((sk_memalloc_socks() && skb_pfmemalloc(skb)) != pfmemalloc) {
5601 struct list_head sublist;
5602
5603 /* Handle the previous sublist */
5604 list_cut_before(&sublist, head, &skb->list);
5605 if (!list_empty(&sublist))
5606 __netif_receive_skb_list_core(&sublist, pfmemalloc);
5607 pfmemalloc = !pfmemalloc;
5608 /* See comments in __netif_receive_skb */
5609 if (pfmemalloc)
5610 noreclaim_flag = memalloc_noreclaim_save();
5611 else
5612 memalloc_noreclaim_restore(noreclaim_flag);
5613 }
5614 }
5615 /* Handle the remaining sublist */
5616 if (!list_empty(head))
5617 __netif_receive_skb_list_core(head, pfmemalloc);
5618 /* Restore pflags */
5619 if (pfmemalloc)
5620 memalloc_noreclaim_restore(noreclaim_flag);
5621}
5622
5623static int generic_xdp_install(struct net_device *dev, struct netdev_bpf *xdp)
5624{
5625 struct bpf_prog *old = rtnl_dereference(dev->xdp_prog);
5626 struct bpf_prog *new = xdp->prog;
5627 int ret = 0;
5628
5629 switch (xdp->command) {
5630 case XDP_SETUP_PROG:
5631 rcu_assign_pointer(dev->xdp_prog, new);
5632 if (old)
5633 bpf_prog_put(old);
5634
5635 if (old && !new) {
5636 static_branch_dec(&generic_xdp_needed_key);
5637 } else if (new && !old) {
5638 static_branch_inc(&generic_xdp_needed_key);
5639 dev_disable_lro(dev);
5640 dev_disable_gro_hw(dev);
5641 }
5642 break;
5643
5644 default:
5645 ret = -EINVAL;
5646 break;
5647 }
5648
5649 return ret;
5650}
5651
5652static int netif_receive_skb_internal(struct sk_buff *skb)
5653{
5654 int ret;
5655
5656 net_timestamp_check(READ_ONCE(netdev_tstamp_prequeue), skb);
5657
5658 if (skb_defer_rx_timestamp(skb))
5659 return NET_RX_SUCCESS;
5660
5661 rcu_read_lock();
5662#ifdef CONFIG_RPS
5663 if (static_branch_unlikely(&rps_needed)) {
5664 struct rps_dev_flow voidflow, *rflow = &voidflow;
5665 int cpu = get_rps_cpu(skb->dev, skb, &rflow);
5666
5667 if (cpu >= 0) {
5668 ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
5669 rcu_read_unlock();
5670 return ret;
5671 }
5672 }
5673#endif
5674 ret = __netif_receive_skb(skb);
5675 rcu_read_unlock();
5676 return ret;
5677}
5678
5679void netif_receive_skb_list_internal(struct list_head *head)
5680{
5681 struct sk_buff *skb, *next;
5682 struct list_head sublist;
5683
5684 INIT_LIST_HEAD(&sublist);
5685 list_for_each_entry_safe(skb, next, head, list) {
5686 net_timestamp_check(READ_ONCE(netdev_tstamp_prequeue), skb);
5687 skb_list_del_init(skb);
5688 if (!skb_defer_rx_timestamp(skb))
5689 list_add_tail(&skb->list, &sublist);
5690 }
5691 list_splice_init(&sublist, head);
5692
5693 rcu_read_lock();
5694#ifdef CONFIG_RPS
5695 if (static_branch_unlikely(&rps_needed)) {
5696 list_for_each_entry_safe(skb, next, head, list) {
5697 struct rps_dev_flow voidflow, *rflow = &voidflow;
5698 int cpu = get_rps_cpu(skb->dev, skb, &rflow);
5699
5700 if (cpu >= 0) {
5701 /* Will be handled, remove from list */
5702 skb_list_del_init(skb);
5703 enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
5704 }
5705 }
5706 }
5707#endif
5708 __netif_receive_skb_list(head);
5709 rcu_read_unlock();
5710}
5711
5712/**
5713 * netif_receive_skb - process receive buffer from network
5714 * @skb: buffer to process
5715 *
5716 * netif_receive_skb() is the main receive data processing function.
5717 * It always succeeds. The buffer may be dropped during processing
5718 * for congestion control or by the protocol layers.
5719 *
5720 * This function may only be called from softirq context and interrupts
5721 * should be enabled.
5722 *
5723 * Return values (usually ignored):
5724 * NET_RX_SUCCESS: no congestion
5725 * NET_RX_DROP: packet was dropped
5726 */
5727int netif_receive_skb(struct sk_buff *skb)
5728{
5729 int ret;
5730
5731 trace_netif_receive_skb_entry(skb);
5732
5733 ret = netif_receive_skb_internal(skb);
5734 trace_netif_receive_skb_exit(ret);
5735
5736 return ret;
5737}
5738EXPORT_SYMBOL(netif_receive_skb);
5739
5740/**
5741 * netif_receive_skb_list - process many receive buffers from network
5742 * @head: list of skbs to process.
5743 *
5744 * Since return value of netif_receive_skb() is normally ignored, and
5745 * wouldn't be meaningful for a list, this function returns void.
5746 *
5747 * This function may only be called from softirq context and interrupts
5748 * should be enabled.
5749 */
5750void netif_receive_skb_list(struct list_head *head)
5751{
5752 struct sk_buff *skb;
5753
5754 if (list_empty(head))
5755 return;
5756 if (trace_netif_receive_skb_list_entry_enabled()) {
5757 list_for_each_entry(skb, head, list)
5758 trace_netif_receive_skb_list_entry(skb);
5759 }
5760 netif_receive_skb_list_internal(head);
5761 trace_netif_receive_skb_list_exit(0);
5762}
5763EXPORT_SYMBOL(netif_receive_skb_list);
5764
5765static DEFINE_PER_CPU(struct work_struct, flush_works);
5766
5767/* Network device is going away, flush any packets still pending */
5768static void flush_backlog(struct work_struct *work)
5769{
5770 struct sk_buff *skb, *tmp;
5771 struct softnet_data *sd;
5772
5773 local_bh_disable();
5774 sd = this_cpu_ptr(&softnet_data);
5775
5776 rps_lock_irq_disable(sd);
5777 skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
5778 if (skb->dev->reg_state == NETREG_UNREGISTERING) {
5779 __skb_unlink(skb, &sd->input_pkt_queue);
5780 dev_kfree_skb_irq(skb);
5781 input_queue_head_incr(sd);
5782 }
5783 }
5784 rps_unlock_irq_enable(sd);
5785
5786 skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
5787 if (skb->dev->reg_state == NETREG_UNREGISTERING) {
5788 __skb_unlink(skb, &sd->process_queue);
5789 kfree_skb(skb);
5790 input_queue_head_incr(sd);
5791 }
5792 }
5793 local_bh_enable();
5794}
5795
5796static bool flush_required(int cpu)
5797{
5798#if IS_ENABLED(CONFIG_RPS)
5799 struct softnet_data *sd = &per_cpu(softnet_data, cpu);
5800 bool do_flush;
5801
5802 rps_lock_irq_disable(sd);
5803
5804 /* as insertion into process_queue happens with the rps lock held,
5805 * process_queue access may race only with dequeue
5806 */
5807 do_flush = !skb_queue_empty(&sd->input_pkt_queue) ||
5808 !skb_queue_empty_lockless(&sd->process_queue);
5809 rps_unlock_irq_enable(sd);
5810
5811 return do_flush;
5812#endif
5813 /* without RPS we can't safely check input_pkt_queue: during a
5814 * concurrent remote skb_queue_splice() we can detect as empty both
5815 * input_pkt_queue and process_queue even if the latter could end-up
5816 * containing a lot of packets.
5817 */
5818 return true;
5819}
5820
5821static void flush_all_backlogs(void)
5822{
5823 static cpumask_t flush_cpus;
5824 unsigned int cpu;
5825
5826 /* since we are under rtnl lock protection we can use static data
5827 * for the cpumask and avoid allocating on stack the possibly
5828 * large mask
5829 */
5830 ASSERT_RTNL();
5831
5832 cpus_read_lock();
5833
5834 cpumask_clear(&flush_cpus);
5835 for_each_online_cpu(cpu) {
5836 if (flush_required(cpu)) {
5837 queue_work_on(cpu, system_highpri_wq,
5838 per_cpu_ptr(&flush_works, cpu));
5839 cpumask_set_cpu(cpu, &flush_cpus);
5840 }
5841 }
5842
5843 /* we can have in flight packet[s] on the cpus we are not flushing,
5844 * synchronize_net() in unregister_netdevice_many() will take care of
5845 * them
5846 */
5847 for_each_cpu(cpu, &flush_cpus)
5848 flush_work(per_cpu_ptr(&flush_works, cpu));
5849
5850 cpus_read_unlock();
5851}
5852
5853static void net_rps_send_ipi(struct softnet_data *remsd)
5854{
5855#ifdef CONFIG_RPS
5856 while (remsd) {
5857 struct softnet_data *next = remsd->rps_ipi_next;
5858
5859 if (cpu_online(remsd->cpu))
5860 smp_call_function_single_async(remsd->cpu, &remsd->csd);
5861 remsd = next;
5862 }
5863#endif
5864}
5865
5866/*
5867 * net_rps_action_and_irq_enable sends any pending IPI's for rps.
5868 * Note: called with local irq disabled, but exits with local irq enabled.
5869 */
5870static void net_rps_action_and_irq_enable(struct softnet_data *sd)
5871{
5872#ifdef CONFIG_RPS
5873 struct softnet_data *remsd = sd->rps_ipi_list;
5874
5875 if (remsd) {
5876 sd->rps_ipi_list = NULL;
5877
5878 local_irq_enable();
5879
5880 /* Send pending IPI's to kick RPS processing on remote cpus. */
5881 net_rps_send_ipi(remsd);
5882 } else
5883#endif
5884 local_irq_enable();
5885}
5886
5887static bool sd_has_rps_ipi_waiting(struct softnet_data *sd)
5888{
5889#ifdef CONFIG_RPS
5890 return sd->rps_ipi_list != NULL;
5891#else
5892 return false;
5893#endif
5894}
5895
5896static int process_backlog(struct napi_struct *napi, int quota)
5897{
5898 struct softnet_data *sd = container_of(napi, struct softnet_data, backlog);
5899 bool again = true;
5900 int work = 0;
5901
5902 /* Check if we have pending ipi, its better to send them now,
5903 * not waiting net_rx_action() end.
5904 */
5905 if (sd_has_rps_ipi_waiting(sd)) {
5906 local_irq_disable();
5907 net_rps_action_and_irq_enable(sd);
5908 }
5909
5910 napi->weight = READ_ONCE(dev_rx_weight);
5911 while (again) {
5912 struct sk_buff *skb;
5913
5914 while ((skb = __skb_dequeue(&sd->process_queue))) {
5915 rcu_read_lock();
5916 __netif_receive_skb(skb);
5917 rcu_read_unlock();
5918 input_queue_head_incr(sd);
5919 if (++work >= quota)
5920 return work;
5921
5922 }
5923
5924 rps_lock_irq_disable(sd);
5925 if (skb_queue_empty(&sd->input_pkt_queue)) {
5926 /*
5927 * Inline a custom version of __napi_complete().
5928 * only current cpu owns and manipulates this napi,
5929 * and NAPI_STATE_SCHED is the only possible flag set
5930 * on backlog.
5931 * We can use a plain write instead of clear_bit(),
5932 * and we dont need an smp_mb() memory barrier.
5933 */
5934 napi->state = 0;
5935 again = false;
5936 } else {
5937 skb_queue_splice_tail_init(&sd->input_pkt_queue,
5938 &sd->process_queue);
5939 }
5940 rps_unlock_irq_enable(sd);
5941 }
5942
5943 return work;
5944}
5945
5946/**
5947 * __napi_schedule - schedule for receive
5948 * @n: entry to schedule
5949 *
5950 * The entry's receive function will be scheduled to run.
5951 * Consider using __napi_schedule_irqoff() if hard irqs are masked.
5952 */
5953void __napi_schedule(struct napi_struct *n)
5954{
5955 unsigned long flags;
5956
5957 local_irq_save(flags);
5958 ____napi_schedule(this_cpu_ptr(&softnet_data), n);
5959 local_irq_restore(flags);
5960}
5961EXPORT_SYMBOL(__napi_schedule);
5962
5963/**
5964 * napi_schedule_prep - check if napi can be scheduled
5965 * @n: napi context
5966 *
5967 * Test if NAPI routine is already running, and if not mark
5968 * it as running. This is used as a condition variable to
5969 * insure only one NAPI poll instance runs. We also make
5970 * sure there is no pending NAPI disable.
5971 */
5972bool napi_schedule_prep(struct napi_struct *n)
5973{
5974 unsigned long new, val = READ_ONCE(n->state);
5975
5976 do {
5977 if (unlikely(val & NAPIF_STATE_DISABLE))
5978 return false;
5979 new = val | NAPIF_STATE_SCHED;
5980
5981 /* Sets STATE_MISSED bit if STATE_SCHED was already set
5982 * This was suggested by Alexander Duyck, as compiler
5983 * emits better code than :
5984 * if (val & NAPIF_STATE_SCHED)
5985 * new |= NAPIF_STATE_MISSED;
5986 */
5987 new |= (val & NAPIF_STATE_SCHED) / NAPIF_STATE_SCHED *
5988 NAPIF_STATE_MISSED;
5989 } while (!try_cmpxchg(&n->state, &val, new));
5990
5991 return !(val & NAPIF_STATE_SCHED);
5992}
5993EXPORT_SYMBOL(napi_schedule_prep);
5994
5995/**
5996 * __napi_schedule_irqoff - schedule for receive
5997 * @n: entry to schedule
5998 *
5999 * Variant of __napi_schedule() assuming hard irqs are masked.
6000 *
6001 * On PREEMPT_RT enabled kernels this maps to __napi_schedule()
6002 * because the interrupt disabled assumption might not be true
6003 * due to force-threaded interrupts and spinlock substitution.
6004 */
6005void __napi_schedule_irqoff(struct napi_struct *n)
6006{
6007 if (!IS_ENABLED(CONFIG_PREEMPT_RT))
6008 ____napi_schedule(this_cpu_ptr(&softnet_data), n);
6009 else
6010 __napi_schedule(n);
6011}
6012EXPORT_SYMBOL(__napi_schedule_irqoff);
6013
6014bool napi_complete_done(struct napi_struct *n, int work_done)
6015{
6016 unsigned long flags, val, new, timeout = 0;
6017 bool ret = true;
6018
6019 /*
6020 * 1) Don't let napi dequeue from the cpu poll list
6021 * just in case its running on a different cpu.
6022 * 2) If we are busy polling, do nothing here, we have
6023 * the guarantee we will be called later.
6024 */
6025 if (unlikely(n->state & (NAPIF_STATE_NPSVC |
6026 NAPIF_STATE_IN_BUSY_POLL)))
6027 return false;
6028
6029 if (work_done) {
6030 if (n->gro_bitmask)
6031 timeout = READ_ONCE(n->dev->gro_flush_timeout);
6032 n->defer_hard_irqs_count = READ_ONCE(n->dev->napi_defer_hard_irqs);
6033 }
6034 if (n->defer_hard_irqs_count > 0) {
6035 n->defer_hard_irqs_count--;
6036 timeout = READ_ONCE(n->dev->gro_flush_timeout);
6037 if (timeout)
6038 ret = false;
6039 }
6040 if (n->gro_bitmask) {
6041 /* When the NAPI instance uses a timeout and keeps postponing
6042 * it, we need to bound somehow the time packets are kept in
6043 * the GRO layer
6044 */
6045 napi_gro_flush(n, !!timeout);
6046 }
6047
6048 gro_normal_list(n);
6049
6050 if (unlikely(!list_empty(&n->poll_list))) {
6051 /* If n->poll_list is not empty, we need to mask irqs */
6052 local_irq_save(flags);
6053 list_del_init(&n->poll_list);
6054 local_irq_restore(flags);
6055 }
6056
6057 val = READ_ONCE(n->state);
6058 do {
6059 WARN_ON_ONCE(!(val & NAPIF_STATE_SCHED));
6060
6061 new = val & ~(NAPIF_STATE_MISSED | NAPIF_STATE_SCHED |
6062 NAPIF_STATE_SCHED_THREADED |
6063 NAPIF_STATE_PREFER_BUSY_POLL);
6064
6065 /* If STATE_MISSED was set, leave STATE_SCHED set,
6066 * because we will call napi->poll() one more time.
6067 * This C code was suggested by Alexander Duyck to help gcc.
6068 */
6069 new |= (val & NAPIF_STATE_MISSED) / NAPIF_STATE_MISSED *
6070 NAPIF_STATE_SCHED;
6071 } while (!try_cmpxchg(&n->state, &val, new));
6072
6073 if (unlikely(val & NAPIF_STATE_MISSED)) {
6074 __napi_schedule(n);
6075 return false;
6076 }
6077
6078 if (timeout)
6079 hrtimer_start(&n->timer, ns_to_ktime(timeout),
6080 HRTIMER_MODE_REL_PINNED);
6081 return ret;
6082}
6083EXPORT_SYMBOL(napi_complete_done);
6084
6085/* must be called under rcu_read_lock(), as we dont take a reference */
6086static struct napi_struct *napi_by_id(unsigned int napi_id)
6087{
6088 unsigned int hash = napi_id % HASH_SIZE(napi_hash);
6089 struct napi_struct *napi;
6090
6091 hlist_for_each_entry_rcu(napi, &napi_hash[hash], napi_hash_node)
6092 if (napi->napi_id == napi_id)
6093 return napi;
6094
6095 return NULL;
6096}
6097
6098#if defined(CONFIG_NET_RX_BUSY_POLL)
6099
6100static void __busy_poll_stop(struct napi_struct *napi, bool skip_schedule)
6101{
6102 if (!skip_schedule) {
6103 gro_normal_list(napi);
6104 __napi_schedule(napi);
6105 return;
6106 }
6107
6108 if (napi->gro_bitmask) {
6109 /* flush too old packets
6110 * If HZ < 1000, flush all packets.
6111 */
6112 napi_gro_flush(napi, HZ >= 1000);
6113 }
6114
6115 gro_normal_list(napi);
6116 clear_bit(NAPI_STATE_SCHED, &napi->state);
6117}
6118
6119static void busy_poll_stop(struct napi_struct *napi, void *have_poll_lock, bool prefer_busy_poll,
6120 u16 budget)
6121{
6122 bool skip_schedule = false;
6123 unsigned long timeout;
6124 int rc;
6125
6126 /* Busy polling means there is a high chance device driver hard irq
6127 * could not grab NAPI_STATE_SCHED, and that NAPI_STATE_MISSED was
6128 * set in napi_schedule_prep().
6129 * Since we are about to call napi->poll() once more, we can safely
6130 * clear NAPI_STATE_MISSED.
6131 *
6132 * Note: x86 could use a single "lock and ..." instruction
6133 * to perform these two clear_bit()
6134 */
6135 clear_bit(NAPI_STATE_MISSED, &napi->state);
6136 clear_bit(NAPI_STATE_IN_BUSY_POLL, &napi->state);
6137
6138 local_bh_disable();
6139
6140 if (prefer_busy_poll) {
6141 napi->defer_hard_irqs_count = READ_ONCE(napi->dev->napi_defer_hard_irqs);
6142 timeout = READ_ONCE(napi->dev->gro_flush_timeout);
6143 if (napi->defer_hard_irqs_count && timeout) {
6144 hrtimer_start(&napi->timer, ns_to_ktime(timeout), HRTIMER_MODE_REL_PINNED);
6145 skip_schedule = true;
6146 }
6147 }
6148
6149 /* All we really want here is to re-enable device interrupts.
6150 * Ideally, a new ndo_busy_poll_stop() could avoid another round.
6151 */
6152 rc = napi->poll(napi, budget);
6153 /* We can't gro_normal_list() here, because napi->poll() might have
6154 * rearmed the napi (napi_complete_done()) in which case it could
6155 * already be running on another CPU.
6156 */
6157 trace_napi_poll(napi, rc, budget);
6158 netpoll_poll_unlock(have_poll_lock);
6159 if (rc == budget)
6160 __busy_poll_stop(napi, skip_schedule);
6161 local_bh_enable();
6162}
6163
6164void napi_busy_loop(unsigned int napi_id,
6165 bool (*loop_end)(void *, unsigned long),
6166 void *loop_end_arg, bool prefer_busy_poll, u16 budget)
6167{
6168 unsigned long start_time = loop_end ? busy_loop_current_time() : 0;
6169 int (*napi_poll)(struct napi_struct *napi, int budget);
6170 void *have_poll_lock = NULL;
6171 struct napi_struct *napi;
6172
6173restart:
6174 napi_poll = NULL;
6175
6176 rcu_read_lock();
6177
6178 napi = napi_by_id(napi_id);
6179 if (!napi)
6180 goto out;
6181
6182 preempt_disable();
6183 for (;;) {
6184 int work = 0;
6185
6186 local_bh_disable();
6187 if (!napi_poll) {
6188 unsigned long val = READ_ONCE(napi->state);
6189
6190 /* If multiple threads are competing for this napi,
6191 * we avoid dirtying napi->state as much as we can.
6192 */
6193 if (val & (NAPIF_STATE_DISABLE | NAPIF_STATE_SCHED |
6194 NAPIF_STATE_IN_BUSY_POLL)) {
6195 if (prefer_busy_poll)
6196 set_bit(NAPI_STATE_PREFER_BUSY_POLL, &napi->state);
6197 goto count;
6198 }
6199 if (cmpxchg(&napi->state, val,
6200 val | NAPIF_STATE_IN_BUSY_POLL |
6201 NAPIF_STATE_SCHED) != val) {
6202 if (prefer_busy_poll)
6203 set_bit(NAPI_STATE_PREFER_BUSY_POLL, &napi->state);
6204 goto count;
6205 }
6206 have_poll_lock = netpoll_poll_lock(napi);
6207 napi_poll = napi->poll;
6208 }
6209 work = napi_poll(napi, budget);
6210 trace_napi_poll(napi, work, budget);
6211 gro_normal_list(napi);
6212count:
6213 if (work > 0)
6214 __NET_ADD_STATS(dev_net(napi->dev),
6215 LINUX_MIB_BUSYPOLLRXPACKETS, work);
6216 local_bh_enable();
6217
6218 if (!loop_end || loop_end(loop_end_arg, start_time))
6219 break;
6220
6221 if (unlikely(need_resched())) {
6222 if (napi_poll)
6223 busy_poll_stop(napi, have_poll_lock, prefer_busy_poll, budget);
6224 preempt_enable();
6225 rcu_read_unlock();
6226 cond_resched();
6227 if (loop_end(loop_end_arg, start_time))
6228 return;
6229 goto restart;
6230 }
6231 cpu_relax();
6232 }
6233 if (napi_poll)
6234 busy_poll_stop(napi, have_poll_lock, prefer_busy_poll, budget);
6235 preempt_enable();
6236out:
6237 rcu_read_unlock();
6238}
6239EXPORT_SYMBOL(napi_busy_loop);
6240
6241#endif /* CONFIG_NET_RX_BUSY_POLL */
6242
6243static void napi_hash_add(struct napi_struct *napi)
6244{
6245 if (test_bit(NAPI_STATE_NO_BUSY_POLL, &napi->state))
6246 return;
6247
6248 spin_lock(&napi_hash_lock);
6249
6250 /* 0..NR_CPUS range is reserved for sender_cpu use */
6251 do {
6252 if (unlikely(++napi_gen_id < MIN_NAPI_ID))
6253 napi_gen_id = MIN_NAPI_ID;
6254 } while (napi_by_id(napi_gen_id));
6255 napi->napi_id = napi_gen_id;
6256
6257 hlist_add_head_rcu(&napi->napi_hash_node,
6258 &napi_hash[napi->napi_id % HASH_SIZE(napi_hash)]);
6259
6260 spin_unlock(&napi_hash_lock);
6261}
6262
6263/* Warning : caller is responsible to make sure rcu grace period
6264 * is respected before freeing memory containing @napi
6265 */
6266static void napi_hash_del(struct napi_struct *napi)
6267{
6268 spin_lock(&napi_hash_lock);
6269
6270 hlist_del_init_rcu(&napi->napi_hash_node);
6271
6272 spin_unlock(&napi_hash_lock);
6273}
6274
6275static enum hrtimer_restart napi_watchdog(struct hrtimer *timer)
6276{
6277 struct napi_struct *napi;
6278
6279 napi = container_of(timer, struct napi_struct, timer);
6280
6281 /* Note : we use a relaxed variant of napi_schedule_prep() not setting
6282 * NAPI_STATE_MISSED, since we do not react to a device IRQ.
6283 */
6284 if (!napi_disable_pending(napi) &&
6285 !test_and_set_bit(NAPI_STATE_SCHED, &napi->state)) {
6286 clear_bit(NAPI_STATE_PREFER_BUSY_POLL, &napi->state);
6287 __napi_schedule_irqoff(napi);
6288 }
6289
6290 return HRTIMER_NORESTART;
6291}
6292
6293static void init_gro_hash(struct napi_struct *napi)
6294{
6295 int i;
6296
6297 for (i = 0; i < GRO_HASH_BUCKETS; i++) {
6298 INIT_LIST_HEAD(&napi->gro_hash[i].list);
6299 napi->gro_hash[i].count = 0;
6300 }
6301 napi->gro_bitmask = 0;
6302}
6303
6304int dev_set_threaded(struct net_device *dev, bool threaded)
6305{
6306 struct napi_struct *napi;
6307 int err = 0;
6308
6309 if (dev->threaded == threaded)
6310 return 0;
6311
6312 if (threaded) {
6313 list_for_each_entry(napi, &dev->napi_list, dev_list) {
6314 if (!napi->thread) {
6315 err = napi_kthread_create(napi);
6316 if (err) {
6317 threaded = false;
6318 break;
6319 }
6320 }
6321 }
6322 }
6323
6324 dev->threaded = threaded;
6325
6326 /* Make sure kthread is created before THREADED bit
6327 * is set.
6328 */
6329 smp_mb__before_atomic();
6330
6331 /* Setting/unsetting threaded mode on a napi might not immediately
6332 * take effect, if the current napi instance is actively being
6333 * polled. In this case, the switch between threaded mode and
6334 * softirq mode will happen in the next round of napi_schedule().
6335 * This should not cause hiccups/stalls to the live traffic.
6336 */
6337 list_for_each_entry(napi, &dev->napi_list, dev_list) {
6338 if (threaded)
6339 set_bit(NAPI_STATE_THREADED, &napi->state);
6340 else
6341 clear_bit(NAPI_STATE_THREADED, &napi->state);
6342 }
6343
6344 return err;
6345}
6346EXPORT_SYMBOL(dev_set_threaded);
6347
6348void netif_napi_add_weight(struct net_device *dev, struct napi_struct *napi,
6349 int (*poll)(struct napi_struct *, int), int weight)
6350{
6351 if (WARN_ON(test_and_set_bit(NAPI_STATE_LISTED, &napi->state)))
6352 return;
6353
6354 INIT_LIST_HEAD(&napi->poll_list);
6355 INIT_HLIST_NODE(&napi->napi_hash_node);
6356 hrtimer_init(&napi->timer, CLOCK_MONOTONIC, HRTIMER_MODE_REL_PINNED);
6357 napi->timer.function = napi_watchdog;
6358 init_gro_hash(napi);
6359 napi->skb = NULL;
6360 INIT_LIST_HEAD(&napi->rx_list);
6361 napi->rx_count = 0;
6362 napi->poll = poll;
6363 if (weight > NAPI_POLL_WEIGHT)
6364 netdev_err_once(dev, "%s() called with weight %d\n", __func__,
6365 weight);
6366 napi->weight = weight;
6367 napi->dev = dev;
6368#ifdef CONFIG_NETPOLL
6369 napi->poll_owner = -1;
6370#endif
6371 set_bit(NAPI_STATE_SCHED, &napi->state);
6372 set_bit(NAPI_STATE_NPSVC, &napi->state);
6373 list_add_rcu(&napi->dev_list, &dev->napi_list);
6374 napi_hash_add(napi);
6375 napi_get_frags_check(napi);
6376 /* Create kthread for this napi if dev->threaded is set.
6377 * Clear dev->threaded if kthread creation failed so that
6378 * threaded mode will not be enabled in napi_enable().
6379 */
6380 if (dev->threaded && napi_kthread_create(napi))
6381 dev->threaded = 0;
6382}
6383EXPORT_SYMBOL(netif_napi_add_weight);
6384
6385void napi_disable(struct napi_struct *n)
6386{
6387 unsigned long val, new;
6388
6389 might_sleep();
6390 set_bit(NAPI_STATE_DISABLE, &n->state);
6391
6392 val = READ_ONCE(n->state);
6393 do {
6394 while (val & (NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC)) {
6395 usleep_range(20, 200);
6396 val = READ_ONCE(n->state);
6397 }
6398
6399 new = val | NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC;
6400 new &= ~(NAPIF_STATE_THREADED | NAPIF_STATE_PREFER_BUSY_POLL);
6401 } while (!try_cmpxchg(&n->state, &val, new));
6402
6403 hrtimer_cancel(&n->timer);
6404
6405 clear_bit(NAPI_STATE_DISABLE, &n->state);
6406}
6407EXPORT_SYMBOL(napi_disable);
6408
6409/**
6410 * napi_enable - enable NAPI scheduling
6411 * @n: NAPI context
6412 *
6413 * Resume NAPI from being scheduled on this context.
6414 * Must be paired with napi_disable.
6415 */
6416void napi_enable(struct napi_struct *n)
6417{
6418 unsigned long new, val = READ_ONCE(n->state);
6419
6420 do {
6421 BUG_ON(!test_bit(NAPI_STATE_SCHED, &val));
6422
6423 new = val & ~(NAPIF_STATE_SCHED | NAPIF_STATE_NPSVC);
6424 if (n->dev->threaded && n->thread)
6425 new |= NAPIF_STATE_THREADED;
6426 } while (!try_cmpxchg(&n->state, &val, new));
6427}
6428EXPORT_SYMBOL(napi_enable);
6429
6430static void flush_gro_hash(struct napi_struct *napi)
6431{
6432 int i;
6433
6434 for (i = 0; i < GRO_HASH_BUCKETS; i++) {
6435 struct sk_buff *skb, *n;
6436
6437 list_for_each_entry_safe(skb, n, &napi->gro_hash[i].list, list)
6438 kfree_skb(skb);
6439 napi->gro_hash[i].count = 0;
6440 }
6441}
6442
6443/* Must be called in process context */
6444void __netif_napi_del(struct napi_struct *napi)
6445{
6446 if (!test_and_clear_bit(NAPI_STATE_LISTED, &napi->state))
6447 return;
6448
6449 napi_hash_del(napi);
6450 list_del_rcu(&napi->dev_list);
6451 napi_free_frags(napi);
6452
6453 flush_gro_hash(napi);
6454 napi->gro_bitmask = 0;
6455
6456 if (napi->thread) {
6457 kthread_stop(napi->thread);
6458 napi->thread = NULL;
6459 }
6460}
6461EXPORT_SYMBOL(__netif_napi_del);
6462
6463static int __napi_poll(struct napi_struct *n, bool *repoll)
6464{
6465 int work, weight;
6466
6467 weight = n->weight;
6468
6469 /* This NAPI_STATE_SCHED test is for avoiding a race
6470 * with netpoll's poll_napi(). Only the entity which
6471 * obtains the lock and sees NAPI_STATE_SCHED set will
6472 * actually make the ->poll() call. Therefore we avoid
6473 * accidentally calling ->poll() when NAPI is not scheduled.
6474 */
6475 work = 0;
6476 if (test_bit(NAPI_STATE_SCHED, &n->state)) {
6477 work = n->poll(n, weight);
6478 trace_napi_poll(n, work, weight);
6479 }
6480
6481 if (unlikely(work > weight))
6482 netdev_err_once(n->dev, "NAPI poll function %pS returned %d, exceeding its budget of %d.\n",
6483 n->poll, work, weight);
6484
6485 if (likely(work < weight))
6486 return work;
6487
6488 /* Drivers must not modify the NAPI state if they
6489 * consume the entire weight. In such cases this code
6490 * still "owns" the NAPI instance and therefore can
6491 * move the instance around on the list at-will.
6492 */
6493 if (unlikely(napi_disable_pending(n))) {
6494 napi_complete(n);
6495 return work;
6496 }
6497
6498 /* The NAPI context has more processing work, but busy-polling
6499 * is preferred. Exit early.
6500 */
6501 if (napi_prefer_busy_poll(n)) {
6502 if (napi_complete_done(n, work)) {
6503 /* If timeout is not set, we need to make sure
6504 * that the NAPI is re-scheduled.
6505 */
6506 napi_schedule(n);
6507 }
6508 return work;
6509 }
6510
6511 if (n->gro_bitmask) {
6512 /* flush too old packets
6513 * If HZ < 1000, flush all packets.
6514 */
6515 napi_gro_flush(n, HZ >= 1000);
6516 }
6517
6518 gro_normal_list(n);
6519
6520 /* Some drivers may have called napi_schedule
6521 * prior to exhausting their budget.
6522 */
6523 if (unlikely(!list_empty(&n->poll_list))) {
6524 pr_warn_once("%s: Budget exhausted after napi rescheduled\n",
6525 n->dev ? n->dev->name : "backlog");
6526 return work;
6527 }
6528
6529 *repoll = true;
6530
6531 return work;
6532}
6533
6534static int napi_poll(struct napi_struct *n, struct list_head *repoll)
6535{
6536 bool do_repoll = false;
6537 void *have;
6538 int work;
6539
6540 list_del_init(&n->poll_list);
6541
6542 have = netpoll_poll_lock(n);
6543
6544 work = __napi_poll(n, &do_repoll);
6545
6546 if (do_repoll)
6547 list_add_tail(&n->poll_list, repoll);
6548
6549 netpoll_poll_unlock(have);
6550
6551 return work;
6552}
6553
6554static int napi_thread_wait(struct napi_struct *napi)
6555{
6556 bool woken = false;
6557
6558 set_current_state(TASK_INTERRUPTIBLE);
6559
6560 while (!kthread_should_stop()) {
6561 /* Testing SCHED_THREADED bit here to make sure the current
6562 * kthread owns this napi and could poll on this napi.
6563 * Testing SCHED bit is not enough because SCHED bit might be
6564 * set by some other busy poll thread or by napi_disable().
6565 */
6566 if (test_bit(NAPI_STATE_SCHED_THREADED, &napi->state) || woken) {
6567 WARN_ON(!list_empty(&napi->poll_list));
6568 __set_current_state(TASK_RUNNING);
6569 return 0;
6570 }
6571
6572 schedule();
6573 /* woken being true indicates this thread owns this napi. */
6574 woken = true;
6575 set_current_state(TASK_INTERRUPTIBLE);
6576 }
6577 __set_current_state(TASK_RUNNING);
6578
6579 return -1;
6580}
6581
6582static int napi_threaded_poll(void *data)
6583{
6584 struct napi_struct *napi = data;
6585 void *have;
6586
6587 while (!napi_thread_wait(napi)) {
6588 for (;;) {
6589 bool repoll = false;
6590
6591 local_bh_disable();
6592
6593 have = netpoll_poll_lock(napi);
6594 __napi_poll(napi, &repoll);
6595 netpoll_poll_unlock(have);
6596
6597 local_bh_enable();
6598
6599 if (!repoll)
6600 break;
6601
6602 cond_resched();
6603 }
6604 }
6605 return 0;
6606}
6607
6608static void skb_defer_free_flush(struct softnet_data *sd)
6609{
6610 struct sk_buff *skb, *next;
6611 unsigned long flags;
6612
6613 /* Paired with WRITE_ONCE() in skb_attempt_defer_free() */
6614 if (!READ_ONCE(sd->defer_list))
6615 return;
6616
6617 spin_lock_irqsave(&sd->defer_lock, flags);
6618 skb = sd->defer_list;
6619 sd->defer_list = NULL;
6620 sd->defer_count = 0;
6621 spin_unlock_irqrestore(&sd->defer_lock, flags);
6622
6623 while (skb != NULL) {
6624 next = skb->next;
6625 napi_consume_skb(skb, 1);
6626 skb = next;
6627 }
6628}
6629
6630static __latent_entropy void net_rx_action(struct softirq_action *h)
6631{
6632 struct softnet_data *sd = this_cpu_ptr(&softnet_data);
6633 unsigned long time_limit = jiffies +
6634 usecs_to_jiffies(READ_ONCE(netdev_budget_usecs));
6635 int budget = READ_ONCE(netdev_budget);
6636 LIST_HEAD(list);
6637 LIST_HEAD(repoll);
6638
6639 local_irq_disable();
6640 list_splice_init(&sd->poll_list, &list);
6641 local_irq_enable();
6642
6643 for (;;) {
6644 struct napi_struct *n;
6645
6646 skb_defer_free_flush(sd);
6647
6648 if (list_empty(&list)) {
6649 if (!sd_has_rps_ipi_waiting(sd) && list_empty(&repoll))
6650 goto end;
6651 break;
6652 }
6653
6654 n = list_first_entry(&list, struct napi_struct, poll_list);
6655 budget -= napi_poll(n, &repoll);
6656
6657 /* If softirq window is exhausted then punt.
6658 * Allow this to run for 2 jiffies since which will allow
6659 * an average latency of 1.5/HZ.
6660 */
6661 if (unlikely(budget <= 0 ||
6662 time_after_eq(jiffies, time_limit))) {
6663 sd->time_squeeze++;
6664 break;
6665 }
6666 }
6667
6668 local_irq_disable();
6669
6670 list_splice_tail_init(&sd->poll_list, &list);
6671 list_splice_tail(&repoll, &list);
6672 list_splice(&list, &sd->poll_list);
6673 if (!list_empty(&sd->poll_list))
6674 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
6675
6676 net_rps_action_and_irq_enable(sd);
6677end:;
6678}
6679
6680struct netdev_adjacent {
6681 struct net_device *dev;
6682 netdevice_tracker dev_tracker;
6683
6684 /* upper master flag, there can only be one master device per list */
6685 bool master;
6686
6687 /* lookup ignore flag */
6688 bool ignore;
6689
6690 /* counter for the number of times this device was added to us */
6691 u16 ref_nr;
6692
6693 /* private field for the users */
6694 void *private;
6695
6696 struct list_head list;
6697 struct rcu_head rcu;
6698};
6699
6700static struct netdev_adjacent *__netdev_find_adj(struct net_device *adj_dev,
6701 struct list_head *adj_list)
6702{
6703 struct netdev_adjacent *adj;
6704
6705 list_for_each_entry(adj, adj_list, list) {
6706 if (adj->dev == adj_dev)
6707 return adj;
6708 }
6709 return NULL;
6710}
6711
6712static int ____netdev_has_upper_dev(struct net_device *upper_dev,
6713 struct netdev_nested_priv *priv)
6714{
6715 struct net_device *dev = (struct net_device *)priv->data;
6716
6717 return upper_dev == dev;
6718}
6719
6720/**
6721 * netdev_has_upper_dev - Check if device is linked to an upper device
6722 * @dev: device
6723 * @upper_dev: upper device to check
6724 *
6725 * Find out if a device is linked to specified upper device and return true
6726 * in case it is. Note that this checks only immediate upper device,
6727 * not through a complete stack of devices. The caller must hold the RTNL lock.
6728 */
6729bool netdev_has_upper_dev(struct net_device *dev,
6730 struct net_device *upper_dev)
6731{
6732 struct netdev_nested_priv priv = {
6733 .data = (void *)upper_dev,
6734 };
6735
6736 ASSERT_RTNL();
6737
6738 return netdev_walk_all_upper_dev_rcu(dev, ____netdev_has_upper_dev,
6739 &priv);
6740}
6741EXPORT_SYMBOL(netdev_has_upper_dev);
6742
6743/**
6744 * netdev_has_upper_dev_all_rcu - Check if device is linked to an upper device
6745 * @dev: device
6746 * @upper_dev: upper device to check
6747 *
6748 * Find out if a device is linked to specified upper device and return true
6749 * in case it is. Note that this checks the entire upper device chain.
6750 * The caller must hold rcu lock.
6751 */
6752
6753bool netdev_has_upper_dev_all_rcu(struct net_device *dev,
6754 struct net_device *upper_dev)
6755{
6756 struct netdev_nested_priv priv = {
6757 .data = (void *)upper_dev,
6758 };
6759
6760 return !!netdev_walk_all_upper_dev_rcu(dev, ____netdev_has_upper_dev,
6761 &priv);
6762}
6763EXPORT_SYMBOL(netdev_has_upper_dev_all_rcu);
6764
6765/**
6766 * netdev_has_any_upper_dev - Check if device is linked to some device
6767 * @dev: device
6768 *
6769 * Find out if a device is linked to an upper device and return true in case
6770 * it is. The caller must hold the RTNL lock.
6771 */
6772bool netdev_has_any_upper_dev(struct net_device *dev)
6773{
6774 ASSERT_RTNL();
6775
6776 return !list_empty(&dev->adj_list.upper);
6777}
6778EXPORT_SYMBOL(netdev_has_any_upper_dev);
6779
6780/**
6781 * netdev_master_upper_dev_get - Get master upper device
6782 * @dev: device
6783 *
6784 * Find a master upper device and return pointer to it or NULL in case
6785 * it's not there. The caller must hold the RTNL lock.
6786 */
6787struct net_device *netdev_master_upper_dev_get(struct net_device *dev)
6788{
6789 struct netdev_adjacent *upper;
6790
6791 ASSERT_RTNL();
6792
6793 if (list_empty(&dev->adj_list.upper))
6794 return NULL;
6795
6796 upper = list_first_entry(&dev->adj_list.upper,
6797 struct netdev_adjacent, list);
6798 if (likely(upper->master))
6799 return upper->dev;
6800 return NULL;
6801}
6802EXPORT_SYMBOL(netdev_master_upper_dev_get);
6803
6804static struct net_device *__netdev_master_upper_dev_get(struct net_device *dev)
6805{
6806 struct netdev_adjacent *upper;
6807
6808 ASSERT_RTNL();
6809
6810 if (list_empty(&dev->adj_list.upper))
6811 return NULL;
6812
6813 upper = list_first_entry(&dev->adj_list.upper,
6814 struct netdev_adjacent, list);
6815 if (likely(upper->master) && !upper->ignore)
6816 return upper->dev;
6817 return NULL;
6818}
6819
6820/**
6821 * netdev_has_any_lower_dev - Check if device is linked to some device
6822 * @dev: device
6823 *
6824 * Find out if a device is linked to a lower device and return true in case
6825 * it is. The caller must hold the RTNL lock.
6826 */
6827static bool netdev_has_any_lower_dev(struct net_device *dev)
6828{
6829 ASSERT_RTNL();
6830
6831 return !list_empty(&dev->adj_list.lower);
6832}
6833
6834void *netdev_adjacent_get_private(struct list_head *adj_list)
6835{
6836 struct netdev_adjacent *adj;
6837
6838 adj = list_entry(adj_list, struct netdev_adjacent, list);
6839
6840 return adj->private;
6841}
6842EXPORT_SYMBOL(netdev_adjacent_get_private);
6843
6844/**
6845 * netdev_upper_get_next_dev_rcu - Get the next dev from upper list
6846 * @dev: device
6847 * @iter: list_head ** of the current position
6848 *
6849 * Gets the next device from the dev's upper list, starting from iter
6850 * position. The caller must hold RCU read lock.
6851 */
6852struct net_device *netdev_upper_get_next_dev_rcu(struct net_device *dev,
6853 struct list_head **iter)
6854{
6855 struct netdev_adjacent *upper;
6856
6857 WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_rtnl_is_held());
6858
6859 upper = list_entry_rcu((*iter)->next, struct netdev_adjacent, list);
6860
6861 if (&upper->list == &dev->adj_list.upper)
6862 return NULL;
6863
6864 *iter = &upper->list;
6865
6866 return upper->dev;
6867}
6868EXPORT_SYMBOL(netdev_upper_get_next_dev_rcu);
6869
6870static struct net_device *__netdev_next_upper_dev(struct net_device *dev,
6871 struct list_head **iter,
6872 bool *ignore)
6873{
6874 struct netdev_adjacent *upper;
6875
6876 upper = list_entry((*iter)->next, struct netdev_adjacent, list);
6877
6878 if (&upper->list == &dev->adj_list.upper)
6879 return NULL;
6880
6881 *iter = &upper->list;
6882 *ignore = upper->ignore;
6883
6884 return upper->dev;
6885}
6886
6887static struct net_device *netdev_next_upper_dev_rcu(struct net_device *dev,
6888 struct list_head **iter)
6889{
6890 struct netdev_adjacent *upper;
6891
6892 WARN_ON_ONCE(!rcu_read_lock_held() && !lockdep_rtnl_is_held());
6893
6894 upper = list_entry_rcu((*iter)->next, struct netdev_adjacent, list);
6895
6896 if (&upper->list == &dev->adj_list.upper)
6897 return NULL;
6898
6899 *iter = &upper->list;
6900
6901 return upper->dev;
6902}
6903
6904static int __netdev_walk_all_upper_dev(struct net_device *dev,
6905 int (*fn)(struct net_device *dev,
6906 struct netdev_nested_priv *priv),
6907 struct netdev_nested_priv *priv)
6908{
6909 struct net_device *udev, *next, *now, *dev_stack[MAX_NEST_DEV + 1];
6910 struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1];
6911 int ret, cur = 0;
6912 bool ignore;
6913
6914 now = dev;
6915 iter = &dev->adj_list.upper;
6916
6917 while (1) {
6918 if (now != dev) {
6919 ret = fn(now, priv);
6920 if (ret)
6921 return ret;
6922 }
6923
6924 next = NULL;
6925 while (1) {
6926 udev = __netdev_next_upper_dev(now, &iter, &ignore);
6927 if (!udev)
6928 break;
6929 if (ignore)
6930 continue;
6931
6932 next = udev;
6933 niter = &udev->adj_list.upper;
6934 dev_stack[cur] = now;
6935 iter_stack[cur++] = iter;
6936 break;
6937 }
6938
6939 if (!next) {
6940 if (!cur)
6941 return 0;
6942 next = dev_stack[--cur];
6943 niter = iter_stack[cur];
6944 }
6945
6946 now = next;
6947 iter = niter;
6948 }
6949
6950 return 0;
6951}
6952
6953int netdev_walk_all_upper_dev_rcu(struct net_device *dev,
6954 int (*fn)(struct net_device *dev,
6955 struct netdev_nested_priv *priv),
6956 struct netdev_nested_priv *priv)
6957{
6958 struct net_device *udev, *next, *now, *dev_stack[MAX_NEST_DEV + 1];
6959 struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1];
6960 int ret, cur = 0;
6961
6962 now = dev;
6963 iter = &dev->adj_list.upper;
6964
6965 while (1) {
6966 if (now != dev) {
6967 ret = fn(now, priv);
6968 if (ret)
6969 return ret;
6970 }
6971
6972 next = NULL;
6973 while (1) {
6974 udev = netdev_next_upper_dev_rcu(now, &iter);
6975 if (!udev)
6976 break;
6977
6978 next = udev;
6979 niter = &udev->adj_list.upper;
6980 dev_stack[cur] = now;
6981 iter_stack[cur++] = iter;
6982 break;
6983 }
6984
6985 if (!next) {
6986 if (!cur)
6987 return 0;
6988 next = dev_stack[--cur];
6989 niter = iter_stack[cur];
6990 }
6991
6992 now = next;
6993 iter = niter;
6994 }
6995
6996 return 0;
6997}
6998EXPORT_SYMBOL_GPL(netdev_walk_all_upper_dev_rcu);
6999
7000static bool __netdev_has_upper_dev(struct net_device *dev,
7001 struct net_device *upper_dev)
7002{
7003 struct netdev_nested_priv priv = {
7004 .flags = 0,
7005 .data = (void *)upper_dev,
7006 };
7007
7008 ASSERT_RTNL();
7009
7010 return __netdev_walk_all_upper_dev(dev, ____netdev_has_upper_dev,
7011 &priv);
7012}
7013
7014/**
7015 * netdev_lower_get_next_private - Get the next ->private from the
7016 * lower neighbour list
7017 * @dev: device
7018 * @iter: list_head ** of the current position
7019 *
7020 * Gets the next netdev_adjacent->private from the dev's lower neighbour
7021 * list, starting from iter position. The caller must hold either hold the
7022 * RTNL lock or its own locking that guarantees that the neighbour lower
7023 * list will remain unchanged.
7024 */
7025void *netdev_lower_get_next_private(struct net_device *dev,
7026 struct list_head **iter)
7027{
7028 struct netdev_adjacent *lower;
7029
7030 lower = list_entry(*iter, struct netdev_adjacent, list);
7031
7032 if (&lower->list == &dev->adj_list.lower)
7033 return NULL;
7034
7035 *iter = lower->list.next;
7036
7037 return lower->private;
7038}
7039EXPORT_SYMBOL(netdev_lower_get_next_private);
7040
7041/**
7042 * netdev_lower_get_next_private_rcu - Get the next ->private from the
7043 * lower neighbour list, RCU
7044 * variant
7045 * @dev: device
7046 * @iter: list_head ** of the current position
7047 *
7048 * Gets the next netdev_adjacent->private from the dev's lower neighbour
7049 * list, starting from iter position. The caller must hold RCU read lock.
7050 */
7051void *netdev_lower_get_next_private_rcu(struct net_device *dev,
7052 struct list_head **iter)
7053{
7054 struct netdev_adjacent *lower;
7055
7056 WARN_ON_ONCE(!rcu_read_lock_held() && !rcu_read_lock_bh_held());
7057
7058 lower = list_entry_rcu((*iter)->next, struct netdev_adjacent, list);
7059
7060 if (&lower->list == &dev->adj_list.lower)
7061 return NULL;
7062
7063 *iter = &lower->list;
7064
7065 return lower->private;
7066}
7067EXPORT_SYMBOL(netdev_lower_get_next_private_rcu);
7068
7069/**
7070 * netdev_lower_get_next - Get the next device from the lower neighbour
7071 * list
7072 * @dev: device
7073 * @iter: list_head ** of the current position
7074 *
7075 * Gets the next netdev_adjacent from the dev's lower neighbour
7076 * list, starting from iter position. The caller must hold RTNL lock or
7077 * its own locking that guarantees that the neighbour lower
7078 * list will remain unchanged.
7079 */
7080void *netdev_lower_get_next(struct net_device *dev, struct list_head **iter)
7081{
7082 struct netdev_adjacent *lower;
7083
7084 lower = list_entry(*iter, struct netdev_adjacent, list);
7085
7086 if (&lower->list == &dev->adj_list.lower)
7087 return NULL;
7088
7089 *iter = lower->list.next;
7090
7091 return lower->dev;
7092}
7093EXPORT_SYMBOL(netdev_lower_get_next);
7094
7095static struct net_device *netdev_next_lower_dev(struct net_device *dev,
7096 struct list_head **iter)
7097{
7098 struct netdev_adjacent *lower;
7099
7100 lower = list_entry((*iter)->next, struct netdev_adjacent, list);
7101
7102 if (&lower->list == &dev->adj_list.lower)
7103 return NULL;
7104
7105 *iter = &lower->list;
7106
7107 return lower->dev;
7108}
7109
7110static struct net_device *__netdev_next_lower_dev(struct net_device *dev,
7111 struct list_head **iter,
7112 bool *ignore)
7113{
7114 struct netdev_adjacent *lower;
7115
7116 lower = list_entry((*iter)->next, struct netdev_adjacent, list);
7117
7118 if (&lower->list == &dev->adj_list.lower)
7119 return NULL;
7120
7121 *iter = &lower->list;
7122 *ignore = lower->ignore;
7123
7124 return lower->dev;
7125}
7126
7127int netdev_walk_all_lower_dev(struct net_device *dev,
7128 int (*fn)(struct net_device *dev,
7129 struct netdev_nested_priv *priv),
7130 struct netdev_nested_priv *priv)
7131{
7132 struct net_device *ldev, *next, *now, *dev_stack[MAX_NEST_DEV + 1];
7133 struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1];
7134 int ret, cur = 0;
7135
7136 now = dev;
7137 iter = &dev->adj_list.lower;
7138
7139 while (1) {
7140 if (now != dev) {
7141 ret = fn(now, priv);
7142 if (ret)
7143 return ret;
7144 }
7145
7146 next = NULL;
7147 while (1) {
7148 ldev = netdev_next_lower_dev(now, &iter);
7149 if (!ldev)
7150 break;
7151
7152 next = ldev;
7153 niter = &ldev->adj_list.lower;
7154 dev_stack[cur] = now;
7155 iter_stack[cur++] = iter;
7156 break;
7157 }
7158
7159 if (!next) {
7160 if (!cur)
7161 return 0;
7162 next = dev_stack[--cur];
7163 niter = iter_stack[cur];
7164 }
7165
7166 now = next;
7167 iter = niter;
7168 }
7169
7170 return 0;
7171}
7172EXPORT_SYMBOL_GPL(netdev_walk_all_lower_dev);
7173
7174static int __netdev_walk_all_lower_dev(struct net_device *dev,
7175 int (*fn)(struct net_device *dev,
7176 struct netdev_nested_priv *priv),
7177 struct netdev_nested_priv *priv)
7178{
7179 struct net_device *ldev, *next, *now, *dev_stack[MAX_NEST_DEV + 1];
7180 struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1];
7181 int ret, cur = 0;
7182 bool ignore;
7183
7184 now = dev;
7185 iter = &dev->adj_list.lower;
7186
7187 while (1) {
7188 if (now != dev) {
7189 ret = fn(now, priv);
7190 if (ret)
7191 return ret;
7192 }
7193
7194 next = NULL;
7195 while (1) {
7196 ldev = __netdev_next_lower_dev(now, &iter, &ignore);
7197 if (!ldev)
7198 break;
7199 if (ignore)
7200 continue;
7201
7202 next = ldev;
7203 niter = &ldev->adj_list.lower;
7204 dev_stack[cur] = now;
7205 iter_stack[cur++] = iter;
7206 break;
7207 }
7208
7209 if (!next) {
7210 if (!cur)
7211 return 0;
7212 next = dev_stack[--cur];
7213 niter = iter_stack[cur];
7214 }
7215
7216 now = next;
7217 iter = niter;
7218 }
7219
7220 return 0;
7221}
7222
7223struct net_device *netdev_next_lower_dev_rcu(struct net_device *dev,
7224 struct list_head **iter)
7225{
7226 struct netdev_adjacent *lower;
7227
7228 lower = list_entry_rcu((*iter)->next, struct netdev_adjacent, list);
7229 if (&lower->list == &dev->adj_list.lower)
7230 return NULL;
7231
7232 *iter = &lower->list;
7233
7234 return lower->dev;
7235}
7236EXPORT_SYMBOL(netdev_next_lower_dev_rcu);
7237
7238static u8 __netdev_upper_depth(struct net_device *dev)
7239{
7240 struct net_device *udev;
7241 struct list_head *iter;
7242 u8 max_depth = 0;
7243 bool ignore;
7244
7245 for (iter = &dev->adj_list.upper,
7246 udev = __netdev_next_upper_dev(dev, &iter, &ignore);
7247 udev;
7248 udev = __netdev_next_upper_dev(dev, &iter, &ignore)) {
7249 if (ignore)
7250 continue;
7251 if (max_depth < udev->upper_level)
7252 max_depth = udev->upper_level;
7253 }
7254
7255 return max_depth;
7256}
7257
7258static u8 __netdev_lower_depth(struct net_device *dev)
7259{
7260 struct net_device *ldev;
7261 struct list_head *iter;
7262 u8 max_depth = 0;
7263 bool ignore;
7264
7265 for (iter = &dev->adj_list.lower,
7266 ldev = __netdev_next_lower_dev(dev, &iter, &ignore);
7267 ldev;
7268 ldev = __netdev_next_lower_dev(dev, &iter, &ignore)) {
7269 if (ignore)
7270 continue;
7271 if (max_depth < ldev->lower_level)
7272 max_depth = ldev->lower_level;
7273 }
7274
7275 return max_depth;
7276}
7277
7278static int __netdev_update_upper_level(struct net_device *dev,
7279 struct netdev_nested_priv *__unused)
7280{
7281 dev->upper_level = __netdev_upper_depth(dev) + 1;
7282 return 0;
7283}
7284
7285#ifdef CONFIG_LOCKDEP
7286static LIST_HEAD(net_unlink_list);
7287
7288static void net_unlink_todo(struct net_device *dev)
7289{
7290 if (list_empty(&dev->unlink_list))
7291 list_add_tail(&dev->unlink_list, &net_unlink_list);
7292}
7293#endif
7294
7295static int __netdev_update_lower_level(struct net_device *dev,
7296 struct netdev_nested_priv *priv)
7297{
7298 dev->lower_level = __netdev_lower_depth(dev) + 1;
7299
7300#ifdef CONFIG_LOCKDEP
7301 if (!priv)
7302 return 0;
7303
7304 if (priv->flags & NESTED_SYNC_IMM)
7305 dev->nested_level = dev->lower_level - 1;
7306 if (priv->flags & NESTED_SYNC_TODO)
7307 net_unlink_todo(dev);
7308#endif
7309 return 0;
7310}
7311
7312int netdev_walk_all_lower_dev_rcu(struct net_device *dev,
7313 int (*fn)(struct net_device *dev,
7314 struct netdev_nested_priv *priv),
7315 struct netdev_nested_priv *priv)
7316{
7317 struct net_device *ldev, *next, *now, *dev_stack[MAX_NEST_DEV + 1];
7318 struct list_head *niter, *iter, *iter_stack[MAX_NEST_DEV + 1];
7319 int ret, cur = 0;
7320
7321 now = dev;
7322 iter = &dev->adj_list.lower;
7323
7324 while (1) {
7325 if (now != dev) {
7326 ret = fn(now, priv);
7327 if (ret)
7328 return ret;
7329 }
7330
7331 next = NULL;
7332 while (1) {
7333 ldev = netdev_next_lower_dev_rcu(now, &iter);
7334 if (!ldev)
7335 break;
7336
7337 next = ldev;
7338 niter = &ldev->adj_list.lower;
7339 dev_stack[cur] = now;
7340 iter_stack[cur++] = iter;
7341 break;
7342 }
7343
7344 if (!next) {
7345 if (!cur)
7346 return 0;
7347 next = dev_stack[--cur];
7348 niter = iter_stack[cur];
7349 }
7350
7351 now = next;
7352 iter = niter;
7353 }
7354
7355 return 0;
7356}
7357EXPORT_SYMBOL_GPL(netdev_walk_all_lower_dev_rcu);
7358
7359/**
7360 * netdev_lower_get_first_private_rcu - Get the first ->private from the
7361 * lower neighbour list, RCU
7362 * variant
7363 * @dev: device
7364 *
7365 * Gets the first netdev_adjacent->private from the dev's lower neighbour
7366 * list. The caller must hold RCU read lock.
7367 */
7368void *netdev_lower_get_first_private_rcu(struct net_device *dev)
7369{
7370 struct netdev_adjacent *lower;
7371
7372 lower = list_first_or_null_rcu(&dev->adj_list.lower,
7373 struct netdev_adjacent, list);
7374 if (lower)
7375 return lower->private;
7376 return NULL;
7377}
7378EXPORT_SYMBOL(netdev_lower_get_first_private_rcu);
7379
7380/**
7381 * netdev_master_upper_dev_get_rcu - Get master upper device
7382 * @dev: device
7383 *
7384 * Find a master upper device and return pointer to it or NULL in case
7385 * it's not there. The caller must hold the RCU read lock.
7386 */
7387struct net_device *netdev_master_upper_dev_get_rcu(struct net_device *dev)
7388{
7389 struct netdev_adjacent *upper;
7390
7391 upper = list_first_or_null_rcu(&dev->adj_list.upper,
7392 struct netdev_adjacent, list);
7393 if (upper && likely(upper->master))
7394 return upper->dev;
7395 return NULL;
7396}
7397EXPORT_SYMBOL(netdev_master_upper_dev_get_rcu);
7398
7399static int netdev_adjacent_sysfs_add(struct net_device *dev,
7400 struct net_device *adj_dev,
7401 struct list_head *dev_list)
7402{
7403 char linkname[IFNAMSIZ+7];
7404
7405 sprintf(linkname, dev_list == &dev->adj_list.upper ?
7406 "upper_%s" : "lower_%s", adj_dev->name);
7407 return sysfs_create_link(&(dev->dev.kobj), &(adj_dev->dev.kobj),
7408 linkname);
7409}
7410static void netdev_adjacent_sysfs_del(struct net_device *dev,
7411 char *name,
7412 struct list_head *dev_list)
7413{
7414 char linkname[IFNAMSIZ+7];
7415
7416 sprintf(linkname, dev_list == &dev->adj_list.upper ?
7417 "upper_%s" : "lower_%s", name);
7418 sysfs_remove_link(&(dev->dev.kobj), linkname);
7419}
7420
7421static inline bool netdev_adjacent_is_neigh_list(struct net_device *dev,
7422 struct net_device *adj_dev,
7423 struct list_head *dev_list)
7424{
7425 return (dev_list == &dev->adj_list.upper ||
7426 dev_list == &dev->adj_list.lower) &&
7427 net_eq(dev_net(dev), dev_net(adj_dev));
7428}
7429
7430static int __netdev_adjacent_dev_insert(struct net_device *dev,
7431 struct net_device *adj_dev,
7432 struct list_head *dev_list,
7433 void *private, bool master)
7434{
7435 struct netdev_adjacent *adj;
7436 int ret;
7437
7438 adj = __netdev_find_adj(adj_dev, dev_list);
7439
7440 if (adj) {
7441 adj->ref_nr += 1;
7442 pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d\n",
7443 dev->name, adj_dev->name, adj->ref_nr);
7444
7445 return 0;
7446 }
7447
7448 adj = kmalloc(sizeof(*adj), GFP_KERNEL);
7449 if (!adj)
7450 return -ENOMEM;
7451
7452 adj->dev = adj_dev;
7453 adj->master = master;
7454 adj->ref_nr = 1;
7455 adj->private = private;
7456 adj->ignore = false;
7457 netdev_hold(adj_dev, &adj->dev_tracker, GFP_KERNEL);
7458
7459 pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d; dev_hold on %s\n",
7460 dev->name, adj_dev->name, adj->ref_nr, adj_dev->name);
7461
7462 if (netdev_adjacent_is_neigh_list(dev, adj_dev, dev_list)) {
7463 ret = netdev_adjacent_sysfs_add(dev, adj_dev, dev_list);
7464 if (ret)
7465 goto free_adj;
7466 }
7467
7468 /* Ensure that master link is always the first item in list. */
7469 if (master) {
7470 ret = sysfs_create_link(&(dev->dev.kobj),
7471 &(adj_dev->dev.kobj), "master");
7472 if (ret)
7473 goto remove_symlinks;
7474
7475 list_add_rcu(&adj->list, dev_list);
7476 } else {
7477 list_add_tail_rcu(&adj->list, dev_list);
7478 }
7479
7480 return 0;
7481
7482remove_symlinks:
7483 if (netdev_adjacent_is_neigh_list(dev, adj_dev, dev_list))
7484 netdev_adjacent_sysfs_del(dev, adj_dev->name, dev_list);
7485free_adj:
7486 netdev_put(adj_dev, &adj->dev_tracker);
7487 kfree(adj);
7488
7489 return ret;
7490}
7491
7492static void __netdev_adjacent_dev_remove(struct net_device *dev,
7493 struct net_device *adj_dev,
7494 u16 ref_nr,
7495 struct list_head *dev_list)
7496{
7497 struct netdev_adjacent *adj;
7498
7499 pr_debug("Remove adjacency: dev %s adj_dev %s ref_nr %d\n",
7500 dev->name, adj_dev->name, ref_nr);
7501
7502 adj = __netdev_find_adj(adj_dev, dev_list);
7503
7504 if (!adj) {
7505 pr_err("Adjacency does not exist for device %s from %s\n",
7506 dev->name, adj_dev->name);
7507 WARN_ON(1);
7508 return;
7509 }
7510
7511 if (adj->ref_nr > ref_nr) {
7512 pr_debug("adjacency: %s to %s ref_nr - %d = %d\n",
7513 dev->name, adj_dev->name, ref_nr,
7514 adj->ref_nr - ref_nr);
7515 adj->ref_nr -= ref_nr;
7516 return;
7517 }
7518
7519 if (adj->master)
7520 sysfs_remove_link(&(dev->dev.kobj), "master");
7521
7522 if (netdev_adjacent_is_neigh_list(dev, adj_dev, dev_list))
7523 netdev_adjacent_sysfs_del(dev, adj_dev->name, dev_list);
7524
7525 list_del_rcu(&adj->list);
7526 pr_debug("adjacency: dev_put for %s, because link removed from %s to %s\n",
7527 adj_dev->name, dev->name, adj_dev->name);
7528 netdev_put(adj_dev, &adj->dev_tracker);
7529 kfree_rcu(adj, rcu);
7530}
7531
7532static int __netdev_adjacent_dev_link_lists(struct net_device *dev,
7533 struct net_device *upper_dev,
7534 struct list_head *up_list,
7535 struct list_head *down_list,
7536 void *private, bool master)
7537{
7538 int ret;
7539
7540 ret = __netdev_adjacent_dev_insert(dev, upper_dev, up_list,
7541 private, master);
7542 if (ret)
7543 return ret;
7544
7545 ret = __netdev_adjacent_dev_insert(upper_dev, dev, down_list,
7546 private, false);
7547 if (ret) {
7548 __netdev_adjacent_dev_remove(dev, upper_dev, 1, up_list);
7549 return ret;
7550 }
7551
7552 return 0;
7553}
7554
7555static void __netdev_adjacent_dev_unlink_lists(struct net_device *dev,
7556 struct net_device *upper_dev,
7557 u16 ref_nr,
7558 struct list_head *up_list,
7559 struct list_head *down_list)
7560{
7561 __netdev_adjacent_dev_remove(dev, upper_dev, ref_nr, up_list);
7562 __netdev_adjacent_dev_remove(upper_dev, dev, ref_nr, down_list);
7563}
7564
7565static int __netdev_adjacent_dev_link_neighbour(struct net_device *dev,
7566 struct net_device *upper_dev,
7567 void *private, bool master)
7568{
7569 return __netdev_adjacent_dev_link_lists(dev, upper_dev,
7570 &dev->adj_list.upper,
7571 &upper_dev->adj_list.lower,
7572 private, master);
7573}
7574
7575static void __netdev_adjacent_dev_unlink_neighbour(struct net_device *dev,
7576 struct net_device *upper_dev)
7577{
7578 __netdev_adjacent_dev_unlink_lists(dev, upper_dev, 1,
7579 &dev->adj_list.upper,
7580 &upper_dev->adj_list.lower);
7581}
7582
7583static int __netdev_upper_dev_link(struct net_device *dev,
7584 struct net_device *upper_dev, bool master,
7585 void *upper_priv, void *upper_info,
7586 struct netdev_nested_priv *priv,
7587 struct netlink_ext_ack *extack)
7588{
7589 struct netdev_notifier_changeupper_info changeupper_info = {
7590 .info = {
7591 .dev = dev,
7592 .extack = extack,
7593 },
7594 .upper_dev = upper_dev,
7595 .master = master,
7596 .linking = true,
7597 .upper_info = upper_info,
7598 };
7599 struct net_device *master_dev;
7600 int ret = 0;
7601
7602 ASSERT_RTNL();
7603
7604 if (dev == upper_dev)
7605 return -EBUSY;
7606
7607 /* To prevent loops, check if dev is not upper device to upper_dev. */
7608 if (__netdev_has_upper_dev(upper_dev, dev))
7609 return -EBUSY;
7610
7611 if ((dev->lower_level + upper_dev->upper_level) > MAX_NEST_DEV)
7612 return -EMLINK;
7613
7614 if (!master) {
7615 if (__netdev_has_upper_dev(dev, upper_dev))
7616 return -EEXIST;
7617 } else {
7618 master_dev = __netdev_master_upper_dev_get(dev);
7619 if (master_dev)
7620 return master_dev == upper_dev ? -EEXIST : -EBUSY;
7621 }
7622
7623 ret = call_netdevice_notifiers_info(NETDEV_PRECHANGEUPPER,
7624 &changeupper_info.info);
7625 ret = notifier_to_errno(ret);
7626 if (ret)
7627 return ret;
7628
7629 ret = __netdev_adjacent_dev_link_neighbour(dev, upper_dev, upper_priv,
7630 master);
7631 if (ret)
7632 return ret;
7633
7634 ret = call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
7635 &changeupper_info.info);
7636 ret = notifier_to_errno(ret);
7637 if (ret)
7638 goto rollback;
7639
7640 __netdev_update_upper_level(dev, NULL);
7641 __netdev_walk_all_lower_dev(dev, __netdev_update_upper_level, NULL);
7642
7643 __netdev_update_lower_level(upper_dev, priv);
7644 __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level,
7645 priv);
7646
7647 return 0;
7648
7649rollback:
7650 __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
7651
7652 return ret;
7653}
7654
7655/**
7656 * netdev_upper_dev_link - Add a link to the upper device
7657 * @dev: device
7658 * @upper_dev: new upper device
7659 * @extack: netlink extended ack
7660 *
7661 * Adds a link to device which is upper to this one. The caller must hold
7662 * the RTNL lock. On a failure a negative errno code is returned.
7663 * On success the reference counts are adjusted and the function
7664 * returns zero.
7665 */
7666int netdev_upper_dev_link(struct net_device *dev,
7667 struct net_device *upper_dev,
7668 struct netlink_ext_ack *extack)
7669{
7670 struct netdev_nested_priv priv = {
7671 .flags = NESTED_SYNC_IMM | NESTED_SYNC_TODO,
7672 .data = NULL,
7673 };
7674
7675 return __netdev_upper_dev_link(dev, upper_dev, false,
7676 NULL, NULL, &priv, extack);
7677}
7678EXPORT_SYMBOL(netdev_upper_dev_link);
7679
7680/**
7681 * netdev_master_upper_dev_link - Add a master link to the upper device
7682 * @dev: device
7683 * @upper_dev: new upper device
7684 * @upper_priv: upper device private
7685 * @upper_info: upper info to be passed down via notifier
7686 * @extack: netlink extended ack
7687 *
7688 * Adds a link to device which is upper to this one. In this case, only
7689 * one master upper device can be linked, although other non-master devices
7690 * might be linked as well. The caller must hold the RTNL lock.
7691 * On a failure a negative errno code is returned. On success the reference
7692 * counts are adjusted and the function returns zero.
7693 */
7694int netdev_master_upper_dev_link(struct net_device *dev,
7695 struct net_device *upper_dev,
7696 void *upper_priv, void *upper_info,
7697 struct netlink_ext_ack *extack)
7698{
7699 struct netdev_nested_priv priv = {
7700 .flags = NESTED_SYNC_IMM | NESTED_SYNC_TODO,
7701 .data = NULL,
7702 };
7703
7704 return __netdev_upper_dev_link(dev, upper_dev, true,
7705 upper_priv, upper_info, &priv, extack);
7706}
7707EXPORT_SYMBOL(netdev_master_upper_dev_link);
7708
7709static void __netdev_upper_dev_unlink(struct net_device *dev,
7710 struct net_device *upper_dev,
7711 struct netdev_nested_priv *priv)
7712{
7713 struct netdev_notifier_changeupper_info changeupper_info = {
7714 .info = {
7715 .dev = dev,
7716 },
7717 .upper_dev = upper_dev,
7718 .linking = false,
7719 };
7720
7721 ASSERT_RTNL();
7722
7723 changeupper_info.master = netdev_master_upper_dev_get(dev) == upper_dev;
7724
7725 call_netdevice_notifiers_info(NETDEV_PRECHANGEUPPER,
7726 &changeupper_info.info);
7727
7728 __netdev_adjacent_dev_unlink_neighbour(dev, upper_dev);
7729
7730 call_netdevice_notifiers_info(NETDEV_CHANGEUPPER,
7731 &changeupper_info.info);
7732
7733 __netdev_update_upper_level(dev, NULL);
7734 __netdev_walk_all_lower_dev(dev, __netdev_update_upper_level, NULL);
7735
7736 __netdev_update_lower_level(upper_dev, priv);
7737 __netdev_walk_all_upper_dev(upper_dev, __netdev_update_lower_level,
7738 priv);
7739}
7740
7741/**
7742 * netdev_upper_dev_unlink - Removes a link to upper device
7743 * @dev: device
7744 * @upper_dev: new upper device
7745 *
7746 * Removes a link to device which is upper to this one. The caller must hold
7747 * the RTNL lock.
7748 */
7749void netdev_upper_dev_unlink(struct net_device *dev,
7750 struct net_device *upper_dev)
7751{
7752 struct netdev_nested_priv priv = {
7753 .flags = NESTED_SYNC_TODO,
7754 .data = NULL,
7755 };
7756
7757 __netdev_upper_dev_unlink(dev, upper_dev, &priv);
7758}
7759EXPORT_SYMBOL(netdev_upper_dev_unlink);
7760
7761static void __netdev_adjacent_dev_set(struct net_device *upper_dev,
7762 struct net_device *lower_dev,
7763 bool val)
7764{
7765 struct netdev_adjacent *adj;
7766
7767 adj = __netdev_find_adj(lower_dev, &upper_dev->adj_list.lower);
7768 if (adj)
7769 adj->ignore = val;
7770
7771 adj = __netdev_find_adj(upper_dev, &lower_dev->adj_list.upper);
7772 if (adj)
7773 adj->ignore = val;
7774}
7775
7776static void netdev_adjacent_dev_disable(struct net_device *upper_dev,
7777 struct net_device *lower_dev)
7778{
7779 __netdev_adjacent_dev_set(upper_dev, lower_dev, true);
7780}
7781
7782static void netdev_adjacent_dev_enable(struct net_device *upper_dev,
7783 struct net_device *lower_dev)
7784{
7785 __netdev_adjacent_dev_set(upper_dev, lower_dev, false);
7786}
7787
7788int netdev_adjacent_change_prepare(struct net_device *old_dev,
7789 struct net_device *new_dev,
7790 struct net_device *dev,
7791 struct netlink_ext_ack *extack)
7792{
7793 struct netdev_nested_priv priv = {
7794 .flags = 0,
7795 .data = NULL,
7796 };
7797 int err;
7798
7799 if (!new_dev)
7800 return 0;
7801
7802 if (old_dev && new_dev != old_dev)
7803 netdev_adjacent_dev_disable(dev, old_dev);
7804 err = __netdev_upper_dev_link(new_dev, dev, false, NULL, NULL, &priv,
7805 extack);
7806 if (err) {
7807 if (old_dev && new_dev != old_dev)
7808 netdev_adjacent_dev_enable(dev, old_dev);
7809 return err;
7810 }
7811
7812 return 0;
7813}
7814EXPORT_SYMBOL(netdev_adjacent_change_prepare);
7815
7816void netdev_adjacent_change_commit(struct net_device *old_dev,
7817 struct net_device *new_dev,
7818 struct net_device *dev)
7819{
7820 struct netdev_nested_priv priv = {
7821 .flags = NESTED_SYNC_IMM | NESTED_SYNC_TODO,
7822 .data = NULL,
7823 };
7824
7825 if (!new_dev || !old_dev)
7826 return;
7827
7828 if (new_dev == old_dev)
7829 return;
7830
7831 netdev_adjacent_dev_enable(dev, old_dev);
7832 __netdev_upper_dev_unlink(old_dev, dev, &priv);
7833}
7834EXPORT_SYMBOL(netdev_adjacent_change_commit);
7835
7836void netdev_adjacent_change_abort(struct net_device *old_dev,
7837 struct net_device *new_dev,
7838 struct net_device *dev)
7839{
7840 struct netdev_nested_priv priv = {
7841 .flags = 0,
7842 .data = NULL,
7843 };
7844
7845 if (!new_dev)
7846 return;
7847
7848 if (old_dev && new_dev != old_dev)
7849 netdev_adjacent_dev_enable(dev, old_dev);
7850
7851 __netdev_upper_dev_unlink(new_dev, dev, &priv);
7852}
7853EXPORT_SYMBOL(netdev_adjacent_change_abort);
7854
7855/**
7856 * netdev_bonding_info_change - Dispatch event about slave change
7857 * @dev: device
7858 * @bonding_info: info to dispatch
7859 *
7860 * Send NETDEV_BONDING_INFO to netdev notifiers with info.
7861 * The caller must hold the RTNL lock.
7862 */
7863void netdev_bonding_info_change(struct net_device *dev,
7864 struct netdev_bonding_info *bonding_info)
7865{
7866 struct netdev_notifier_bonding_info info = {
7867 .info.dev = dev,
7868 };
7869
7870 memcpy(&info.bonding_info, bonding_info,
7871 sizeof(struct netdev_bonding_info));
7872 call_netdevice_notifiers_info(NETDEV_BONDING_INFO,
7873 &info.info);
7874}
7875EXPORT_SYMBOL(netdev_bonding_info_change);
7876
7877static int netdev_offload_xstats_enable_l3(struct net_device *dev,
7878 struct netlink_ext_ack *extack)
7879{
7880 struct netdev_notifier_offload_xstats_info info = {
7881 .info.dev = dev,
7882 .info.extack = extack,
7883 .type = NETDEV_OFFLOAD_XSTATS_TYPE_L3,
7884 };
7885 int err;
7886 int rc;
7887
7888 dev->offload_xstats_l3 = kzalloc(sizeof(*dev->offload_xstats_l3),
7889 GFP_KERNEL);
7890 if (!dev->offload_xstats_l3)
7891 return -ENOMEM;
7892
7893 rc = call_netdevice_notifiers_info_robust(NETDEV_OFFLOAD_XSTATS_ENABLE,
7894 NETDEV_OFFLOAD_XSTATS_DISABLE,
7895 &info.info);
7896 err = notifier_to_errno(rc);
7897 if (err)
7898 goto free_stats;
7899
7900 return 0;
7901
7902free_stats:
7903 kfree(dev->offload_xstats_l3);
7904 dev->offload_xstats_l3 = NULL;
7905 return err;
7906}
7907
7908int netdev_offload_xstats_enable(struct net_device *dev,
7909 enum netdev_offload_xstats_type type,
7910 struct netlink_ext_ack *extack)
7911{
7912 ASSERT_RTNL();
7913
7914 if (netdev_offload_xstats_enabled(dev, type))
7915 return -EALREADY;
7916
7917 switch (type) {
7918 case NETDEV_OFFLOAD_XSTATS_TYPE_L3:
7919 return netdev_offload_xstats_enable_l3(dev, extack);
7920 }
7921
7922 WARN_ON(1);
7923 return -EINVAL;
7924}
7925EXPORT_SYMBOL(netdev_offload_xstats_enable);
7926
7927static void netdev_offload_xstats_disable_l3(struct net_device *dev)
7928{
7929 struct netdev_notifier_offload_xstats_info info = {
7930 .info.dev = dev,
7931 .type = NETDEV_OFFLOAD_XSTATS_TYPE_L3,
7932 };
7933
7934 call_netdevice_notifiers_info(NETDEV_OFFLOAD_XSTATS_DISABLE,
7935 &info.info);
7936 kfree(dev->offload_xstats_l3);
7937 dev->offload_xstats_l3 = NULL;
7938}
7939
7940int netdev_offload_xstats_disable(struct net_device *dev,
7941 enum netdev_offload_xstats_type type)
7942{
7943 ASSERT_RTNL();
7944
7945 if (!netdev_offload_xstats_enabled(dev, type))
7946 return -EALREADY;
7947
7948 switch (type) {
7949 case NETDEV_OFFLOAD_XSTATS_TYPE_L3:
7950 netdev_offload_xstats_disable_l3(dev);
7951 return 0;
7952 }
7953
7954 WARN_ON(1);
7955 return -EINVAL;
7956}
7957EXPORT_SYMBOL(netdev_offload_xstats_disable);
7958
7959static void netdev_offload_xstats_disable_all(struct net_device *dev)
7960{
7961 netdev_offload_xstats_disable(dev, NETDEV_OFFLOAD_XSTATS_TYPE_L3);
7962}
7963
7964static struct rtnl_hw_stats64 *
7965netdev_offload_xstats_get_ptr(const struct net_device *dev,
7966 enum netdev_offload_xstats_type type)
7967{
7968 switch (type) {
7969 case NETDEV_OFFLOAD_XSTATS_TYPE_L3:
7970 return dev->offload_xstats_l3;
7971 }
7972
7973 WARN_ON(1);
7974 return NULL;
7975}
7976
7977bool netdev_offload_xstats_enabled(const struct net_device *dev,
7978 enum netdev_offload_xstats_type type)
7979{
7980 ASSERT_RTNL();
7981
7982 return netdev_offload_xstats_get_ptr(dev, type);
7983}
7984EXPORT_SYMBOL(netdev_offload_xstats_enabled);
7985
7986struct netdev_notifier_offload_xstats_ru {
7987 bool used;
7988};
7989
7990struct netdev_notifier_offload_xstats_rd {
7991 struct rtnl_hw_stats64 stats;
7992 bool used;
7993};
7994
7995static void netdev_hw_stats64_add(struct rtnl_hw_stats64 *dest,
7996 const struct rtnl_hw_stats64 *src)
7997{
7998 dest->rx_packets += src->rx_packets;
7999 dest->tx_packets += src->tx_packets;
8000 dest->rx_bytes += src->rx_bytes;
8001 dest->tx_bytes += src->tx_bytes;
8002 dest->rx_errors += src->rx_errors;
8003 dest->tx_errors += src->tx_errors;
8004 dest->rx_dropped += src->rx_dropped;
8005 dest->tx_dropped += src->tx_dropped;
8006 dest->multicast += src->multicast;
8007}
8008
8009static int netdev_offload_xstats_get_used(struct net_device *dev,
8010 enum netdev_offload_xstats_type type,
8011 bool *p_used,
8012 struct netlink_ext_ack *extack)
8013{
8014 struct netdev_notifier_offload_xstats_ru report_used = {};
8015 struct netdev_notifier_offload_xstats_info info = {
8016 .info.dev = dev,
8017 .info.extack = extack,
8018 .type = type,
8019 .report_used = &report_used,
8020 };
8021 int rc;
8022
8023 WARN_ON(!netdev_offload_xstats_enabled(dev, type));
8024 rc = call_netdevice_notifiers_info(NETDEV_OFFLOAD_XSTATS_REPORT_USED,
8025 &info.info);
8026 *p_used = report_used.used;
8027 return notifier_to_errno(rc);
8028}
8029
8030static int netdev_offload_xstats_get_stats(struct net_device *dev,
8031 enum netdev_offload_xstats_type type,
8032 struct rtnl_hw_stats64 *p_stats,
8033 bool *p_used,
8034 struct netlink_ext_ack *extack)
8035{
8036 struct netdev_notifier_offload_xstats_rd report_delta = {};
8037 struct netdev_notifier_offload_xstats_info info = {
8038 .info.dev = dev,
8039 .info.extack = extack,
8040 .type = type,
8041 .report_delta = &report_delta,
8042 };
8043 struct rtnl_hw_stats64 *stats;
8044 int rc;
8045
8046 stats = netdev_offload_xstats_get_ptr(dev, type);
8047 if (WARN_ON(!stats))
8048 return -EINVAL;
8049
8050 rc = call_netdevice_notifiers_info(NETDEV_OFFLOAD_XSTATS_REPORT_DELTA,
8051 &info.info);
8052
8053 /* Cache whatever we got, even if there was an error, otherwise the
8054 * successful stats retrievals would get lost.
8055 */
8056 netdev_hw_stats64_add(stats, &report_delta.stats);
8057
8058 if (p_stats)
8059 *p_stats = *stats;
8060 *p_used = report_delta.used;
8061
8062 return notifier_to_errno(rc);
8063}
8064
8065int netdev_offload_xstats_get(struct net_device *dev,
8066 enum netdev_offload_xstats_type type,
8067 struct rtnl_hw_stats64 *p_stats, bool *p_used,
8068 struct netlink_ext_ack *extack)
8069{
8070 ASSERT_RTNL();
8071
8072 if (p_stats)
8073 return netdev_offload_xstats_get_stats(dev, type, p_stats,
8074 p_used, extack);
8075 else
8076 return netdev_offload_xstats_get_used(dev, type, p_used,
8077 extack);
8078}
8079EXPORT_SYMBOL(netdev_offload_xstats_get);
8080
8081void
8082netdev_offload_xstats_report_delta(struct netdev_notifier_offload_xstats_rd *report_delta,
8083 const struct rtnl_hw_stats64 *stats)
8084{
8085 report_delta->used = true;
8086 netdev_hw_stats64_add(&report_delta->stats, stats);
8087}
8088EXPORT_SYMBOL(netdev_offload_xstats_report_delta);
8089
8090void
8091netdev_offload_xstats_report_used(struct netdev_notifier_offload_xstats_ru *report_used)
8092{
8093 report_used->used = true;
8094}
8095EXPORT_SYMBOL(netdev_offload_xstats_report_used);
8096
8097void netdev_offload_xstats_push_delta(struct net_device *dev,
8098 enum netdev_offload_xstats_type type,
8099 const struct rtnl_hw_stats64 *p_stats)
8100{
8101 struct rtnl_hw_stats64 *stats;
8102
8103 ASSERT_RTNL();
8104
8105 stats = netdev_offload_xstats_get_ptr(dev, type);
8106 if (WARN_ON(!stats))
8107 return;
8108
8109 netdev_hw_stats64_add(stats, p_stats);
8110}
8111EXPORT_SYMBOL(netdev_offload_xstats_push_delta);
8112
8113/**
8114 * netdev_get_xmit_slave - Get the xmit slave of master device
8115 * @dev: device
8116 * @skb: The packet
8117 * @all_slaves: assume all the slaves are active
8118 *
8119 * The reference counters are not incremented so the caller must be
8120 * careful with locks. The caller must hold RCU lock.
8121 * %NULL is returned if no slave is found.
8122 */
8123
8124struct net_device *netdev_get_xmit_slave(struct net_device *dev,
8125 struct sk_buff *skb,
8126 bool all_slaves)
8127{
8128 const struct net_device_ops *ops = dev->netdev_ops;
8129
8130 if (!ops->ndo_get_xmit_slave)
8131 return NULL;
8132 return ops->ndo_get_xmit_slave(dev, skb, all_slaves);
8133}
8134EXPORT_SYMBOL(netdev_get_xmit_slave);
8135
8136static struct net_device *netdev_sk_get_lower_dev(struct net_device *dev,
8137 struct sock *sk)
8138{
8139 const struct net_device_ops *ops = dev->netdev_ops;
8140
8141 if (!ops->ndo_sk_get_lower_dev)
8142 return NULL;
8143 return ops->ndo_sk_get_lower_dev(dev, sk);
8144}
8145
8146/**
8147 * netdev_sk_get_lowest_dev - Get the lowest device in chain given device and socket
8148 * @dev: device
8149 * @sk: the socket
8150 *
8151 * %NULL is returned if no lower device is found.
8152 */
8153
8154struct net_device *netdev_sk_get_lowest_dev(struct net_device *dev,
8155 struct sock *sk)
8156{
8157 struct net_device *lower;
8158
8159 lower = netdev_sk_get_lower_dev(dev, sk);
8160 while (lower) {
8161 dev = lower;
8162 lower = netdev_sk_get_lower_dev(dev, sk);
8163 }
8164
8165 return dev;
8166}
8167EXPORT_SYMBOL(netdev_sk_get_lowest_dev);
8168
8169static void netdev_adjacent_add_links(struct net_device *dev)
8170{
8171 struct netdev_adjacent *iter;
8172
8173 struct net *net = dev_net(dev);
8174
8175 list_for_each_entry(iter, &dev->adj_list.upper, list) {
8176 if (!net_eq(net, dev_net(iter->dev)))
8177 continue;
8178 netdev_adjacent_sysfs_add(iter->dev, dev,
8179 &iter->dev->adj_list.lower);
8180 netdev_adjacent_sysfs_add(dev, iter->dev,
8181 &dev->adj_list.upper);
8182 }
8183
8184 list_for_each_entry(iter, &dev->adj_list.lower, list) {
8185 if (!net_eq(net, dev_net(iter->dev)))
8186 continue;
8187 netdev_adjacent_sysfs_add(iter->dev, dev,
8188 &iter->dev->adj_list.upper);
8189 netdev_adjacent_sysfs_add(dev, iter->dev,
8190 &dev->adj_list.lower);
8191 }
8192}
8193
8194static void netdev_adjacent_del_links(struct net_device *dev)
8195{
8196 struct netdev_adjacent *iter;
8197
8198 struct net *net = dev_net(dev);
8199
8200 list_for_each_entry(iter, &dev->adj_list.upper, list) {
8201 if (!net_eq(net, dev_net(iter->dev)))
8202 continue;
8203 netdev_adjacent_sysfs_del(iter->dev, dev->name,
8204 &iter->dev->adj_list.lower);
8205 netdev_adjacent_sysfs_del(dev, iter->dev->name,
8206 &dev->adj_list.upper);
8207 }
8208
8209 list_for_each_entry(iter, &dev->adj_list.lower, list) {
8210 if (!net_eq(net, dev_net(iter->dev)))
8211 continue;
8212 netdev_adjacent_sysfs_del(iter->dev, dev->name,
8213 &iter->dev->adj_list.upper);
8214 netdev_adjacent_sysfs_del(dev, iter->dev->name,
8215 &dev->adj_list.lower);
8216 }
8217}
8218
8219void netdev_adjacent_rename_links(struct net_device *dev, char *oldname)
8220{
8221 struct netdev_adjacent *iter;
8222
8223 struct net *net = dev_net(dev);
8224
8225 list_for_each_entry(iter, &dev->adj_list.upper, list) {
8226 if (!net_eq(net, dev_net(iter->dev)))
8227 continue;
8228 netdev_adjacent_sysfs_del(iter->dev, oldname,
8229 &iter->dev->adj_list.lower);
8230 netdev_adjacent_sysfs_add(iter->dev, dev,
8231 &iter->dev->adj_list.lower);
8232 }
8233
8234 list_for_each_entry(iter, &dev->adj_list.lower, list) {
8235 if (!net_eq(net, dev_net(iter->dev)))
8236 continue;
8237 netdev_adjacent_sysfs_del(iter->dev, oldname,
8238 &iter->dev->adj_list.upper);
8239 netdev_adjacent_sysfs_add(iter->dev, dev,
8240 &iter->dev->adj_list.upper);
8241 }
8242}
8243
8244void *netdev_lower_dev_get_private(struct net_device *dev,
8245 struct net_device *lower_dev)
8246{
8247 struct netdev_adjacent *lower;
8248
8249 if (!lower_dev)
8250 return NULL;
8251 lower = __netdev_find_adj(lower_dev, &dev->adj_list.lower);
8252 if (!lower)
8253 return NULL;
8254
8255 return lower->private;
8256}
8257EXPORT_SYMBOL(netdev_lower_dev_get_private);
8258
8259
8260/**
8261 * netdev_lower_state_changed - Dispatch event about lower device state change
8262 * @lower_dev: device
8263 * @lower_state_info: state to dispatch
8264 *
8265 * Send NETDEV_CHANGELOWERSTATE to netdev notifiers with info.
8266 * The caller must hold the RTNL lock.
8267 */
8268void netdev_lower_state_changed(struct net_device *lower_dev,
8269 void *lower_state_info)
8270{
8271 struct netdev_notifier_changelowerstate_info changelowerstate_info = {
8272 .info.dev = lower_dev,
8273 };
8274
8275 ASSERT_RTNL();
8276 changelowerstate_info.lower_state_info = lower_state_info;
8277 call_netdevice_notifiers_info(NETDEV_CHANGELOWERSTATE,
8278 &changelowerstate_info.info);
8279}
8280EXPORT_SYMBOL(netdev_lower_state_changed);
8281
8282static void dev_change_rx_flags(struct net_device *dev, int flags)
8283{
8284 const struct net_device_ops *ops = dev->netdev_ops;
8285
8286 if (ops->ndo_change_rx_flags)
8287 ops->ndo_change_rx_flags(dev, flags);
8288}
8289
8290static int __dev_set_promiscuity(struct net_device *dev, int inc, bool notify)
8291{
8292 unsigned int old_flags = dev->flags;
8293 kuid_t uid;
8294 kgid_t gid;
8295
8296 ASSERT_RTNL();
8297
8298 dev->flags |= IFF_PROMISC;
8299 dev->promiscuity += inc;
8300 if (dev->promiscuity == 0) {
8301 /*
8302 * Avoid overflow.
8303 * If inc causes overflow, untouch promisc and return error.
8304 */
8305 if (inc < 0)
8306 dev->flags &= ~IFF_PROMISC;
8307 else {
8308 dev->promiscuity -= inc;
8309 netdev_warn(dev, "promiscuity touches roof, set promiscuity failed. promiscuity feature of device might be broken.\n");
8310 return -EOVERFLOW;
8311 }
8312 }
8313 if (dev->flags != old_flags) {
8314 pr_info("device %s %s promiscuous mode\n",
8315 dev->name,
8316 dev->flags & IFF_PROMISC ? "entered" : "left");
8317 if (audit_enabled) {
8318 current_uid_gid(&uid, &gid);
8319 audit_log(audit_context(), GFP_ATOMIC,
8320 AUDIT_ANOM_PROMISCUOUS,
8321 "dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u",
8322 dev->name, (dev->flags & IFF_PROMISC),
8323 (old_flags & IFF_PROMISC),
8324 from_kuid(&init_user_ns, audit_get_loginuid(current)),
8325 from_kuid(&init_user_ns, uid),
8326 from_kgid(&init_user_ns, gid),
8327 audit_get_sessionid(current));
8328 }
8329
8330 dev_change_rx_flags(dev, IFF_PROMISC);
8331 }
8332 if (notify)
8333 __dev_notify_flags(dev, old_flags, IFF_PROMISC, 0, NULL);
8334 return 0;
8335}
8336
8337/**
8338 * dev_set_promiscuity - update promiscuity count on a device
8339 * @dev: device
8340 * @inc: modifier
8341 *
8342 * Add or remove promiscuity from a device. While the count in the device
8343 * remains above zero the interface remains promiscuous. Once it hits zero
8344 * the device reverts back to normal filtering operation. A negative inc
8345 * value is used to drop promiscuity on the device.
8346 * Return 0 if successful or a negative errno code on error.
8347 */
8348int dev_set_promiscuity(struct net_device *dev, int inc)
8349{
8350 unsigned int old_flags = dev->flags;
8351 int err;
8352
8353 err = __dev_set_promiscuity(dev, inc, true);
8354 if (err < 0)
8355 return err;
8356 if (dev->flags != old_flags)
8357 dev_set_rx_mode(dev);
8358 return err;
8359}
8360EXPORT_SYMBOL(dev_set_promiscuity);
8361
8362static int __dev_set_allmulti(struct net_device *dev, int inc, bool notify)
8363{
8364 unsigned int old_flags = dev->flags, old_gflags = dev->gflags;
8365
8366 ASSERT_RTNL();
8367
8368 dev->flags |= IFF_ALLMULTI;
8369 dev->allmulti += inc;
8370 if (dev->allmulti == 0) {
8371 /*
8372 * Avoid overflow.
8373 * If inc causes overflow, untouch allmulti and return error.
8374 */
8375 if (inc < 0)
8376 dev->flags &= ~IFF_ALLMULTI;
8377 else {
8378 dev->allmulti -= inc;
8379 netdev_warn(dev, "allmulti touches roof, set allmulti failed. allmulti feature of device might be broken.\n");
8380 return -EOVERFLOW;
8381 }
8382 }
8383 if (dev->flags ^ old_flags) {
8384 dev_change_rx_flags(dev, IFF_ALLMULTI);
8385 dev_set_rx_mode(dev);
8386 if (notify)
8387 __dev_notify_flags(dev, old_flags,
8388 dev->gflags ^ old_gflags, 0, NULL);
8389 }
8390 return 0;
8391}
8392
8393/**
8394 * dev_set_allmulti - update allmulti count on a device
8395 * @dev: device
8396 * @inc: modifier
8397 *
8398 * Add or remove reception of all multicast frames to a device. While the
8399 * count in the device remains above zero the interface remains listening
8400 * to all interfaces. Once it hits zero the device reverts back to normal
8401 * filtering operation. A negative @inc value is used to drop the counter
8402 * when releasing a resource needing all multicasts.
8403 * Return 0 if successful or a negative errno code on error.
8404 */
8405
8406int dev_set_allmulti(struct net_device *dev, int inc)
8407{
8408 return __dev_set_allmulti(dev, inc, true);
8409}
8410EXPORT_SYMBOL(dev_set_allmulti);
8411
8412/*
8413 * Upload unicast and multicast address lists to device and
8414 * configure RX filtering. When the device doesn't support unicast
8415 * filtering it is put in promiscuous mode while unicast addresses
8416 * are present.
8417 */
8418void __dev_set_rx_mode(struct net_device *dev)
8419{
8420 const struct net_device_ops *ops = dev->netdev_ops;
8421
8422 /* dev_open will call this function so the list will stay sane. */
8423 if (!(dev->flags&IFF_UP))
8424 return;
8425
8426 if (!netif_device_present(dev))
8427 return;
8428
8429 if (!(dev->priv_flags & IFF_UNICAST_FLT)) {
8430 /* Unicast addresses changes may only happen under the rtnl,
8431 * therefore calling __dev_set_promiscuity here is safe.
8432 */
8433 if (!netdev_uc_empty(dev) && !dev->uc_promisc) {
8434 __dev_set_promiscuity(dev, 1, false);
8435 dev->uc_promisc = true;
8436 } else if (netdev_uc_empty(dev) && dev->uc_promisc) {
8437 __dev_set_promiscuity(dev, -1, false);
8438 dev->uc_promisc = false;
8439 }
8440 }
8441
8442 if (ops->ndo_set_rx_mode)
8443 ops->ndo_set_rx_mode(dev);
8444}
8445
8446void dev_set_rx_mode(struct net_device *dev)
8447{
8448 netif_addr_lock_bh(dev);
8449 __dev_set_rx_mode(dev);
8450 netif_addr_unlock_bh(dev);
8451}
8452
8453/**
8454 * dev_get_flags - get flags reported to userspace
8455 * @dev: device
8456 *
8457 * Get the combination of flag bits exported through APIs to userspace.
8458 */
8459unsigned int dev_get_flags(const struct net_device *dev)
8460{
8461 unsigned int flags;
8462
8463 flags = (dev->flags & ~(IFF_PROMISC |
8464 IFF_ALLMULTI |
8465 IFF_RUNNING |
8466 IFF_LOWER_UP |
8467 IFF_DORMANT)) |
8468 (dev->gflags & (IFF_PROMISC |
8469 IFF_ALLMULTI));
8470
8471 if (netif_running(dev)) {
8472 if (netif_oper_up(dev))
8473 flags |= IFF_RUNNING;
8474 if (netif_carrier_ok(dev))
8475 flags |= IFF_LOWER_UP;
8476 if (netif_dormant(dev))
8477 flags |= IFF_DORMANT;
8478 }
8479
8480 return flags;
8481}
8482EXPORT_SYMBOL(dev_get_flags);
8483
8484int __dev_change_flags(struct net_device *dev, unsigned int flags,
8485 struct netlink_ext_ack *extack)
8486{
8487 unsigned int old_flags = dev->flags;
8488 int ret;
8489
8490 ASSERT_RTNL();
8491
8492 /*
8493 * Set the flags on our device.
8494 */
8495
8496 dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
8497 IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
8498 IFF_AUTOMEDIA)) |
8499 (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC |
8500 IFF_ALLMULTI));
8501
8502 /*
8503 * Load in the correct multicast list now the flags have changed.
8504 */
8505
8506 if ((old_flags ^ flags) & IFF_MULTICAST)
8507 dev_change_rx_flags(dev, IFF_MULTICAST);
8508
8509 dev_set_rx_mode(dev);
8510
8511 /*
8512 * Have we downed the interface. We handle IFF_UP ourselves
8513 * according to user attempts to set it, rather than blindly
8514 * setting it.
8515 */
8516
8517 ret = 0;
8518 if ((old_flags ^ flags) & IFF_UP) {
8519 if (old_flags & IFF_UP)
8520 __dev_close(dev);
8521 else
8522 ret = __dev_open(dev, extack);
8523 }
8524
8525 if ((flags ^ dev->gflags) & IFF_PROMISC) {
8526 int inc = (flags & IFF_PROMISC) ? 1 : -1;
8527 unsigned int old_flags = dev->flags;
8528
8529 dev->gflags ^= IFF_PROMISC;
8530
8531 if (__dev_set_promiscuity(dev, inc, false) >= 0)
8532 if (dev->flags != old_flags)
8533 dev_set_rx_mode(dev);
8534 }
8535
8536 /* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI
8537 * is important. Some (broken) drivers set IFF_PROMISC, when
8538 * IFF_ALLMULTI is requested not asking us and not reporting.
8539 */
8540 if ((flags ^ dev->gflags) & IFF_ALLMULTI) {
8541 int inc = (flags & IFF_ALLMULTI) ? 1 : -1;
8542
8543 dev->gflags ^= IFF_ALLMULTI;
8544 __dev_set_allmulti(dev, inc, false);
8545 }
8546
8547 return ret;
8548}
8549
8550void __dev_notify_flags(struct net_device *dev, unsigned int old_flags,
8551 unsigned int gchanges, u32 portid,
8552 const struct nlmsghdr *nlh)
8553{
8554 unsigned int changes = dev->flags ^ old_flags;
8555
8556 if (gchanges)
8557 rtmsg_ifinfo(RTM_NEWLINK, dev, gchanges, GFP_ATOMIC, portid, nlh);
8558
8559 if (changes & IFF_UP) {
8560 if (dev->flags & IFF_UP)
8561 call_netdevice_notifiers(NETDEV_UP, dev);
8562 else
8563 call_netdevice_notifiers(NETDEV_DOWN, dev);
8564 }
8565
8566 if (dev->flags & IFF_UP &&
8567 (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE))) {
8568 struct netdev_notifier_change_info change_info = {
8569 .info = {
8570 .dev = dev,
8571 },
8572 .flags_changed = changes,
8573 };
8574
8575 call_netdevice_notifiers_info(NETDEV_CHANGE, &change_info.info);
8576 }
8577}
8578
8579/**
8580 * dev_change_flags - change device settings
8581 * @dev: device
8582 * @flags: device state flags
8583 * @extack: netlink extended ack
8584 *
8585 * Change settings on device based state flags. The flags are
8586 * in the userspace exported format.
8587 */
8588int dev_change_flags(struct net_device *dev, unsigned int flags,
8589 struct netlink_ext_ack *extack)
8590{
8591 int ret;
8592 unsigned int changes, old_flags = dev->flags, old_gflags = dev->gflags;
8593
8594 ret = __dev_change_flags(dev, flags, extack);
8595 if (ret < 0)
8596 return ret;
8597
8598 changes = (old_flags ^ dev->flags) | (old_gflags ^ dev->gflags);
8599 __dev_notify_flags(dev, old_flags, changes, 0, NULL);
8600 return ret;
8601}
8602EXPORT_SYMBOL(dev_change_flags);
8603
8604int __dev_set_mtu(struct net_device *dev, int new_mtu)
8605{
8606 const struct net_device_ops *ops = dev->netdev_ops;
8607
8608 if (ops->ndo_change_mtu)
8609 return ops->ndo_change_mtu(dev, new_mtu);
8610
8611 /* Pairs with all the lockless reads of dev->mtu in the stack */
8612 WRITE_ONCE(dev->mtu, new_mtu);
8613 return 0;
8614}
8615EXPORT_SYMBOL(__dev_set_mtu);
8616
8617int dev_validate_mtu(struct net_device *dev, int new_mtu,
8618 struct netlink_ext_ack *extack)
8619{
8620 /* MTU must be positive, and in range */
8621 if (new_mtu < 0 || new_mtu < dev->min_mtu) {
8622 NL_SET_ERR_MSG(extack, "mtu less than device minimum");
8623 return -EINVAL;
8624 }
8625
8626 if (dev->max_mtu > 0 && new_mtu > dev->max_mtu) {
8627 NL_SET_ERR_MSG(extack, "mtu greater than device maximum");
8628 return -EINVAL;
8629 }
8630 return 0;
8631}
8632
8633/**
8634 * dev_set_mtu_ext - Change maximum transfer unit
8635 * @dev: device
8636 * @new_mtu: new transfer unit
8637 * @extack: netlink extended ack
8638 *
8639 * Change the maximum transfer size of the network device.
8640 */
8641int dev_set_mtu_ext(struct net_device *dev, int new_mtu,
8642 struct netlink_ext_ack *extack)
8643{
8644 int err, orig_mtu;
8645
8646 if (new_mtu == dev->mtu)
8647 return 0;
8648
8649 err = dev_validate_mtu(dev, new_mtu, extack);
8650 if (err)
8651 return err;
8652
8653 if (!netif_device_present(dev))
8654 return -ENODEV;
8655
8656 err = call_netdevice_notifiers(NETDEV_PRECHANGEMTU, dev);
8657 err = notifier_to_errno(err);
8658 if (err)
8659 return err;
8660
8661 orig_mtu = dev->mtu;
8662 err = __dev_set_mtu(dev, new_mtu);
8663
8664 if (!err) {
8665 err = call_netdevice_notifiers_mtu(NETDEV_CHANGEMTU, dev,
8666 orig_mtu);
8667 err = notifier_to_errno(err);
8668 if (err) {
8669 /* setting mtu back and notifying everyone again,
8670 * so that they have a chance to revert changes.
8671 */
8672 __dev_set_mtu(dev, orig_mtu);
8673 call_netdevice_notifiers_mtu(NETDEV_CHANGEMTU, dev,
8674 new_mtu);
8675 }
8676 }
8677 return err;
8678}
8679
8680int dev_set_mtu(struct net_device *dev, int new_mtu)
8681{
8682 struct netlink_ext_ack extack;
8683 int err;
8684
8685 memset(&extack, 0, sizeof(extack));
8686 err = dev_set_mtu_ext(dev, new_mtu, &extack);
8687 if (err && extack._msg)
8688 net_err_ratelimited("%s: %s\n", dev->name, extack._msg);
8689 return err;
8690}
8691EXPORT_SYMBOL(dev_set_mtu);
8692
8693/**
8694 * dev_change_tx_queue_len - Change TX queue length of a netdevice
8695 * @dev: device
8696 * @new_len: new tx queue length
8697 */
8698int dev_change_tx_queue_len(struct net_device *dev, unsigned long new_len)
8699{
8700 unsigned int orig_len = dev->tx_queue_len;
8701 int res;
8702
8703 if (new_len != (unsigned int)new_len)
8704 return -ERANGE;
8705
8706 if (new_len != orig_len) {
8707 dev->tx_queue_len = new_len;
8708 res = call_netdevice_notifiers(NETDEV_CHANGE_TX_QUEUE_LEN, dev);
8709 res = notifier_to_errno(res);
8710 if (res)
8711 goto err_rollback;
8712 res = dev_qdisc_change_tx_queue_len(dev);
8713 if (res)
8714 goto err_rollback;
8715 }
8716
8717 return 0;
8718
8719err_rollback:
8720 netdev_err(dev, "refused to change device tx_queue_len\n");
8721 dev->tx_queue_len = orig_len;
8722 return res;
8723}
8724
8725/**
8726 * dev_set_group - Change group this device belongs to
8727 * @dev: device
8728 * @new_group: group this device should belong to
8729 */
8730void dev_set_group(struct net_device *dev, int new_group)
8731{
8732 dev->group = new_group;
8733}
8734
8735/**
8736 * dev_pre_changeaddr_notify - Call NETDEV_PRE_CHANGEADDR.
8737 * @dev: device
8738 * @addr: new address
8739 * @extack: netlink extended ack
8740 */
8741int dev_pre_changeaddr_notify(struct net_device *dev, const char *addr,
8742 struct netlink_ext_ack *extack)
8743{
8744 struct netdev_notifier_pre_changeaddr_info info = {
8745 .info.dev = dev,
8746 .info.extack = extack,
8747 .dev_addr = addr,
8748 };
8749 int rc;
8750
8751 rc = call_netdevice_notifiers_info(NETDEV_PRE_CHANGEADDR, &info.info);
8752 return notifier_to_errno(rc);
8753}
8754EXPORT_SYMBOL(dev_pre_changeaddr_notify);
8755
8756/**
8757 * dev_set_mac_address - Change Media Access Control Address
8758 * @dev: device
8759 * @sa: new address
8760 * @extack: netlink extended ack
8761 *
8762 * Change the hardware (MAC) address of the device
8763 */
8764int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa,
8765 struct netlink_ext_ack *extack)
8766{
8767 const struct net_device_ops *ops = dev->netdev_ops;
8768 int err;
8769
8770 if (!ops->ndo_set_mac_address)
8771 return -EOPNOTSUPP;
8772 if (sa->sa_family != dev->type)
8773 return -EINVAL;
8774 if (!netif_device_present(dev))
8775 return -ENODEV;
8776 err = dev_pre_changeaddr_notify(dev, sa->sa_data, extack);
8777 if (err)
8778 return err;
8779 err = ops->ndo_set_mac_address(dev, sa);
8780 if (err)
8781 return err;
8782 dev->addr_assign_type = NET_ADDR_SET;
8783 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
8784 add_device_randomness(dev->dev_addr, dev->addr_len);
8785 return 0;
8786}
8787EXPORT_SYMBOL(dev_set_mac_address);
8788
8789static DECLARE_RWSEM(dev_addr_sem);
8790
8791int dev_set_mac_address_user(struct net_device *dev, struct sockaddr *sa,
8792 struct netlink_ext_ack *extack)
8793{
8794 int ret;
8795
8796 down_write(&dev_addr_sem);
8797 ret = dev_set_mac_address(dev, sa, extack);
8798 up_write(&dev_addr_sem);
8799 return ret;
8800}
8801EXPORT_SYMBOL(dev_set_mac_address_user);
8802
8803int dev_get_mac_address(struct sockaddr *sa, struct net *net, char *dev_name)
8804{
8805 size_t size = sizeof(sa->sa_data_min);
8806 struct net_device *dev;
8807 int ret = 0;
8808
8809 down_read(&dev_addr_sem);
8810 rcu_read_lock();
8811
8812 dev = dev_get_by_name_rcu(net, dev_name);
8813 if (!dev) {
8814 ret = -ENODEV;
8815 goto unlock;
8816 }
8817 if (!dev->addr_len)
8818 memset(sa->sa_data, 0, size);
8819 else
8820 memcpy(sa->sa_data, dev->dev_addr,
8821 min_t(size_t, size, dev->addr_len));
8822 sa->sa_family = dev->type;
8823
8824unlock:
8825 rcu_read_unlock();
8826 up_read(&dev_addr_sem);
8827 return ret;
8828}
8829EXPORT_SYMBOL(dev_get_mac_address);
8830
8831/**
8832 * dev_change_carrier - Change device carrier
8833 * @dev: device
8834 * @new_carrier: new value
8835 *
8836 * Change device carrier
8837 */
8838int dev_change_carrier(struct net_device *dev, bool new_carrier)
8839{
8840 const struct net_device_ops *ops = dev->netdev_ops;
8841
8842 if (!ops->ndo_change_carrier)
8843 return -EOPNOTSUPP;
8844 if (!netif_device_present(dev))
8845 return -ENODEV;
8846 return ops->ndo_change_carrier(dev, new_carrier);
8847}
8848
8849/**
8850 * dev_get_phys_port_id - Get device physical port ID
8851 * @dev: device
8852 * @ppid: port ID
8853 *
8854 * Get device physical port ID
8855 */
8856int dev_get_phys_port_id(struct net_device *dev,
8857 struct netdev_phys_item_id *ppid)
8858{
8859 const struct net_device_ops *ops = dev->netdev_ops;
8860
8861 if (!ops->ndo_get_phys_port_id)
8862 return -EOPNOTSUPP;
8863 return ops->ndo_get_phys_port_id(dev, ppid);
8864}
8865
8866/**
8867 * dev_get_phys_port_name - Get device physical port name
8868 * @dev: device
8869 * @name: port name
8870 * @len: limit of bytes to copy to name
8871 *
8872 * Get device physical port name
8873 */
8874int dev_get_phys_port_name(struct net_device *dev,
8875 char *name, size_t len)
8876{
8877 const struct net_device_ops *ops = dev->netdev_ops;
8878 int err;
8879
8880 if (ops->ndo_get_phys_port_name) {
8881 err = ops->ndo_get_phys_port_name(dev, name, len);
8882 if (err != -EOPNOTSUPP)
8883 return err;
8884 }
8885 return devlink_compat_phys_port_name_get(dev, name, len);
8886}
8887
8888/**
8889 * dev_get_port_parent_id - Get the device's port parent identifier
8890 * @dev: network device
8891 * @ppid: pointer to a storage for the port's parent identifier
8892 * @recurse: allow/disallow recursion to lower devices
8893 *
8894 * Get the devices's port parent identifier
8895 */
8896int dev_get_port_parent_id(struct net_device *dev,
8897 struct netdev_phys_item_id *ppid,
8898 bool recurse)
8899{
8900 const struct net_device_ops *ops = dev->netdev_ops;
8901 struct netdev_phys_item_id first = { };
8902 struct net_device *lower_dev;
8903 struct list_head *iter;
8904 int err;
8905
8906 if (ops->ndo_get_port_parent_id) {
8907 err = ops->ndo_get_port_parent_id(dev, ppid);
8908 if (err != -EOPNOTSUPP)
8909 return err;
8910 }
8911
8912 err = devlink_compat_switch_id_get(dev, ppid);
8913 if (!recurse || err != -EOPNOTSUPP)
8914 return err;
8915
8916 netdev_for_each_lower_dev(dev, lower_dev, iter) {
8917 err = dev_get_port_parent_id(lower_dev, ppid, true);
8918 if (err)
8919 break;
8920 if (!first.id_len)
8921 first = *ppid;
8922 else if (memcmp(&first, ppid, sizeof(*ppid)))
8923 return -EOPNOTSUPP;
8924 }
8925
8926 return err;
8927}
8928EXPORT_SYMBOL(dev_get_port_parent_id);
8929
8930/**
8931 * netdev_port_same_parent_id - Indicate if two network devices have
8932 * the same port parent identifier
8933 * @a: first network device
8934 * @b: second network device
8935 */
8936bool netdev_port_same_parent_id(struct net_device *a, struct net_device *b)
8937{
8938 struct netdev_phys_item_id a_id = { };
8939 struct netdev_phys_item_id b_id = { };
8940
8941 if (dev_get_port_parent_id(a, &a_id, true) ||
8942 dev_get_port_parent_id(b, &b_id, true))
8943 return false;
8944
8945 return netdev_phys_item_id_same(&a_id, &b_id);
8946}
8947EXPORT_SYMBOL(netdev_port_same_parent_id);
8948
8949/**
8950 * dev_change_proto_down - set carrier according to proto_down.
8951 *
8952 * @dev: device
8953 * @proto_down: new value
8954 */
8955int dev_change_proto_down(struct net_device *dev, bool proto_down)
8956{
8957 if (!(dev->priv_flags & IFF_CHANGE_PROTO_DOWN))
8958 return -EOPNOTSUPP;
8959 if (!netif_device_present(dev))
8960 return -ENODEV;
8961 if (proto_down)
8962 netif_carrier_off(dev);
8963 else
8964 netif_carrier_on(dev);
8965 dev->proto_down = proto_down;
8966 return 0;
8967}
8968
8969/**
8970 * dev_change_proto_down_reason - proto down reason
8971 *
8972 * @dev: device
8973 * @mask: proto down mask
8974 * @value: proto down value
8975 */
8976void dev_change_proto_down_reason(struct net_device *dev, unsigned long mask,
8977 u32 value)
8978{
8979 int b;
8980
8981 if (!mask) {
8982 dev->proto_down_reason = value;
8983 } else {
8984 for_each_set_bit(b, &mask, 32) {
8985 if (value & (1 << b))
8986 dev->proto_down_reason |= BIT(b);
8987 else
8988 dev->proto_down_reason &= ~BIT(b);
8989 }
8990 }
8991}
8992
8993struct bpf_xdp_link {
8994 struct bpf_link link;
8995 struct net_device *dev; /* protected by rtnl_lock, no refcnt held */
8996 int flags;
8997};
8998
8999static enum bpf_xdp_mode dev_xdp_mode(struct net_device *dev, u32 flags)
9000{
9001 if (flags & XDP_FLAGS_HW_MODE)
9002 return XDP_MODE_HW;
9003 if (flags & XDP_FLAGS_DRV_MODE)
9004 return XDP_MODE_DRV;
9005 if (flags & XDP_FLAGS_SKB_MODE)
9006 return XDP_MODE_SKB;
9007 return dev->netdev_ops->ndo_bpf ? XDP_MODE_DRV : XDP_MODE_SKB;
9008}
9009
9010static bpf_op_t dev_xdp_bpf_op(struct net_device *dev, enum bpf_xdp_mode mode)
9011{
9012 switch (mode) {
9013 case XDP_MODE_SKB:
9014 return generic_xdp_install;
9015 case XDP_MODE_DRV:
9016 case XDP_MODE_HW:
9017 return dev->netdev_ops->ndo_bpf;
9018 default:
9019 return NULL;
9020 }
9021}
9022
9023static struct bpf_xdp_link *dev_xdp_link(struct net_device *dev,
9024 enum bpf_xdp_mode mode)
9025{
9026 return dev->xdp_state[mode].link;
9027}
9028
9029static struct bpf_prog *dev_xdp_prog(struct net_device *dev,
9030 enum bpf_xdp_mode mode)
9031{
9032 struct bpf_xdp_link *link = dev_xdp_link(dev, mode);
9033
9034 if (link)
9035 return link->link.prog;
9036 return dev->xdp_state[mode].prog;
9037}
9038
9039u8 dev_xdp_prog_count(struct net_device *dev)
9040{
9041 u8 count = 0;
9042 int i;
9043
9044 for (i = 0; i < __MAX_XDP_MODE; i++)
9045 if (dev->xdp_state[i].prog || dev->xdp_state[i].link)
9046 count++;
9047 return count;
9048}
9049EXPORT_SYMBOL_GPL(dev_xdp_prog_count);
9050
9051u32 dev_xdp_prog_id(struct net_device *dev, enum bpf_xdp_mode mode)
9052{
9053 struct bpf_prog *prog = dev_xdp_prog(dev, mode);
9054
9055 return prog ? prog->aux->id : 0;
9056}
9057
9058static void dev_xdp_set_link(struct net_device *dev, enum bpf_xdp_mode mode,
9059 struct bpf_xdp_link *link)
9060{
9061 dev->xdp_state[mode].link = link;
9062 dev->xdp_state[mode].prog = NULL;
9063}
9064
9065static void dev_xdp_set_prog(struct net_device *dev, enum bpf_xdp_mode mode,
9066 struct bpf_prog *prog)
9067{
9068 dev->xdp_state[mode].link = NULL;
9069 dev->xdp_state[mode].prog = prog;
9070}
9071
9072static int dev_xdp_install(struct net_device *dev, enum bpf_xdp_mode mode,
9073 bpf_op_t bpf_op, struct netlink_ext_ack *extack,
9074 u32 flags, struct bpf_prog *prog)
9075{
9076 struct netdev_bpf xdp;
9077 int err;
9078
9079 memset(&xdp, 0, sizeof(xdp));
9080 xdp.command = mode == XDP_MODE_HW ? XDP_SETUP_PROG_HW : XDP_SETUP_PROG;
9081 xdp.extack = extack;
9082 xdp.flags = flags;
9083 xdp.prog = prog;
9084
9085 /* Drivers assume refcnt is already incremented (i.e, prog pointer is
9086 * "moved" into driver), so they don't increment it on their own, but
9087 * they do decrement refcnt when program is detached or replaced.
9088 * Given net_device also owns link/prog, we need to bump refcnt here
9089 * to prevent drivers from underflowing it.
9090 */
9091 if (prog)
9092 bpf_prog_inc(prog);
9093 err = bpf_op(dev, &xdp);
9094 if (err) {
9095 if (prog)
9096 bpf_prog_put(prog);
9097 return err;
9098 }
9099
9100 if (mode != XDP_MODE_HW)
9101 bpf_prog_change_xdp(dev_xdp_prog(dev, mode), prog);
9102
9103 return 0;
9104}
9105
9106static void dev_xdp_uninstall(struct net_device *dev)
9107{
9108 struct bpf_xdp_link *link;
9109 struct bpf_prog *prog;
9110 enum bpf_xdp_mode mode;
9111 bpf_op_t bpf_op;
9112
9113 ASSERT_RTNL();
9114
9115 for (mode = XDP_MODE_SKB; mode < __MAX_XDP_MODE; mode++) {
9116 prog = dev_xdp_prog(dev, mode);
9117 if (!prog)
9118 continue;
9119
9120 bpf_op = dev_xdp_bpf_op(dev, mode);
9121 if (!bpf_op)
9122 continue;
9123
9124 WARN_ON(dev_xdp_install(dev, mode, bpf_op, NULL, 0, NULL));
9125
9126 /* auto-detach link from net device */
9127 link = dev_xdp_link(dev, mode);
9128 if (link)
9129 link->dev = NULL;
9130 else
9131 bpf_prog_put(prog);
9132
9133 dev_xdp_set_link(dev, mode, NULL);
9134 }
9135}
9136
9137static int dev_xdp_attach(struct net_device *dev, struct netlink_ext_ack *extack,
9138 struct bpf_xdp_link *link, struct bpf_prog *new_prog,
9139 struct bpf_prog *old_prog, u32 flags)
9140{
9141 unsigned int num_modes = hweight32(flags & XDP_FLAGS_MODES);
9142 struct bpf_prog *cur_prog;
9143 struct net_device *upper;
9144 struct list_head *iter;
9145 enum bpf_xdp_mode mode;
9146 bpf_op_t bpf_op;
9147 int err;
9148
9149 ASSERT_RTNL();
9150
9151 /* either link or prog attachment, never both */
9152 if (link && (new_prog || old_prog))
9153 return -EINVAL;
9154 /* link supports only XDP mode flags */
9155 if (link && (flags & ~XDP_FLAGS_MODES)) {
9156 NL_SET_ERR_MSG(extack, "Invalid XDP flags for BPF link attachment");
9157 return -EINVAL;
9158 }
9159 /* just one XDP mode bit should be set, zero defaults to drv/skb mode */
9160 if (num_modes > 1) {
9161 NL_SET_ERR_MSG(extack, "Only one XDP mode flag can be set");
9162 return -EINVAL;
9163 }
9164 /* avoid ambiguity if offload + drv/skb mode progs are both loaded */
9165 if (!num_modes && dev_xdp_prog_count(dev) > 1) {
9166 NL_SET_ERR_MSG(extack,
9167 "More than one program loaded, unset mode is ambiguous");
9168 return -EINVAL;
9169 }
9170 /* old_prog != NULL implies XDP_FLAGS_REPLACE is set */
9171 if (old_prog && !(flags & XDP_FLAGS_REPLACE)) {
9172 NL_SET_ERR_MSG(extack, "XDP_FLAGS_REPLACE is not specified");
9173 return -EINVAL;
9174 }
9175
9176 mode = dev_xdp_mode(dev, flags);
9177 /* can't replace attached link */
9178 if (dev_xdp_link(dev, mode)) {
9179 NL_SET_ERR_MSG(extack, "Can't replace active BPF XDP link");
9180 return -EBUSY;
9181 }
9182
9183 /* don't allow if an upper device already has a program */
9184 netdev_for_each_upper_dev_rcu(dev, upper, iter) {
9185 if (dev_xdp_prog_count(upper) > 0) {
9186 NL_SET_ERR_MSG(extack, "Cannot attach when an upper device already has a program");
9187 return -EEXIST;
9188 }
9189 }
9190
9191 cur_prog = dev_xdp_prog(dev, mode);
9192 /* can't replace attached prog with link */
9193 if (link && cur_prog) {
9194 NL_SET_ERR_MSG(extack, "Can't replace active XDP program with BPF link");
9195 return -EBUSY;
9196 }
9197 if ((flags & XDP_FLAGS_REPLACE) && cur_prog != old_prog) {
9198 NL_SET_ERR_MSG(extack, "Active program does not match expected");
9199 return -EEXIST;
9200 }
9201
9202 /* put effective new program into new_prog */
9203 if (link)
9204 new_prog = link->link.prog;
9205
9206 if (new_prog) {
9207 bool offload = mode == XDP_MODE_HW;
9208 enum bpf_xdp_mode other_mode = mode == XDP_MODE_SKB
9209 ? XDP_MODE_DRV : XDP_MODE_SKB;
9210
9211 if ((flags & XDP_FLAGS_UPDATE_IF_NOEXIST) && cur_prog) {
9212 NL_SET_ERR_MSG(extack, "XDP program already attached");
9213 return -EBUSY;
9214 }
9215 if (!offload && dev_xdp_prog(dev, other_mode)) {
9216 NL_SET_ERR_MSG(extack, "Native and generic XDP can't be active at the same time");
9217 return -EEXIST;
9218 }
9219 if (!offload && bpf_prog_is_dev_bound(new_prog->aux)) {
9220 NL_SET_ERR_MSG(extack, "Using device-bound program without HW_MODE flag is not supported");
9221 return -EINVAL;
9222 }
9223 if (new_prog->expected_attach_type == BPF_XDP_DEVMAP) {
9224 NL_SET_ERR_MSG(extack, "BPF_XDP_DEVMAP programs can not be attached to a device");
9225 return -EINVAL;
9226 }
9227 if (new_prog->expected_attach_type == BPF_XDP_CPUMAP) {
9228 NL_SET_ERR_MSG(extack, "BPF_XDP_CPUMAP programs can not be attached to a device");
9229 return -EINVAL;
9230 }
9231 }
9232
9233 /* don't call drivers if the effective program didn't change */
9234 if (new_prog != cur_prog) {
9235 bpf_op = dev_xdp_bpf_op(dev, mode);
9236 if (!bpf_op) {
9237 NL_SET_ERR_MSG(extack, "Underlying driver does not support XDP in native mode");
9238 return -EOPNOTSUPP;
9239 }
9240
9241 err = dev_xdp_install(dev, mode, bpf_op, extack, flags, new_prog);
9242 if (err)
9243 return err;
9244 }
9245
9246 if (link)
9247 dev_xdp_set_link(dev, mode, link);
9248 else
9249 dev_xdp_set_prog(dev, mode, new_prog);
9250 if (cur_prog)
9251 bpf_prog_put(cur_prog);
9252
9253 return 0;
9254}
9255
9256static int dev_xdp_attach_link(struct net_device *dev,
9257 struct netlink_ext_ack *extack,
9258 struct bpf_xdp_link *link)
9259{
9260 return dev_xdp_attach(dev, extack, link, NULL, NULL, link->flags);
9261}
9262
9263static int dev_xdp_detach_link(struct net_device *dev,
9264 struct netlink_ext_ack *extack,
9265 struct bpf_xdp_link *link)
9266{
9267 enum bpf_xdp_mode mode;
9268 bpf_op_t bpf_op;
9269
9270 ASSERT_RTNL();
9271
9272 mode = dev_xdp_mode(dev, link->flags);
9273 if (dev_xdp_link(dev, mode) != link)
9274 return -EINVAL;
9275
9276 bpf_op = dev_xdp_bpf_op(dev, mode);
9277 WARN_ON(dev_xdp_install(dev, mode, bpf_op, NULL, 0, NULL));
9278 dev_xdp_set_link(dev, mode, NULL);
9279 return 0;
9280}
9281
9282static void bpf_xdp_link_release(struct bpf_link *link)
9283{
9284 struct bpf_xdp_link *xdp_link = container_of(link, struct bpf_xdp_link, link);
9285
9286 rtnl_lock();
9287
9288 /* if racing with net_device's tear down, xdp_link->dev might be
9289 * already NULL, in which case link was already auto-detached
9290 */
9291 if (xdp_link->dev) {
9292 WARN_ON(dev_xdp_detach_link(xdp_link->dev, NULL, xdp_link));
9293 xdp_link->dev = NULL;
9294 }
9295
9296 rtnl_unlock();
9297}
9298
9299static int bpf_xdp_link_detach(struct bpf_link *link)
9300{
9301 bpf_xdp_link_release(link);
9302 return 0;
9303}
9304
9305static void bpf_xdp_link_dealloc(struct bpf_link *link)
9306{
9307 struct bpf_xdp_link *xdp_link = container_of(link, struct bpf_xdp_link, link);
9308
9309 kfree(xdp_link);
9310}
9311
9312static void bpf_xdp_link_show_fdinfo(const struct bpf_link *link,
9313 struct seq_file *seq)
9314{
9315 struct bpf_xdp_link *xdp_link = container_of(link, struct bpf_xdp_link, link);
9316 u32 ifindex = 0;
9317
9318 rtnl_lock();
9319 if (xdp_link->dev)
9320 ifindex = xdp_link->dev->ifindex;
9321 rtnl_unlock();
9322
9323 seq_printf(seq, "ifindex:\t%u\n", ifindex);
9324}
9325
9326static int bpf_xdp_link_fill_link_info(const struct bpf_link *link,
9327 struct bpf_link_info *info)
9328{
9329 struct bpf_xdp_link *xdp_link = container_of(link, struct bpf_xdp_link, link);
9330 u32 ifindex = 0;
9331
9332 rtnl_lock();
9333 if (xdp_link->dev)
9334 ifindex = xdp_link->dev->ifindex;
9335 rtnl_unlock();
9336
9337 info->xdp.ifindex = ifindex;
9338 return 0;
9339}
9340
9341static int bpf_xdp_link_update(struct bpf_link *link, struct bpf_prog *new_prog,
9342 struct bpf_prog *old_prog)
9343{
9344 struct bpf_xdp_link *xdp_link = container_of(link, struct bpf_xdp_link, link);
9345 enum bpf_xdp_mode mode;
9346 bpf_op_t bpf_op;
9347 int err = 0;
9348
9349 rtnl_lock();
9350
9351 /* link might have been auto-released already, so fail */
9352 if (!xdp_link->dev) {
9353 err = -ENOLINK;
9354 goto out_unlock;
9355 }
9356
9357 if (old_prog && link->prog != old_prog) {
9358 err = -EPERM;
9359 goto out_unlock;
9360 }
9361 old_prog = link->prog;
9362 if (old_prog->type != new_prog->type ||
9363 old_prog->expected_attach_type != new_prog->expected_attach_type) {
9364 err = -EINVAL;
9365 goto out_unlock;
9366 }
9367
9368 if (old_prog == new_prog) {
9369 /* no-op, don't disturb drivers */
9370 bpf_prog_put(new_prog);
9371 goto out_unlock;
9372 }
9373
9374 mode = dev_xdp_mode(xdp_link->dev, xdp_link->flags);
9375 bpf_op = dev_xdp_bpf_op(xdp_link->dev, mode);
9376 err = dev_xdp_install(xdp_link->dev, mode, bpf_op, NULL,
9377 xdp_link->flags, new_prog);
9378 if (err)
9379 goto out_unlock;
9380
9381 old_prog = xchg(&link->prog, new_prog);
9382 bpf_prog_put(old_prog);
9383
9384out_unlock:
9385 rtnl_unlock();
9386 return err;
9387}
9388
9389static const struct bpf_link_ops bpf_xdp_link_lops = {
9390 .release = bpf_xdp_link_release,
9391 .dealloc = bpf_xdp_link_dealloc,
9392 .detach = bpf_xdp_link_detach,
9393 .show_fdinfo = bpf_xdp_link_show_fdinfo,
9394 .fill_link_info = bpf_xdp_link_fill_link_info,
9395 .update_prog = bpf_xdp_link_update,
9396};
9397
9398int bpf_xdp_link_attach(const union bpf_attr *attr, struct bpf_prog *prog)
9399{
9400 struct net *net = current->nsproxy->net_ns;
9401 struct bpf_link_primer link_primer;
9402 struct bpf_xdp_link *link;
9403 struct net_device *dev;
9404 int err, fd;
9405
9406 rtnl_lock();
9407 dev = dev_get_by_index(net, attr->link_create.target_ifindex);
9408 if (!dev) {
9409 rtnl_unlock();
9410 return -EINVAL;
9411 }
9412
9413 link = kzalloc(sizeof(*link), GFP_USER);
9414 if (!link) {
9415 err = -ENOMEM;
9416 goto unlock;
9417 }
9418
9419 bpf_link_init(&link->link, BPF_LINK_TYPE_XDP, &bpf_xdp_link_lops, prog);
9420 link->dev = dev;
9421 link->flags = attr->link_create.flags;
9422
9423 err = bpf_link_prime(&link->link, &link_primer);
9424 if (err) {
9425 kfree(link);
9426 goto unlock;
9427 }
9428
9429 err = dev_xdp_attach_link(dev, NULL, link);
9430 rtnl_unlock();
9431
9432 if (err) {
9433 link->dev = NULL;
9434 bpf_link_cleanup(&link_primer);
9435 goto out_put_dev;
9436 }
9437
9438 fd = bpf_link_settle(&link_primer);
9439 /* link itself doesn't hold dev's refcnt to not complicate shutdown */
9440 dev_put(dev);
9441 return fd;
9442
9443unlock:
9444 rtnl_unlock();
9445
9446out_put_dev:
9447 dev_put(dev);
9448 return err;
9449}
9450
9451/**
9452 * dev_change_xdp_fd - set or clear a bpf program for a device rx path
9453 * @dev: device
9454 * @extack: netlink extended ack
9455 * @fd: new program fd or negative value to clear
9456 * @expected_fd: old program fd that userspace expects to replace or clear
9457 * @flags: xdp-related flags
9458 *
9459 * Set or clear a bpf program for a device
9460 */
9461int dev_change_xdp_fd(struct net_device *dev, struct netlink_ext_ack *extack,
9462 int fd, int expected_fd, u32 flags)
9463{
9464 enum bpf_xdp_mode mode = dev_xdp_mode(dev, flags);
9465 struct bpf_prog *new_prog = NULL, *old_prog = NULL;
9466 int err;
9467
9468 ASSERT_RTNL();
9469
9470 if (fd >= 0) {
9471 new_prog = bpf_prog_get_type_dev(fd, BPF_PROG_TYPE_XDP,
9472 mode != XDP_MODE_SKB);
9473 if (IS_ERR(new_prog))
9474 return PTR_ERR(new_prog);
9475 }
9476
9477 if (expected_fd >= 0) {
9478 old_prog = bpf_prog_get_type_dev(expected_fd, BPF_PROG_TYPE_XDP,
9479 mode != XDP_MODE_SKB);
9480 if (IS_ERR(old_prog)) {
9481 err = PTR_ERR(old_prog);
9482 old_prog = NULL;
9483 goto err_out;
9484 }
9485 }
9486
9487 err = dev_xdp_attach(dev, extack, NULL, new_prog, old_prog, flags);
9488
9489err_out:
9490 if (err && new_prog)
9491 bpf_prog_put(new_prog);
9492 if (old_prog)
9493 bpf_prog_put(old_prog);
9494 return err;
9495}
9496
9497/**
9498 * dev_new_index - allocate an ifindex
9499 * @net: the applicable net namespace
9500 *
9501 * Returns a suitable unique value for a new device interface
9502 * number. The caller must hold the rtnl semaphore or the
9503 * dev_base_lock to be sure it remains unique.
9504 */
9505static int dev_new_index(struct net *net)
9506{
9507 int ifindex = net->ifindex;
9508
9509 for (;;) {
9510 if (++ifindex <= 0)
9511 ifindex = 1;
9512 if (!__dev_get_by_index(net, ifindex))
9513 return net->ifindex = ifindex;
9514 }
9515}
9516
9517/* Delayed registration/unregisteration */
9518LIST_HEAD(net_todo_list);
9519DECLARE_WAIT_QUEUE_HEAD(netdev_unregistering_wq);
9520
9521static void net_set_todo(struct net_device *dev)
9522{
9523 list_add_tail(&dev->todo_list, &net_todo_list);
9524 atomic_inc(&dev_net(dev)->dev_unreg_count);
9525}
9526
9527static netdev_features_t netdev_sync_upper_features(struct net_device *lower,
9528 struct net_device *upper, netdev_features_t features)
9529{
9530 netdev_features_t upper_disables = NETIF_F_UPPER_DISABLES;
9531 netdev_features_t feature;
9532 int feature_bit;
9533
9534 for_each_netdev_feature(upper_disables, feature_bit) {
9535 feature = __NETIF_F_BIT(feature_bit);
9536 if (!(upper->wanted_features & feature)
9537 && (features & feature)) {
9538 netdev_dbg(lower, "Dropping feature %pNF, upper dev %s has it off.\n",
9539 &feature, upper->name);
9540 features &= ~feature;
9541 }
9542 }
9543
9544 return features;
9545}
9546
9547static void netdev_sync_lower_features(struct net_device *upper,
9548 struct net_device *lower, netdev_features_t features)
9549{
9550 netdev_features_t upper_disables = NETIF_F_UPPER_DISABLES;
9551 netdev_features_t feature;
9552 int feature_bit;
9553
9554 for_each_netdev_feature(upper_disables, feature_bit) {
9555 feature = __NETIF_F_BIT(feature_bit);
9556 if (!(features & feature) && (lower->features & feature)) {
9557 netdev_dbg(upper, "Disabling feature %pNF on lower dev %s.\n",
9558 &feature, lower->name);
9559 lower->wanted_features &= ~feature;
9560 __netdev_update_features(lower);
9561
9562 if (unlikely(lower->features & feature))
9563 netdev_WARN(upper, "failed to disable %pNF on %s!\n",
9564 &feature, lower->name);
9565 else
9566 netdev_features_change(lower);
9567 }
9568 }
9569}
9570
9571static netdev_features_t netdev_fix_features(struct net_device *dev,
9572 netdev_features_t features)
9573{
9574 /* Fix illegal checksum combinations */
9575 if ((features & NETIF_F_HW_CSUM) &&
9576 (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
9577 netdev_warn(dev, "mixed HW and IP checksum settings.\n");
9578 features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
9579 }
9580
9581 /* TSO requires that SG is present as well. */
9582 if ((features & NETIF_F_ALL_TSO) && !(features & NETIF_F_SG)) {
9583 netdev_dbg(dev, "Dropping TSO features since no SG feature.\n");
9584 features &= ~NETIF_F_ALL_TSO;
9585 }
9586
9587 if ((features & NETIF_F_TSO) && !(features & NETIF_F_HW_CSUM) &&
9588 !(features & NETIF_F_IP_CSUM)) {
9589 netdev_dbg(dev, "Dropping TSO features since no CSUM feature.\n");
9590 features &= ~NETIF_F_TSO;
9591 features &= ~NETIF_F_TSO_ECN;
9592 }
9593
9594 if ((features & NETIF_F_TSO6) && !(features & NETIF_F_HW_CSUM) &&
9595 !(features & NETIF_F_IPV6_CSUM)) {
9596 netdev_dbg(dev, "Dropping TSO6 features since no CSUM feature.\n");
9597 features &= ~NETIF_F_TSO6;
9598 }
9599
9600 /* TSO with IPv4 ID mangling requires IPv4 TSO be enabled */
9601 if ((features & NETIF_F_TSO_MANGLEID) && !(features & NETIF_F_TSO))
9602 features &= ~NETIF_F_TSO_MANGLEID;
9603
9604 /* TSO ECN requires that TSO is present as well. */
9605 if ((features & NETIF_F_ALL_TSO) == NETIF_F_TSO_ECN)
9606 features &= ~NETIF_F_TSO_ECN;
9607
9608 /* Software GSO depends on SG. */
9609 if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) {
9610 netdev_dbg(dev, "Dropping NETIF_F_GSO since no SG feature.\n");
9611 features &= ~NETIF_F_GSO;
9612 }
9613
9614 /* GSO partial features require GSO partial be set */
9615 if ((features & dev->gso_partial_features) &&
9616 !(features & NETIF_F_GSO_PARTIAL)) {
9617 netdev_dbg(dev,
9618 "Dropping partially supported GSO features since no GSO partial.\n");
9619 features &= ~dev->gso_partial_features;
9620 }
9621
9622 if (!(features & NETIF_F_RXCSUM)) {
9623 /* NETIF_F_GRO_HW implies doing RXCSUM since every packet
9624 * successfully merged by hardware must also have the
9625 * checksum verified by hardware. If the user does not
9626 * want to enable RXCSUM, logically, we should disable GRO_HW.
9627 */
9628 if (features & NETIF_F_GRO_HW) {
9629 netdev_dbg(dev, "Dropping NETIF_F_GRO_HW since no RXCSUM feature.\n");
9630 features &= ~NETIF_F_GRO_HW;
9631 }
9632 }
9633
9634 /* LRO/HW-GRO features cannot be combined with RX-FCS */
9635 if (features & NETIF_F_RXFCS) {
9636 if (features & NETIF_F_LRO) {
9637 netdev_dbg(dev, "Dropping LRO feature since RX-FCS is requested.\n");
9638 features &= ~NETIF_F_LRO;
9639 }
9640
9641 if (features & NETIF_F_GRO_HW) {
9642 netdev_dbg(dev, "Dropping HW-GRO feature since RX-FCS is requested.\n");
9643 features &= ~NETIF_F_GRO_HW;
9644 }
9645 }
9646
9647 if ((features & NETIF_F_GRO_HW) && (features & NETIF_F_LRO)) {
9648 netdev_dbg(dev, "Dropping LRO feature since HW-GRO is requested.\n");
9649 features &= ~NETIF_F_LRO;
9650 }
9651
9652 if (features & NETIF_F_HW_TLS_TX) {
9653 bool ip_csum = (features & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM)) ==
9654 (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM);
9655 bool hw_csum = features & NETIF_F_HW_CSUM;
9656
9657 if (!ip_csum && !hw_csum) {
9658 netdev_dbg(dev, "Dropping TLS TX HW offload feature since no CSUM feature.\n");
9659 features &= ~NETIF_F_HW_TLS_TX;
9660 }
9661 }
9662
9663 if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) {
9664 netdev_dbg(dev, "Dropping TLS RX HW offload feature since no RXCSUM feature.\n");
9665 features &= ~NETIF_F_HW_TLS_RX;
9666 }
9667
9668 return features;
9669}
9670
9671int __netdev_update_features(struct net_device *dev)
9672{
9673 struct net_device *upper, *lower;
9674 netdev_features_t features;
9675 struct list_head *iter;
9676 int err = -1;
9677
9678 ASSERT_RTNL();
9679
9680 features = netdev_get_wanted_features(dev);
9681
9682 if (dev->netdev_ops->ndo_fix_features)
9683 features = dev->netdev_ops->ndo_fix_features(dev, features);
9684
9685 /* driver might be less strict about feature dependencies */
9686 features = netdev_fix_features(dev, features);
9687
9688 /* some features can't be enabled if they're off on an upper device */
9689 netdev_for_each_upper_dev_rcu(dev, upper, iter)
9690 features = netdev_sync_upper_features(dev, upper, features);
9691
9692 if (dev->features == features)
9693 goto sync_lower;
9694
9695 netdev_dbg(dev, "Features changed: %pNF -> %pNF\n",
9696 &dev->features, &features);
9697
9698 if (dev->netdev_ops->ndo_set_features)
9699 err = dev->netdev_ops->ndo_set_features(dev, features);
9700 else
9701 err = 0;
9702
9703 if (unlikely(err < 0)) {
9704 netdev_err(dev,
9705 "set_features() failed (%d); wanted %pNF, left %pNF\n",
9706 err, &features, &dev->features);
9707 /* return non-0 since some features might have changed and
9708 * it's better to fire a spurious notification than miss it
9709 */
9710 return -1;
9711 }
9712
9713sync_lower:
9714 /* some features must be disabled on lower devices when disabled
9715 * on an upper device (think: bonding master or bridge)
9716 */
9717 netdev_for_each_lower_dev(dev, lower, iter)
9718 netdev_sync_lower_features(dev, lower, features);
9719
9720 if (!err) {
9721 netdev_features_t diff = features ^ dev->features;
9722
9723 if (diff & NETIF_F_RX_UDP_TUNNEL_PORT) {
9724 /* udp_tunnel_{get,drop}_rx_info both need
9725 * NETIF_F_RX_UDP_TUNNEL_PORT enabled on the
9726 * device, or they won't do anything.
9727 * Thus we need to update dev->features
9728 * *before* calling udp_tunnel_get_rx_info,
9729 * but *after* calling udp_tunnel_drop_rx_info.
9730 */
9731 if (features & NETIF_F_RX_UDP_TUNNEL_PORT) {
9732 dev->features = features;
9733 udp_tunnel_get_rx_info(dev);
9734 } else {
9735 udp_tunnel_drop_rx_info(dev);
9736 }
9737 }
9738
9739 if (diff & NETIF_F_HW_VLAN_CTAG_FILTER) {
9740 if (features & NETIF_F_HW_VLAN_CTAG_FILTER) {
9741 dev->features = features;
9742 err |= vlan_get_rx_ctag_filter_info(dev);
9743 } else {
9744 vlan_drop_rx_ctag_filter_info(dev);
9745 }
9746 }
9747
9748 if (diff & NETIF_F_HW_VLAN_STAG_FILTER) {
9749 if (features & NETIF_F_HW_VLAN_STAG_FILTER) {
9750 dev->features = features;
9751 err |= vlan_get_rx_stag_filter_info(dev);
9752 } else {
9753 vlan_drop_rx_stag_filter_info(dev);
9754 }
9755 }
9756
9757 dev->features = features;
9758 }
9759
9760 return err < 0 ? 0 : 1;
9761}
9762
9763/**
9764 * netdev_update_features - recalculate device features
9765 * @dev: the device to check
9766 *
9767 * Recalculate dev->features set and send notifications if it
9768 * has changed. Should be called after driver or hardware dependent
9769 * conditions might have changed that influence the features.
9770 */
9771void netdev_update_features(struct net_device *dev)
9772{
9773 if (__netdev_update_features(dev))
9774 netdev_features_change(dev);
9775}
9776EXPORT_SYMBOL(netdev_update_features);
9777
9778/**
9779 * netdev_change_features - recalculate device features
9780 * @dev: the device to check
9781 *
9782 * Recalculate dev->features set and send notifications even
9783 * if they have not changed. Should be called instead of
9784 * netdev_update_features() if also dev->vlan_features might
9785 * have changed to allow the changes to be propagated to stacked
9786 * VLAN devices.
9787 */
9788void netdev_change_features(struct net_device *dev)
9789{
9790 __netdev_update_features(dev);
9791 netdev_features_change(dev);
9792}
9793EXPORT_SYMBOL(netdev_change_features);
9794
9795/**
9796 * netif_stacked_transfer_operstate - transfer operstate
9797 * @rootdev: the root or lower level device to transfer state from
9798 * @dev: the device to transfer operstate to
9799 *
9800 * Transfer operational state from root to device. This is normally
9801 * called when a stacking relationship exists between the root
9802 * device and the device(a leaf device).
9803 */
9804void netif_stacked_transfer_operstate(const struct net_device *rootdev,
9805 struct net_device *dev)
9806{
9807 if (rootdev->operstate == IF_OPER_DORMANT)
9808 netif_dormant_on(dev);
9809 else
9810 netif_dormant_off(dev);
9811
9812 if (rootdev->operstate == IF_OPER_TESTING)
9813 netif_testing_on(dev);
9814 else
9815 netif_testing_off(dev);
9816
9817 if (netif_carrier_ok(rootdev))
9818 netif_carrier_on(dev);
9819 else
9820 netif_carrier_off(dev);
9821}
9822EXPORT_SYMBOL(netif_stacked_transfer_operstate);
9823
9824static int netif_alloc_rx_queues(struct net_device *dev)
9825{
9826 unsigned int i, count = dev->num_rx_queues;
9827 struct netdev_rx_queue *rx;
9828 size_t sz = count * sizeof(*rx);
9829 int err = 0;
9830
9831 BUG_ON(count < 1);
9832
9833 rx = kvzalloc(sz, GFP_KERNEL_ACCOUNT | __GFP_RETRY_MAYFAIL);
9834 if (!rx)
9835 return -ENOMEM;
9836
9837 dev->_rx = rx;
9838
9839 for (i = 0; i < count; i++) {
9840 rx[i].dev = dev;
9841
9842 /* XDP RX-queue setup */
9843 err = xdp_rxq_info_reg(&rx[i].xdp_rxq, dev, i, 0);
9844 if (err < 0)
9845 goto err_rxq_info;
9846 }
9847 return 0;
9848
9849err_rxq_info:
9850 /* Rollback successful reg's and free other resources */
9851 while (i--)
9852 xdp_rxq_info_unreg(&rx[i].xdp_rxq);
9853 kvfree(dev->_rx);
9854 dev->_rx = NULL;
9855 return err;
9856}
9857
9858static void netif_free_rx_queues(struct net_device *dev)
9859{
9860 unsigned int i, count = dev->num_rx_queues;
9861
9862 /* netif_alloc_rx_queues alloc failed, resources have been unreg'ed */
9863 if (!dev->_rx)
9864 return;
9865
9866 for (i = 0; i < count; i++)
9867 xdp_rxq_info_unreg(&dev->_rx[i].xdp_rxq);
9868
9869 kvfree(dev->_rx);
9870}
9871
9872static void netdev_init_one_queue(struct net_device *dev,
9873 struct netdev_queue *queue, void *_unused)
9874{
9875 /* Initialize queue lock */
9876 spin_lock_init(&queue->_xmit_lock);
9877 netdev_set_xmit_lockdep_class(&queue->_xmit_lock, dev->type);
9878 queue->xmit_lock_owner = -1;
9879 netdev_queue_numa_node_write(queue, NUMA_NO_NODE);
9880 queue->dev = dev;
9881#ifdef CONFIG_BQL
9882 dql_init(&queue->dql, HZ);
9883#endif
9884}
9885
9886static void netif_free_tx_queues(struct net_device *dev)
9887{
9888 kvfree(dev->_tx);
9889}
9890
9891static int netif_alloc_netdev_queues(struct net_device *dev)
9892{
9893 unsigned int count = dev->num_tx_queues;
9894 struct netdev_queue *tx;
9895 size_t sz = count * sizeof(*tx);
9896
9897 if (count < 1 || count > 0xffff)
9898 return -EINVAL;
9899
9900 tx = kvzalloc(sz, GFP_KERNEL_ACCOUNT | __GFP_RETRY_MAYFAIL);
9901 if (!tx)
9902 return -ENOMEM;
9903
9904 dev->_tx = tx;
9905
9906 netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL);
9907 spin_lock_init(&dev->tx_global_lock);
9908
9909 return 0;
9910}
9911
9912void netif_tx_stop_all_queues(struct net_device *dev)
9913{
9914 unsigned int i;
9915
9916 for (i = 0; i < dev->num_tx_queues; i++) {
9917 struct netdev_queue *txq = netdev_get_tx_queue(dev, i);
9918
9919 netif_tx_stop_queue(txq);
9920 }
9921}
9922EXPORT_SYMBOL(netif_tx_stop_all_queues);
9923
9924/**
9925 * register_netdevice() - register a network device
9926 * @dev: device to register
9927 *
9928 * Take a prepared network device structure and make it externally accessible.
9929 * A %NETDEV_REGISTER message is sent to the netdev notifier chain.
9930 * Callers must hold the rtnl lock - you may want register_netdev()
9931 * instead of this.
9932 */
9933int register_netdevice(struct net_device *dev)
9934{
9935 int ret;
9936 struct net *net = dev_net(dev);
9937
9938 BUILD_BUG_ON(sizeof(netdev_features_t) * BITS_PER_BYTE <
9939 NETDEV_FEATURE_COUNT);
9940 BUG_ON(dev_boot_phase);
9941 ASSERT_RTNL();
9942
9943 might_sleep();
9944
9945 /* When net_device's are persistent, this will be fatal. */
9946 BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
9947 BUG_ON(!net);
9948
9949 ret = ethtool_check_ops(dev->ethtool_ops);
9950 if (ret)
9951 return ret;
9952
9953 spin_lock_init(&dev->addr_list_lock);
9954 netdev_set_addr_lockdep_class(dev);
9955
9956 ret = dev_get_valid_name(net, dev, dev->name);
9957 if (ret < 0)
9958 goto out;
9959
9960 ret = -ENOMEM;
9961 dev->name_node = netdev_name_node_head_alloc(dev);
9962 if (!dev->name_node)
9963 goto out;
9964
9965 /* Init, if this function is available */
9966 if (dev->netdev_ops->ndo_init) {
9967 ret = dev->netdev_ops->ndo_init(dev);
9968 if (ret) {
9969 if (ret > 0)
9970 ret = -EIO;
9971 goto err_free_name;
9972 }
9973 }
9974
9975 if (((dev->hw_features | dev->features) &
9976 NETIF_F_HW_VLAN_CTAG_FILTER) &&
9977 (!dev->netdev_ops->ndo_vlan_rx_add_vid ||
9978 !dev->netdev_ops->ndo_vlan_rx_kill_vid)) {
9979 netdev_WARN(dev, "Buggy VLAN acceleration in driver!\n");
9980 ret = -EINVAL;
9981 goto err_uninit;
9982 }
9983
9984 ret = -EBUSY;
9985 if (!dev->ifindex)
9986 dev->ifindex = dev_new_index(net);
9987 else if (__dev_get_by_index(net, dev->ifindex))
9988 goto err_uninit;
9989
9990 /* Transfer changeable features to wanted_features and enable
9991 * software offloads (GSO and GRO).
9992 */
9993 dev->hw_features |= (NETIF_F_SOFT_FEATURES | NETIF_F_SOFT_FEATURES_OFF);
9994 dev->features |= NETIF_F_SOFT_FEATURES;
9995
9996 if (dev->udp_tunnel_nic_info) {
9997 dev->features |= NETIF_F_RX_UDP_TUNNEL_PORT;
9998 dev->hw_features |= NETIF_F_RX_UDP_TUNNEL_PORT;
9999 }
10000
10001 dev->wanted_features = dev->features & dev->hw_features;
10002
10003 if (!(dev->flags & IFF_LOOPBACK))
10004 dev->hw_features |= NETIF_F_NOCACHE_COPY;
10005
10006 /* If IPv4 TCP segmentation offload is supported we should also
10007 * allow the device to enable segmenting the frame with the option
10008 * of ignoring a static IP ID value. This doesn't enable the
10009 * feature itself but allows the user to enable it later.
10010 */
10011 if (dev->hw_features & NETIF_F_TSO)
10012 dev->hw_features |= NETIF_F_TSO_MANGLEID;
10013 if (dev->vlan_features & NETIF_F_TSO)
10014 dev->vlan_features |= NETIF_F_TSO_MANGLEID;
10015 if (dev->mpls_features & NETIF_F_TSO)
10016 dev->mpls_features |= NETIF_F_TSO_MANGLEID;
10017 if (dev->hw_enc_features & NETIF_F_TSO)
10018 dev->hw_enc_features |= NETIF_F_TSO_MANGLEID;
10019
10020 /* Make NETIF_F_HIGHDMA inheritable to VLAN devices.
10021 */
10022 dev->vlan_features |= NETIF_F_HIGHDMA;
10023
10024 /* Make NETIF_F_SG inheritable to tunnel devices.
10025 */
10026 dev->hw_enc_features |= NETIF_F_SG | NETIF_F_GSO_PARTIAL;
10027
10028 /* Make NETIF_F_SG inheritable to MPLS.
10029 */
10030 dev->mpls_features |= NETIF_F_SG;
10031
10032 ret = call_netdevice_notifiers(NETDEV_POST_INIT, dev);
10033 ret = notifier_to_errno(ret);
10034 if (ret)
10035 goto err_uninit;
10036
10037 ret = netdev_register_kobject(dev);
10038 write_lock(&dev_base_lock);
10039 dev->reg_state = ret ? NETREG_UNREGISTERED : NETREG_REGISTERED;
10040 write_unlock(&dev_base_lock);
10041 if (ret)
10042 goto err_uninit_notify;
10043
10044 __netdev_update_features(dev);
10045
10046 /*
10047 * Default initial state at registry is that the
10048 * device is present.
10049 */
10050
10051 set_bit(__LINK_STATE_PRESENT, &dev->state);
10052
10053 linkwatch_init_dev(dev);
10054
10055 dev_init_scheduler(dev);
10056
10057 netdev_hold(dev, &dev->dev_registered_tracker, GFP_KERNEL);
10058 list_netdevice(dev);
10059
10060 add_device_randomness(dev->dev_addr, dev->addr_len);
10061
10062 /* If the device has permanent device address, driver should
10063 * set dev_addr and also addr_assign_type should be set to
10064 * NET_ADDR_PERM (default value).
10065 */
10066 if (dev->addr_assign_type == NET_ADDR_PERM)
10067 memcpy(dev->perm_addr, dev->dev_addr, dev->addr_len);
10068
10069 /* Notify protocols, that a new device appeared. */
10070 ret = call_netdevice_notifiers(NETDEV_REGISTER, dev);
10071 ret = notifier_to_errno(ret);
10072 if (ret) {
10073 /* Expect explicit free_netdev() on failure */
10074 dev->needs_free_netdev = false;
10075 unregister_netdevice_queue(dev, NULL);
10076 goto out;
10077 }
10078 /*
10079 * Prevent userspace races by waiting until the network
10080 * device is fully setup before sending notifications.
10081 */
10082 if (!dev->rtnl_link_ops ||
10083 dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
10084 rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL, 0, NULL);
10085
10086out:
10087 return ret;
10088
10089err_uninit_notify:
10090 call_netdevice_notifiers(NETDEV_PRE_UNINIT, dev);
10091err_uninit:
10092 if (dev->netdev_ops->ndo_uninit)
10093 dev->netdev_ops->ndo_uninit(dev);
10094 if (dev->priv_destructor)
10095 dev->priv_destructor(dev);
10096err_free_name:
10097 netdev_name_node_free(dev->name_node);
10098 goto out;
10099}
10100EXPORT_SYMBOL(register_netdevice);
10101
10102/**
10103 * init_dummy_netdev - init a dummy network device for NAPI
10104 * @dev: device to init
10105 *
10106 * This takes a network device structure and initialize the minimum
10107 * amount of fields so it can be used to schedule NAPI polls without
10108 * registering a full blown interface. This is to be used by drivers
10109 * that need to tie several hardware interfaces to a single NAPI
10110 * poll scheduler due to HW limitations.
10111 */
10112int init_dummy_netdev(struct net_device *dev)
10113{
10114 /* Clear everything. Note we don't initialize spinlocks
10115 * are they aren't supposed to be taken by any of the
10116 * NAPI code and this dummy netdev is supposed to be
10117 * only ever used for NAPI polls
10118 */
10119 memset(dev, 0, sizeof(struct net_device));
10120
10121 /* make sure we BUG if trying to hit standard
10122 * register/unregister code path
10123 */
10124 dev->reg_state = NETREG_DUMMY;
10125
10126 /* NAPI wants this */
10127 INIT_LIST_HEAD(&dev->napi_list);
10128
10129 /* a dummy interface is started by default */
10130 set_bit(__LINK_STATE_PRESENT, &dev->state);
10131 set_bit(__LINK_STATE_START, &dev->state);
10132
10133 /* napi_busy_loop stats accounting wants this */
10134 dev_net_set(dev, &init_net);
10135
10136 /* Note : We dont allocate pcpu_refcnt for dummy devices,
10137 * because users of this 'device' dont need to change
10138 * its refcount.
10139 */
10140
10141 return 0;
10142}
10143EXPORT_SYMBOL_GPL(init_dummy_netdev);
10144
10145
10146/**
10147 * register_netdev - register a network device
10148 * @dev: device to register
10149 *
10150 * Take a completed network device structure and add it to the kernel
10151 * interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
10152 * chain. 0 is returned on success. A negative errno code is returned
10153 * on a failure to set up the device, or if the name is a duplicate.
10154 *
10155 * This is a wrapper around register_netdevice that takes the rtnl semaphore
10156 * and expands the device name if you passed a format string to
10157 * alloc_netdev.
10158 */
10159int register_netdev(struct net_device *dev)
10160{
10161 int err;
10162
10163 if (rtnl_lock_killable())
10164 return -EINTR;
10165 err = register_netdevice(dev);
10166 rtnl_unlock();
10167 return err;
10168}
10169EXPORT_SYMBOL(register_netdev);
10170
10171int netdev_refcnt_read(const struct net_device *dev)
10172{
10173#ifdef CONFIG_PCPU_DEV_REFCNT
10174 int i, refcnt = 0;
10175
10176 for_each_possible_cpu(i)
10177 refcnt += *per_cpu_ptr(dev->pcpu_refcnt, i);
10178 return refcnt;
10179#else
10180 return refcount_read(&dev->dev_refcnt);
10181#endif
10182}
10183EXPORT_SYMBOL(netdev_refcnt_read);
10184
10185int netdev_unregister_timeout_secs __read_mostly = 10;
10186
10187#define WAIT_REFS_MIN_MSECS 1
10188#define WAIT_REFS_MAX_MSECS 250
10189/**
10190 * netdev_wait_allrefs_any - wait until all references are gone.
10191 * @list: list of net_devices to wait on
10192 *
10193 * This is called when unregistering network devices.
10194 *
10195 * Any protocol or device that holds a reference should register
10196 * for netdevice notification, and cleanup and put back the
10197 * reference if they receive an UNREGISTER event.
10198 * We can get stuck here if buggy protocols don't correctly
10199 * call dev_put.
10200 */
10201static struct net_device *netdev_wait_allrefs_any(struct list_head *list)
10202{
10203 unsigned long rebroadcast_time, warning_time;
10204 struct net_device *dev;
10205 int wait = 0;
10206
10207 rebroadcast_time = warning_time = jiffies;
10208
10209 list_for_each_entry(dev, list, todo_list)
10210 if (netdev_refcnt_read(dev) == 1)
10211 return dev;
10212
10213 while (true) {
10214 if (time_after(jiffies, rebroadcast_time + 1 * HZ)) {
10215 rtnl_lock();
10216
10217 /* Rebroadcast unregister notification */
10218 list_for_each_entry(dev, list, todo_list)
10219 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
10220
10221 __rtnl_unlock();
10222 rcu_barrier();
10223 rtnl_lock();
10224
10225 list_for_each_entry(dev, list, todo_list)
10226 if (test_bit(__LINK_STATE_LINKWATCH_PENDING,
10227 &dev->state)) {
10228 /* We must not have linkwatch events
10229 * pending on unregister. If this
10230 * happens, we simply run the queue
10231 * unscheduled, resulting in a noop
10232 * for this device.
10233 */
10234 linkwatch_run_queue();
10235 break;
10236 }
10237
10238 __rtnl_unlock();
10239
10240 rebroadcast_time = jiffies;
10241 }
10242
10243 if (!wait) {
10244 rcu_barrier();
10245 wait = WAIT_REFS_MIN_MSECS;
10246 } else {
10247 msleep(wait);
10248 wait = min(wait << 1, WAIT_REFS_MAX_MSECS);
10249 }
10250
10251 list_for_each_entry(dev, list, todo_list)
10252 if (netdev_refcnt_read(dev) == 1)
10253 return dev;
10254
10255 if (time_after(jiffies, warning_time +
10256 READ_ONCE(netdev_unregister_timeout_secs) * HZ)) {
10257 list_for_each_entry(dev, list, todo_list) {
10258 pr_emerg("unregister_netdevice: waiting for %s to become free. Usage count = %d\n",
10259 dev->name, netdev_refcnt_read(dev));
10260 ref_tracker_dir_print(&dev->refcnt_tracker, 10);
10261 }
10262
10263 warning_time = jiffies;
10264 }
10265 }
10266}
10267
10268/* The sequence is:
10269 *
10270 * rtnl_lock();
10271 * ...
10272 * register_netdevice(x1);
10273 * register_netdevice(x2);
10274 * ...
10275 * unregister_netdevice(y1);
10276 * unregister_netdevice(y2);
10277 * ...
10278 * rtnl_unlock();
10279 * free_netdev(y1);
10280 * free_netdev(y2);
10281 *
10282 * We are invoked by rtnl_unlock().
10283 * This allows us to deal with problems:
10284 * 1) We can delete sysfs objects which invoke hotplug
10285 * without deadlocking with linkwatch via keventd.
10286 * 2) Since we run with the RTNL semaphore not held, we can sleep
10287 * safely in order to wait for the netdev refcnt to drop to zero.
10288 *
10289 * We must not return until all unregister events added during
10290 * the interval the lock was held have been completed.
10291 */
10292void netdev_run_todo(void)
10293{
10294 struct net_device *dev, *tmp;
10295 struct list_head list;
10296#ifdef CONFIG_LOCKDEP
10297 struct list_head unlink_list;
10298
10299 list_replace_init(&net_unlink_list, &unlink_list);
10300
10301 while (!list_empty(&unlink_list)) {
10302 struct net_device *dev = list_first_entry(&unlink_list,
10303 struct net_device,
10304 unlink_list);
10305 list_del_init(&dev->unlink_list);
10306 dev->nested_level = dev->lower_level - 1;
10307 }
10308#endif
10309
10310 /* Snapshot list, allow later requests */
10311 list_replace_init(&net_todo_list, &list);
10312
10313 __rtnl_unlock();
10314
10315 /* Wait for rcu callbacks to finish before next phase */
10316 if (!list_empty(&list))
10317 rcu_barrier();
10318
10319 list_for_each_entry_safe(dev, tmp, &list, todo_list) {
10320 if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) {
10321 netdev_WARN(dev, "run_todo but not unregistering\n");
10322 list_del(&dev->todo_list);
10323 continue;
10324 }
10325
10326 write_lock(&dev_base_lock);
10327 dev->reg_state = NETREG_UNREGISTERED;
10328 write_unlock(&dev_base_lock);
10329 linkwatch_forget_dev(dev);
10330 }
10331
10332 while (!list_empty(&list)) {
10333 dev = netdev_wait_allrefs_any(&list);
10334 list_del(&dev->todo_list);
10335
10336 /* paranoia */
10337 BUG_ON(netdev_refcnt_read(dev) != 1);
10338 BUG_ON(!list_empty(&dev->ptype_all));
10339 BUG_ON(!list_empty(&dev->ptype_specific));
10340 WARN_ON(rcu_access_pointer(dev->ip_ptr));
10341 WARN_ON(rcu_access_pointer(dev->ip6_ptr));
10342
10343 if (dev->priv_destructor)
10344 dev->priv_destructor(dev);
10345 if (dev->needs_free_netdev)
10346 free_netdev(dev);
10347
10348 if (atomic_dec_and_test(&dev_net(dev)->dev_unreg_count))
10349 wake_up(&netdev_unregistering_wq);
10350
10351 /* Free network device */
10352 kobject_put(&dev->dev.kobj);
10353 }
10354}
10355
10356/* Convert net_device_stats to rtnl_link_stats64. rtnl_link_stats64 has
10357 * all the same fields in the same order as net_device_stats, with only
10358 * the type differing, but rtnl_link_stats64 may have additional fields
10359 * at the end for newer counters.
10360 */
10361void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
10362 const struct net_device_stats *netdev_stats)
10363{
10364 size_t i, n = sizeof(*netdev_stats) / sizeof(atomic_long_t);
10365 const atomic_long_t *src = (atomic_long_t *)netdev_stats;
10366 u64 *dst = (u64 *)stats64;
10367
10368 BUILD_BUG_ON(n > sizeof(*stats64) / sizeof(u64));
10369 for (i = 0; i < n; i++)
10370 dst[i] = (unsigned long)atomic_long_read(&src[i]);
10371 /* zero out counters that only exist in rtnl_link_stats64 */
10372 memset((char *)stats64 + n * sizeof(u64), 0,
10373 sizeof(*stats64) - n * sizeof(u64));
10374}
10375EXPORT_SYMBOL(netdev_stats_to_stats64);
10376
10377struct net_device_core_stats __percpu *netdev_core_stats_alloc(struct net_device *dev)
10378{
10379 struct net_device_core_stats __percpu *p;
10380
10381 p = alloc_percpu_gfp(struct net_device_core_stats,
10382 GFP_ATOMIC | __GFP_NOWARN);
10383
10384 if (p && cmpxchg(&dev->core_stats, NULL, p))
10385 free_percpu(p);
10386
10387 /* This READ_ONCE() pairs with the cmpxchg() above */
10388 return READ_ONCE(dev->core_stats);
10389}
10390EXPORT_SYMBOL(netdev_core_stats_alloc);
10391
10392/**
10393 * dev_get_stats - get network device statistics
10394 * @dev: device to get statistics from
10395 * @storage: place to store stats
10396 *
10397 * Get network statistics from device. Return @storage.
10398 * The device driver may provide its own method by setting
10399 * dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats;
10400 * otherwise the internal statistics structure is used.
10401 */
10402struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
10403 struct rtnl_link_stats64 *storage)
10404{
10405 const struct net_device_ops *ops = dev->netdev_ops;
10406 const struct net_device_core_stats __percpu *p;
10407
10408 if (ops->ndo_get_stats64) {
10409 memset(storage, 0, sizeof(*storage));
10410 ops->ndo_get_stats64(dev, storage);
10411 } else if (ops->ndo_get_stats) {
10412 netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));
10413 } else {
10414 netdev_stats_to_stats64(storage, &dev->stats);
10415 }
10416
10417 /* This READ_ONCE() pairs with the write in netdev_core_stats_alloc() */
10418 p = READ_ONCE(dev->core_stats);
10419 if (p) {
10420 const struct net_device_core_stats *core_stats;
10421 int i;
10422
10423 for_each_possible_cpu(i) {
10424 core_stats = per_cpu_ptr(p, i);
10425 storage->rx_dropped += READ_ONCE(core_stats->rx_dropped);
10426 storage->tx_dropped += READ_ONCE(core_stats->tx_dropped);
10427 storage->rx_nohandler += READ_ONCE(core_stats->rx_nohandler);
10428 storage->rx_otherhost_dropped += READ_ONCE(core_stats->rx_otherhost_dropped);
10429 }
10430 }
10431 return storage;
10432}
10433EXPORT_SYMBOL(dev_get_stats);
10434
10435/**
10436 * dev_fetch_sw_netstats - get per-cpu network device statistics
10437 * @s: place to store stats
10438 * @netstats: per-cpu network stats to read from
10439 *
10440 * Read per-cpu network statistics and populate the related fields in @s.
10441 */
10442void dev_fetch_sw_netstats(struct rtnl_link_stats64 *s,
10443 const struct pcpu_sw_netstats __percpu *netstats)
10444{
10445 int cpu;
10446
10447 for_each_possible_cpu(cpu) {
10448 u64 rx_packets, rx_bytes, tx_packets, tx_bytes;
10449 const struct pcpu_sw_netstats *stats;
10450 unsigned int start;
10451
10452 stats = per_cpu_ptr(netstats, cpu);
10453 do {
10454 start = u64_stats_fetch_begin(&stats->syncp);
10455 rx_packets = u64_stats_read(&stats->rx_packets);
10456 rx_bytes = u64_stats_read(&stats->rx_bytes);
10457 tx_packets = u64_stats_read(&stats->tx_packets);
10458 tx_bytes = u64_stats_read(&stats->tx_bytes);
10459 } while (u64_stats_fetch_retry(&stats->syncp, start));
10460
10461 s->rx_packets += rx_packets;
10462 s->rx_bytes += rx_bytes;
10463 s->tx_packets += tx_packets;
10464 s->tx_bytes += tx_bytes;
10465 }
10466}
10467EXPORT_SYMBOL_GPL(dev_fetch_sw_netstats);
10468
10469/**
10470 * dev_get_tstats64 - ndo_get_stats64 implementation
10471 * @dev: device to get statistics from
10472 * @s: place to store stats
10473 *
10474 * Populate @s from dev->stats and dev->tstats. Can be used as
10475 * ndo_get_stats64() callback.
10476 */
10477void dev_get_tstats64(struct net_device *dev, struct rtnl_link_stats64 *s)
10478{
10479 netdev_stats_to_stats64(s, &dev->stats);
10480 dev_fetch_sw_netstats(s, dev->tstats);
10481}
10482EXPORT_SYMBOL_GPL(dev_get_tstats64);
10483
10484struct netdev_queue *dev_ingress_queue_create(struct net_device *dev)
10485{
10486 struct netdev_queue *queue = dev_ingress_queue(dev);
10487
10488#ifdef CONFIG_NET_CLS_ACT
10489 if (queue)
10490 return queue;
10491 queue = kzalloc(sizeof(*queue), GFP_KERNEL);
10492 if (!queue)
10493 return NULL;
10494 netdev_init_one_queue(dev, queue, NULL);
10495 RCU_INIT_POINTER(queue->qdisc, &noop_qdisc);
10496 queue->qdisc_sleeping = &noop_qdisc;
10497 rcu_assign_pointer(dev->ingress_queue, queue);
10498#endif
10499 return queue;
10500}
10501
10502static const struct ethtool_ops default_ethtool_ops;
10503
10504void netdev_set_default_ethtool_ops(struct net_device *dev,
10505 const struct ethtool_ops *ops)
10506{
10507 if (dev->ethtool_ops == &default_ethtool_ops)
10508 dev->ethtool_ops = ops;
10509}
10510EXPORT_SYMBOL_GPL(netdev_set_default_ethtool_ops);
10511
10512/**
10513 * netdev_sw_irq_coalesce_default_on() - enable SW IRQ coalescing by default
10514 * @dev: netdev to enable the IRQ coalescing on
10515 *
10516 * Sets a conservative default for SW IRQ coalescing. Users can use
10517 * sysfs attributes to override the default values.
10518 */
10519void netdev_sw_irq_coalesce_default_on(struct net_device *dev)
10520{
10521 WARN_ON(dev->reg_state == NETREG_REGISTERED);
10522
10523 dev->gro_flush_timeout = 20000;
10524 dev->napi_defer_hard_irqs = 1;
10525}
10526EXPORT_SYMBOL_GPL(netdev_sw_irq_coalesce_default_on);
10527
10528void netdev_freemem(struct net_device *dev)
10529{
10530 char *addr = (char *)dev - dev->padded;
10531
10532 kvfree(addr);
10533}
10534
10535/**
10536 * alloc_netdev_mqs - allocate network device
10537 * @sizeof_priv: size of private data to allocate space for
10538 * @name: device name format string
10539 * @name_assign_type: origin of device name
10540 * @setup: callback to initialize device
10541 * @txqs: the number of TX subqueues to allocate
10542 * @rxqs: the number of RX subqueues to allocate
10543 *
10544 * Allocates a struct net_device with private data area for driver use
10545 * and performs basic initialization. Also allocates subqueue structs
10546 * for each queue on the device.
10547 */
10548struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
10549 unsigned char name_assign_type,
10550 void (*setup)(struct net_device *),
10551 unsigned int txqs, unsigned int rxqs)
10552{
10553 struct net_device *dev;
10554 unsigned int alloc_size;
10555 struct net_device *p;
10556
10557 BUG_ON(strlen(name) >= sizeof(dev->name));
10558
10559 if (txqs < 1) {
10560 pr_err("alloc_netdev: Unable to allocate device with zero queues\n");
10561 return NULL;
10562 }
10563
10564 if (rxqs < 1) {
10565 pr_err("alloc_netdev: Unable to allocate device with zero RX queues\n");
10566 return NULL;
10567 }
10568
10569 alloc_size = sizeof(struct net_device);
10570 if (sizeof_priv) {
10571 /* ensure 32-byte alignment of private area */
10572 alloc_size = ALIGN(alloc_size, NETDEV_ALIGN);
10573 alloc_size += sizeof_priv;
10574 }
10575 /* ensure 32-byte alignment of whole construct */
10576 alloc_size += NETDEV_ALIGN - 1;
10577
10578 p = kvzalloc(alloc_size, GFP_KERNEL_ACCOUNT | __GFP_RETRY_MAYFAIL);
10579 if (!p)
10580 return NULL;
10581
10582 dev = PTR_ALIGN(p, NETDEV_ALIGN);
10583 dev->padded = (char *)dev - (char *)p;
10584
10585 ref_tracker_dir_init(&dev->refcnt_tracker, 128);
10586#ifdef CONFIG_PCPU_DEV_REFCNT
10587 dev->pcpu_refcnt = alloc_percpu(int);
10588 if (!dev->pcpu_refcnt)
10589 goto free_dev;
10590 __dev_hold(dev);
10591#else
10592 refcount_set(&dev->dev_refcnt, 1);
10593#endif
10594
10595 if (dev_addr_init(dev))
10596 goto free_pcpu;
10597
10598 dev_mc_init(dev);
10599 dev_uc_init(dev);
10600
10601 dev_net_set(dev, &init_net);
10602
10603 dev->gso_max_size = GSO_LEGACY_MAX_SIZE;
10604 dev->gso_max_segs = GSO_MAX_SEGS;
10605 dev->gro_max_size = GRO_LEGACY_MAX_SIZE;
10606 dev->tso_max_size = TSO_LEGACY_MAX_SIZE;
10607 dev->tso_max_segs = TSO_MAX_SEGS;
10608 dev->upper_level = 1;
10609 dev->lower_level = 1;
10610#ifdef CONFIG_LOCKDEP
10611 dev->nested_level = 0;
10612 INIT_LIST_HEAD(&dev->unlink_list);
10613#endif
10614
10615 INIT_LIST_HEAD(&dev->napi_list);
10616 INIT_LIST_HEAD(&dev->unreg_list);
10617 INIT_LIST_HEAD(&dev->close_list);
10618 INIT_LIST_HEAD(&dev->link_watch_list);
10619 INIT_LIST_HEAD(&dev->adj_list.upper);
10620 INIT_LIST_HEAD(&dev->adj_list.lower);
10621 INIT_LIST_HEAD(&dev->ptype_all);
10622 INIT_LIST_HEAD(&dev->ptype_specific);
10623 INIT_LIST_HEAD(&dev->net_notifier_list);
10624#ifdef CONFIG_NET_SCHED
10625 hash_init(dev->qdisc_hash);
10626#endif
10627 dev->priv_flags = IFF_XMIT_DST_RELEASE | IFF_XMIT_DST_RELEASE_PERM;
10628 setup(dev);
10629
10630 if (!dev->tx_queue_len) {
10631 dev->priv_flags |= IFF_NO_QUEUE;
10632 dev->tx_queue_len = DEFAULT_TX_QUEUE_LEN;
10633 }
10634
10635 dev->num_tx_queues = txqs;
10636 dev->real_num_tx_queues = txqs;
10637 if (netif_alloc_netdev_queues(dev))
10638 goto free_all;
10639
10640 dev->num_rx_queues = rxqs;
10641 dev->real_num_rx_queues = rxqs;
10642 if (netif_alloc_rx_queues(dev))
10643 goto free_all;
10644
10645 strcpy(dev->name, name);
10646 dev->name_assign_type = name_assign_type;
10647 dev->group = INIT_NETDEV_GROUP;
10648 if (!dev->ethtool_ops)
10649 dev->ethtool_ops = &default_ethtool_ops;
10650
10651 nf_hook_netdev_init(dev);
10652
10653 return dev;
10654
10655free_all:
10656 free_netdev(dev);
10657 return NULL;
10658
10659free_pcpu:
10660#ifdef CONFIG_PCPU_DEV_REFCNT
10661 free_percpu(dev->pcpu_refcnt);
10662free_dev:
10663#endif
10664 netdev_freemem(dev);
10665 return NULL;
10666}
10667EXPORT_SYMBOL(alloc_netdev_mqs);
10668
10669/**
10670 * free_netdev - free network device
10671 * @dev: device
10672 *
10673 * This function does the last stage of destroying an allocated device
10674 * interface. The reference to the device object is released. If this
10675 * is the last reference then it will be freed.Must be called in process
10676 * context.
10677 */
10678void free_netdev(struct net_device *dev)
10679{
10680 struct napi_struct *p, *n;
10681
10682 might_sleep();
10683
10684 /* When called immediately after register_netdevice() failed the unwind
10685 * handling may still be dismantling the device. Handle that case by
10686 * deferring the free.
10687 */
10688 if (dev->reg_state == NETREG_UNREGISTERING) {
10689 ASSERT_RTNL();
10690 dev->needs_free_netdev = true;
10691 return;
10692 }
10693
10694 netif_free_tx_queues(dev);
10695 netif_free_rx_queues(dev);
10696
10697 kfree(rcu_dereference_protected(dev->ingress_queue, 1));
10698
10699 /* Flush device addresses */
10700 dev_addr_flush(dev);
10701
10702 list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
10703 netif_napi_del(p);
10704
10705 ref_tracker_dir_exit(&dev->refcnt_tracker);
10706#ifdef CONFIG_PCPU_DEV_REFCNT
10707 free_percpu(dev->pcpu_refcnt);
10708 dev->pcpu_refcnt = NULL;
10709#endif
10710 free_percpu(dev->core_stats);
10711 dev->core_stats = NULL;
10712 free_percpu(dev->xdp_bulkq);
10713 dev->xdp_bulkq = NULL;
10714
10715 /* Compatibility with error handling in drivers */
10716 if (dev->reg_state == NETREG_UNINITIALIZED) {
10717 netdev_freemem(dev);
10718 return;
10719 }
10720
10721 BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
10722 dev->reg_state = NETREG_RELEASED;
10723
10724 /* will free via device release */
10725 put_device(&dev->dev);
10726}
10727EXPORT_SYMBOL(free_netdev);
10728
10729/**
10730 * synchronize_net - Synchronize with packet receive processing
10731 *
10732 * Wait for packets currently being received to be done.
10733 * Does not block later packets from starting.
10734 */
10735void synchronize_net(void)
10736{
10737 might_sleep();
10738 if (rtnl_is_locked())
10739 synchronize_rcu_expedited();
10740 else
10741 synchronize_rcu();
10742}
10743EXPORT_SYMBOL(synchronize_net);
10744
10745/**
10746 * unregister_netdevice_queue - remove device from the kernel
10747 * @dev: device
10748 * @head: list
10749 *
10750 * This function shuts down a device interface and removes it
10751 * from the kernel tables.
10752 * If head not NULL, device is queued to be unregistered later.
10753 *
10754 * Callers must hold the rtnl semaphore. You may want
10755 * unregister_netdev() instead of this.
10756 */
10757
10758void unregister_netdevice_queue(struct net_device *dev, struct list_head *head)
10759{
10760 ASSERT_RTNL();
10761
10762 if (head) {
10763 list_move_tail(&dev->unreg_list, head);
10764 } else {
10765 LIST_HEAD(single);
10766
10767 list_add(&dev->unreg_list, &single);
10768 unregister_netdevice_many(&single);
10769 }
10770}
10771EXPORT_SYMBOL(unregister_netdevice_queue);
10772
10773void unregister_netdevice_many_notify(struct list_head *head,
10774 u32 portid, const struct nlmsghdr *nlh)
10775{
10776 struct net_device *dev, *tmp;
10777 LIST_HEAD(close_head);
10778
10779 BUG_ON(dev_boot_phase);
10780 ASSERT_RTNL();
10781
10782 if (list_empty(head))
10783 return;
10784
10785 list_for_each_entry_safe(dev, tmp, head, unreg_list) {
10786 /* Some devices call without registering
10787 * for initialization unwind. Remove those
10788 * devices and proceed with the remaining.
10789 */
10790 if (dev->reg_state == NETREG_UNINITIALIZED) {
10791 pr_debug("unregister_netdevice: device %s/%p never was registered\n",
10792 dev->name, dev);
10793
10794 WARN_ON(1);
10795 list_del(&dev->unreg_list);
10796 continue;
10797 }
10798 dev->dismantle = true;
10799 BUG_ON(dev->reg_state != NETREG_REGISTERED);
10800 }
10801
10802 /* If device is running, close it first. */
10803 list_for_each_entry(dev, head, unreg_list)
10804 list_add_tail(&dev->close_list, &close_head);
10805 dev_close_many(&close_head, true);
10806
10807 list_for_each_entry(dev, head, unreg_list) {
10808 /* And unlink it from device chain. */
10809 write_lock(&dev_base_lock);
10810 unlist_netdevice(dev, false);
10811 dev->reg_state = NETREG_UNREGISTERING;
10812 write_unlock(&dev_base_lock);
10813 }
10814 flush_all_backlogs();
10815
10816 synchronize_net();
10817
10818 list_for_each_entry(dev, head, unreg_list) {
10819 struct sk_buff *skb = NULL;
10820
10821 /* Shutdown queueing discipline. */
10822 dev_shutdown(dev);
10823
10824 dev_xdp_uninstall(dev);
10825
10826 netdev_offload_xstats_disable_all(dev);
10827
10828 /* Notify protocols, that we are about to destroy
10829 * this device. They should clean all the things.
10830 */
10831 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
10832
10833 if (!dev->rtnl_link_ops ||
10834 dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
10835 skb = rtmsg_ifinfo_build_skb(RTM_DELLINK, dev, ~0U, 0,
10836 GFP_KERNEL, NULL, 0,
10837 portid, nlmsg_seq(nlh));
10838
10839 /*
10840 * Flush the unicast and multicast chains
10841 */
10842 dev_uc_flush(dev);
10843 dev_mc_flush(dev);
10844
10845 netdev_name_node_alt_flush(dev);
10846 netdev_name_node_free(dev->name_node);
10847
10848 call_netdevice_notifiers(NETDEV_PRE_UNINIT, dev);
10849
10850 if (dev->netdev_ops->ndo_uninit)
10851 dev->netdev_ops->ndo_uninit(dev);
10852
10853 if (skb)
10854 rtmsg_ifinfo_send(skb, dev, GFP_KERNEL, portid, nlh);
10855
10856 /* Notifier chain MUST detach us all upper devices. */
10857 WARN_ON(netdev_has_any_upper_dev(dev));
10858 WARN_ON(netdev_has_any_lower_dev(dev));
10859
10860 /* Remove entries from kobject tree */
10861 netdev_unregister_kobject(dev);
10862#ifdef CONFIG_XPS
10863 /* Remove XPS queueing entries */
10864 netif_reset_xps_queues_gt(dev, 0);
10865#endif
10866 }
10867
10868 synchronize_net();
10869
10870 list_for_each_entry(dev, head, unreg_list) {
10871 netdev_put(dev, &dev->dev_registered_tracker);
10872 net_set_todo(dev);
10873 }
10874
10875 list_del(head);
10876}
10877
10878/**
10879 * unregister_netdevice_many - unregister many devices
10880 * @head: list of devices
10881 *
10882 * Note: As most callers use a stack allocated list_head,
10883 * we force a list_del() to make sure stack wont be corrupted later.
10884 */
10885void unregister_netdevice_many(struct list_head *head)
10886{
10887 unregister_netdevice_many_notify(head, 0, NULL);
10888}
10889EXPORT_SYMBOL(unregister_netdevice_many);
10890
10891/**
10892 * unregister_netdev - remove device from the kernel
10893 * @dev: device
10894 *
10895 * This function shuts down a device interface and removes it
10896 * from the kernel tables.
10897 *
10898 * This is just a wrapper for unregister_netdevice that takes
10899 * the rtnl semaphore. In general you want to use this and not
10900 * unregister_netdevice.
10901 */
10902void unregister_netdev(struct net_device *dev)
10903{
10904 rtnl_lock();
10905 unregister_netdevice(dev);
10906 rtnl_unlock();
10907}
10908EXPORT_SYMBOL(unregister_netdev);
10909
10910/**
10911 * __dev_change_net_namespace - move device to different nethost namespace
10912 * @dev: device
10913 * @net: network namespace
10914 * @pat: If not NULL name pattern to try if the current device name
10915 * is already taken in the destination network namespace.
10916 * @new_ifindex: If not zero, specifies device index in the target
10917 * namespace.
10918 *
10919 * This function shuts down a device interface and moves it
10920 * to a new network namespace. On success 0 is returned, on
10921 * a failure a netagive errno code is returned.
10922 *
10923 * Callers must hold the rtnl semaphore.
10924 */
10925
10926int __dev_change_net_namespace(struct net_device *dev, struct net *net,
10927 const char *pat, int new_ifindex)
10928{
10929 struct net *net_old = dev_net(dev);
10930 int err, new_nsid;
10931
10932 ASSERT_RTNL();
10933
10934 /* Don't allow namespace local devices to be moved. */
10935 err = -EINVAL;
10936 if (dev->features & NETIF_F_NETNS_LOCAL)
10937 goto out;
10938
10939 /* Ensure the device has been registrered */
10940 if (dev->reg_state != NETREG_REGISTERED)
10941 goto out;
10942
10943 /* Get out if there is nothing todo */
10944 err = 0;
10945 if (net_eq(net_old, net))
10946 goto out;
10947
10948 /* Pick the destination device name, and ensure
10949 * we can use it in the destination network namespace.
10950 */
10951 err = -EEXIST;
10952 if (netdev_name_in_use(net, dev->name)) {
10953 /* We get here if we can't use the current device name */
10954 if (!pat)
10955 goto out;
10956 err = dev_get_valid_name(net, dev, pat);
10957 if (err < 0)
10958 goto out;
10959 }
10960
10961 /* Check that new_ifindex isn't used yet. */
10962 err = -EBUSY;
10963 if (new_ifindex && __dev_get_by_index(net, new_ifindex))
10964 goto out;
10965
10966 /*
10967 * And now a mini version of register_netdevice unregister_netdevice.
10968 */
10969
10970 /* If device is running close it first. */
10971 dev_close(dev);
10972
10973 /* And unlink it from device chain */
10974 unlist_netdevice(dev, true);
10975
10976 synchronize_net();
10977
10978 /* Shutdown queueing discipline. */
10979 dev_shutdown(dev);
10980
10981 /* Notify protocols, that we are about to destroy
10982 * this device. They should clean all the things.
10983 *
10984 * Note that dev->reg_state stays at NETREG_REGISTERED.
10985 * This is wanted because this way 8021q and macvlan know
10986 * the device is just moving and can keep their slaves up.
10987 */
10988 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
10989 rcu_barrier();
10990
10991 new_nsid = peernet2id_alloc(dev_net(dev), net, GFP_KERNEL);
10992 /* If there is an ifindex conflict assign a new one */
10993 if (!new_ifindex) {
10994 if (__dev_get_by_index(net, dev->ifindex))
10995 new_ifindex = dev_new_index(net);
10996 else
10997 new_ifindex = dev->ifindex;
10998 }
10999
11000 rtmsg_ifinfo_newnet(RTM_DELLINK, dev, ~0U, GFP_KERNEL, &new_nsid,
11001 new_ifindex);
11002
11003 /*
11004 * Flush the unicast and multicast chains
11005 */
11006 dev_uc_flush(dev);
11007 dev_mc_flush(dev);
11008
11009 /* Send a netdev-removed uevent to the old namespace */
11010 kobject_uevent(&dev->dev.kobj, KOBJ_REMOVE);
11011 netdev_adjacent_del_links(dev);
11012
11013 /* Move per-net netdevice notifiers that are following the netdevice */
11014 move_netdevice_notifiers_dev_net(dev, net);
11015
11016 /* Actually switch the network namespace */
11017 dev_net_set(dev, net);
11018 dev->ifindex = new_ifindex;
11019
11020 /* Send a netdev-add uevent to the new namespace */
11021 kobject_uevent(&dev->dev.kobj, KOBJ_ADD);
11022 netdev_adjacent_add_links(dev);
11023
11024 /* Fixup kobjects */
11025 err = device_rename(&dev->dev, dev->name);
11026 WARN_ON(err);
11027
11028 /* Adapt owner in case owning user namespace of target network
11029 * namespace is different from the original one.
11030 */
11031 err = netdev_change_owner(dev, net_old, net);
11032 WARN_ON(err);
11033
11034 /* Add the device back in the hashes */
11035 list_netdevice(dev);
11036
11037 /* Notify protocols, that a new device appeared. */
11038 call_netdevice_notifiers(NETDEV_REGISTER, dev);
11039
11040 /*
11041 * Prevent userspace races by waiting until the network
11042 * device is fully setup before sending notifications.
11043 */
11044 rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U, GFP_KERNEL, 0, NULL);
11045
11046 synchronize_net();
11047 err = 0;
11048out:
11049 return err;
11050}
11051EXPORT_SYMBOL_GPL(__dev_change_net_namespace);
11052
11053static int dev_cpu_dead(unsigned int oldcpu)
11054{
11055 struct sk_buff **list_skb;
11056 struct sk_buff *skb;
11057 unsigned int cpu;
11058 struct softnet_data *sd, *oldsd, *remsd = NULL;
11059
11060 local_irq_disable();
11061 cpu = smp_processor_id();
11062 sd = &per_cpu(softnet_data, cpu);
11063 oldsd = &per_cpu(softnet_data, oldcpu);
11064
11065 /* Find end of our completion_queue. */
11066 list_skb = &sd->completion_queue;
11067 while (*list_skb)
11068 list_skb = &(*list_skb)->next;
11069 /* Append completion queue from offline CPU. */
11070 *list_skb = oldsd->completion_queue;
11071 oldsd->completion_queue = NULL;
11072
11073 /* Append output queue from offline CPU. */
11074 if (oldsd->output_queue) {
11075 *sd->output_queue_tailp = oldsd->output_queue;
11076 sd->output_queue_tailp = oldsd->output_queue_tailp;
11077 oldsd->output_queue = NULL;
11078 oldsd->output_queue_tailp = &oldsd->output_queue;
11079 }
11080 /* Append NAPI poll list from offline CPU, with one exception :
11081 * process_backlog() must be called by cpu owning percpu backlog.
11082 * We properly handle process_queue & input_pkt_queue later.
11083 */
11084 while (!list_empty(&oldsd->poll_list)) {
11085 struct napi_struct *napi = list_first_entry(&oldsd->poll_list,
11086 struct napi_struct,
11087 poll_list);
11088
11089 list_del_init(&napi->poll_list);
11090 if (napi->poll == process_backlog)
11091 napi->state = 0;
11092 else
11093 ____napi_schedule(sd, napi);
11094 }
11095
11096 raise_softirq_irqoff(NET_TX_SOFTIRQ);
11097 local_irq_enable();
11098
11099#ifdef CONFIG_RPS
11100 remsd = oldsd->rps_ipi_list;
11101 oldsd->rps_ipi_list = NULL;
11102#endif
11103 /* send out pending IPI's on offline CPU */
11104 net_rps_send_ipi(remsd);
11105
11106 /* Process offline CPU's input_pkt_queue */
11107 while ((skb = __skb_dequeue(&oldsd->process_queue))) {
11108 netif_rx(skb);
11109 input_queue_head_incr(oldsd);
11110 }
11111 while ((skb = skb_dequeue(&oldsd->input_pkt_queue))) {
11112 netif_rx(skb);
11113 input_queue_head_incr(oldsd);
11114 }
11115
11116 return 0;
11117}
11118
11119/**
11120 * netdev_increment_features - increment feature set by one
11121 * @all: current feature set
11122 * @one: new feature set
11123 * @mask: mask feature set
11124 *
11125 * Computes a new feature set after adding a device with feature set
11126 * @one to the master device with current feature set @all. Will not
11127 * enable anything that is off in @mask. Returns the new feature set.
11128 */
11129netdev_features_t netdev_increment_features(netdev_features_t all,
11130 netdev_features_t one, netdev_features_t mask)
11131{
11132 if (mask & NETIF_F_HW_CSUM)
11133 mask |= NETIF_F_CSUM_MASK;
11134 mask |= NETIF_F_VLAN_CHALLENGED;
11135
11136 all |= one & (NETIF_F_ONE_FOR_ALL | NETIF_F_CSUM_MASK) & mask;
11137 all &= one | ~NETIF_F_ALL_FOR_ALL;
11138
11139 /* If one device supports hw checksumming, set for all. */
11140 if (all & NETIF_F_HW_CSUM)
11141 all &= ~(NETIF_F_CSUM_MASK & ~NETIF_F_HW_CSUM);
11142
11143 return all;
11144}
11145EXPORT_SYMBOL(netdev_increment_features);
11146
11147static struct hlist_head * __net_init netdev_create_hash(void)
11148{
11149 int i;
11150 struct hlist_head *hash;
11151
11152 hash = kmalloc_array(NETDEV_HASHENTRIES, sizeof(*hash), GFP_KERNEL);
11153 if (hash != NULL)
11154 for (i = 0; i < NETDEV_HASHENTRIES; i++)
11155 INIT_HLIST_HEAD(&hash[i]);
11156
11157 return hash;
11158}
11159
11160/* Initialize per network namespace state */
11161static int __net_init netdev_init(struct net *net)
11162{
11163 BUILD_BUG_ON(GRO_HASH_BUCKETS >
11164 8 * sizeof_field(struct napi_struct, gro_bitmask));
11165
11166 INIT_LIST_HEAD(&net->dev_base_head);
11167
11168 net->dev_name_head = netdev_create_hash();
11169 if (net->dev_name_head == NULL)
11170 goto err_name;
11171
11172 net->dev_index_head = netdev_create_hash();
11173 if (net->dev_index_head == NULL)
11174 goto err_idx;
11175
11176 RAW_INIT_NOTIFIER_HEAD(&net->netdev_chain);
11177
11178 return 0;
11179
11180err_idx:
11181 kfree(net->dev_name_head);
11182err_name:
11183 return -ENOMEM;
11184}
11185
11186/**
11187 * netdev_drivername - network driver for the device
11188 * @dev: network device
11189 *
11190 * Determine network driver for device.
11191 */
11192const char *netdev_drivername(const struct net_device *dev)
11193{
11194 const struct device_driver *driver;
11195 const struct device *parent;
11196 const char *empty = "";
11197
11198 parent = dev->dev.parent;
11199 if (!parent)
11200 return empty;
11201
11202 driver = parent->driver;
11203 if (driver && driver->name)
11204 return driver->name;
11205 return empty;
11206}
11207
11208static void __netdev_printk(const char *level, const struct net_device *dev,
11209 struct va_format *vaf)
11210{
11211 if (dev && dev->dev.parent) {
11212 dev_printk_emit(level[1] - '0',
11213 dev->dev.parent,
11214 "%s %s %s%s: %pV",
11215 dev_driver_string(dev->dev.parent),
11216 dev_name(dev->dev.parent),
11217 netdev_name(dev), netdev_reg_state(dev),
11218 vaf);
11219 } else if (dev) {
11220 printk("%s%s%s: %pV",
11221 level, netdev_name(dev), netdev_reg_state(dev), vaf);
11222 } else {
11223 printk("%s(NULL net_device): %pV", level, vaf);
11224 }
11225}
11226
11227void netdev_printk(const char *level, const struct net_device *dev,
11228 const char *format, ...)
11229{
11230 struct va_format vaf;
11231 va_list args;
11232
11233 va_start(args, format);
11234
11235 vaf.fmt = format;
11236 vaf.va = &args;
11237
11238 __netdev_printk(level, dev, &vaf);
11239
11240 va_end(args);
11241}
11242EXPORT_SYMBOL(netdev_printk);
11243
11244#define define_netdev_printk_level(func, level) \
11245void func(const struct net_device *dev, const char *fmt, ...) \
11246{ \
11247 struct va_format vaf; \
11248 va_list args; \
11249 \
11250 va_start(args, fmt); \
11251 \
11252 vaf.fmt = fmt; \
11253 vaf.va = &args; \
11254 \
11255 __netdev_printk(level, dev, &vaf); \
11256 \
11257 va_end(args); \
11258} \
11259EXPORT_SYMBOL(func);
11260
11261define_netdev_printk_level(netdev_emerg, KERN_EMERG);
11262define_netdev_printk_level(netdev_alert, KERN_ALERT);
11263define_netdev_printk_level(netdev_crit, KERN_CRIT);
11264define_netdev_printk_level(netdev_err, KERN_ERR);
11265define_netdev_printk_level(netdev_warn, KERN_WARNING);
11266define_netdev_printk_level(netdev_notice, KERN_NOTICE);
11267define_netdev_printk_level(netdev_info, KERN_INFO);
11268
11269static void __net_exit netdev_exit(struct net *net)
11270{
11271 kfree(net->dev_name_head);
11272 kfree(net->dev_index_head);
11273 if (net != &init_net)
11274 WARN_ON_ONCE(!list_empty(&net->dev_base_head));
11275}
11276
11277static struct pernet_operations __net_initdata netdev_net_ops = {
11278 .init = netdev_init,
11279 .exit = netdev_exit,
11280};
11281
11282static void __net_exit default_device_exit_net(struct net *net)
11283{
11284 struct net_device *dev, *aux;
11285 /*
11286 * Push all migratable network devices back to the
11287 * initial network namespace
11288 */
11289 ASSERT_RTNL();
11290 for_each_netdev_safe(net, dev, aux) {
11291 int err;
11292 char fb_name[IFNAMSIZ];
11293
11294 /* Ignore unmoveable devices (i.e. loopback) */
11295 if (dev->features & NETIF_F_NETNS_LOCAL)
11296 continue;
11297
11298 /* Leave virtual devices for the generic cleanup */
11299 if (dev->rtnl_link_ops && !dev->rtnl_link_ops->netns_refund)
11300 continue;
11301
11302 /* Push remaining network devices to init_net */
11303 snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);
11304 if (netdev_name_in_use(&init_net, fb_name))
11305 snprintf(fb_name, IFNAMSIZ, "dev%%d");
11306 err = dev_change_net_namespace(dev, &init_net, fb_name);
11307 if (err) {
11308 pr_emerg("%s: failed to move %s to init_net: %d\n",
11309 __func__, dev->name, err);
11310 BUG();
11311 }
11312 }
11313}
11314
11315static void __net_exit default_device_exit_batch(struct list_head *net_list)
11316{
11317 /* At exit all network devices most be removed from a network
11318 * namespace. Do this in the reverse order of registration.
11319 * Do this across as many network namespaces as possible to
11320 * improve batching efficiency.
11321 */
11322 struct net_device *dev;
11323 struct net *net;
11324 LIST_HEAD(dev_kill_list);
11325
11326 rtnl_lock();
11327 list_for_each_entry(net, net_list, exit_list) {
11328 default_device_exit_net(net);
11329 cond_resched();
11330 }
11331
11332 list_for_each_entry(net, net_list, exit_list) {
11333 for_each_netdev_reverse(net, dev) {
11334 if (dev->rtnl_link_ops && dev->rtnl_link_ops->dellink)
11335 dev->rtnl_link_ops->dellink(dev, &dev_kill_list);
11336 else
11337 unregister_netdevice_queue(dev, &dev_kill_list);
11338 }
11339 }
11340 unregister_netdevice_many(&dev_kill_list);
11341 rtnl_unlock();
11342}
11343
11344static struct pernet_operations __net_initdata default_device_ops = {
11345 .exit_batch = default_device_exit_batch,
11346};
11347
11348/*
11349 * Initialize the DEV module. At boot time this walks the device list and
11350 * unhooks any devices that fail to initialise (normally hardware not
11351 * present) and leaves us with a valid list of present and active devices.
11352 *
11353 */
11354
11355/*
11356 * This is called single threaded during boot, so no need
11357 * to take the rtnl semaphore.
11358 */
11359static int __init net_dev_init(void)
11360{
11361 int i, rc = -ENOMEM;
11362
11363 BUG_ON(!dev_boot_phase);
11364
11365 if (dev_proc_init())
11366 goto out;
11367
11368 if (netdev_kobject_init())
11369 goto out;
11370
11371 INIT_LIST_HEAD(&ptype_all);
11372 for (i = 0; i < PTYPE_HASH_SIZE; i++)
11373 INIT_LIST_HEAD(&ptype_base[i]);
11374
11375 if (register_pernet_subsys(&netdev_net_ops))
11376 goto out;
11377
11378 /*
11379 * Initialise the packet receive queues.
11380 */
11381
11382 for_each_possible_cpu(i) {
11383 struct work_struct *flush = per_cpu_ptr(&flush_works, i);
11384 struct softnet_data *sd = &per_cpu(softnet_data, i);
11385
11386 INIT_WORK(flush, flush_backlog);
11387
11388 skb_queue_head_init(&sd->input_pkt_queue);
11389 skb_queue_head_init(&sd->process_queue);
11390#ifdef CONFIG_XFRM_OFFLOAD
11391 skb_queue_head_init(&sd->xfrm_backlog);
11392#endif
11393 INIT_LIST_HEAD(&sd->poll_list);
11394 sd->output_queue_tailp = &sd->output_queue;
11395#ifdef CONFIG_RPS
11396 INIT_CSD(&sd->csd, rps_trigger_softirq, sd);
11397 sd->cpu = i;
11398#endif
11399 INIT_CSD(&sd->defer_csd, trigger_rx_softirq, sd);
11400 spin_lock_init(&sd->defer_lock);
11401
11402 init_gro_hash(&sd->backlog);
11403 sd->backlog.poll = process_backlog;
11404 sd->backlog.weight = weight_p;
11405 }
11406
11407 dev_boot_phase = 0;
11408
11409 /* The loopback device is special if any other network devices
11410 * is present in a network namespace the loopback device must
11411 * be present. Since we now dynamically allocate and free the
11412 * loopback device ensure this invariant is maintained by
11413 * keeping the loopback device as the first device on the
11414 * list of network devices. Ensuring the loopback devices
11415 * is the first device that appears and the last network device
11416 * that disappears.
11417 */
11418 if (register_pernet_device(&loopback_net_ops))
11419 goto out;
11420
11421 if (register_pernet_device(&default_device_ops))
11422 goto out;
11423
11424 open_softirq(NET_TX_SOFTIRQ, net_tx_action);
11425 open_softirq(NET_RX_SOFTIRQ, net_rx_action);
11426
11427 rc = cpuhp_setup_state_nocalls(CPUHP_NET_DEV_DEAD, "net/dev:dead",
11428 NULL, dev_cpu_dead);
11429 WARN_ON(rc < 0);
11430 rc = 0;
11431out:
11432 return rc;
11433}
11434
11435subsys_initcall(net_dev_init);
1/*
2 * NET3 Protocol independent device support routines.
3 *
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License
6 * as published by the Free Software Foundation; either version
7 * 2 of the License, or (at your option) any later version.
8 *
9 * Derived from the non IP parts of dev.c 1.0.19
10 * Authors: Ross Biro
11 * Fred N. van Kempen, <waltje@uWalt.NL.Mugnet.ORG>
12 * Mark Evans, <evansmp@uhura.aston.ac.uk>
13 *
14 * Additional Authors:
15 * Florian la Roche <rzsfl@rz.uni-sb.de>
16 * Alan Cox <gw4pts@gw4pts.ampr.org>
17 * David Hinds <dahinds@users.sourceforge.net>
18 * Alexey Kuznetsov <kuznet@ms2.inr.ac.ru>
19 * Adam Sulmicki <adam@cfar.umd.edu>
20 * Pekka Riikonen <priikone@poesidon.pspt.fi>
21 *
22 * Changes:
23 * D.J. Barrow : Fixed bug where dev->refcnt gets set
24 * to 2 if register_netdev gets called
25 * before net_dev_init & also removed a
26 * few lines of code in the process.
27 * Alan Cox : device private ioctl copies fields back.
28 * Alan Cox : Transmit queue code does relevant
29 * stunts to keep the queue safe.
30 * Alan Cox : Fixed double lock.
31 * Alan Cox : Fixed promisc NULL pointer trap
32 * ???????? : Support the full private ioctl range
33 * Alan Cox : Moved ioctl permission check into
34 * drivers
35 * Tim Kordas : SIOCADDMULTI/SIOCDELMULTI
36 * Alan Cox : 100 backlog just doesn't cut it when
37 * you start doing multicast video 8)
38 * Alan Cox : Rewrote net_bh and list manager.
39 * Alan Cox : Fix ETH_P_ALL echoback lengths.
40 * Alan Cox : Took out transmit every packet pass
41 * Saved a few bytes in the ioctl handler
42 * Alan Cox : Network driver sets packet type before
43 * calling netif_rx. Saves a function
44 * call a packet.
45 * Alan Cox : Hashed net_bh()
46 * Richard Kooijman: Timestamp fixes.
47 * Alan Cox : Wrong field in SIOCGIFDSTADDR
48 * Alan Cox : Device lock protection.
49 * Alan Cox : Fixed nasty side effect of device close
50 * changes.
51 * Rudi Cilibrasi : Pass the right thing to
52 * set_mac_address()
53 * Dave Miller : 32bit quantity for the device lock to
54 * make it work out on a Sparc.
55 * Bjorn Ekwall : Added KERNELD hack.
56 * Alan Cox : Cleaned up the backlog initialise.
57 * Craig Metz : SIOCGIFCONF fix if space for under
58 * 1 device.
59 * Thomas Bogendoerfer : Return ENODEV for dev_open, if there
60 * is no device open function.
61 * Andi Kleen : Fix error reporting for SIOCGIFCONF
62 * Michael Chastain : Fix signed/unsigned for SIOCGIFCONF
63 * Cyrus Durgin : Cleaned for KMOD
64 * Adam Sulmicki : Bug Fix : Network Device Unload
65 * A network device unload needs to purge
66 * the backlog queue.
67 * Paul Rusty Russell : SIOCSIFNAME
68 * Pekka Riikonen : Netdev boot-time settings code
69 * Andrew Morton : Make unregister_netdevice wait
70 * indefinitely on dev->refcnt
71 * J Hadi Salim : - Backlog queue sampling
72 * - netif_rx() feedback
73 */
74
75#include <asm/uaccess.h>
76#include <asm/system.h>
77#include <linux/bitops.h>
78#include <linux/capability.h>
79#include <linux/cpu.h>
80#include <linux/types.h>
81#include <linux/kernel.h>
82#include <linux/hash.h>
83#include <linux/slab.h>
84#include <linux/sched.h>
85#include <linux/mutex.h>
86#include <linux/string.h>
87#include <linux/mm.h>
88#include <linux/socket.h>
89#include <linux/sockios.h>
90#include <linux/errno.h>
91#include <linux/interrupt.h>
92#include <linux/if_ether.h>
93#include <linux/netdevice.h>
94#include <linux/etherdevice.h>
95#include <linux/ethtool.h>
96#include <linux/notifier.h>
97#include <linux/skbuff.h>
98#include <net/net_namespace.h>
99#include <net/sock.h>
100#include <linux/rtnetlink.h>
101#include <linux/proc_fs.h>
102#include <linux/seq_file.h>
103#include <linux/stat.h>
104#include <net/dst.h>
105#include <net/pkt_sched.h>
106#include <net/checksum.h>
107#include <net/xfrm.h>
108#include <linux/highmem.h>
109#include <linux/init.h>
110#include <linux/kmod.h>
111#include <linux/module.h>
112#include <linux/netpoll.h>
113#include <linux/rcupdate.h>
114#include <linux/delay.h>
115#include <net/wext.h>
116#include <net/iw_handler.h>
117#include <asm/current.h>
118#include <linux/audit.h>
119#include <linux/dmaengine.h>
120#include <linux/err.h>
121#include <linux/ctype.h>
122#include <linux/if_arp.h>
123#include <linux/if_vlan.h>
124#include <linux/ip.h>
125#include <net/ip.h>
126#include <linux/ipv6.h>
127#include <linux/in.h>
128#include <linux/jhash.h>
129#include <linux/random.h>
130#include <trace/events/napi.h>
131#include <trace/events/net.h>
132#include <trace/events/skb.h>
133#include <linux/pci.h>
134#include <linux/inetdevice.h>
135#include <linux/cpu_rmap.h>
136
137#include "net-sysfs.h"
138
139/* Instead of increasing this, you should create a hash table. */
140#define MAX_GRO_SKBS 8
141
142/* This should be increased if a protocol with a bigger head is added. */
143#define GRO_MAX_HEAD (MAX_HEADER + 128)
144
145/*
146 * The list of packet types we will receive (as opposed to discard)
147 * and the routines to invoke.
148 *
149 * Why 16. Because with 16 the only overlap we get on a hash of the
150 * low nibble of the protocol value is RARP/SNAP/X.25.
151 *
152 * NOTE: That is no longer true with the addition of VLAN tags. Not
153 * sure which should go first, but I bet it won't make much
154 * difference if we are running VLANs. The good news is that
155 * this protocol won't be in the list unless compiled in, so
156 * the average user (w/out VLANs) will not be adversely affected.
157 * --BLG
158 *
159 * 0800 IP
160 * 8100 802.1Q VLAN
161 * 0001 802.3
162 * 0002 AX.25
163 * 0004 802.2
164 * 8035 RARP
165 * 0005 SNAP
166 * 0805 X.25
167 * 0806 ARP
168 * 8137 IPX
169 * 0009 Localtalk
170 * 86DD IPv6
171 */
172
173#define PTYPE_HASH_SIZE (16)
174#define PTYPE_HASH_MASK (PTYPE_HASH_SIZE - 1)
175
176static DEFINE_SPINLOCK(ptype_lock);
177static struct list_head ptype_base[PTYPE_HASH_SIZE] __read_mostly;
178static struct list_head ptype_all __read_mostly; /* Taps */
179
180/*
181 * The @dev_base_head list is protected by @dev_base_lock and the rtnl
182 * semaphore.
183 *
184 * Pure readers hold dev_base_lock for reading, or rcu_read_lock()
185 *
186 * Writers must hold the rtnl semaphore while they loop through the
187 * dev_base_head list, and hold dev_base_lock for writing when they do the
188 * actual updates. This allows pure readers to access the list even
189 * while a writer is preparing to update it.
190 *
191 * To put it another way, dev_base_lock is held for writing only to
192 * protect against pure readers; the rtnl semaphore provides the
193 * protection against other writers.
194 *
195 * See, for example usages, register_netdevice() and
196 * unregister_netdevice(), which must be called with the rtnl
197 * semaphore held.
198 */
199DEFINE_RWLOCK(dev_base_lock);
200EXPORT_SYMBOL(dev_base_lock);
201
202static inline void dev_base_seq_inc(struct net *net)
203{
204 while (++net->dev_base_seq == 0);
205}
206
207static inline struct hlist_head *dev_name_hash(struct net *net, const char *name)
208{
209 unsigned hash = full_name_hash(name, strnlen(name, IFNAMSIZ));
210 return &net->dev_name_head[hash_32(hash, NETDEV_HASHBITS)];
211}
212
213static inline struct hlist_head *dev_index_hash(struct net *net, int ifindex)
214{
215 return &net->dev_index_head[ifindex & (NETDEV_HASHENTRIES - 1)];
216}
217
218static inline void rps_lock(struct softnet_data *sd)
219{
220#ifdef CONFIG_RPS
221 spin_lock(&sd->input_pkt_queue.lock);
222#endif
223}
224
225static inline void rps_unlock(struct softnet_data *sd)
226{
227#ifdef CONFIG_RPS
228 spin_unlock(&sd->input_pkt_queue.lock);
229#endif
230}
231
232/* Device list insertion */
233static int list_netdevice(struct net_device *dev)
234{
235 struct net *net = dev_net(dev);
236
237 ASSERT_RTNL();
238
239 write_lock_bh(&dev_base_lock);
240 list_add_tail_rcu(&dev->dev_list, &net->dev_base_head);
241 hlist_add_head_rcu(&dev->name_hlist, dev_name_hash(net, dev->name));
242 hlist_add_head_rcu(&dev->index_hlist,
243 dev_index_hash(net, dev->ifindex));
244 write_unlock_bh(&dev_base_lock);
245
246 dev_base_seq_inc(net);
247
248 return 0;
249}
250
251/* Device list removal
252 * caller must respect a RCU grace period before freeing/reusing dev
253 */
254static void unlist_netdevice(struct net_device *dev)
255{
256 ASSERT_RTNL();
257
258 /* Unlink dev from the device chain */
259 write_lock_bh(&dev_base_lock);
260 list_del_rcu(&dev->dev_list);
261 hlist_del_rcu(&dev->name_hlist);
262 hlist_del_rcu(&dev->index_hlist);
263 write_unlock_bh(&dev_base_lock);
264
265 dev_base_seq_inc(dev_net(dev));
266}
267
268/*
269 * Our notifier list
270 */
271
272static RAW_NOTIFIER_HEAD(netdev_chain);
273
274/*
275 * Device drivers call our routines to queue packets here. We empty the
276 * queue in the local softnet handler.
277 */
278
279DEFINE_PER_CPU_ALIGNED(struct softnet_data, softnet_data);
280EXPORT_PER_CPU_SYMBOL(softnet_data);
281
282#ifdef CONFIG_LOCKDEP
283/*
284 * register_netdevice() inits txq->_xmit_lock and sets lockdep class
285 * according to dev->type
286 */
287static const unsigned short netdev_lock_type[] =
288 {ARPHRD_NETROM, ARPHRD_ETHER, ARPHRD_EETHER, ARPHRD_AX25,
289 ARPHRD_PRONET, ARPHRD_CHAOS, ARPHRD_IEEE802, ARPHRD_ARCNET,
290 ARPHRD_APPLETLK, ARPHRD_DLCI, ARPHRD_ATM, ARPHRD_METRICOM,
291 ARPHRD_IEEE1394, ARPHRD_EUI64, ARPHRD_INFINIBAND, ARPHRD_SLIP,
292 ARPHRD_CSLIP, ARPHRD_SLIP6, ARPHRD_CSLIP6, ARPHRD_RSRVD,
293 ARPHRD_ADAPT, ARPHRD_ROSE, ARPHRD_X25, ARPHRD_HWX25,
294 ARPHRD_PPP, ARPHRD_CISCO, ARPHRD_LAPB, ARPHRD_DDCMP,
295 ARPHRD_RAWHDLC, ARPHRD_TUNNEL, ARPHRD_TUNNEL6, ARPHRD_FRAD,
296 ARPHRD_SKIP, ARPHRD_LOOPBACK, ARPHRD_LOCALTLK, ARPHRD_FDDI,
297 ARPHRD_BIF, ARPHRD_SIT, ARPHRD_IPDDP, ARPHRD_IPGRE,
298 ARPHRD_PIMREG, ARPHRD_HIPPI, ARPHRD_ASH, ARPHRD_ECONET,
299 ARPHRD_IRDA, ARPHRD_FCPP, ARPHRD_FCAL, ARPHRD_FCPL,
300 ARPHRD_FCFABRIC, ARPHRD_IEEE802_TR, ARPHRD_IEEE80211,
301 ARPHRD_IEEE80211_PRISM, ARPHRD_IEEE80211_RADIOTAP, ARPHRD_PHONET,
302 ARPHRD_PHONET_PIPE, ARPHRD_IEEE802154,
303 ARPHRD_VOID, ARPHRD_NONE};
304
305static const char *const netdev_lock_name[] =
306 {"_xmit_NETROM", "_xmit_ETHER", "_xmit_EETHER", "_xmit_AX25",
307 "_xmit_PRONET", "_xmit_CHAOS", "_xmit_IEEE802", "_xmit_ARCNET",
308 "_xmit_APPLETLK", "_xmit_DLCI", "_xmit_ATM", "_xmit_METRICOM",
309 "_xmit_IEEE1394", "_xmit_EUI64", "_xmit_INFINIBAND", "_xmit_SLIP",
310 "_xmit_CSLIP", "_xmit_SLIP6", "_xmit_CSLIP6", "_xmit_RSRVD",
311 "_xmit_ADAPT", "_xmit_ROSE", "_xmit_X25", "_xmit_HWX25",
312 "_xmit_PPP", "_xmit_CISCO", "_xmit_LAPB", "_xmit_DDCMP",
313 "_xmit_RAWHDLC", "_xmit_TUNNEL", "_xmit_TUNNEL6", "_xmit_FRAD",
314 "_xmit_SKIP", "_xmit_LOOPBACK", "_xmit_LOCALTLK", "_xmit_FDDI",
315 "_xmit_BIF", "_xmit_SIT", "_xmit_IPDDP", "_xmit_IPGRE",
316 "_xmit_PIMREG", "_xmit_HIPPI", "_xmit_ASH", "_xmit_ECONET",
317 "_xmit_IRDA", "_xmit_FCPP", "_xmit_FCAL", "_xmit_FCPL",
318 "_xmit_FCFABRIC", "_xmit_IEEE802_TR", "_xmit_IEEE80211",
319 "_xmit_IEEE80211_PRISM", "_xmit_IEEE80211_RADIOTAP", "_xmit_PHONET",
320 "_xmit_PHONET_PIPE", "_xmit_IEEE802154",
321 "_xmit_VOID", "_xmit_NONE"};
322
323static struct lock_class_key netdev_xmit_lock_key[ARRAY_SIZE(netdev_lock_type)];
324static struct lock_class_key netdev_addr_lock_key[ARRAY_SIZE(netdev_lock_type)];
325
326static inline unsigned short netdev_lock_pos(unsigned short dev_type)
327{
328 int i;
329
330 for (i = 0; i < ARRAY_SIZE(netdev_lock_type); i++)
331 if (netdev_lock_type[i] == dev_type)
332 return i;
333 /* the last key is used by default */
334 return ARRAY_SIZE(netdev_lock_type) - 1;
335}
336
337static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
338 unsigned short dev_type)
339{
340 int i;
341
342 i = netdev_lock_pos(dev_type);
343 lockdep_set_class_and_name(lock, &netdev_xmit_lock_key[i],
344 netdev_lock_name[i]);
345}
346
347static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
348{
349 int i;
350
351 i = netdev_lock_pos(dev->type);
352 lockdep_set_class_and_name(&dev->addr_list_lock,
353 &netdev_addr_lock_key[i],
354 netdev_lock_name[i]);
355}
356#else
357static inline void netdev_set_xmit_lockdep_class(spinlock_t *lock,
358 unsigned short dev_type)
359{
360}
361static inline void netdev_set_addr_lockdep_class(struct net_device *dev)
362{
363}
364#endif
365
366/*******************************************************************************
367
368 Protocol management and registration routines
369
370*******************************************************************************/
371
372/*
373 * Add a protocol ID to the list. Now that the input handler is
374 * smarter we can dispense with all the messy stuff that used to be
375 * here.
376 *
377 * BEWARE!!! Protocol handlers, mangling input packets,
378 * MUST BE last in hash buckets and checking protocol handlers
379 * MUST start from promiscuous ptype_all chain in net_bh.
380 * It is true now, do not change it.
381 * Explanation follows: if protocol handler, mangling packet, will
382 * be the first on list, it is not able to sense, that packet
383 * is cloned and should be copied-on-write, so that it will
384 * change it and subsequent readers will get broken packet.
385 * --ANK (980803)
386 */
387
388static inline struct list_head *ptype_head(const struct packet_type *pt)
389{
390 if (pt->type == htons(ETH_P_ALL))
391 return &ptype_all;
392 else
393 return &ptype_base[ntohs(pt->type) & PTYPE_HASH_MASK];
394}
395
396/**
397 * dev_add_pack - add packet handler
398 * @pt: packet type declaration
399 *
400 * Add a protocol handler to the networking stack. The passed &packet_type
401 * is linked into kernel lists and may not be freed until it has been
402 * removed from the kernel lists.
403 *
404 * This call does not sleep therefore it can not
405 * guarantee all CPU's that are in middle of receiving packets
406 * will see the new packet type (until the next received packet).
407 */
408
409void dev_add_pack(struct packet_type *pt)
410{
411 struct list_head *head = ptype_head(pt);
412
413 spin_lock(&ptype_lock);
414 list_add_rcu(&pt->list, head);
415 spin_unlock(&ptype_lock);
416}
417EXPORT_SYMBOL(dev_add_pack);
418
419/**
420 * __dev_remove_pack - remove packet handler
421 * @pt: packet type declaration
422 *
423 * Remove a protocol handler that was previously added to the kernel
424 * protocol handlers by dev_add_pack(). The passed &packet_type is removed
425 * from the kernel lists and can be freed or reused once this function
426 * returns.
427 *
428 * The packet type might still be in use by receivers
429 * and must not be freed until after all the CPU's have gone
430 * through a quiescent state.
431 */
432void __dev_remove_pack(struct packet_type *pt)
433{
434 struct list_head *head = ptype_head(pt);
435 struct packet_type *pt1;
436
437 spin_lock(&ptype_lock);
438
439 list_for_each_entry(pt1, head, list) {
440 if (pt == pt1) {
441 list_del_rcu(&pt->list);
442 goto out;
443 }
444 }
445
446 printk(KERN_WARNING "dev_remove_pack: %p not found.\n", pt);
447out:
448 spin_unlock(&ptype_lock);
449}
450EXPORT_SYMBOL(__dev_remove_pack);
451
452/**
453 * dev_remove_pack - remove packet handler
454 * @pt: packet type declaration
455 *
456 * Remove a protocol handler that was previously added to the kernel
457 * protocol handlers by dev_add_pack(). The passed &packet_type is removed
458 * from the kernel lists and can be freed or reused once this function
459 * returns.
460 *
461 * This call sleeps to guarantee that no CPU is looking at the packet
462 * type after return.
463 */
464void dev_remove_pack(struct packet_type *pt)
465{
466 __dev_remove_pack(pt);
467
468 synchronize_net();
469}
470EXPORT_SYMBOL(dev_remove_pack);
471
472/******************************************************************************
473
474 Device Boot-time Settings Routines
475
476*******************************************************************************/
477
478/* Boot time configuration table */
479static struct netdev_boot_setup dev_boot_setup[NETDEV_BOOT_SETUP_MAX];
480
481/**
482 * netdev_boot_setup_add - add new setup entry
483 * @name: name of the device
484 * @map: configured settings for the device
485 *
486 * Adds new setup entry to the dev_boot_setup list. The function
487 * returns 0 on error and 1 on success. This is a generic routine to
488 * all netdevices.
489 */
490static int netdev_boot_setup_add(char *name, struct ifmap *map)
491{
492 struct netdev_boot_setup *s;
493 int i;
494
495 s = dev_boot_setup;
496 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
497 if (s[i].name[0] == '\0' || s[i].name[0] == ' ') {
498 memset(s[i].name, 0, sizeof(s[i].name));
499 strlcpy(s[i].name, name, IFNAMSIZ);
500 memcpy(&s[i].map, map, sizeof(s[i].map));
501 break;
502 }
503 }
504
505 return i >= NETDEV_BOOT_SETUP_MAX ? 0 : 1;
506}
507
508/**
509 * netdev_boot_setup_check - check boot time settings
510 * @dev: the netdevice
511 *
512 * Check boot time settings for the device.
513 * The found settings are set for the device to be used
514 * later in the device probing.
515 * Returns 0 if no settings found, 1 if they are.
516 */
517int netdev_boot_setup_check(struct net_device *dev)
518{
519 struct netdev_boot_setup *s = dev_boot_setup;
520 int i;
521
522 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++) {
523 if (s[i].name[0] != '\0' && s[i].name[0] != ' ' &&
524 !strcmp(dev->name, s[i].name)) {
525 dev->irq = s[i].map.irq;
526 dev->base_addr = s[i].map.base_addr;
527 dev->mem_start = s[i].map.mem_start;
528 dev->mem_end = s[i].map.mem_end;
529 return 1;
530 }
531 }
532 return 0;
533}
534EXPORT_SYMBOL(netdev_boot_setup_check);
535
536
537/**
538 * netdev_boot_base - get address from boot time settings
539 * @prefix: prefix for network device
540 * @unit: id for network device
541 *
542 * Check boot time settings for the base address of device.
543 * The found settings are set for the device to be used
544 * later in the device probing.
545 * Returns 0 if no settings found.
546 */
547unsigned long netdev_boot_base(const char *prefix, int unit)
548{
549 const struct netdev_boot_setup *s = dev_boot_setup;
550 char name[IFNAMSIZ];
551 int i;
552
553 sprintf(name, "%s%d", prefix, unit);
554
555 /*
556 * If device already registered then return base of 1
557 * to indicate not to probe for this interface
558 */
559 if (__dev_get_by_name(&init_net, name))
560 return 1;
561
562 for (i = 0; i < NETDEV_BOOT_SETUP_MAX; i++)
563 if (!strcmp(name, s[i].name))
564 return s[i].map.base_addr;
565 return 0;
566}
567
568/*
569 * Saves at boot time configured settings for any netdevice.
570 */
571int __init netdev_boot_setup(char *str)
572{
573 int ints[5];
574 struct ifmap map;
575
576 str = get_options(str, ARRAY_SIZE(ints), ints);
577 if (!str || !*str)
578 return 0;
579
580 /* Save settings */
581 memset(&map, 0, sizeof(map));
582 if (ints[0] > 0)
583 map.irq = ints[1];
584 if (ints[0] > 1)
585 map.base_addr = ints[2];
586 if (ints[0] > 2)
587 map.mem_start = ints[3];
588 if (ints[0] > 3)
589 map.mem_end = ints[4];
590
591 /* Add new entry to the list */
592 return netdev_boot_setup_add(str, &map);
593}
594
595__setup("netdev=", netdev_boot_setup);
596
597/*******************************************************************************
598
599 Device Interface Subroutines
600
601*******************************************************************************/
602
603/**
604 * __dev_get_by_name - find a device by its name
605 * @net: the applicable net namespace
606 * @name: name to find
607 *
608 * Find an interface by name. Must be called under RTNL semaphore
609 * or @dev_base_lock. If the name is found a pointer to the device
610 * is returned. If the name is not found then %NULL is returned. The
611 * reference counters are not incremented so the caller must be
612 * careful with locks.
613 */
614
615struct net_device *__dev_get_by_name(struct net *net, const char *name)
616{
617 struct hlist_node *p;
618 struct net_device *dev;
619 struct hlist_head *head = dev_name_hash(net, name);
620
621 hlist_for_each_entry(dev, p, head, name_hlist)
622 if (!strncmp(dev->name, name, IFNAMSIZ))
623 return dev;
624
625 return NULL;
626}
627EXPORT_SYMBOL(__dev_get_by_name);
628
629/**
630 * dev_get_by_name_rcu - find a device by its name
631 * @net: the applicable net namespace
632 * @name: name to find
633 *
634 * Find an interface by name.
635 * If the name is found a pointer to the device is returned.
636 * If the name is not found then %NULL is returned.
637 * The reference counters are not incremented so the caller must be
638 * careful with locks. The caller must hold RCU lock.
639 */
640
641struct net_device *dev_get_by_name_rcu(struct net *net, const char *name)
642{
643 struct hlist_node *p;
644 struct net_device *dev;
645 struct hlist_head *head = dev_name_hash(net, name);
646
647 hlist_for_each_entry_rcu(dev, p, head, name_hlist)
648 if (!strncmp(dev->name, name, IFNAMSIZ))
649 return dev;
650
651 return NULL;
652}
653EXPORT_SYMBOL(dev_get_by_name_rcu);
654
655/**
656 * dev_get_by_name - find a device by its name
657 * @net: the applicable net namespace
658 * @name: name to find
659 *
660 * Find an interface by name. This can be called from any
661 * context and does its own locking. The returned handle has
662 * the usage count incremented and the caller must use dev_put() to
663 * release it when it is no longer needed. %NULL is returned if no
664 * matching device is found.
665 */
666
667struct net_device *dev_get_by_name(struct net *net, const char *name)
668{
669 struct net_device *dev;
670
671 rcu_read_lock();
672 dev = dev_get_by_name_rcu(net, name);
673 if (dev)
674 dev_hold(dev);
675 rcu_read_unlock();
676 return dev;
677}
678EXPORT_SYMBOL(dev_get_by_name);
679
680/**
681 * __dev_get_by_index - find a device by its ifindex
682 * @net: the applicable net namespace
683 * @ifindex: index of device
684 *
685 * Search for an interface by index. Returns %NULL if the device
686 * is not found or a pointer to the device. The device has not
687 * had its reference counter increased so the caller must be careful
688 * about locking. The caller must hold either the RTNL semaphore
689 * or @dev_base_lock.
690 */
691
692struct net_device *__dev_get_by_index(struct net *net, int ifindex)
693{
694 struct hlist_node *p;
695 struct net_device *dev;
696 struct hlist_head *head = dev_index_hash(net, ifindex);
697
698 hlist_for_each_entry(dev, p, head, index_hlist)
699 if (dev->ifindex == ifindex)
700 return dev;
701
702 return NULL;
703}
704EXPORT_SYMBOL(__dev_get_by_index);
705
706/**
707 * dev_get_by_index_rcu - find a device by its ifindex
708 * @net: the applicable net namespace
709 * @ifindex: index of device
710 *
711 * Search for an interface by index. Returns %NULL if the device
712 * is not found or a pointer to the device. The device has not
713 * had its reference counter increased so the caller must be careful
714 * about locking. The caller must hold RCU lock.
715 */
716
717struct net_device *dev_get_by_index_rcu(struct net *net, int ifindex)
718{
719 struct hlist_node *p;
720 struct net_device *dev;
721 struct hlist_head *head = dev_index_hash(net, ifindex);
722
723 hlist_for_each_entry_rcu(dev, p, head, index_hlist)
724 if (dev->ifindex == ifindex)
725 return dev;
726
727 return NULL;
728}
729EXPORT_SYMBOL(dev_get_by_index_rcu);
730
731
732/**
733 * dev_get_by_index - find a device by its ifindex
734 * @net: the applicable net namespace
735 * @ifindex: index of device
736 *
737 * Search for an interface by index. Returns NULL if the device
738 * is not found or a pointer to the device. The device returned has
739 * had a reference added and the pointer is safe until the user calls
740 * dev_put to indicate they have finished with it.
741 */
742
743struct net_device *dev_get_by_index(struct net *net, int ifindex)
744{
745 struct net_device *dev;
746
747 rcu_read_lock();
748 dev = dev_get_by_index_rcu(net, ifindex);
749 if (dev)
750 dev_hold(dev);
751 rcu_read_unlock();
752 return dev;
753}
754EXPORT_SYMBOL(dev_get_by_index);
755
756/**
757 * dev_getbyhwaddr_rcu - find a device by its hardware address
758 * @net: the applicable net namespace
759 * @type: media type of device
760 * @ha: hardware address
761 *
762 * Search for an interface by MAC address. Returns NULL if the device
763 * is not found or a pointer to the device.
764 * The caller must hold RCU or RTNL.
765 * The returned device has not had its ref count increased
766 * and the caller must therefore be careful about locking
767 *
768 */
769
770struct net_device *dev_getbyhwaddr_rcu(struct net *net, unsigned short type,
771 const char *ha)
772{
773 struct net_device *dev;
774
775 for_each_netdev_rcu(net, dev)
776 if (dev->type == type &&
777 !memcmp(dev->dev_addr, ha, dev->addr_len))
778 return dev;
779
780 return NULL;
781}
782EXPORT_SYMBOL(dev_getbyhwaddr_rcu);
783
784struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type)
785{
786 struct net_device *dev;
787
788 ASSERT_RTNL();
789 for_each_netdev(net, dev)
790 if (dev->type == type)
791 return dev;
792
793 return NULL;
794}
795EXPORT_SYMBOL(__dev_getfirstbyhwtype);
796
797struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type)
798{
799 struct net_device *dev, *ret = NULL;
800
801 rcu_read_lock();
802 for_each_netdev_rcu(net, dev)
803 if (dev->type == type) {
804 dev_hold(dev);
805 ret = dev;
806 break;
807 }
808 rcu_read_unlock();
809 return ret;
810}
811EXPORT_SYMBOL(dev_getfirstbyhwtype);
812
813/**
814 * dev_get_by_flags_rcu - find any device with given flags
815 * @net: the applicable net namespace
816 * @if_flags: IFF_* values
817 * @mask: bitmask of bits in if_flags to check
818 *
819 * Search for any interface with the given flags. Returns NULL if a device
820 * is not found or a pointer to the device. Must be called inside
821 * rcu_read_lock(), and result refcount is unchanged.
822 */
823
824struct net_device *dev_get_by_flags_rcu(struct net *net, unsigned short if_flags,
825 unsigned short mask)
826{
827 struct net_device *dev, *ret;
828
829 ret = NULL;
830 for_each_netdev_rcu(net, dev) {
831 if (((dev->flags ^ if_flags) & mask) == 0) {
832 ret = dev;
833 break;
834 }
835 }
836 return ret;
837}
838EXPORT_SYMBOL(dev_get_by_flags_rcu);
839
840/**
841 * dev_valid_name - check if name is okay for network device
842 * @name: name string
843 *
844 * Network device names need to be valid file names to
845 * to allow sysfs to work. We also disallow any kind of
846 * whitespace.
847 */
848int dev_valid_name(const char *name)
849{
850 if (*name == '\0')
851 return 0;
852 if (strlen(name) >= IFNAMSIZ)
853 return 0;
854 if (!strcmp(name, ".") || !strcmp(name, ".."))
855 return 0;
856
857 while (*name) {
858 if (*name == '/' || isspace(*name))
859 return 0;
860 name++;
861 }
862 return 1;
863}
864EXPORT_SYMBOL(dev_valid_name);
865
866/**
867 * __dev_alloc_name - allocate a name for a device
868 * @net: network namespace to allocate the device name in
869 * @name: name format string
870 * @buf: scratch buffer and result name string
871 *
872 * Passed a format string - eg "lt%d" it will try and find a suitable
873 * id. It scans list of devices to build up a free map, then chooses
874 * the first empty slot. The caller must hold the dev_base or rtnl lock
875 * while allocating the name and adding the device in order to avoid
876 * duplicates.
877 * Limited to bits_per_byte * page size devices (ie 32K on most platforms).
878 * Returns the number of the unit assigned or a negative errno code.
879 */
880
881static int __dev_alloc_name(struct net *net, const char *name, char *buf)
882{
883 int i = 0;
884 const char *p;
885 const int max_netdevices = 8*PAGE_SIZE;
886 unsigned long *inuse;
887 struct net_device *d;
888
889 p = strnchr(name, IFNAMSIZ-1, '%');
890 if (p) {
891 /*
892 * Verify the string as this thing may have come from
893 * the user. There must be either one "%d" and no other "%"
894 * characters.
895 */
896 if (p[1] != 'd' || strchr(p + 2, '%'))
897 return -EINVAL;
898
899 /* Use one page as a bit array of possible slots */
900 inuse = (unsigned long *) get_zeroed_page(GFP_ATOMIC);
901 if (!inuse)
902 return -ENOMEM;
903
904 for_each_netdev(net, d) {
905 if (!sscanf(d->name, name, &i))
906 continue;
907 if (i < 0 || i >= max_netdevices)
908 continue;
909
910 /* avoid cases where sscanf is not exact inverse of printf */
911 snprintf(buf, IFNAMSIZ, name, i);
912 if (!strncmp(buf, d->name, IFNAMSIZ))
913 set_bit(i, inuse);
914 }
915
916 i = find_first_zero_bit(inuse, max_netdevices);
917 free_page((unsigned long) inuse);
918 }
919
920 if (buf != name)
921 snprintf(buf, IFNAMSIZ, name, i);
922 if (!__dev_get_by_name(net, buf))
923 return i;
924
925 /* It is possible to run out of possible slots
926 * when the name is long and there isn't enough space left
927 * for the digits, or if all bits are used.
928 */
929 return -ENFILE;
930}
931
932/**
933 * dev_alloc_name - allocate a name for a device
934 * @dev: device
935 * @name: name format string
936 *
937 * Passed a format string - eg "lt%d" it will try and find a suitable
938 * id. It scans list of devices to build up a free map, then chooses
939 * the first empty slot. The caller must hold the dev_base or rtnl lock
940 * while allocating the name and adding the device in order to avoid
941 * duplicates.
942 * Limited to bits_per_byte * page size devices (ie 32K on most platforms).
943 * Returns the number of the unit assigned or a negative errno code.
944 */
945
946int dev_alloc_name(struct net_device *dev, const char *name)
947{
948 char buf[IFNAMSIZ];
949 struct net *net;
950 int ret;
951
952 BUG_ON(!dev_net(dev));
953 net = dev_net(dev);
954 ret = __dev_alloc_name(net, name, buf);
955 if (ret >= 0)
956 strlcpy(dev->name, buf, IFNAMSIZ);
957 return ret;
958}
959EXPORT_SYMBOL(dev_alloc_name);
960
961static int dev_get_valid_name(struct net_device *dev, const char *name)
962{
963 struct net *net;
964
965 BUG_ON(!dev_net(dev));
966 net = dev_net(dev);
967
968 if (!dev_valid_name(name))
969 return -EINVAL;
970
971 if (strchr(name, '%'))
972 return dev_alloc_name(dev, name);
973 else if (__dev_get_by_name(net, name))
974 return -EEXIST;
975 else if (dev->name != name)
976 strlcpy(dev->name, name, IFNAMSIZ);
977
978 return 0;
979}
980
981/**
982 * dev_change_name - change name of a device
983 * @dev: device
984 * @newname: name (or format string) must be at least IFNAMSIZ
985 *
986 * Change name of a device, can pass format strings "eth%d".
987 * for wildcarding.
988 */
989int dev_change_name(struct net_device *dev, const char *newname)
990{
991 char oldname[IFNAMSIZ];
992 int err = 0;
993 int ret;
994 struct net *net;
995
996 ASSERT_RTNL();
997 BUG_ON(!dev_net(dev));
998
999 net = dev_net(dev);
1000 if (dev->flags & IFF_UP)
1001 return -EBUSY;
1002
1003 if (strncmp(newname, dev->name, IFNAMSIZ) == 0)
1004 return 0;
1005
1006 memcpy(oldname, dev->name, IFNAMSIZ);
1007
1008 err = dev_get_valid_name(dev, newname);
1009 if (err < 0)
1010 return err;
1011
1012rollback:
1013 ret = device_rename(&dev->dev, dev->name);
1014 if (ret) {
1015 memcpy(dev->name, oldname, IFNAMSIZ);
1016 return ret;
1017 }
1018
1019 write_lock_bh(&dev_base_lock);
1020 hlist_del_rcu(&dev->name_hlist);
1021 write_unlock_bh(&dev_base_lock);
1022
1023 synchronize_rcu();
1024
1025 write_lock_bh(&dev_base_lock);
1026 hlist_add_head_rcu(&dev->name_hlist, dev_name_hash(net, dev->name));
1027 write_unlock_bh(&dev_base_lock);
1028
1029 ret = call_netdevice_notifiers(NETDEV_CHANGENAME, dev);
1030 ret = notifier_to_errno(ret);
1031
1032 if (ret) {
1033 /* err >= 0 after dev_alloc_name() or stores the first errno */
1034 if (err >= 0) {
1035 err = ret;
1036 memcpy(dev->name, oldname, IFNAMSIZ);
1037 goto rollback;
1038 } else {
1039 printk(KERN_ERR
1040 "%s: name change rollback failed: %d.\n",
1041 dev->name, ret);
1042 }
1043 }
1044
1045 return err;
1046}
1047
1048/**
1049 * dev_set_alias - change ifalias of a device
1050 * @dev: device
1051 * @alias: name up to IFALIASZ
1052 * @len: limit of bytes to copy from info
1053 *
1054 * Set ifalias for a device,
1055 */
1056int dev_set_alias(struct net_device *dev, const char *alias, size_t len)
1057{
1058 ASSERT_RTNL();
1059
1060 if (len >= IFALIASZ)
1061 return -EINVAL;
1062
1063 if (!len) {
1064 if (dev->ifalias) {
1065 kfree(dev->ifalias);
1066 dev->ifalias = NULL;
1067 }
1068 return 0;
1069 }
1070
1071 dev->ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL);
1072 if (!dev->ifalias)
1073 return -ENOMEM;
1074
1075 strlcpy(dev->ifalias, alias, len+1);
1076 return len;
1077}
1078
1079
1080/**
1081 * netdev_features_change - device changes features
1082 * @dev: device to cause notification
1083 *
1084 * Called to indicate a device has changed features.
1085 */
1086void netdev_features_change(struct net_device *dev)
1087{
1088 call_netdevice_notifiers(NETDEV_FEAT_CHANGE, dev);
1089}
1090EXPORT_SYMBOL(netdev_features_change);
1091
1092/**
1093 * netdev_state_change - device changes state
1094 * @dev: device to cause notification
1095 *
1096 * Called to indicate a device has changed state. This function calls
1097 * the notifier chains for netdev_chain and sends a NEWLINK message
1098 * to the routing socket.
1099 */
1100void netdev_state_change(struct net_device *dev)
1101{
1102 if (dev->flags & IFF_UP) {
1103 call_netdevice_notifiers(NETDEV_CHANGE, dev);
1104 rtmsg_ifinfo(RTM_NEWLINK, dev, 0);
1105 }
1106}
1107EXPORT_SYMBOL(netdev_state_change);
1108
1109int netdev_bonding_change(struct net_device *dev, unsigned long event)
1110{
1111 return call_netdevice_notifiers(event, dev);
1112}
1113EXPORT_SYMBOL(netdev_bonding_change);
1114
1115/**
1116 * dev_load - load a network module
1117 * @net: the applicable net namespace
1118 * @name: name of interface
1119 *
1120 * If a network interface is not present and the process has suitable
1121 * privileges this function loads the module. If module loading is not
1122 * available in this kernel then it becomes a nop.
1123 */
1124
1125void dev_load(struct net *net, const char *name)
1126{
1127 struct net_device *dev;
1128 int no_module;
1129
1130 rcu_read_lock();
1131 dev = dev_get_by_name_rcu(net, name);
1132 rcu_read_unlock();
1133
1134 no_module = !dev;
1135 if (no_module && capable(CAP_NET_ADMIN))
1136 no_module = request_module("netdev-%s", name);
1137 if (no_module && capable(CAP_SYS_MODULE)) {
1138 if (!request_module("%s", name))
1139 pr_err("Loading kernel module for a network device "
1140"with CAP_SYS_MODULE (deprecated). Use CAP_NET_ADMIN and alias netdev-%s "
1141"instead\n", name);
1142 }
1143}
1144EXPORT_SYMBOL(dev_load);
1145
1146static int __dev_open(struct net_device *dev)
1147{
1148 const struct net_device_ops *ops = dev->netdev_ops;
1149 int ret;
1150
1151 ASSERT_RTNL();
1152
1153 if (!netif_device_present(dev))
1154 return -ENODEV;
1155
1156 ret = call_netdevice_notifiers(NETDEV_PRE_UP, dev);
1157 ret = notifier_to_errno(ret);
1158 if (ret)
1159 return ret;
1160
1161 set_bit(__LINK_STATE_START, &dev->state);
1162
1163 if (ops->ndo_validate_addr)
1164 ret = ops->ndo_validate_addr(dev);
1165
1166 if (!ret && ops->ndo_open)
1167 ret = ops->ndo_open(dev);
1168
1169 if (ret)
1170 clear_bit(__LINK_STATE_START, &dev->state);
1171 else {
1172 dev->flags |= IFF_UP;
1173 net_dmaengine_get();
1174 dev_set_rx_mode(dev);
1175 dev_activate(dev);
1176 }
1177
1178 return ret;
1179}
1180
1181/**
1182 * dev_open - prepare an interface for use.
1183 * @dev: device to open
1184 *
1185 * Takes a device from down to up state. The device's private open
1186 * function is invoked and then the multicast lists are loaded. Finally
1187 * the device is moved into the up state and a %NETDEV_UP message is
1188 * sent to the netdev notifier chain.
1189 *
1190 * Calling this function on an active interface is a nop. On a failure
1191 * a negative errno code is returned.
1192 */
1193int dev_open(struct net_device *dev)
1194{
1195 int ret;
1196
1197 if (dev->flags & IFF_UP)
1198 return 0;
1199
1200 ret = __dev_open(dev);
1201 if (ret < 0)
1202 return ret;
1203
1204 rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING);
1205 call_netdevice_notifiers(NETDEV_UP, dev);
1206
1207 return ret;
1208}
1209EXPORT_SYMBOL(dev_open);
1210
1211static int __dev_close_many(struct list_head *head)
1212{
1213 struct net_device *dev;
1214
1215 ASSERT_RTNL();
1216 might_sleep();
1217
1218 list_for_each_entry(dev, head, unreg_list) {
1219 call_netdevice_notifiers(NETDEV_GOING_DOWN, dev);
1220
1221 clear_bit(__LINK_STATE_START, &dev->state);
1222
1223 /* Synchronize to scheduled poll. We cannot touch poll list, it
1224 * can be even on different cpu. So just clear netif_running().
1225 *
1226 * dev->stop() will invoke napi_disable() on all of it's
1227 * napi_struct instances on this device.
1228 */
1229 smp_mb__after_clear_bit(); /* Commit netif_running(). */
1230 }
1231
1232 dev_deactivate_many(head);
1233
1234 list_for_each_entry(dev, head, unreg_list) {
1235 const struct net_device_ops *ops = dev->netdev_ops;
1236
1237 /*
1238 * Call the device specific close. This cannot fail.
1239 * Only if device is UP
1240 *
1241 * We allow it to be called even after a DETACH hot-plug
1242 * event.
1243 */
1244 if (ops->ndo_stop)
1245 ops->ndo_stop(dev);
1246
1247 dev->flags &= ~IFF_UP;
1248 net_dmaengine_put();
1249 }
1250
1251 return 0;
1252}
1253
1254static int __dev_close(struct net_device *dev)
1255{
1256 int retval;
1257 LIST_HEAD(single);
1258
1259 list_add(&dev->unreg_list, &single);
1260 retval = __dev_close_many(&single);
1261 list_del(&single);
1262 return retval;
1263}
1264
1265static int dev_close_many(struct list_head *head)
1266{
1267 struct net_device *dev, *tmp;
1268 LIST_HEAD(tmp_list);
1269
1270 list_for_each_entry_safe(dev, tmp, head, unreg_list)
1271 if (!(dev->flags & IFF_UP))
1272 list_move(&dev->unreg_list, &tmp_list);
1273
1274 __dev_close_many(head);
1275
1276 list_for_each_entry(dev, head, unreg_list) {
1277 rtmsg_ifinfo(RTM_NEWLINK, dev, IFF_UP|IFF_RUNNING);
1278 call_netdevice_notifiers(NETDEV_DOWN, dev);
1279 }
1280
1281 /* rollback_registered_many needs the complete original list */
1282 list_splice(&tmp_list, head);
1283 return 0;
1284}
1285
1286/**
1287 * dev_close - shutdown an interface.
1288 * @dev: device to shutdown
1289 *
1290 * This function moves an active device into down state. A
1291 * %NETDEV_GOING_DOWN is sent to the netdev notifier chain. The device
1292 * is then deactivated and finally a %NETDEV_DOWN is sent to the notifier
1293 * chain.
1294 */
1295int dev_close(struct net_device *dev)
1296{
1297 if (dev->flags & IFF_UP) {
1298 LIST_HEAD(single);
1299
1300 list_add(&dev->unreg_list, &single);
1301 dev_close_many(&single);
1302 list_del(&single);
1303 }
1304 return 0;
1305}
1306EXPORT_SYMBOL(dev_close);
1307
1308
1309/**
1310 * dev_disable_lro - disable Large Receive Offload on a device
1311 * @dev: device
1312 *
1313 * Disable Large Receive Offload (LRO) on a net device. Must be
1314 * called under RTNL. This is needed if received packets may be
1315 * forwarded to another interface.
1316 */
1317void dev_disable_lro(struct net_device *dev)
1318{
1319 u32 flags;
1320
1321 /*
1322 * If we're trying to disable lro on a vlan device
1323 * use the underlying physical device instead
1324 */
1325 if (is_vlan_dev(dev))
1326 dev = vlan_dev_real_dev(dev);
1327
1328 if (dev->ethtool_ops && dev->ethtool_ops->get_flags)
1329 flags = dev->ethtool_ops->get_flags(dev);
1330 else
1331 flags = ethtool_op_get_flags(dev);
1332
1333 if (!(flags & ETH_FLAG_LRO))
1334 return;
1335
1336 __ethtool_set_flags(dev, flags & ~ETH_FLAG_LRO);
1337 if (unlikely(dev->features & NETIF_F_LRO))
1338 netdev_WARN(dev, "failed to disable LRO!\n");
1339}
1340EXPORT_SYMBOL(dev_disable_lro);
1341
1342
1343static int dev_boot_phase = 1;
1344
1345/**
1346 * register_netdevice_notifier - register a network notifier block
1347 * @nb: notifier
1348 *
1349 * Register a notifier to be called when network device events occur.
1350 * The notifier passed is linked into the kernel structures and must
1351 * not be reused until it has been unregistered. A negative errno code
1352 * is returned on a failure.
1353 *
1354 * When registered all registration and up events are replayed
1355 * to the new notifier to allow device to have a race free
1356 * view of the network device list.
1357 */
1358
1359int register_netdevice_notifier(struct notifier_block *nb)
1360{
1361 struct net_device *dev;
1362 struct net_device *last;
1363 struct net *net;
1364 int err;
1365
1366 rtnl_lock();
1367 err = raw_notifier_chain_register(&netdev_chain, nb);
1368 if (err)
1369 goto unlock;
1370 if (dev_boot_phase)
1371 goto unlock;
1372 for_each_net(net) {
1373 for_each_netdev(net, dev) {
1374 err = nb->notifier_call(nb, NETDEV_REGISTER, dev);
1375 err = notifier_to_errno(err);
1376 if (err)
1377 goto rollback;
1378
1379 if (!(dev->flags & IFF_UP))
1380 continue;
1381
1382 nb->notifier_call(nb, NETDEV_UP, dev);
1383 }
1384 }
1385
1386unlock:
1387 rtnl_unlock();
1388 return err;
1389
1390rollback:
1391 last = dev;
1392 for_each_net(net) {
1393 for_each_netdev(net, dev) {
1394 if (dev == last)
1395 break;
1396
1397 if (dev->flags & IFF_UP) {
1398 nb->notifier_call(nb, NETDEV_GOING_DOWN, dev);
1399 nb->notifier_call(nb, NETDEV_DOWN, dev);
1400 }
1401 nb->notifier_call(nb, NETDEV_UNREGISTER, dev);
1402 nb->notifier_call(nb, NETDEV_UNREGISTER_BATCH, dev);
1403 }
1404 }
1405
1406 raw_notifier_chain_unregister(&netdev_chain, nb);
1407 goto unlock;
1408}
1409EXPORT_SYMBOL(register_netdevice_notifier);
1410
1411/**
1412 * unregister_netdevice_notifier - unregister a network notifier block
1413 * @nb: notifier
1414 *
1415 * Unregister a notifier previously registered by
1416 * register_netdevice_notifier(). The notifier is unlinked into the
1417 * kernel structures and may then be reused. A negative errno code
1418 * is returned on a failure.
1419 */
1420
1421int unregister_netdevice_notifier(struct notifier_block *nb)
1422{
1423 int err;
1424
1425 rtnl_lock();
1426 err = raw_notifier_chain_unregister(&netdev_chain, nb);
1427 rtnl_unlock();
1428 return err;
1429}
1430EXPORT_SYMBOL(unregister_netdevice_notifier);
1431
1432/**
1433 * call_netdevice_notifiers - call all network notifier blocks
1434 * @val: value passed unmodified to notifier function
1435 * @dev: net_device pointer passed unmodified to notifier function
1436 *
1437 * Call all network notifier blocks. Parameters and return value
1438 * are as for raw_notifier_call_chain().
1439 */
1440
1441int call_netdevice_notifiers(unsigned long val, struct net_device *dev)
1442{
1443 ASSERT_RTNL();
1444 return raw_notifier_call_chain(&netdev_chain, val, dev);
1445}
1446EXPORT_SYMBOL(call_netdevice_notifiers);
1447
1448/* When > 0 there are consumers of rx skb time stamps */
1449static atomic_t netstamp_needed = ATOMIC_INIT(0);
1450
1451void net_enable_timestamp(void)
1452{
1453 atomic_inc(&netstamp_needed);
1454}
1455EXPORT_SYMBOL(net_enable_timestamp);
1456
1457void net_disable_timestamp(void)
1458{
1459 atomic_dec(&netstamp_needed);
1460}
1461EXPORT_SYMBOL(net_disable_timestamp);
1462
1463static inline void net_timestamp_set(struct sk_buff *skb)
1464{
1465 if (atomic_read(&netstamp_needed))
1466 __net_timestamp(skb);
1467 else
1468 skb->tstamp.tv64 = 0;
1469}
1470
1471static inline void net_timestamp_check(struct sk_buff *skb)
1472{
1473 if (!skb->tstamp.tv64 && atomic_read(&netstamp_needed))
1474 __net_timestamp(skb);
1475}
1476
1477static inline bool is_skb_forwardable(struct net_device *dev,
1478 struct sk_buff *skb)
1479{
1480 unsigned int len;
1481
1482 if (!(dev->flags & IFF_UP))
1483 return false;
1484
1485 len = dev->mtu + dev->hard_header_len + VLAN_HLEN;
1486 if (skb->len <= len)
1487 return true;
1488
1489 /* if TSO is enabled, we don't care about the length as the packet
1490 * could be forwarded without being segmented before
1491 */
1492 if (skb_is_gso(skb))
1493 return true;
1494
1495 return false;
1496}
1497
1498/**
1499 * dev_forward_skb - loopback an skb to another netif
1500 *
1501 * @dev: destination network device
1502 * @skb: buffer to forward
1503 *
1504 * return values:
1505 * NET_RX_SUCCESS (no congestion)
1506 * NET_RX_DROP (packet was dropped, but freed)
1507 *
1508 * dev_forward_skb can be used for injecting an skb from the
1509 * start_xmit function of one device into the receive queue
1510 * of another device.
1511 *
1512 * The receiving device may be in another namespace, so
1513 * we have to clear all information in the skb that could
1514 * impact namespace isolation.
1515 */
1516int dev_forward_skb(struct net_device *dev, struct sk_buff *skb)
1517{
1518 if (skb_shinfo(skb)->tx_flags & SKBTX_DEV_ZEROCOPY) {
1519 if (skb_copy_ubufs(skb, GFP_ATOMIC)) {
1520 atomic_long_inc(&dev->rx_dropped);
1521 kfree_skb(skb);
1522 return NET_RX_DROP;
1523 }
1524 }
1525
1526 skb_orphan(skb);
1527 nf_reset(skb);
1528
1529 if (unlikely(!is_skb_forwardable(dev, skb))) {
1530 atomic_long_inc(&dev->rx_dropped);
1531 kfree_skb(skb);
1532 return NET_RX_DROP;
1533 }
1534 skb_set_dev(skb, dev);
1535 skb->tstamp.tv64 = 0;
1536 skb->pkt_type = PACKET_HOST;
1537 skb->protocol = eth_type_trans(skb, dev);
1538 return netif_rx(skb);
1539}
1540EXPORT_SYMBOL_GPL(dev_forward_skb);
1541
1542static inline int deliver_skb(struct sk_buff *skb,
1543 struct packet_type *pt_prev,
1544 struct net_device *orig_dev)
1545{
1546 atomic_inc(&skb->users);
1547 return pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
1548}
1549
1550/*
1551 * Support routine. Sends outgoing frames to any network
1552 * taps currently in use.
1553 */
1554
1555static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev)
1556{
1557 struct packet_type *ptype;
1558 struct sk_buff *skb2 = NULL;
1559 struct packet_type *pt_prev = NULL;
1560
1561 rcu_read_lock();
1562 list_for_each_entry_rcu(ptype, &ptype_all, list) {
1563 /* Never send packets back to the socket
1564 * they originated from - MvS (miquels@drinkel.ow.org)
1565 */
1566 if ((ptype->dev == dev || !ptype->dev) &&
1567 (ptype->af_packet_priv == NULL ||
1568 (struct sock *)ptype->af_packet_priv != skb->sk)) {
1569 if (pt_prev) {
1570 deliver_skb(skb2, pt_prev, skb->dev);
1571 pt_prev = ptype;
1572 continue;
1573 }
1574
1575 skb2 = skb_clone(skb, GFP_ATOMIC);
1576 if (!skb2)
1577 break;
1578
1579 net_timestamp_set(skb2);
1580
1581 /* skb->nh should be correctly
1582 set by sender, so that the second statement is
1583 just protection against buggy protocols.
1584 */
1585 skb_reset_mac_header(skb2);
1586
1587 if (skb_network_header(skb2) < skb2->data ||
1588 skb2->network_header > skb2->tail) {
1589 if (net_ratelimit())
1590 printk(KERN_CRIT "protocol %04x is "
1591 "buggy, dev %s\n",
1592 ntohs(skb2->protocol),
1593 dev->name);
1594 skb_reset_network_header(skb2);
1595 }
1596
1597 skb2->transport_header = skb2->network_header;
1598 skb2->pkt_type = PACKET_OUTGOING;
1599 pt_prev = ptype;
1600 }
1601 }
1602 if (pt_prev)
1603 pt_prev->func(skb2, skb->dev, pt_prev, skb->dev);
1604 rcu_read_unlock();
1605}
1606
1607/* netif_setup_tc - Handle tc mappings on real_num_tx_queues change
1608 * @dev: Network device
1609 * @txq: number of queues available
1610 *
1611 * If real_num_tx_queues is changed the tc mappings may no longer be
1612 * valid. To resolve this verify the tc mapping remains valid and if
1613 * not NULL the mapping. With no priorities mapping to this
1614 * offset/count pair it will no longer be used. In the worst case TC0
1615 * is invalid nothing can be done so disable priority mappings. If is
1616 * expected that drivers will fix this mapping if they can before
1617 * calling netif_set_real_num_tx_queues.
1618 */
1619static void netif_setup_tc(struct net_device *dev, unsigned int txq)
1620{
1621 int i;
1622 struct netdev_tc_txq *tc = &dev->tc_to_txq[0];
1623
1624 /* If TC0 is invalidated disable TC mapping */
1625 if (tc->offset + tc->count > txq) {
1626 pr_warning("Number of in use tx queues changed "
1627 "invalidating tc mappings. Priority "
1628 "traffic classification disabled!\n");
1629 dev->num_tc = 0;
1630 return;
1631 }
1632
1633 /* Invalidated prio to tc mappings set to TC0 */
1634 for (i = 1; i < TC_BITMASK + 1; i++) {
1635 int q = netdev_get_prio_tc_map(dev, i);
1636
1637 tc = &dev->tc_to_txq[q];
1638 if (tc->offset + tc->count > txq) {
1639 pr_warning("Number of in use tx queues "
1640 "changed. Priority %i to tc "
1641 "mapping %i is no longer valid "
1642 "setting map to 0\n",
1643 i, q);
1644 netdev_set_prio_tc_map(dev, i, 0);
1645 }
1646 }
1647}
1648
1649/*
1650 * Routine to help set real_num_tx_queues. To avoid skbs mapped to queues
1651 * greater then real_num_tx_queues stale skbs on the qdisc must be flushed.
1652 */
1653int netif_set_real_num_tx_queues(struct net_device *dev, unsigned int txq)
1654{
1655 int rc;
1656
1657 if (txq < 1 || txq > dev->num_tx_queues)
1658 return -EINVAL;
1659
1660 if (dev->reg_state == NETREG_REGISTERED ||
1661 dev->reg_state == NETREG_UNREGISTERING) {
1662 ASSERT_RTNL();
1663
1664 rc = netdev_queue_update_kobjects(dev, dev->real_num_tx_queues,
1665 txq);
1666 if (rc)
1667 return rc;
1668
1669 if (dev->num_tc)
1670 netif_setup_tc(dev, txq);
1671
1672 if (txq < dev->real_num_tx_queues)
1673 qdisc_reset_all_tx_gt(dev, txq);
1674 }
1675
1676 dev->real_num_tx_queues = txq;
1677 return 0;
1678}
1679EXPORT_SYMBOL(netif_set_real_num_tx_queues);
1680
1681#ifdef CONFIG_RPS
1682/**
1683 * netif_set_real_num_rx_queues - set actual number of RX queues used
1684 * @dev: Network device
1685 * @rxq: Actual number of RX queues
1686 *
1687 * This must be called either with the rtnl_lock held or before
1688 * registration of the net device. Returns 0 on success, or a
1689 * negative error code. If called before registration, it always
1690 * succeeds.
1691 */
1692int netif_set_real_num_rx_queues(struct net_device *dev, unsigned int rxq)
1693{
1694 int rc;
1695
1696 if (rxq < 1 || rxq > dev->num_rx_queues)
1697 return -EINVAL;
1698
1699 if (dev->reg_state == NETREG_REGISTERED) {
1700 ASSERT_RTNL();
1701
1702 rc = net_rx_queue_update_kobjects(dev, dev->real_num_rx_queues,
1703 rxq);
1704 if (rc)
1705 return rc;
1706 }
1707
1708 dev->real_num_rx_queues = rxq;
1709 return 0;
1710}
1711EXPORT_SYMBOL(netif_set_real_num_rx_queues);
1712#endif
1713
1714static inline void __netif_reschedule(struct Qdisc *q)
1715{
1716 struct softnet_data *sd;
1717 unsigned long flags;
1718
1719 local_irq_save(flags);
1720 sd = &__get_cpu_var(softnet_data);
1721 q->next_sched = NULL;
1722 *sd->output_queue_tailp = q;
1723 sd->output_queue_tailp = &q->next_sched;
1724 raise_softirq_irqoff(NET_TX_SOFTIRQ);
1725 local_irq_restore(flags);
1726}
1727
1728void __netif_schedule(struct Qdisc *q)
1729{
1730 if (!test_and_set_bit(__QDISC_STATE_SCHED, &q->state))
1731 __netif_reschedule(q);
1732}
1733EXPORT_SYMBOL(__netif_schedule);
1734
1735void dev_kfree_skb_irq(struct sk_buff *skb)
1736{
1737 if (atomic_dec_and_test(&skb->users)) {
1738 struct softnet_data *sd;
1739 unsigned long flags;
1740
1741 local_irq_save(flags);
1742 sd = &__get_cpu_var(softnet_data);
1743 skb->next = sd->completion_queue;
1744 sd->completion_queue = skb;
1745 raise_softirq_irqoff(NET_TX_SOFTIRQ);
1746 local_irq_restore(flags);
1747 }
1748}
1749EXPORT_SYMBOL(dev_kfree_skb_irq);
1750
1751void dev_kfree_skb_any(struct sk_buff *skb)
1752{
1753 if (in_irq() || irqs_disabled())
1754 dev_kfree_skb_irq(skb);
1755 else
1756 dev_kfree_skb(skb);
1757}
1758EXPORT_SYMBOL(dev_kfree_skb_any);
1759
1760
1761/**
1762 * netif_device_detach - mark device as removed
1763 * @dev: network device
1764 *
1765 * Mark device as removed from system and therefore no longer available.
1766 */
1767void netif_device_detach(struct net_device *dev)
1768{
1769 if (test_and_clear_bit(__LINK_STATE_PRESENT, &dev->state) &&
1770 netif_running(dev)) {
1771 netif_tx_stop_all_queues(dev);
1772 }
1773}
1774EXPORT_SYMBOL(netif_device_detach);
1775
1776/**
1777 * netif_device_attach - mark device as attached
1778 * @dev: network device
1779 *
1780 * Mark device as attached from system and restart if needed.
1781 */
1782void netif_device_attach(struct net_device *dev)
1783{
1784 if (!test_and_set_bit(__LINK_STATE_PRESENT, &dev->state) &&
1785 netif_running(dev)) {
1786 netif_tx_wake_all_queues(dev);
1787 __netdev_watchdog_up(dev);
1788 }
1789}
1790EXPORT_SYMBOL(netif_device_attach);
1791
1792/**
1793 * skb_dev_set -- assign a new device to a buffer
1794 * @skb: buffer for the new device
1795 * @dev: network device
1796 *
1797 * If an skb is owned by a device already, we have to reset
1798 * all data private to the namespace a device belongs to
1799 * before assigning it a new device.
1800 */
1801#ifdef CONFIG_NET_NS
1802void skb_set_dev(struct sk_buff *skb, struct net_device *dev)
1803{
1804 skb_dst_drop(skb);
1805 if (skb->dev && !net_eq(dev_net(skb->dev), dev_net(dev))) {
1806 secpath_reset(skb);
1807 nf_reset(skb);
1808 skb_init_secmark(skb);
1809 skb->mark = 0;
1810 skb->priority = 0;
1811 skb->nf_trace = 0;
1812 skb->ipvs_property = 0;
1813#ifdef CONFIG_NET_SCHED
1814 skb->tc_index = 0;
1815#endif
1816 }
1817 skb->dev = dev;
1818}
1819EXPORT_SYMBOL(skb_set_dev);
1820#endif /* CONFIG_NET_NS */
1821
1822/*
1823 * Invalidate hardware checksum when packet is to be mangled, and
1824 * complete checksum manually on outgoing path.
1825 */
1826int skb_checksum_help(struct sk_buff *skb)
1827{
1828 __wsum csum;
1829 int ret = 0, offset;
1830
1831 if (skb->ip_summed == CHECKSUM_COMPLETE)
1832 goto out_set_summed;
1833
1834 if (unlikely(skb_shinfo(skb)->gso_size)) {
1835 /* Let GSO fix up the checksum. */
1836 goto out_set_summed;
1837 }
1838
1839 offset = skb_checksum_start_offset(skb);
1840 BUG_ON(offset >= skb_headlen(skb));
1841 csum = skb_checksum(skb, offset, skb->len - offset, 0);
1842
1843 offset += skb->csum_offset;
1844 BUG_ON(offset + sizeof(__sum16) > skb_headlen(skb));
1845
1846 if (skb_cloned(skb) &&
1847 !skb_clone_writable(skb, offset + sizeof(__sum16))) {
1848 ret = pskb_expand_head(skb, 0, 0, GFP_ATOMIC);
1849 if (ret)
1850 goto out;
1851 }
1852
1853 *(__sum16 *)(skb->data + offset) = csum_fold(csum);
1854out_set_summed:
1855 skb->ip_summed = CHECKSUM_NONE;
1856out:
1857 return ret;
1858}
1859EXPORT_SYMBOL(skb_checksum_help);
1860
1861/**
1862 * skb_gso_segment - Perform segmentation on skb.
1863 * @skb: buffer to segment
1864 * @features: features for the output path (see dev->features)
1865 *
1866 * This function segments the given skb and returns a list of segments.
1867 *
1868 * It may return NULL if the skb requires no segmentation. This is
1869 * only possible when GSO is used for verifying header integrity.
1870 */
1871struct sk_buff *skb_gso_segment(struct sk_buff *skb, u32 features)
1872{
1873 struct sk_buff *segs = ERR_PTR(-EPROTONOSUPPORT);
1874 struct packet_type *ptype;
1875 __be16 type = skb->protocol;
1876 int vlan_depth = ETH_HLEN;
1877 int err;
1878
1879 while (type == htons(ETH_P_8021Q)) {
1880 struct vlan_hdr *vh;
1881
1882 if (unlikely(!pskb_may_pull(skb, vlan_depth + VLAN_HLEN)))
1883 return ERR_PTR(-EINVAL);
1884
1885 vh = (struct vlan_hdr *)(skb->data + vlan_depth);
1886 type = vh->h_vlan_encapsulated_proto;
1887 vlan_depth += VLAN_HLEN;
1888 }
1889
1890 skb_reset_mac_header(skb);
1891 skb->mac_len = skb->network_header - skb->mac_header;
1892 __skb_pull(skb, skb->mac_len);
1893
1894 if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
1895 struct net_device *dev = skb->dev;
1896 struct ethtool_drvinfo info = {};
1897
1898 if (dev && dev->ethtool_ops && dev->ethtool_ops->get_drvinfo)
1899 dev->ethtool_ops->get_drvinfo(dev, &info);
1900
1901 WARN(1, "%s: caps=(0x%lx, 0x%lx) len=%d data_len=%d ip_summed=%d\n",
1902 info.driver, dev ? dev->features : 0L,
1903 skb->sk ? skb->sk->sk_route_caps : 0L,
1904 skb->len, skb->data_len, skb->ip_summed);
1905
1906 if (skb_header_cloned(skb) &&
1907 (err = pskb_expand_head(skb, 0, 0, GFP_ATOMIC)))
1908 return ERR_PTR(err);
1909 }
1910
1911 rcu_read_lock();
1912 list_for_each_entry_rcu(ptype,
1913 &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
1914 if (ptype->type == type && !ptype->dev && ptype->gso_segment) {
1915 if (unlikely(skb->ip_summed != CHECKSUM_PARTIAL)) {
1916 err = ptype->gso_send_check(skb);
1917 segs = ERR_PTR(err);
1918 if (err || skb_gso_ok(skb, features))
1919 break;
1920 __skb_push(skb, (skb->data -
1921 skb_network_header(skb)));
1922 }
1923 segs = ptype->gso_segment(skb, features);
1924 break;
1925 }
1926 }
1927 rcu_read_unlock();
1928
1929 __skb_push(skb, skb->data - skb_mac_header(skb));
1930
1931 return segs;
1932}
1933EXPORT_SYMBOL(skb_gso_segment);
1934
1935/* Take action when hardware reception checksum errors are detected. */
1936#ifdef CONFIG_BUG
1937void netdev_rx_csum_fault(struct net_device *dev)
1938{
1939 if (net_ratelimit()) {
1940 printk(KERN_ERR "%s: hw csum failure.\n",
1941 dev ? dev->name : "<unknown>");
1942 dump_stack();
1943 }
1944}
1945EXPORT_SYMBOL(netdev_rx_csum_fault);
1946#endif
1947
1948/* Actually, we should eliminate this check as soon as we know, that:
1949 * 1. IOMMU is present and allows to map all the memory.
1950 * 2. No high memory really exists on this machine.
1951 */
1952
1953static int illegal_highdma(struct net_device *dev, struct sk_buff *skb)
1954{
1955#ifdef CONFIG_HIGHMEM
1956 int i;
1957 if (!(dev->features & NETIF_F_HIGHDMA)) {
1958 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++)
1959 if (PageHighMem(skb_shinfo(skb)->frags[i].page))
1960 return 1;
1961 }
1962
1963 if (PCI_DMA_BUS_IS_PHYS) {
1964 struct device *pdev = dev->dev.parent;
1965
1966 if (!pdev)
1967 return 0;
1968 for (i = 0; i < skb_shinfo(skb)->nr_frags; i++) {
1969 dma_addr_t addr = page_to_phys(skb_shinfo(skb)->frags[i].page);
1970 if (!pdev->dma_mask || addr + PAGE_SIZE - 1 > *pdev->dma_mask)
1971 return 1;
1972 }
1973 }
1974#endif
1975 return 0;
1976}
1977
1978struct dev_gso_cb {
1979 void (*destructor)(struct sk_buff *skb);
1980};
1981
1982#define DEV_GSO_CB(skb) ((struct dev_gso_cb *)(skb)->cb)
1983
1984static void dev_gso_skb_destructor(struct sk_buff *skb)
1985{
1986 struct dev_gso_cb *cb;
1987
1988 do {
1989 struct sk_buff *nskb = skb->next;
1990
1991 skb->next = nskb->next;
1992 nskb->next = NULL;
1993 kfree_skb(nskb);
1994 } while (skb->next);
1995
1996 cb = DEV_GSO_CB(skb);
1997 if (cb->destructor)
1998 cb->destructor(skb);
1999}
2000
2001/**
2002 * dev_gso_segment - Perform emulated hardware segmentation on skb.
2003 * @skb: buffer to segment
2004 * @features: device features as applicable to this skb
2005 *
2006 * This function segments the given skb and stores the list of segments
2007 * in skb->next.
2008 */
2009static int dev_gso_segment(struct sk_buff *skb, int features)
2010{
2011 struct sk_buff *segs;
2012
2013 segs = skb_gso_segment(skb, features);
2014
2015 /* Verifying header integrity only. */
2016 if (!segs)
2017 return 0;
2018
2019 if (IS_ERR(segs))
2020 return PTR_ERR(segs);
2021
2022 skb->next = segs;
2023 DEV_GSO_CB(skb)->destructor = skb->destructor;
2024 skb->destructor = dev_gso_skb_destructor;
2025
2026 return 0;
2027}
2028
2029/*
2030 * Try to orphan skb early, right before transmission by the device.
2031 * We cannot orphan skb if tx timestamp is requested or the sk-reference
2032 * is needed on driver level for other reasons, e.g. see net/can/raw.c
2033 */
2034static inline void skb_orphan_try(struct sk_buff *skb)
2035{
2036 struct sock *sk = skb->sk;
2037
2038 if (sk && !skb_shinfo(skb)->tx_flags) {
2039 /* skb_tx_hash() wont be able to get sk.
2040 * We copy sk_hash into skb->rxhash
2041 */
2042 if (!skb->rxhash)
2043 skb->rxhash = sk->sk_hash;
2044 skb_orphan(skb);
2045 }
2046}
2047
2048static bool can_checksum_protocol(unsigned long features, __be16 protocol)
2049{
2050 return ((features & NETIF_F_GEN_CSUM) ||
2051 ((features & NETIF_F_V4_CSUM) &&
2052 protocol == htons(ETH_P_IP)) ||
2053 ((features & NETIF_F_V6_CSUM) &&
2054 protocol == htons(ETH_P_IPV6)) ||
2055 ((features & NETIF_F_FCOE_CRC) &&
2056 protocol == htons(ETH_P_FCOE)));
2057}
2058
2059static u32 harmonize_features(struct sk_buff *skb, __be16 protocol, u32 features)
2060{
2061 if (!can_checksum_protocol(features, protocol)) {
2062 features &= ~NETIF_F_ALL_CSUM;
2063 features &= ~NETIF_F_SG;
2064 } else if (illegal_highdma(skb->dev, skb)) {
2065 features &= ~NETIF_F_SG;
2066 }
2067
2068 return features;
2069}
2070
2071u32 netif_skb_features(struct sk_buff *skb)
2072{
2073 __be16 protocol = skb->protocol;
2074 u32 features = skb->dev->features;
2075
2076 if (protocol == htons(ETH_P_8021Q)) {
2077 struct vlan_ethhdr *veh = (struct vlan_ethhdr *)skb->data;
2078 protocol = veh->h_vlan_encapsulated_proto;
2079 } else if (!vlan_tx_tag_present(skb)) {
2080 return harmonize_features(skb, protocol, features);
2081 }
2082
2083 features &= (skb->dev->vlan_features | NETIF_F_HW_VLAN_TX);
2084
2085 if (protocol != htons(ETH_P_8021Q)) {
2086 return harmonize_features(skb, protocol, features);
2087 } else {
2088 features &= NETIF_F_SG | NETIF_F_HIGHDMA | NETIF_F_FRAGLIST |
2089 NETIF_F_GEN_CSUM | NETIF_F_HW_VLAN_TX;
2090 return harmonize_features(skb, protocol, features);
2091 }
2092}
2093EXPORT_SYMBOL(netif_skb_features);
2094
2095/*
2096 * Returns true if either:
2097 * 1. skb has frag_list and the device doesn't support FRAGLIST, or
2098 * 2. skb is fragmented and the device does not support SG, or if
2099 * at least one of fragments is in highmem and device does not
2100 * support DMA from it.
2101 */
2102static inline int skb_needs_linearize(struct sk_buff *skb,
2103 int features)
2104{
2105 return skb_is_nonlinear(skb) &&
2106 ((skb_has_frag_list(skb) &&
2107 !(features & NETIF_F_FRAGLIST)) ||
2108 (skb_shinfo(skb)->nr_frags &&
2109 !(features & NETIF_F_SG)));
2110}
2111
2112int dev_hard_start_xmit(struct sk_buff *skb, struct net_device *dev,
2113 struct netdev_queue *txq)
2114{
2115 const struct net_device_ops *ops = dev->netdev_ops;
2116 int rc = NETDEV_TX_OK;
2117 unsigned int skb_len;
2118
2119 if (likely(!skb->next)) {
2120 u32 features;
2121
2122 /*
2123 * If device doesn't need skb->dst, release it right now while
2124 * its hot in this cpu cache
2125 */
2126 if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
2127 skb_dst_drop(skb);
2128
2129 if (!list_empty(&ptype_all))
2130 dev_queue_xmit_nit(skb, dev);
2131
2132 skb_orphan_try(skb);
2133
2134 features = netif_skb_features(skb);
2135
2136 if (vlan_tx_tag_present(skb) &&
2137 !(features & NETIF_F_HW_VLAN_TX)) {
2138 skb = __vlan_put_tag(skb, vlan_tx_tag_get(skb));
2139 if (unlikely(!skb))
2140 goto out;
2141
2142 skb->vlan_tci = 0;
2143 }
2144
2145 if (netif_needs_gso(skb, features)) {
2146 if (unlikely(dev_gso_segment(skb, features)))
2147 goto out_kfree_skb;
2148 if (skb->next)
2149 goto gso;
2150 } else {
2151 if (skb_needs_linearize(skb, features) &&
2152 __skb_linearize(skb))
2153 goto out_kfree_skb;
2154
2155 /* If packet is not checksummed and device does not
2156 * support checksumming for this protocol, complete
2157 * checksumming here.
2158 */
2159 if (skb->ip_summed == CHECKSUM_PARTIAL) {
2160 skb_set_transport_header(skb,
2161 skb_checksum_start_offset(skb));
2162 if (!(features & NETIF_F_ALL_CSUM) &&
2163 skb_checksum_help(skb))
2164 goto out_kfree_skb;
2165 }
2166 }
2167
2168 skb_len = skb->len;
2169 rc = ops->ndo_start_xmit(skb, dev);
2170 trace_net_dev_xmit(skb, rc, dev, skb_len);
2171 if (rc == NETDEV_TX_OK)
2172 txq_trans_update(txq);
2173 return rc;
2174 }
2175
2176gso:
2177 do {
2178 struct sk_buff *nskb = skb->next;
2179
2180 skb->next = nskb->next;
2181 nskb->next = NULL;
2182
2183 /*
2184 * If device doesn't need nskb->dst, release it right now while
2185 * its hot in this cpu cache
2186 */
2187 if (dev->priv_flags & IFF_XMIT_DST_RELEASE)
2188 skb_dst_drop(nskb);
2189
2190 skb_len = nskb->len;
2191 rc = ops->ndo_start_xmit(nskb, dev);
2192 trace_net_dev_xmit(nskb, rc, dev, skb_len);
2193 if (unlikely(rc != NETDEV_TX_OK)) {
2194 if (rc & ~NETDEV_TX_MASK)
2195 goto out_kfree_gso_skb;
2196 nskb->next = skb->next;
2197 skb->next = nskb;
2198 return rc;
2199 }
2200 txq_trans_update(txq);
2201 if (unlikely(netif_tx_queue_stopped(txq) && skb->next))
2202 return NETDEV_TX_BUSY;
2203 } while (skb->next);
2204
2205out_kfree_gso_skb:
2206 if (likely(skb->next == NULL))
2207 skb->destructor = DEV_GSO_CB(skb)->destructor;
2208out_kfree_skb:
2209 kfree_skb(skb);
2210out:
2211 return rc;
2212}
2213
2214static u32 hashrnd __read_mostly;
2215
2216/*
2217 * Returns a Tx hash based on the given packet descriptor a Tx queues' number
2218 * to be used as a distribution range.
2219 */
2220u16 __skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb,
2221 unsigned int num_tx_queues)
2222{
2223 u32 hash;
2224 u16 qoffset = 0;
2225 u16 qcount = num_tx_queues;
2226
2227 if (skb_rx_queue_recorded(skb)) {
2228 hash = skb_get_rx_queue(skb);
2229 while (unlikely(hash >= num_tx_queues))
2230 hash -= num_tx_queues;
2231 return hash;
2232 }
2233
2234 if (dev->num_tc) {
2235 u8 tc = netdev_get_prio_tc_map(dev, skb->priority);
2236 qoffset = dev->tc_to_txq[tc].offset;
2237 qcount = dev->tc_to_txq[tc].count;
2238 }
2239
2240 if (skb->sk && skb->sk->sk_hash)
2241 hash = skb->sk->sk_hash;
2242 else
2243 hash = (__force u16) skb->protocol ^ skb->rxhash;
2244 hash = jhash_1word(hash, hashrnd);
2245
2246 return (u16) (((u64) hash * qcount) >> 32) + qoffset;
2247}
2248EXPORT_SYMBOL(__skb_tx_hash);
2249
2250static inline u16 dev_cap_txqueue(struct net_device *dev, u16 queue_index)
2251{
2252 if (unlikely(queue_index >= dev->real_num_tx_queues)) {
2253 if (net_ratelimit()) {
2254 pr_warning("%s selects TX queue %d, but "
2255 "real number of TX queues is %d\n",
2256 dev->name, queue_index, dev->real_num_tx_queues);
2257 }
2258 return 0;
2259 }
2260 return queue_index;
2261}
2262
2263static inline int get_xps_queue(struct net_device *dev, struct sk_buff *skb)
2264{
2265#ifdef CONFIG_XPS
2266 struct xps_dev_maps *dev_maps;
2267 struct xps_map *map;
2268 int queue_index = -1;
2269
2270 rcu_read_lock();
2271 dev_maps = rcu_dereference(dev->xps_maps);
2272 if (dev_maps) {
2273 map = rcu_dereference(
2274 dev_maps->cpu_map[raw_smp_processor_id()]);
2275 if (map) {
2276 if (map->len == 1)
2277 queue_index = map->queues[0];
2278 else {
2279 u32 hash;
2280 if (skb->sk && skb->sk->sk_hash)
2281 hash = skb->sk->sk_hash;
2282 else
2283 hash = (__force u16) skb->protocol ^
2284 skb->rxhash;
2285 hash = jhash_1word(hash, hashrnd);
2286 queue_index = map->queues[
2287 ((u64)hash * map->len) >> 32];
2288 }
2289 if (unlikely(queue_index >= dev->real_num_tx_queues))
2290 queue_index = -1;
2291 }
2292 }
2293 rcu_read_unlock();
2294
2295 return queue_index;
2296#else
2297 return -1;
2298#endif
2299}
2300
2301static struct netdev_queue *dev_pick_tx(struct net_device *dev,
2302 struct sk_buff *skb)
2303{
2304 int queue_index;
2305 const struct net_device_ops *ops = dev->netdev_ops;
2306
2307 if (dev->real_num_tx_queues == 1)
2308 queue_index = 0;
2309 else if (ops->ndo_select_queue) {
2310 queue_index = ops->ndo_select_queue(dev, skb);
2311 queue_index = dev_cap_txqueue(dev, queue_index);
2312 } else {
2313 struct sock *sk = skb->sk;
2314 queue_index = sk_tx_queue_get(sk);
2315
2316 if (queue_index < 0 || skb->ooo_okay ||
2317 queue_index >= dev->real_num_tx_queues) {
2318 int old_index = queue_index;
2319
2320 queue_index = get_xps_queue(dev, skb);
2321 if (queue_index < 0)
2322 queue_index = skb_tx_hash(dev, skb);
2323
2324 if (queue_index != old_index && sk) {
2325 struct dst_entry *dst =
2326 rcu_dereference_check(sk->sk_dst_cache, 1);
2327
2328 if (dst && skb_dst(skb) == dst)
2329 sk_tx_queue_set(sk, queue_index);
2330 }
2331 }
2332 }
2333
2334 skb_set_queue_mapping(skb, queue_index);
2335 return netdev_get_tx_queue(dev, queue_index);
2336}
2337
2338static inline int __dev_xmit_skb(struct sk_buff *skb, struct Qdisc *q,
2339 struct net_device *dev,
2340 struct netdev_queue *txq)
2341{
2342 spinlock_t *root_lock = qdisc_lock(q);
2343 bool contended;
2344 int rc;
2345
2346 qdisc_skb_cb(skb)->pkt_len = skb->len;
2347 qdisc_calculate_pkt_len(skb, q);
2348 /*
2349 * Heuristic to force contended enqueues to serialize on a
2350 * separate lock before trying to get qdisc main lock.
2351 * This permits __QDISC_STATE_RUNNING owner to get the lock more often
2352 * and dequeue packets faster.
2353 */
2354 contended = qdisc_is_running(q);
2355 if (unlikely(contended))
2356 spin_lock(&q->busylock);
2357
2358 spin_lock(root_lock);
2359 if (unlikely(test_bit(__QDISC_STATE_DEACTIVATED, &q->state))) {
2360 kfree_skb(skb);
2361 rc = NET_XMIT_DROP;
2362 } else if ((q->flags & TCQ_F_CAN_BYPASS) && !qdisc_qlen(q) &&
2363 qdisc_run_begin(q)) {
2364 /*
2365 * This is a work-conserving queue; there are no old skbs
2366 * waiting to be sent out; and the qdisc is not running -
2367 * xmit the skb directly.
2368 */
2369 if (!(dev->priv_flags & IFF_XMIT_DST_RELEASE))
2370 skb_dst_force(skb);
2371
2372 qdisc_bstats_update(q, skb);
2373
2374 if (sch_direct_xmit(skb, q, dev, txq, root_lock)) {
2375 if (unlikely(contended)) {
2376 spin_unlock(&q->busylock);
2377 contended = false;
2378 }
2379 __qdisc_run(q);
2380 } else
2381 qdisc_run_end(q);
2382
2383 rc = NET_XMIT_SUCCESS;
2384 } else {
2385 skb_dst_force(skb);
2386 rc = q->enqueue(skb, q) & NET_XMIT_MASK;
2387 if (qdisc_run_begin(q)) {
2388 if (unlikely(contended)) {
2389 spin_unlock(&q->busylock);
2390 contended = false;
2391 }
2392 __qdisc_run(q);
2393 }
2394 }
2395 spin_unlock(root_lock);
2396 if (unlikely(contended))
2397 spin_unlock(&q->busylock);
2398 return rc;
2399}
2400
2401static DEFINE_PER_CPU(int, xmit_recursion);
2402#define RECURSION_LIMIT 10
2403
2404/**
2405 * dev_queue_xmit - transmit a buffer
2406 * @skb: buffer to transmit
2407 *
2408 * Queue a buffer for transmission to a network device. The caller must
2409 * have set the device and priority and built the buffer before calling
2410 * this function. The function can be called from an interrupt.
2411 *
2412 * A negative errno code is returned on a failure. A success does not
2413 * guarantee the frame will be transmitted as it may be dropped due
2414 * to congestion or traffic shaping.
2415 *
2416 * -----------------------------------------------------------------------------------
2417 * I notice this method can also return errors from the queue disciplines,
2418 * including NET_XMIT_DROP, which is a positive value. So, errors can also
2419 * be positive.
2420 *
2421 * Regardless of the return value, the skb is consumed, so it is currently
2422 * difficult to retry a send to this method. (You can bump the ref count
2423 * before sending to hold a reference for retry if you are careful.)
2424 *
2425 * When calling this method, interrupts MUST be enabled. This is because
2426 * the BH enable code must have IRQs enabled so that it will not deadlock.
2427 * --BLG
2428 */
2429int dev_queue_xmit(struct sk_buff *skb)
2430{
2431 struct net_device *dev = skb->dev;
2432 struct netdev_queue *txq;
2433 struct Qdisc *q;
2434 int rc = -ENOMEM;
2435
2436 /* Disable soft irqs for various locks below. Also
2437 * stops preemption for RCU.
2438 */
2439 rcu_read_lock_bh();
2440
2441 txq = dev_pick_tx(dev, skb);
2442 q = rcu_dereference_bh(txq->qdisc);
2443
2444#ifdef CONFIG_NET_CLS_ACT
2445 skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_EGRESS);
2446#endif
2447 trace_net_dev_queue(skb);
2448 if (q->enqueue) {
2449 rc = __dev_xmit_skb(skb, q, dev, txq);
2450 goto out;
2451 }
2452
2453 /* The device has no queue. Common case for software devices:
2454 loopback, all the sorts of tunnels...
2455
2456 Really, it is unlikely that netif_tx_lock protection is necessary
2457 here. (f.e. loopback and IP tunnels are clean ignoring statistics
2458 counters.)
2459 However, it is possible, that they rely on protection
2460 made by us here.
2461
2462 Check this and shot the lock. It is not prone from deadlocks.
2463 Either shot noqueue qdisc, it is even simpler 8)
2464 */
2465 if (dev->flags & IFF_UP) {
2466 int cpu = smp_processor_id(); /* ok because BHs are off */
2467
2468 if (txq->xmit_lock_owner != cpu) {
2469
2470 if (__this_cpu_read(xmit_recursion) > RECURSION_LIMIT)
2471 goto recursion_alert;
2472
2473 HARD_TX_LOCK(dev, txq, cpu);
2474
2475 if (!netif_tx_queue_stopped(txq)) {
2476 __this_cpu_inc(xmit_recursion);
2477 rc = dev_hard_start_xmit(skb, dev, txq);
2478 __this_cpu_dec(xmit_recursion);
2479 if (dev_xmit_complete(rc)) {
2480 HARD_TX_UNLOCK(dev, txq);
2481 goto out;
2482 }
2483 }
2484 HARD_TX_UNLOCK(dev, txq);
2485 if (net_ratelimit())
2486 printk(KERN_CRIT "Virtual device %s asks to "
2487 "queue packet!\n", dev->name);
2488 } else {
2489 /* Recursion is detected! It is possible,
2490 * unfortunately
2491 */
2492recursion_alert:
2493 if (net_ratelimit())
2494 printk(KERN_CRIT "Dead loop on virtual device "
2495 "%s, fix it urgently!\n", dev->name);
2496 }
2497 }
2498
2499 rc = -ENETDOWN;
2500 rcu_read_unlock_bh();
2501
2502 kfree_skb(skb);
2503 return rc;
2504out:
2505 rcu_read_unlock_bh();
2506 return rc;
2507}
2508EXPORT_SYMBOL(dev_queue_xmit);
2509
2510
2511/*=======================================================================
2512 Receiver routines
2513 =======================================================================*/
2514
2515int netdev_max_backlog __read_mostly = 1000;
2516int netdev_tstamp_prequeue __read_mostly = 1;
2517int netdev_budget __read_mostly = 300;
2518int weight_p __read_mostly = 64; /* old backlog weight */
2519
2520/* Called with irq disabled */
2521static inline void ____napi_schedule(struct softnet_data *sd,
2522 struct napi_struct *napi)
2523{
2524 list_add_tail(&napi->poll_list, &sd->poll_list);
2525 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
2526}
2527
2528/*
2529 * __skb_get_rxhash: calculate a flow hash based on src/dst addresses
2530 * and src/dst port numbers. Returns a non-zero hash number on success
2531 * and 0 on failure.
2532 */
2533__u32 __skb_get_rxhash(struct sk_buff *skb)
2534{
2535 int nhoff, hash = 0, poff;
2536 const struct ipv6hdr *ip6;
2537 const struct iphdr *ip;
2538 u8 ip_proto;
2539 u32 addr1, addr2, ihl;
2540 union {
2541 u32 v32;
2542 u16 v16[2];
2543 } ports;
2544
2545 nhoff = skb_network_offset(skb);
2546
2547 switch (skb->protocol) {
2548 case __constant_htons(ETH_P_IP):
2549 if (!pskb_may_pull(skb, sizeof(*ip) + nhoff))
2550 goto done;
2551
2552 ip = (const struct iphdr *) (skb->data + nhoff);
2553 if (ip_is_fragment(ip))
2554 ip_proto = 0;
2555 else
2556 ip_proto = ip->protocol;
2557 addr1 = (__force u32) ip->saddr;
2558 addr2 = (__force u32) ip->daddr;
2559 ihl = ip->ihl;
2560 break;
2561 case __constant_htons(ETH_P_IPV6):
2562 if (!pskb_may_pull(skb, sizeof(*ip6) + nhoff))
2563 goto done;
2564
2565 ip6 = (const struct ipv6hdr *) (skb->data + nhoff);
2566 ip_proto = ip6->nexthdr;
2567 addr1 = (__force u32) ip6->saddr.s6_addr32[3];
2568 addr2 = (__force u32) ip6->daddr.s6_addr32[3];
2569 ihl = (40 >> 2);
2570 break;
2571 default:
2572 goto done;
2573 }
2574
2575 ports.v32 = 0;
2576 poff = proto_ports_offset(ip_proto);
2577 if (poff >= 0) {
2578 nhoff += ihl * 4 + poff;
2579 if (pskb_may_pull(skb, nhoff + 4)) {
2580 ports.v32 = * (__force u32 *) (skb->data + nhoff);
2581 if (ports.v16[1] < ports.v16[0])
2582 swap(ports.v16[0], ports.v16[1]);
2583 }
2584 }
2585
2586 /* get a consistent hash (same value on both flow directions) */
2587 if (addr2 < addr1)
2588 swap(addr1, addr2);
2589
2590 hash = jhash_3words(addr1, addr2, ports.v32, hashrnd);
2591 if (!hash)
2592 hash = 1;
2593
2594done:
2595 return hash;
2596}
2597EXPORT_SYMBOL(__skb_get_rxhash);
2598
2599#ifdef CONFIG_RPS
2600
2601/* One global table that all flow-based protocols share. */
2602struct rps_sock_flow_table __rcu *rps_sock_flow_table __read_mostly;
2603EXPORT_SYMBOL(rps_sock_flow_table);
2604
2605static struct rps_dev_flow *
2606set_rps_cpu(struct net_device *dev, struct sk_buff *skb,
2607 struct rps_dev_flow *rflow, u16 next_cpu)
2608{
2609 u16 tcpu;
2610
2611 tcpu = rflow->cpu = next_cpu;
2612 if (tcpu != RPS_NO_CPU) {
2613#ifdef CONFIG_RFS_ACCEL
2614 struct netdev_rx_queue *rxqueue;
2615 struct rps_dev_flow_table *flow_table;
2616 struct rps_dev_flow *old_rflow;
2617 u32 flow_id;
2618 u16 rxq_index;
2619 int rc;
2620
2621 /* Should we steer this flow to a different hardware queue? */
2622 if (!skb_rx_queue_recorded(skb) || !dev->rx_cpu_rmap ||
2623 !(dev->features & NETIF_F_NTUPLE))
2624 goto out;
2625 rxq_index = cpu_rmap_lookup_index(dev->rx_cpu_rmap, next_cpu);
2626 if (rxq_index == skb_get_rx_queue(skb))
2627 goto out;
2628
2629 rxqueue = dev->_rx + rxq_index;
2630 flow_table = rcu_dereference(rxqueue->rps_flow_table);
2631 if (!flow_table)
2632 goto out;
2633 flow_id = skb->rxhash & flow_table->mask;
2634 rc = dev->netdev_ops->ndo_rx_flow_steer(dev, skb,
2635 rxq_index, flow_id);
2636 if (rc < 0)
2637 goto out;
2638 old_rflow = rflow;
2639 rflow = &flow_table->flows[flow_id];
2640 rflow->cpu = next_cpu;
2641 rflow->filter = rc;
2642 if (old_rflow->filter == rflow->filter)
2643 old_rflow->filter = RPS_NO_FILTER;
2644 out:
2645#endif
2646 rflow->last_qtail =
2647 per_cpu(softnet_data, tcpu).input_queue_head;
2648 }
2649
2650 return rflow;
2651}
2652
2653/*
2654 * get_rps_cpu is called from netif_receive_skb and returns the target
2655 * CPU from the RPS map of the receiving queue for a given skb.
2656 * rcu_read_lock must be held on entry.
2657 */
2658static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb,
2659 struct rps_dev_flow **rflowp)
2660{
2661 struct netdev_rx_queue *rxqueue;
2662 struct rps_map *map;
2663 struct rps_dev_flow_table *flow_table;
2664 struct rps_sock_flow_table *sock_flow_table;
2665 int cpu = -1;
2666 u16 tcpu;
2667
2668 if (skb_rx_queue_recorded(skb)) {
2669 u16 index = skb_get_rx_queue(skb);
2670 if (unlikely(index >= dev->real_num_rx_queues)) {
2671 WARN_ONCE(dev->real_num_rx_queues > 1,
2672 "%s received packet on queue %u, but number "
2673 "of RX queues is %u\n",
2674 dev->name, index, dev->real_num_rx_queues);
2675 goto done;
2676 }
2677 rxqueue = dev->_rx + index;
2678 } else
2679 rxqueue = dev->_rx;
2680
2681 map = rcu_dereference(rxqueue->rps_map);
2682 if (map) {
2683 if (map->len == 1 &&
2684 !rcu_dereference_raw(rxqueue->rps_flow_table)) {
2685 tcpu = map->cpus[0];
2686 if (cpu_online(tcpu))
2687 cpu = tcpu;
2688 goto done;
2689 }
2690 } else if (!rcu_dereference_raw(rxqueue->rps_flow_table)) {
2691 goto done;
2692 }
2693
2694 skb_reset_network_header(skb);
2695 if (!skb_get_rxhash(skb))
2696 goto done;
2697
2698 flow_table = rcu_dereference(rxqueue->rps_flow_table);
2699 sock_flow_table = rcu_dereference(rps_sock_flow_table);
2700 if (flow_table && sock_flow_table) {
2701 u16 next_cpu;
2702 struct rps_dev_flow *rflow;
2703
2704 rflow = &flow_table->flows[skb->rxhash & flow_table->mask];
2705 tcpu = rflow->cpu;
2706
2707 next_cpu = sock_flow_table->ents[skb->rxhash &
2708 sock_flow_table->mask];
2709
2710 /*
2711 * If the desired CPU (where last recvmsg was done) is
2712 * different from current CPU (one in the rx-queue flow
2713 * table entry), switch if one of the following holds:
2714 * - Current CPU is unset (equal to RPS_NO_CPU).
2715 * - Current CPU is offline.
2716 * - The current CPU's queue tail has advanced beyond the
2717 * last packet that was enqueued using this table entry.
2718 * This guarantees that all previous packets for the flow
2719 * have been dequeued, thus preserving in order delivery.
2720 */
2721 if (unlikely(tcpu != next_cpu) &&
2722 (tcpu == RPS_NO_CPU || !cpu_online(tcpu) ||
2723 ((int)(per_cpu(softnet_data, tcpu).input_queue_head -
2724 rflow->last_qtail)) >= 0))
2725 rflow = set_rps_cpu(dev, skb, rflow, next_cpu);
2726
2727 if (tcpu != RPS_NO_CPU && cpu_online(tcpu)) {
2728 *rflowp = rflow;
2729 cpu = tcpu;
2730 goto done;
2731 }
2732 }
2733
2734 if (map) {
2735 tcpu = map->cpus[((u64) skb->rxhash * map->len) >> 32];
2736
2737 if (cpu_online(tcpu)) {
2738 cpu = tcpu;
2739 goto done;
2740 }
2741 }
2742
2743done:
2744 return cpu;
2745}
2746
2747#ifdef CONFIG_RFS_ACCEL
2748
2749/**
2750 * rps_may_expire_flow - check whether an RFS hardware filter may be removed
2751 * @dev: Device on which the filter was set
2752 * @rxq_index: RX queue index
2753 * @flow_id: Flow ID passed to ndo_rx_flow_steer()
2754 * @filter_id: Filter ID returned by ndo_rx_flow_steer()
2755 *
2756 * Drivers that implement ndo_rx_flow_steer() should periodically call
2757 * this function for each installed filter and remove the filters for
2758 * which it returns %true.
2759 */
2760bool rps_may_expire_flow(struct net_device *dev, u16 rxq_index,
2761 u32 flow_id, u16 filter_id)
2762{
2763 struct netdev_rx_queue *rxqueue = dev->_rx + rxq_index;
2764 struct rps_dev_flow_table *flow_table;
2765 struct rps_dev_flow *rflow;
2766 bool expire = true;
2767 int cpu;
2768
2769 rcu_read_lock();
2770 flow_table = rcu_dereference(rxqueue->rps_flow_table);
2771 if (flow_table && flow_id <= flow_table->mask) {
2772 rflow = &flow_table->flows[flow_id];
2773 cpu = ACCESS_ONCE(rflow->cpu);
2774 if (rflow->filter == filter_id && cpu != RPS_NO_CPU &&
2775 ((int)(per_cpu(softnet_data, cpu).input_queue_head -
2776 rflow->last_qtail) <
2777 (int)(10 * flow_table->mask)))
2778 expire = false;
2779 }
2780 rcu_read_unlock();
2781 return expire;
2782}
2783EXPORT_SYMBOL(rps_may_expire_flow);
2784
2785#endif /* CONFIG_RFS_ACCEL */
2786
2787/* Called from hardirq (IPI) context */
2788static void rps_trigger_softirq(void *data)
2789{
2790 struct softnet_data *sd = data;
2791
2792 ____napi_schedule(sd, &sd->backlog);
2793 sd->received_rps++;
2794}
2795
2796#endif /* CONFIG_RPS */
2797
2798/*
2799 * Check if this softnet_data structure is another cpu one
2800 * If yes, queue it to our IPI list and return 1
2801 * If no, return 0
2802 */
2803static int rps_ipi_queued(struct softnet_data *sd)
2804{
2805#ifdef CONFIG_RPS
2806 struct softnet_data *mysd = &__get_cpu_var(softnet_data);
2807
2808 if (sd != mysd) {
2809 sd->rps_ipi_next = mysd->rps_ipi_list;
2810 mysd->rps_ipi_list = sd;
2811
2812 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
2813 return 1;
2814 }
2815#endif /* CONFIG_RPS */
2816 return 0;
2817}
2818
2819/*
2820 * enqueue_to_backlog is called to queue an skb to a per CPU backlog
2821 * queue (may be a remote CPU queue).
2822 */
2823static int enqueue_to_backlog(struct sk_buff *skb, int cpu,
2824 unsigned int *qtail)
2825{
2826 struct softnet_data *sd;
2827 unsigned long flags;
2828
2829 sd = &per_cpu(softnet_data, cpu);
2830
2831 local_irq_save(flags);
2832
2833 rps_lock(sd);
2834 if (skb_queue_len(&sd->input_pkt_queue) <= netdev_max_backlog) {
2835 if (skb_queue_len(&sd->input_pkt_queue)) {
2836enqueue:
2837 __skb_queue_tail(&sd->input_pkt_queue, skb);
2838 input_queue_tail_incr_save(sd, qtail);
2839 rps_unlock(sd);
2840 local_irq_restore(flags);
2841 return NET_RX_SUCCESS;
2842 }
2843
2844 /* Schedule NAPI for backlog device
2845 * We can use non atomic operation since we own the queue lock
2846 */
2847 if (!__test_and_set_bit(NAPI_STATE_SCHED, &sd->backlog.state)) {
2848 if (!rps_ipi_queued(sd))
2849 ____napi_schedule(sd, &sd->backlog);
2850 }
2851 goto enqueue;
2852 }
2853
2854 sd->dropped++;
2855 rps_unlock(sd);
2856
2857 local_irq_restore(flags);
2858
2859 atomic_long_inc(&skb->dev->rx_dropped);
2860 kfree_skb(skb);
2861 return NET_RX_DROP;
2862}
2863
2864/**
2865 * netif_rx - post buffer to the network code
2866 * @skb: buffer to post
2867 *
2868 * This function receives a packet from a device driver and queues it for
2869 * the upper (protocol) levels to process. It always succeeds. The buffer
2870 * may be dropped during processing for congestion control or by the
2871 * protocol layers.
2872 *
2873 * return values:
2874 * NET_RX_SUCCESS (no congestion)
2875 * NET_RX_DROP (packet was dropped)
2876 *
2877 */
2878
2879int netif_rx(struct sk_buff *skb)
2880{
2881 int ret;
2882
2883 /* if netpoll wants it, pretend we never saw it */
2884 if (netpoll_rx(skb))
2885 return NET_RX_DROP;
2886
2887 if (netdev_tstamp_prequeue)
2888 net_timestamp_check(skb);
2889
2890 trace_netif_rx(skb);
2891#ifdef CONFIG_RPS
2892 {
2893 struct rps_dev_flow voidflow, *rflow = &voidflow;
2894 int cpu;
2895
2896 preempt_disable();
2897 rcu_read_lock();
2898
2899 cpu = get_rps_cpu(skb->dev, skb, &rflow);
2900 if (cpu < 0)
2901 cpu = smp_processor_id();
2902
2903 ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
2904
2905 rcu_read_unlock();
2906 preempt_enable();
2907 }
2908#else
2909 {
2910 unsigned int qtail;
2911 ret = enqueue_to_backlog(skb, get_cpu(), &qtail);
2912 put_cpu();
2913 }
2914#endif
2915 return ret;
2916}
2917EXPORT_SYMBOL(netif_rx);
2918
2919int netif_rx_ni(struct sk_buff *skb)
2920{
2921 int err;
2922
2923 preempt_disable();
2924 err = netif_rx(skb);
2925 if (local_softirq_pending())
2926 do_softirq();
2927 preempt_enable();
2928
2929 return err;
2930}
2931EXPORT_SYMBOL(netif_rx_ni);
2932
2933static void net_tx_action(struct softirq_action *h)
2934{
2935 struct softnet_data *sd = &__get_cpu_var(softnet_data);
2936
2937 if (sd->completion_queue) {
2938 struct sk_buff *clist;
2939
2940 local_irq_disable();
2941 clist = sd->completion_queue;
2942 sd->completion_queue = NULL;
2943 local_irq_enable();
2944
2945 while (clist) {
2946 struct sk_buff *skb = clist;
2947 clist = clist->next;
2948
2949 WARN_ON(atomic_read(&skb->users));
2950 trace_kfree_skb(skb, net_tx_action);
2951 __kfree_skb(skb);
2952 }
2953 }
2954
2955 if (sd->output_queue) {
2956 struct Qdisc *head;
2957
2958 local_irq_disable();
2959 head = sd->output_queue;
2960 sd->output_queue = NULL;
2961 sd->output_queue_tailp = &sd->output_queue;
2962 local_irq_enable();
2963
2964 while (head) {
2965 struct Qdisc *q = head;
2966 spinlock_t *root_lock;
2967
2968 head = head->next_sched;
2969
2970 root_lock = qdisc_lock(q);
2971 if (spin_trylock(root_lock)) {
2972 smp_mb__before_clear_bit();
2973 clear_bit(__QDISC_STATE_SCHED,
2974 &q->state);
2975 qdisc_run(q);
2976 spin_unlock(root_lock);
2977 } else {
2978 if (!test_bit(__QDISC_STATE_DEACTIVATED,
2979 &q->state)) {
2980 __netif_reschedule(q);
2981 } else {
2982 smp_mb__before_clear_bit();
2983 clear_bit(__QDISC_STATE_SCHED,
2984 &q->state);
2985 }
2986 }
2987 }
2988 }
2989}
2990
2991#if (defined(CONFIG_BRIDGE) || defined(CONFIG_BRIDGE_MODULE)) && \
2992 (defined(CONFIG_ATM_LANE) || defined(CONFIG_ATM_LANE_MODULE))
2993/* This hook is defined here for ATM LANE */
2994int (*br_fdb_test_addr_hook)(struct net_device *dev,
2995 unsigned char *addr) __read_mostly;
2996EXPORT_SYMBOL_GPL(br_fdb_test_addr_hook);
2997#endif
2998
2999#ifdef CONFIG_NET_CLS_ACT
3000/* TODO: Maybe we should just force sch_ingress to be compiled in
3001 * when CONFIG_NET_CLS_ACT is? otherwise some useless instructions
3002 * a compare and 2 stores extra right now if we dont have it on
3003 * but have CONFIG_NET_CLS_ACT
3004 * NOTE: This doesn't stop any functionality; if you dont have
3005 * the ingress scheduler, you just can't add policies on ingress.
3006 *
3007 */
3008static int ing_filter(struct sk_buff *skb, struct netdev_queue *rxq)
3009{
3010 struct net_device *dev = skb->dev;
3011 u32 ttl = G_TC_RTTL(skb->tc_verd);
3012 int result = TC_ACT_OK;
3013 struct Qdisc *q;
3014
3015 if (unlikely(MAX_RED_LOOP < ttl++)) {
3016 if (net_ratelimit())
3017 pr_warning( "Redir loop detected Dropping packet (%d->%d)\n",
3018 skb->skb_iif, dev->ifindex);
3019 return TC_ACT_SHOT;
3020 }
3021
3022 skb->tc_verd = SET_TC_RTTL(skb->tc_verd, ttl);
3023 skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_INGRESS);
3024
3025 q = rxq->qdisc;
3026 if (q != &noop_qdisc) {
3027 spin_lock(qdisc_lock(q));
3028 if (likely(!test_bit(__QDISC_STATE_DEACTIVATED, &q->state)))
3029 result = qdisc_enqueue_root(skb, q);
3030 spin_unlock(qdisc_lock(q));
3031 }
3032
3033 return result;
3034}
3035
3036static inline struct sk_buff *handle_ing(struct sk_buff *skb,
3037 struct packet_type **pt_prev,
3038 int *ret, struct net_device *orig_dev)
3039{
3040 struct netdev_queue *rxq = rcu_dereference(skb->dev->ingress_queue);
3041
3042 if (!rxq || rxq->qdisc == &noop_qdisc)
3043 goto out;
3044
3045 if (*pt_prev) {
3046 *ret = deliver_skb(skb, *pt_prev, orig_dev);
3047 *pt_prev = NULL;
3048 }
3049
3050 switch (ing_filter(skb, rxq)) {
3051 case TC_ACT_SHOT:
3052 case TC_ACT_STOLEN:
3053 kfree_skb(skb);
3054 return NULL;
3055 }
3056
3057out:
3058 skb->tc_verd = 0;
3059 return skb;
3060}
3061#endif
3062
3063/**
3064 * netdev_rx_handler_register - register receive handler
3065 * @dev: device to register a handler for
3066 * @rx_handler: receive handler to register
3067 * @rx_handler_data: data pointer that is used by rx handler
3068 *
3069 * Register a receive hander for a device. This handler will then be
3070 * called from __netif_receive_skb. A negative errno code is returned
3071 * on a failure.
3072 *
3073 * The caller must hold the rtnl_mutex.
3074 *
3075 * For a general description of rx_handler, see enum rx_handler_result.
3076 */
3077int netdev_rx_handler_register(struct net_device *dev,
3078 rx_handler_func_t *rx_handler,
3079 void *rx_handler_data)
3080{
3081 ASSERT_RTNL();
3082
3083 if (dev->rx_handler)
3084 return -EBUSY;
3085
3086 rcu_assign_pointer(dev->rx_handler_data, rx_handler_data);
3087 rcu_assign_pointer(dev->rx_handler, rx_handler);
3088
3089 return 0;
3090}
3091EXPORT_SYMBOL_GPL(netdev_rx_handler_register);
3092
3093/**
3094 * netdev_rx_handler_unregister - unregister receive handler
3095 * @dev: device to unregister a handler from
3096 *
3097 * Unregister a receive hander from a device.
3098 *
3099 * The caller must hold the rtnl_mutex.
3100 */
3101void netdev_rx_handler_unregister(struct net_device *dev)
3102{
3103
3104 ASSERT_RTNL();
3105 rcu_assign_pointer(dev->rx_handler, NULL);
3106 rcu_assign_pointer(dev->rx_handler_data, NULL);
3107}
3108EXPORT_SYMBOL_GPL(netdev_rx_handler_unregister);
3109
3110static int __netif_receive_skb(struct sk_buff *skb)
3111{
3112 struct packet_type *ptype, *pt_prev;
3113 rx_handler_func_t *rx_handler;
3114 struct net_device *orig_dev;
3115 struct net_device *null_or_dev;
3116 bool deliver_exact = false;
3117 int ret = NET_RX_DROP;
3118 __be16 type;
3119
3120 if (!netdev_tstamp_prequeue)
3121 net_timestamp_check(skb);
3122
3123 trace_netif_receive_skb(skb);
3124
3125 /* if we've gotten here through NAPI, check netpoll */
3126 if (netpoll_receive_skb(skb))
3127 return NET_RX_DROP;
3128
3129 if (!skb->skb_iif)
3130 skb->skb_iif = skb->dev->ifindex;
3131 orig_dev = skb->dev;
3132
3133 skb_reset_network_header(skb);
3134 skb_reset_transport_header(skb);
3135 skb_reset_mac_len(skb);
3136
3137 pt_prev = NULL;
3138
3139 rcu_read_lock();
3140
3141another_round:
3142
3143 __this_cpu_inc(softnet_data.processed);
3144
3145 if (skb->protocol == cpu_to_be16(ETH_P_8021Q)) {
3146 skb = vlan_untag(skb);
3147 if (unlikely(!skb))
3148 goto out;
3149 }
3150
3151#ifdef CONFIG_NET_CLS_ACT
3152 if (skb->tc_verd & TC_NCLS) {
3153 skb->tc_verd = CLR_TC_NCLS(skb->tc_verd);
3154 goto ncls;
3155 }
3156#endif
3157
3158 list_for_each_entry_rcu(ptype, &ptype_all, list) {
3159 if (!ptype->dev || ptype->dev == skb->dev) {
3160 if (pt_prev)
3161 ret = deliver_skb(skb, pt_prev, orig_dev);
3162 pt_prev = ptype;
3163 }
3164 }
3165
3166#ifdef CONFIG_NET_CLS_ACT
3167 skb = handle_ing(skb, &pt_prev, &ret, orig_dev);
3168 if (!skb)
3169 goto out;
3170ncls:
3171#endif
3172
3173 rx_handler = rcu_dereference(skb->dev->rx_handler);
3174 if (rx_handler) {
3175 if (pt_prev) {
3176 ret = deliver_skb(skb, pt_prev, orig_dev);
3177 pt_prev = NULL;
3178 }
3179 switch (rx_handler(&skb)) {
3180 case RX_HANDLER_CONSUMED:
3181 goto out;
3182 case RX_HANDLER_ANOTHER:
3183 goto another_round;
3184 case RX_HANDLER_EXACT:
3185 deliver_exact = true;
3186 case RX_HANDLER_PASS:
3187 break;
3188 default:
3189 BUG();
3190 }
3191 }
3192
3193 if (vlan_tx_tag_present(skb)) {
3194 if (pt_prev) {
3195 ret = deliver_skb(skb, pt_prev, orig_dev);
3196 pt_prev = NULL;
3197 }
3198 if (vlan_do_receive(&skb)) {
3199 ret = __netif_receive_skb(skb);
3200 goto out;
3201 } else if (unlikely(!skb))
3202 goto out;
3203 }
3204
3205 /* deliver only exact match when indicated */
3206 null_or_dev = deliver_exact ? skb->dev : NULL;
3207
3208 type = skb->protocol;
3209 list_for_each_entry_rcu(ptype,
3210 &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
3211 if (ptype->type == type &&
3212 (ptype->dev == null_or_dev || ptype->dev == skb->dev ||
3213 ptype->dev == orig_dev)) {
3214 if (pt_prev)
3215 ret = deliver_skb(skb, pt_prev, orig_dev);
3216 pt_prev = ptype;
3217 }
3218 }
3219
3220 if (pt_prev) {
3221 ret = pt_prev->func(skb, skb->dev, pt_prev, orig_dev);
3222 } else {
3223 atomic_long_inc(&skb->dev->rx_dropped);
3224 kfree_skb(skb);
3225 /* Jamal, now you will not able to escape explaining
3226 * me how you were going to use this. :-)
3227 */
3228 ret = NET_RX_DROP;
3229 }
3230
3231out:
3232 rcu_read_unlock();
3233 return ret;
3234}
3235
3236/**
3237 * netif_receive_skb - process receive buffer from network
3238 * @skb: buffer to process
3239 *
3240 * netif_receive_skb() is the main receive data processing function.
3241 * It always succeeds. The buffer may be dropped during processing
3242 * for congestion control or by the protocol layers.
3243 *
3244 * This function may only be called from softirq context and interrupts
3245 * should be enabled.
3246 *
3247 * Return values (usually ignored):
3248 * NET_RX_SUCCESS: no congestion
3249 * NET_RX_DROP: packet was dropped
3250 */
3251int netif_receive_skb(struct sk_buff *skb)
3252{
3253 if (netdev_tstamp_prequeue)
3254 net_timestamp_check(skb);
3255
3256 if (skb_defer_rx_timestamp(skb))
3257 return NET_RX_SUCCESS;
3258
3259#ifdef CONFIG_RPS
3260 {
3261 struct rps_dev_flow voidflow, *rflow = &voidflow;
3262 int cpu, ret;
3263
3264 rcu_read_lock();
3265
3266 cpu = get_rps_cpu(skb->dev, skb, &rflow);
3267
3268 if (cpu >= 0) {
3269 ret = enqueue_to_backlog(skb, cpu, &rflow->last_qtail);
3270 rcu_read_unlock();
3271 } else {
3272 rcu_read_unlock();
3273 ret = __netif_receive_skb(skb);
3274 }
3275
3276 return ret;
3277 }
3278#else
3279 return __netif_receive_skb(skb);
3280#endif
3281}
3282EXPORT_SYMBOL(netif_receive_skb);
3283
3284/* Network device is going away, flush any packets still pending
3285 * Called with irqs disabled.
3286 */
3287static void flush_backlog(void *arg)
3288{
3289 struct net_device *dev = arg;
3290 struct softnet_data *sd = &__get_cpu_var(softnet_data);
3291 struct sk_buff *skb, *tmp;
3292
3293 rps_lock(sd);
3294 skb_queue_walk_safe(&sd->input_pkt_queue, skb, tmp) {
3295 if (skb->dev == dev) {
3296 __skb_unlink(skb, &sd->input_pkt_queue);
3297 kfree_skb(skb);
3298 input_queue_head_incr(sd);
3299 }
3300 }
3301 rps_unlock(sd);
3302
3303 skb_queue_walk_safe(&sd->process_queue, skb, tmp) {
3304 if (skb->dev == dev) {
3305 __skb_unlink(skb, &sd->process_queue);
3306 kfree_skb(skb);
3307 input_queue_head_incr(sd);
3308 }
3309 }
3310}
3311
3312static int napi_gro_complete(struct sk_buff *skb)
3313{
3314 struct packet_type *ptype;
3315 __be16 type = skb->protocol;
3316 struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK];
3317 int err = -ENOENT;
3318
3319 if (NAPI_GRO_CB(skb)->count == 1) {
3320 skb_shinfo(skb)->gso_size = 0;
3321 goto out;
3322 }
3323
3324 rcu_read_lock();
3325 list_for_each_entry_rcu(ptype, head, list) {
3326 if (ptype->type != type || ptype->dev || !ptype->gro_complete)
3327 continue;
3328
3329 err = ptype->gro_complete(skb);
3330 break;
3331 }
3332 rcu_read_unlock();
3333
3334 if (err) {
3335 WARN_ON(&ptype->list == head);
3336 kfree_skb(skb);
3337 return NET_RX_SUCCESS;
3338 }
3339
3340out:
3341 return netif_receive_skb(skb);
3342}
3343
3344inline void napi_gro_flush(struct napi_struct *napi)
3345{
3346 struct sk_buff *skb, *next;
3347
3348 for (skb = napi->gro_list; skb; skb = next) {
3349 next = skb->next;
3350 skb->next = NULL;
3351 napi_gro_complete(skb);
3352 }
3353
3354 napi->gro_count = 0;
3355 napi->gro_list = NULL;
3356}
3357EXPORT_SYMBOL(napi_gro_flush);
3358
3359enum gro_result dev_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
3360{
3361 struct sk_buff **pp = NULL;
3362 struct packet_type *ptype;
3363 __be16 type = skb->protocol;
3364 struct list_head *head = &ptype_base[ntohs(type) & PTYPE_HASH_MASK];
3365 int same_flow;
3366 int mac_len;
3367 enum gro_result ret;
3368
3369 if (!(skb->dev->features & NETIF_F_GRO) || netpoll_rx_on(skb))
3370 goto normal;
3371
3372 if (skb_is_gso(skb) || skb_has_frag_list(skb))
3373 goto normal;
3374
3375 rcu_read_lock();
3376 list_for_each_entry_rcu(ptype, head, list) {
3377 if (ptype->type != type || ptype->dev || !ptype->gro_receive)
3378 continue;
3379
3380 skb_set_network_header(skb, skb_gro_offset(skb));
3381 mac_len = skb->network_header - skb->mac_header;
3382 skb->mac_len = mac_len;
3383 NAPI_GRO_CB(skb)->same_flow = 0;
3384 NAPI_GRO_CB(skb)->flush = 0;
3385 NAPI_GRO_CB(skb)->free = 0;
3386
3387 pp = ptype->gro_receive(&napi->gro_list, skb);
3388 break;
3389 }
3390 rcu_read_unlock();
3391
3392 if (&ptype->list == head)
3393 goto normal;
3394
3395 same_flow = NAPI_GRO_CB(skb)->same_flow;
3396 ret = NAPI_GRO_CB(skb)->free ? GRO_MERGED_FREE : GRO_MERGED;
3397
3398 if (pp) {
3399 struct sk_buff *nskb = *pp;
3400
3401 *pp = nskb->next;
3402 nskb->next = NULL;
3403 napi_gro_complete(nskb);
3404 napi->gro_count--;
3405 }
3406
3407 if (same_flow)
3408 goto ok;
3409
3410 if (NAPI_GRO_CB(skb)->flush || napi->gro_count >= MAX_GRO_SKBS)
3411 goto normal;
3412
3413 napi->gro_count++;
3414 NAPI_GRO_CB(skb)->count = 1;
3415 skb_shinfo(skb)->gso_size = skb_gro_len(skb);
3416 skb->next = napi->gro_list;
3417 napi->gro_list = skb;
3418 ret = GRO_HELD;
3419
3420pull:
3421 if (skb_headlen(skb) < skb_gro_offset(skb)) {
3422 int grow = skb_gro_offset(skb) - skb_headlen(skb);
3423
3424 BUG_ON(skb->end - skb->tail < grow);
3425
3426 memcpy(skb_tail_pointer(skb), NAPI_GRO_CB(skb)->frag0, grow);
3427
3428 skb->tail += grow;
3429 skb->data_len -= grow;
3430
3431 skb_shinfo(skb)->frags[0].page_offset += grow;
3432 skb_shinfo(skb)->frags[0].size -= grow;
3433
3434 if (unlikely(!skb_shinfo(skb)->frags[0].size)) {
3435 put_page(skb_shinfo(skb)->frags[0].page);
3436 memmove(skb_shinfo(skb)->frags,
3437 skb_shinfo(skb)->frags + 1,
3438 --skb_shinfo(skb)->nr_frags * sizeof(skb_frag_t));
3439 }
3440 }
3441
3442ok:
3443 return ret;
3444
3445normal:
3446 ret = GRO_NORMAL;
3447 goto pull;
3448}
3449EXPORT_SYMBOL(dev_gro_receive);
3450
3451static inline gro_result_t
3452__napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
3453{
3454 struct sk_buff *p;
3455
3456 for (p = napi->gro_list; p; p = p->next) {
3457 unsigned long diffs;
3458
3459 diffs = (unsigned long)p->dev ^ (unsigned long)skb->dev;
3460 diffs |= p->vlan_tci ^ skb->vlan_tci;
3461 diffs |= compare_ether_header(skb_mac_header(p),
3462 skb_gro_mac_header(skb));
3463 NAPI_GRO_CB(p)->same_flow = !diffs;
3464 NAPI_GRO_CB(p)->flush = 0;
3465 }
3466
3467 return dev_gro_receive(napi, skb);
3468}
3469
3470gro_result_t napi_skb_finish(gro_result_t ret, struct sk_buff *skb)
3471{
3472 switch (ret) {
3473 case GRO_NORMAL:
3474 if (netif_receive_skb(skb))
3475 ret = GRO_DROP;
3476 break;
3477
3478 case GRO_DROP:
3479 case GRO_MERGED_FREE:
3480 kfree_skb(skb);
3481 break;
3482
3483 case GRO_HELD:
3484 case GRO_MERGED:
3485 break;
3486 }
3487
3488 return ret;
3489}
3490EXPORT_SYMBOL(napi_skb_finish);
3491
3492void skb_gro_reset_offset(struct sk_buff *skb)
3493{
3494 NAPI_GRO_CB(skb)->data_offset = 0;
3495 NAPI_GRO_CB(skb)->frag0 = NULL;
3496 NAPI_GRO_CB(skb)->frag0_len = 0;
3497
3498 if (skb->mac_header == skb->tail &&
3499 !PageHighMem(skb_shinfo(skb)->frags[0].page)) {
3500 NAPI_GRO_CB(skb)->frag0 =
3501 page_address(skb_shinfo(skb)->frags[0].page) +
3502 skb_shinfo(skb)->frags[0].page_offset;
3503 NAPI_GRO_CB(skb)->frag0_len = skb_shinfo(skb)->frags[0].size;
3504 }
3505}
3506EXPORT_SYMBOL(skb_gro_reset_offset);
3507
3508gro_result_t napi_gro_receive(struct napi_struct *napi, struct sk_buff *skb)
3509{
3510 skb_gro_reset_offset(skb);
3511
3512 return napi_skb_finish(__napi_gro_receive(napi, skb), skb);
3513}
3514EXPORT_SYMBOL(napi_gro_receive);
3515
3516static void napi_reuse_skb(struct napi_struct *napi, struct sk_buff *skb)
3517{
3518 __skb_pull(skb, skb_headlen(skb));
3519 skb_reserve(skb, NET_IP_ALIGN - skb_headroom(skb));
3520 skb->vlan_tci = 0;
3521 skb->dev = napi->dev;
3522 skb->skb_iif = 0;
3523
3524 napi->skb = skb;
3525}
3526
3527struct sk_buff *napi_get_frags(struct napi_struct *napi)
3528{
3529 struct sk_buff *skb = napi->skb;
3530
3531 if (!skb) {
3532 skb = netdev_alloc_skb_ip_align(napi->dev, GRO_MAX_HEAD);
3533 if (skb)
3534 napi->skb = skb;
3535 }
3536 return skb;
3537}
3538EXPORT_SYMBOL(napi_get_frags);
3539
3540gro_result_t napi_frags_finish(struct napi_struct *napi, struct sk_buff *skb,
3541 gro_result_t ret)
3542{
3543 switch (ret) {
3544 case GRO_NORMAL:
3545 case GRO_HELD:
3546 skb->protocol = eth_type_trans(skb, skb->dev);
3547
3548 if (ret == GRO_HELD)
3549 skb_gro_pull(skb, -ETH_HLEN);
3550 else if (netif_receive_skb(skb))
3551 ret = GRO_DROP;
3552 break;
3553
3554 case GRO_DROP:
3555 case GRO_MERGED_FREE:
3556 napi_reuse_skb(napi, skb);
3557 break;
3558
3559 case GRO_MERGED:
3560 break;
3561 }
3562
3563 return ret;
3564}
3565EXPORT_SYMBOL(napi_frags_finish);
3566
3567struct sk_buff *napi_frags_skb(struct napi_struct *napi)
3568{
3569 struct sk_buff *skb = napi->skb;
3570 struct ethhdr *eth;
3571 unsigned int hlen;
3572 unsigned int off;
3573
3574 napi->skb = NULL;
3575
3576 skb_reset_mac_header(skb);
3577 skb_gro_reset_offset(skb);
3578
3579 off = skb_gro_offset(skb);
3580 hlen = off + sizeof(*eth);
3581 eth = skb_gro_header_fast(skb, off);
3582 if (skb_gro_header_hard(skb, hlen)) {
3583 eth = skb_gro_header_slow(skb, hlen, off);
3584 if (unlikely(!eth)) {
3585 napi_reuse_skb(napi, skb);
3586 skb = NULL;
3587 goto out;
3588 }
3589 }
3590
3591 skb_gro_pull(skb, sizeof(*eth));
3592
3593 /*
3594 * This works because the only protocols we care about don't require
3595 * special handling. We'll fix it up properly at the end.
3596 */
3597 skb->protocol = eth->h_proto;
3598
3599out:
3600 return skb;
3601}
3602EXPORT_SYMBOL(napi_frags_skb);
3603
3604gro_result_t napi_gro_frags(struct napi_struct *napi)
3605{
3606 struct sk_buff *skb = napi_frags_skb(napi);
3607
3608 if (!skb)
3609 return GRO_DROP;
3610
3611 return napi_frags_finish(napi, skb, __napi_gro_receive(napi, skb));
3612}
3613EXPORT_SYMBOL(napi_gro_frags);
3614
3615/*
3616 * net_rps_action sends any pending IPI's for rps.
3617 * Note: called with local irq disabled, but exits with local irq enabled.
3618 */
3619static void net_rps_action_and_irq_enable(struct softnet_data *sd)
3620{
3621#ifdef CONFIG_RPS
3622 struct softnet_data *remsd = sd->rps_ipi_list;
3623
3624 if (remsd) {
3625 sd->rps_ipi_list = NULL;
3626
3627 local_irq_enable();
3628
3629 /* Send pending IPI's to kick RPS processing on remote cpus. */
3630 while (remsd) {
3631 struct softnet_data *next = remsd->rps_ipi_next;
3632
3633 if (cpu_online(remsd->cpu))
3634 __smp_call_function_single(remsd->cpu,
3635 &remsd->csd, 0);
3636 remsd = next;
3637 }
3638 } else
3639#endif
3640 local_irq_enable();
3641}
3642
3643static int process_backlog(struct napi_struct *napi, int quota)
3644{
3645 int work = 0;
3646 struct softnet_data *sd = container_of(napi, struct softnet_data, backlog);
3647
3648#ifdef CONFIG_RPS
3649 /* Check if we have pending ipi, its better to send them now,
3650 * not waiting net_rx_action() end.
3651 */
3652 if (sd->rps_ipi_list) {
3653 local_irq_disable();
3654 net_rps_action_and_irq_enable(sd);
3655 }
3656#endif
3657 napi->weight = weight_p;
3658 local_irq_disable();
3659 while (work < quota) {
3660 struct sk_buff *skb;
3661 unsigned int qlen;
3662
3663 while ((skb = __skb_dequeue(&sd->process_queue))) {
3664 local_irq_enable();
3665 __netif_receive_skb(skb);
3666 local_irq_disable();
3667 input_queue_head_incr(sd);
3668 if (++work >= quota) {
3669 local_irq_enable();
3670 return work;
3671 }
3672 }
3673
3674 rps_lock(sd);
3675 qlen = skb_queue_len(&sd->input_pkt_queue);
3676 if (qlen)
3677 skb_queue_splice_tail_init(&sd->input_pkt_queue,
3678 &sd->process_queue);
3679
3680 if (qlen < quota - work) {
3681 /*
3682 * Inline a custom version of __napi_complete().
3683 * only current cpu owns and manipulates this napi,
3684 * and NAPI_STATE_SCHED is the only possible flag set on backlog.
3685 * we can use a plain write instead of clear_bit(),
3686 * and we dont need an smp_mb() memory barrier.
3687 */
3688 list_del(&napi->poll_list);
3689 napi->state = 0;
3690
3691 quota = work + qlen;
3692 }
3693 rps_unlock(sd);
3694 }
3695 local_irq_enable();
3696
3697 return work;
3698}
3699
3700/**
3701 * __napi_schedule - schedule for receive
3702 * @n: entry to schedule
3703 *
3704 * The entry's receive function will be scheduled to run
3705 */
3706void __napi_schedule(struct napi_struct *n)
3707{
3708 unsigned long flags;
3709
3710 local_irq_save(flags);
3711 ____napi_schedule(&__get_cpu_var(softnet_data), n);
3712 local_irq_restore(flags);
3713}
3714EXPORT_SYMBOL(__napi_schedule);
3715
3716void __napi_complete(struct napi_struct *n)
3717{
3718 BUG_ON(!test_bit(NAPI_STATE_SCHED, &n->state));
3719 BUG_ON(n->gro_list);
3720
3721 list_del(&n->poll_list);
3722 smp_mb__before_clear_bit();
3723 clear_bit(NAPI_STATE_SCHED, &n->state);
3724}
3725EXPORT_SYMBOL(__napi_complete);
3726
3727void napi_complete(struct napi_struct *n)
3728{
3729 unsigned long flags;
3730
3731 /*
3732 * don't let napi dequeue from the cpu poll list
3733 * just in case its running on a different cpu
3734 */
3735 if (unlikely(test_bit(NAPI_STATE_NPSVC, &n->state)))
3736 return;
3737
3738 napi_gro_flush(n);
3739 local_irq_save(flags);
3740 __napi_complete(n);
3741 local_irq_restore(flags);
3742}
3743EXPORT_SYMBOL(napi_complete);
3744
3745void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
3746 int (*poll)(struct napi_struct *, int), int weight)
3747{
3748 INIT_LIST_HEAD(&napi->poll_list);
3749 napi->gro_count = 0;
3750 napi->gro_list = NULL;
3751 napi->skb = NULL;
3752 napi->poll = poll;
3753 napi->weight = weight;
3754 list_add(&napi->dev_list, &dev->napi_list);
3755 napi->dev = dev;
3756#ifdef CONFIG_NETPOLL
3757 spin_lock_init(&napi->poll_lock);
3758 napi->poll_owner = -1;
3759#endif
3760 set_bit(NAPI_STATE_SCHED, &napi->state);
3761}
3762EXPORT_SYMBOL(netif_napi_add);
3763
3764void netif_napi_del(struct napi_struct *napi)
3765{
3766 struct sk_buff *skb, *next;
3767
3768 list_del_init(&napi->dev_list);
3769 napi_free_frags(napi);
3770
3771 for (skb = napi->gro_list; skb; skb = next) {
3772 next = skb->next;
3773 skb->next = NULL;
3774 kfree_skb(skb);
3775 }
3776
3777 napi->gro_list = NULL;
3778 napi->gro_count = 0;
3779}
3780EXPORT_SYMBOL(netif_napi_del);
3781
3782static void net_rx_action(struct softirq_action *h)
3783{
3784 struct softnet_data *sd = &__get_cpu_var(softnet_data);
3785 unsigned long time_limit = jiffies + 2;
3786 int budget = netdev_budget;
3787 void *have;
3788
3789 local_irq_disable();
3790
3791 while (!list_empty(&sd->poll_list)) {
3792 struct napi_struct *n;
3793 int work, weight;
3794
3795 /* If softirq window is exhuasted then punt.
3796 * Allow this to run for 2 jiffies since which will allow
3797 * an average latency of 1.5/HZ.
3798 */
3799 if (unlikely(budget <= 0 || time_after(jiffies, time_limit)))
3800 goto softnet_break;
3801
3802 local_irq_enable();
3803
3804 /* Even though interrupts have been re-enabled, this
3805 * access is safe because interrupts can only add new
3806 * entries to the tail of this list, and only ->poll()
3807 * calls can remove this head entry from the list.
3808 */
3809 n = list_first_entry(&sd->poll_list, struct napi_struct, poll_list);
3810
3811 have = netpoll_poll_lock(n);
3812
3813 weight = n->weight;
3814
3815 /* This NAPI_STATE_SCHED test is for avoiding a race
3816 * with netpoll's poll_napi(). Only the entity which
3817 * obtains the lock and sees NAPI_STATE_SCHED set will
3818 * actually make the ->poll() call. Therefore we avoid
3819 * accidentally calling ->poll() when NAPI is not scheduled.
3820 */
3821 work = 0;
3822 if (test_bit(NAPI_STATE_SCHED, &n->state)) {
3823 work = n->poll(n, weight);
3824 trace_napi_poll(n);
3825 }
3826
3827 WARN_ON_ONCE(work > weight);
3828
3829 budget -= work;
3830
3831 local_irq_disable();
3832
3833 /* Drivers must not modify the NAPI state if they
3834 * consume the entire weight. In such cases this code
3835 * still "owns" the NAPI instance and therefore can
3836 * move the instance around on the list at-will.
3837 */
3838 if (unlikely(work == weight)) {
3839 if (unlikely(napi_disable_pending(n))) {
3840 local_irq_enable();
3841 napi_complete(n);
3842 local_irq_disable();
3843 } else
3844 list_move_tail(&n->poll_list, &sd->poll_list);
3845 }
3846
3847 netpoll_poll_unlock(have);
3848 }
3849out:
3850 net_rps_action_and_irq_enable(sd);
3851
3852#ifdef CONFIG_NET_DMA
3853 /*
3854 * There may not be any more sk_buffs coming right now, so push
3855 * any pending DMA copies to hardware
3856 */
3857 dma_issue_pending_all();
3858#endif
3859
3860 return;
3861
3862softnet_break:
3863 sd->time_squeeze++;
3864 __raise_softirq_irqoff(NET_RX_SOFTIRQ);
3865 goto out;
3866}
3867
3868static gifconf_func_t *gifconf_list[NPROTO];
3869
3870/**
3871 * register_gifconf - register a SIOCGIF handler
3872 * @family: Address family
3873 * @gifconf: Function handler
3874 *
3875 * Register protocol dependent address dumping routines. The handler
3876 * that is passed must not be freed or reused until it has been replaced
3877 * by another handler.
3878 */
3879int register_gifconf(unsigned int family, gifconf_func_t *gifconf)
3880{
3881 if (family >= NPROTO)
3882 return -EINVAL;
3883 gifconf_list[family] = gifconf;
3884 return 0;
3885}
3886EXPORT_SYMBOL(register_gifconf);
3887
3888
3889/*
3890 * Map an interface index to its name (SIOCGIFNAME)
3891 */
3892
3893/*
3894 * We need this ioctl for efficient implementation of the
3895 * if_indextoname() function required by the IPv6 API. Without
3896 * it, we would have to search all the interfaces to find a
3897 * match. --pb
3898 */
3899
3900static int dev_ifname(struct net *net, struct ifreq __user *arg)
3901{
3902 struct net_device *dev;
3903 struct ifreq ifr;
3904
3905 /*
3906 * Fetch the caller's info block.
3907 */
3908
3909 if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
3910 return -EFAULT;
3911
3912 rcu_read_lock();
3913 dev = dev_get_by_index_rcu(net, ifr.ifr_ifindex);
3914 if (!dev) {
3915 rcu_read_unlock();
3916 return -ENODEV;
3917 }
3918
3919 strcpy(ifr.ifr_name, dev->name);
3920 rcu_read_unlock();
3921
3922 if (copy_to_user(arg, &ifr, sizeof(struct ifreq)))
3923 return -EFAULT;
3924 return 0;
3925}
3926
3927/*
3928 * Perform a SIOCGIFCONF call. This structure will change
3929 * size eventually, and there is nothing I can do about it.
3930 * Thus we will need a 'compatibility mode'.
3931 */
3932
3933static int dev_ifconf(struct net *net, char __user *arg)
3934{
3935 struct ifconf ifc;
3936 struct net_device *dev;
3937 char __user *pos;
3938 int len;
3939 int total;
3940 int i;
3941
3942 /*
3943 * Fetch the caller's info block.
3944 */
3945
3946 if (copy_from_user(&ifc, arg, sizeof(struct ifconf)))
3947 return -EFAULT;
3948
3949 pos = ifc.ifc_buf;
3950 len = ifc.ifc_len;
3951
3952 /*
3953 * Loop over the interfaces, and write an info block for each.
3954 */
3955
3956 total = 0;
3957 for_each_netdev(net, dev) {
3958 for (i = 0; i < NPROTO; i++) {
3959 if (gifconf_list[i]) {
3960 int done;
3961 if (!pos)
3962 done = gifconf_list[i](dev, NULL, 0);
3963 else
3964 done = gifconf_list[i](dev, pos + total,
3965 len - total);
3966 if (done < 0)
3967 return -EFAULT;
3968 total += done;
3969 }
3970 }
3971 }
3972
3973 /*
3974 * All done. Write the updated control block back to the caller.
3975 */
3976 ifc.ifc_len = total;
3977
3978 /*
3979 * Both BSD and Solaris return 0 here, so we do too.
3980 */
3981 return copy_to_user(arg, &ifc, sizeof(struct ifconf)) ? -EFAULT : 0;
3982}
3983
3984#ifdef CONFIG_PROC_FS
3985/*
3986 * This is invoked by the /proc filesystem handler to display a device
3987 * in detail.
3988 */
3989void *dev_seq_start(struct seq_file *seq, loff_t *pos)
3990 __acquires(RCU)
3991{
3992 struct net *net = seq_file_net(seq);
3993 loff_t off;
3994 struct net_device *dev;
3995
3996 rcu_read_lock();
3997 if (!*pos)
3998 return SEQ_START_TOKEN;
3999
4000 off = 1;
4001 for_each_netdev_rcu(net, dev)
4002 if (off++ == *pos)
4003 return dev;
4004
4005 return NULL;
4006}
4007
4008void *dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
4009{
4010 struct net_device *dev = v;
4011
4012 if (v == SEQ_START_TOKEN)
4013 dev = first_net_device_rcu(seq_file_net(seq));
4014 else
4015 dev = next_net_device_rcu(dev);
4016
4017 ++*pos;
4018 return dev;
4019}
4020
4021void dev_seq_stop(struct seq_file *seq, void *v)
4022 __releases(RCU)
4023{
4024 rcu_read_unlock();
4025}
4026
4027static void dev_seq_printf_stats(struct seq_file *seq, struct net_device *dev)
4028{
4029 struct rtnl_link_stats64 temp;
4030 const struct rtnl_link_stats64 *stats = dev_get_stats(dev, &temp);
4031
4032 seq_printf(seq, "%6s: %7llu %7llu %4llu %4llu %4llu %5llu %10llu %9llu "
4033 "%8llu %7llu %4llu %4llu %4llu %5llu %7llu %10llu\n",
4034 dev->name, stats->rx_bytes, stats->rx_packets,
4035 stats->rx_errors,
4036 stats->rx_dropped + stats->rx_missed_errors,
4037 stats->rx_fifo_errors,
4038 stats->rx_length_errors + stats->rx_over_errors +
4039 stats->rx_crc_errors + stats->rx_frame_errors,
4040 stats->rx_compressed, stats->multicast,
4041 stats->tx_bytes, stats->tx_packets,
4042 stats->tx_errors, stats->tx_dropped,
4043 stats->tx_fifo_errors, stats->collisions,
4044 stats->tx_carrier_errors +
4045 stats->tx_aborted_errors +
4046 stats->tx_window_errors +
4047 stats->tx_heartbeat_errors,
4048 stats->tx_compressed);
4049}
4050
4051/*
4052 * Called from the PROCfs module. This now uses the new arbitrary sized
4053 * /proc/net interface to create /proc/net/dev
4054 */
4055static int dev_seq_show(struct seq_file *seq, void *v)
4056{
4057 if (v == SEQ_START_TOKEN)
4058 seq_puts(seq, "Inter-| Receive "
4059 " | Transmit\n"
4060 " face |bytes packets errs drop fifo frame "
4061 "compressed multicast|bytes packets errs "
4062 "drop fifo colls carrier compressed\n");
4063 else
4064 dev_seq_printf_stats(seq, v);
4065 return 0;
4066}
4067
4068static struct softnet_data *softnet_get_online(loff_t *pos)
4069{
4070 struct softnet_data *sd = NULL;
4071
4072 while (*pos < nr_cpu_ids)
4073 if (cpu_online(*pos)) {
4074 sd = &per_cpu(softnet_data, *pos);
4075 break;
4076 } else
4077 ++*pos;
4078 return sd;
4079}
4080
4081static void *softnet_seq_start(struct seq_file *seq, loff_t *pos)
4082{
4083 return softnet_get_online(pos);
4084}
4085
4086static void *softnet_seq_next(struct seq_file *seq, void *v, loff_t *pos)
4087{
4088 ++*pos;
4089 return softnet_get_online(pos);
4090}
4091
4092static void softnet_seq_stop(struct seq_file *seq, void *v)
4093{
4094}
4095
4096static int softnet_seq_show(struct seq_file *seq, void *v)
4097{
4098 struct softnet_data *sd = v;
4099
4100 seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x %08x %08x\n",
4101 sd->processed, sd->dropped, sd->time_squeeze, 0,
4102 0, 0, 0, 0, /* was fastroute */
4103 sd->cpu_collision, sd->received_rps);
4104 return 0;
4105}
4106
4107static const struct seq_operations dev_seq_ops = {
4108 .start = dev_seq_start,
4109 .next = dev_seq_next,
4110 .stop = dev_seq_stop,
4111 .show = dev_seq_show,
4112};
4113
4114static int dev_seq_open(struct inode *inode, struct file *file)
4115{
4116 return seq_open_net(inode, file, &dev_seq_ops,
4117 sizeof(struct seq_net_private));
4118}
4119
4120static const struct file_operations dev_seq_fops = {
4121 .owner = THIS_MODULE,
4122 .open = dev_seq_open,
4123 .read = seq_read,
4124 .llseek = seq_lseek,
4125 .release = seq_release_net,
4126};
4127
4128static const struct seq_operations softnet_seq_ops = {
4129 .start = softnet_seq_start,
4130 .next = softnet_seq_next,
4131 .stop = softnet_seq_stop,
4132 .show = softnet_seq_show,
4133};
4134
4135static int softnet_seq_open(struct inode *inode, struct file *file)
4136{
4137 return seq_open(file, &softnet_seq_ops);
4138}
4139
4140static const struct file_operations softnet_seq_fops = {
4141 .owner = THIS_MODULE,
4142 .open = softnet_seq_open,
4143 .read = seq_read,
4144 .llseek = seq_lseek,
4145 .release = seq_release,
4146};
4147
4148static void *ptype_get_idx(loff_t pos)
4149{
4150 struct packet_type *pt = NULL;
4151 loff_t i = 0;
4152 int t;
4153
4154 list_for_each_entry_rcu(pt, &ptype_all, list) {
4155 if (i == pos)
4156 return pt;
4157 ++i;
4158 }
4159
4160 for (t = 0; t < PTYPE_HASH_SIZE; t++) {
4161 list_for_each_entry_rcu(pt, &ptype_base[t], list) {
4162 if (i == pos)
4163 return pt;
4164 ++i;
4165 }
4166 }
4167 return NULL;
4168}
4169
4170static void *ptype_seq_start(struct seq_file *seq, loff_t *pos)
4171 __acquires(RCU)
4172{
4173 rcu_read_lock();
4174 return *pos ? ptype_get_idx(*pos - 1) : SEQ_START_TOKEN;
4175}
4176
4177static void *ptype_seq_next(struct seq_file *seq, void *v, loff_t *pos)
4178{
4179 struct packet_type *pt;
4180 struct list_head *nxt;
4181 int hash;
4182
4183 ++*pos;
4184 if (v == SEQ_START_TOKEN)
4185 return ptype_get_idx(0);
4186
4187 pt = v;
4188 nxt = pt->list.next;
4189 if (pt->type == htons(ETH_P_ALL)) {
4190 if (nxt != &ptype_all)
4191 goto found;
4192 hash = 0;
4193 nxt = ptype_base[0].next;
4194 } else
4195 hash = ntohs(pt->type) & PTYPE_HASH_MASK;
4196
4197 while (nxt == &ptype_base[hash]) {
4198 if (++hash >= PTYPE_HASH_SIZE)
4199 return NULL;
4200 nxt = ptype_base[hash].next;
4201 }
4202found:
4203 return list_entry(nxt, struct packet_type, list);
4204}
4205
4206static void ptype_seq_stop(struct seq_file *seq, void *v)
4207 __releases(RCU)
4208{
4209 rcu_read_unlock();
4210}
4211
4212static int ptype_seq_show(struct seq_file *seq, void *v)
4213{
4214 struct packet_type *pt = v;
4215
4216 if (v == SEQ_START_TOKEN)
4217 seq_puts(seq, "Type Device Function\n");
4218 else if (pt->dev == NULL || dev_net(pt->dev) == seq_file_net(seq)) {
4219 if (pt->type == htons(ETH_P_ALL))
4220 seq_puts(seq, "ALL ");
4221 else
4222 seq_printf(seq, "%04x", ntohs(pt->type));
4223
4224 seq_printf(seq, " %-8s %pF\n",
4225 pt->dev ? pt->dev->name : "", pt->func);
4226 }
4227
4228 return 0;
4229}
4230
4231static const struct seq_operations ptype_seq_ops = {
4232 .start = ptype_seq_start,
4233 .next = ptype_seq_next,
4234 .stop = ptype_seq_stop,
4235 .show = ptype_seq_show,
4236};
4237
4238static int ptype_seq_open(struct inode *inode, struct file *file)
4239{
4240 return seq_open_net(inode, file, &ptype_seq_ops,
4241 sizeof(struct seq_net_private));
4242}
4243
4244static const struct file_operations ptype_seq_fops = {
4245 .owner = THIS_MODULE,
4246 .open = ptype_seq_open,
4247 .read = seq_read,
4248 .llseek = seq_lseek,
4249 .release = seq_release_net,
4250};
4251
4252
4253static int __net_init dev_proc_net_init(struct net *net)
4254{
4255 int rc = -ENOMEM;
4256
4257 if (!proc_net_fops_create(net, "dev", S_IRUGO, &dev_seq_fops))
4258 goto out;
4259 if (!proc_net_fops_create(net, "softnet_stat", S_IRUGO, &softnet_seq_fops))
4260 goto out_dev;
4261 if (!proc_net_fops_create(net, "ptype", S_IRUGO, &ptype_seq_fops))
4262 goto out_softnet;
4263
4264 if (wext_proc_init(net))
4265 goto out_ptype;
4266 rc = 0;
4267out:
4268 return rc;
4269out_ptype:
4270 proc_net_remove(net, "ptype");
4271out_softnet:
4272 proc_net_remove(net, "softnet_stat");
4273out_dev:
4274 proc_net_remove(net, "dev");
4275 goto out;
4276}
4277
4278static void __net_exit dev_proc_net_exit(struct net *net)
4279{
4280 wext_proc_exit(net);
4281
4282 proc_net_remove(net, "ptype");
4283 proc_net_remove(net, "softnet_stat");
4284 proc_net_remove(net, "dev");
4285}
4286
4287static struct pernet_operations __net_initdata dev_proc_ops = {
4288 .init = dev_proc_net_init,
4289 .exit = dev_proc_net_exit,
4290};
4291
4292static int __init dev_proc_init(void)
4293{
4294 return register_pernet_subsys(&dev_proc_ops);
4295}
4296#else
4297#define dev_proc_init() 0
4298#endif /* CONFIG_PROC_FS */
4299
4300
4301/**
4302 * netdev_set_master - set up master pointer
4303 * @slave: slave device
4304 * @master: new master device
4305 *
4306 * Changes the master device of the slave. Pass %NULL to break the
4307 * bonding. The caller must hold the RTNL semaphore. On a failure
4308 * a negative errno code is returned. On success the reference counts
4309 * are adjusted and the function returns zero.
4310 */
4311int netdev_set_master(struct net_device *slave, struct net_device *master)
4312{
4313 struct net_device *old = slave->master;
4314
4315 ASSERT_RTNL();
4316
4317 if (master) {
4318 if (old)
4319 return -EBUSY;
4320 dev_hold(master);
4321 }
4322
4323 slave->master = master;
4324
4325 if (old)
4326 dev_put(old);
4327 return 0;
4328}
4329EXPORT_SYMBOL(netdev_set_master);
4330
4331/**
4332 * netdev_set_bond_master - set up bonding master/slave pair
4333 * @slave: slave device
4334 * @master: new master device
4335 *
4336 * Changes the master device of the slave. Pass %NULL to break the
4337 * bonding. The caller must hold the RTNL semaphore. On a failure
4338 * a negative errno code is returned. On success %RTM_NEWLINK is sent
4339 * to the routing socket and the function returns zero.
4340 */
4341int netdev_set_bond_master(struct net_device *slave, struct net_device *master)
4342{
4343 int err;
4344
4345 ASSERT_RTNL();
4346
4347 err = netdev_set_master(slave, master);
4348 if (err)
4349 return err;
4350 if (master)
4351 slave->flags |= IFF_SLAVE;
4352 else
4353 slave->flags &= ~IFF_SLAVE;
4354
4355 rtmsg_ifinfo(RTM_NEWLINK, slave, IFF_SLAVE);
4356 return 0;
4357}
4358EXPORT_SYMBOL(netdev_set_bond_master);
4359
4360static void dev_change_rx_flags(struct net_device *dev, int flags)
4361{
4362 const struct net_device_ops *ops = dev->netdev_ops;
4363
4364 if ((dev->flags & IFF_UP) && ops->ndo_change_rx_flags)
4365 ops->ndo_change_rx_flags(dev, flags);
4366}
4367
4368static int __dev_set_promiscuity(struct net_device *dev, int inc)
4369{
4370 unsigned short old_flags = dev->flags;
4371 uid_t uid;
4372 gid_t gid;
4373
4374 ASSERT_RTNL();
4375
4376 dev->flags |= IFF_PROMISC;
4377 dev->promiscuity += inc;
4378 if (dev->promiscuity == 0) {
4379 /*
4380 * Avoid overflow.
4381 * If inc causes overflow, untouch promisc and return error.
4382 */
4383 if (inc < 0)
4384 dev->flags &= ~IFF_PROMISC;
4385 else {
4386 dev->promiscuity -= inc;
4387 printk(KERN_WARNING "%s: promiscuity touches roof, "
4388 "set promiscuity failed, promiscuity feature "
4389 "of device might be broken.\n", dev->name);
4390 return -EOVERFLOW;
4391 }
4392 }
4393 if (dev->flags != old_flags) {
4394 printk(KERN_INFO "device %s %s promiscuous mode\n",
4395 dev->name, (dev->flags & IFF_PROMISC) ? "entered" :
4396 "left");
4397 if (audit_enabled) {
4398 current_uid_gid(&uid, &gid);
4399 audit_log(current->audit_context, GFP_ATOMIC,
4400 AUDIT_ANOM_PROMISCUOUS,
4401 "dev=%s prom=%d old_prom=%d auid=%u uid=%u gid=%u ses=%u",
4402 dev->name, (dev->flags & IFF_PROMISC),
4403 (old_flags & IFF_PROMISC),
4404 audit_get_loginuid(current),
4405 uid, gid,
4406 audit_get_sessionid(current));
4407 }
4408
4409 dev_change_rx_flags(dev, IFF_PROMISC);
4410 }
4411 return 0;
4412}
4413
4414/**
4415 * dev_set_promiscuity - update promiscuity count on a device
4416 * @dev: device
4417 * @inc: modifier
4418 *
4419 * Add or remove promiscuity from a device. While the count in the device
4420 * remains above zero the interface remains promiscuous. Once it hits zero
4421 * the device reverts back to normal filtering operation. A negative inc
4422 * value is used to drop promiscuity on the device.
4423 * Return 0 if successful or a negative errno code on error.
4424 */
4425int dev_set_promiscuity(struct net_device *dev, int inc)
4426{
4427 unsigned short old_flags = dev->flags;
4428 int err;
4429
4430 err = __dev_set_promiscuity(dev, inc);
4431 if (err < 0)
4432 return err;
4433 if (dev->flags != old_flags)
4434 dev_set_rx_mode(dev);
4435 return err;
4436}
4437EXPORT_SYMBOL(dev_set_promiscuity);
4438
4439/**
4440 * dev_set_allmulti - update allmulti count on a device
4441 * @dev: device
4442 * @inc: modifier
4443 *
4444 * Add or remove reception of all multicast frames to a device. While the
4445 * count in the device remains above zero the interface remains listening
4446 * to all interfaces. Once it hits zero the device reverts back to normal
4447 * filtering operation. A negative @inc value is used to drop the counter
4448 * when releasing a resource needing all multicasts.
4449 * Return 0 if successful or a negative errno code on error.
4450 */
4451
4452int dev_set_allmulti(struct net_device *dev, int inc)
4453{
4454 unsigned short old_flags = dev->flags;
4455
4456 ASSERT_RTNL();
4457
4458 dev->flags |= IFF_ALLMULTI;
4459 dev->allmulti += inc;
4460 if (dev->allmulti == 0) {
4461 /*
4462 * Avoid overflow.
4463 * If inc causes overflow, untouch allmulti and return error.
4464 */
4465 if (inc < 0)
4466 dev->flags &= ~IFF_ALLMULTI;
4467 else {
4468 dev->allmulti -= inc;
4469 printk(KERN_WARNING "%s: allmulti touches roof, "
4470 "set allmulti failed, allmulti feature of "
4471 "device might be broken.\n", dev->name);
4472 return -EOVERFLOW;
4473 }
4474 }
4475 if (dev->flags ^ old_flags) {
4476 dev_change_rx_flags(dev, IFF_ALLMULTI);
4477 dev_set_rx_mode(dev);
4478 }
4479 return 0;
4480}
4481EXPORT_SYMBOL(dev_set_allmulti);
4482
4483/*
4484 * Upload unicast and multicast address lists to device and
4485 * configure RX filtering. When the device doesn't support unicast
4486 * filtering it is put in promiscuous mode while unicast addresses
4487 * are present.
4488 */
4489void __dev_set_rx_mode(struct net_device *dev)
4490{
4491 const struct net_device_ops *ops = dev->netdev_ops;
4492
4493 /* dev_open will call this function so the list will stay sane. */
4494 if (!(dev->flags&IFF_UP))
4495 return;
4496
4497 if (!netif_device_present(dev))
4498 return;
4499
4500 if (ops->ndo_set_rx_mode)
4501 ops->ndo_set_rx_mode(dev);
4502 else {
4503 /* Unicast addresses changes may only happen under the rtnl,
4504 * therefore calling __dev_set_promiscuity here is safe.
4505 */
4506 if (!netdev_uc_empty(dev) && !dev->uc_promisc) {
4507 __dev_set_promiscuity(dev, 1);
4508 dev->uc_promisc = true;
4509 } else if (netdev_uc_empty(dev) && dev->uc_promisc) {
4510 __dev_set_promiscuity(dev, -1);
4511 dev->uc_promisc = false;
4512 }
4513
4514 if (ops->ndo_set_multicast_list)
4515 ops->ndo_set_multicast_list(dev);
4516 }
4517}
4518
4519void dev_set_rx_mode(struct net_device *dev)
4520{
4521 netif_addr_lock_bh(dev);
4522 __dev_set_rx_mode(dev);
4523 netif_addr_unlock_bh(dev);
4524}
4525
4526/**
4527 * dev_ethtool_get_settings - call device's ethtool_ops::get_settings()
4528 * @dev: device
4529 * @cmd: memory area for ethtool_ops::get_settings() result
4530 *
4531 * The cmd arg is initialized properly (cleared and
4532 * ethtool_cmd::cmd field set to ETHTOOL_GSET).
4533 *
4534 * Return device's ethtool_ops::get_settings() result value or
4535 * -EOPNOTSUPP when device doesn't expose
4536 * ethtool_ops::get_settings() operation.
4537 */
4538int dev_ethtool_get_settings(struct net_device *dev,
4539 struct ethtool_cmd *cmd)
4540{
4541 if (!dev->ethtool_ops || !dev->ethtool_ops->get_settings)
4542 return -EOPNOTSUPP;
4543
4544 memset(cmd, 0, sizeof(struct ethtool_cmd));
4545 cmd->cmd = ETHTOOL_GSET;
4546 return dev->ethtool_ops->get_settings(dev, cmd);
4547}
4548EXPORT_SYMBOL(dev_ethtool_get_settings);
4549
4550/**
4551 * dev_get_flags - get flags reported to userspace
4552 * @dev: device
4553 *
4554 * Get the combination of flag bits exported through APIs to userspace.
4555 */
4556unsigned dev_get_flags(const struct net_device *dev)
4557{
4558 unsigned flags;
4559
4560 flags = (dev->flags & ~(IFF_PROMISC |
4561 IFF_ALLMULTI |
4562 IFF_RUNNING |
4563 IFF_LOWER_UP |
4564 IFF_DORMANT)) |
4565 (dev->gflags & (IFF_PROMISC |
4566 IFF_ALLMULTI));
4567
4568 if (netif_running(dev)) {
4569 if (netif_oper_up(dev))
4570 flags |= IFF_RUNNING;
4571 if (netif_carrier_ok(dev))
4572 flags |= IFF_LOWER_UP;
4573 if (netif_dormant(dev))
4574 flags |= IFF_DORMANT;
4575 }
4576
4577 return flags;
4578}
4579EXPORT_SYMBOL(dev_get_flags);
4580
4581int __dev_change_flags(struct net_device *dev, unsigned int flags)
4582{
4583 int old_flags = dev->flags;
4584 int ret;
4585
4586 ASSERT_RTNL();
4587
4588 /*
4589 * Set the flags on our device.
4590 */
4591
4592 dev->flags = (flags & (IFF_DEBUG | IFF_NOTRAILERS | IFF_NOARP |
4593 IFF_DYNAMIC | IFF_MULTICAST | IFF_PORTSEL |
4594 IFF_AUTOMEDIA)) |
4595 (dev->flags & (IFF_UP | IFF_VOLATILE | IFF_PROMISC |
4596 IFF_ALLMULTI));
4597
4598 /*
4599 * Load in the correct multicast list now the flags have changed.
4600 */
4601
4602 if ((old_flags ^ flags) & IFF_MULTICAST)
4603 dev_change_rx_flags(dev, IFF_MULTICAST);
4604
4605 dev_set_rx_mode(dev);
4606
4607 /*
4608 * Have we downed the interface. We handle IFF_UP ourselves
4609 * according to user attempts to set it, rather than blindly
4610 * setting it.
4611 */
4612
4613 ret = 0;
4614 if ((old_flags ^ flags) & IFF_UP) { /* Bit is different ? */
4615 ret = ((old_flags & IFF_UP) ? __dev_close : __dev_open)(dev);
4616
4617 if (!ret)
4618 dev_set_rx_mode(dev);
4619 }
4620
4621 if ((flags ^ dev->gflags) & IFF_PROMISC) {
4622 int inc = (flags & IFF_PROMISC) ? 1 : -1;
4623
4624 dev->gflags ^= IFF_PROMISC;
4625 dev_set_promiscuity(dev, inc);
4626 }
4627
4628 /* NOTE: order of synchronization of IFF_PROMISC and IFF_ALLMULTI
4629 is important. Some (broken) drivers set IFF_PROMISC, when
4630 IFF_ALLMULTI is requested not asking us and not reporting.
4631 */
4632 if ((flags ^ dev->gflags) & IFF_ALLMULTI) {
4633 int inc = (flags & IFF_ALLMULTI) ? 1 : -1;
4634
4635 dev->gflags ^= IFF_ALLMULTI;
4636 dev_set_allmulti(dev, inc);
4637 }
4638
4639 return ret;
4640}
4641
4642void __dev_notify_flags(struct net_device *dev, unsigned int old_flags)
4643{
4644 unsigned int changes = dev->flags ^ old_flags;
4645
4646 if (changes & IFF_UP) {
4647 if (dev->flags & IFF_UP)
4648 call_netdevice_notifiers(NETDEV_UP, dev);
4649 else
4650 call_netdevice_notifiers(NETDEV_DOWN, dev);
4651 }
4652
4653 if (dev->flags & IFF_UP &&
4654 (changes & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE)))
4655 call_netdevice_notifiers(NETDEV_CHANGE, dev);
4656}
4657
4658/**
4659 * dev_change_flags - change device settings
4660 * @dev: device
4661 * @flags: device state flags
4662 *
4663 * Change settings on device based state flags. The flags are
4664 * in the userspace exported format.
4665 */
4666int dev_change_flags(struct net_device *dev, unsigned flags)
4667{
4668 int ret, changes;
4669 int old_flags = dev->flags;
4670
4671 ret = __dev_change_flags(dev, flags);
4672 if (ret < 0)
4673 return ret;
4674
4675 changes = old_flags ^ dev->flags;
4676 if (changes)
4677 rtmsg_ifinfo(RTM_NEWLINK, dev, changes);
4678
4679 __dev_notify_flags(dev, old_flags);
4680 return ret;
4681}
4682EXPORT_SYMBOL(dev_change_flags);
4683
4684/**
4685 * dev_set_mtu - Change maximum transfer unit
4686 * @dev: device
4687 * @new_mtu: new transfer unit
4688 *
4689 * Change the maximum transfer size of the network device.
4690 */
4691int dev_set_mtu(struct net_device *dev, int new_mtu)
4692{
4693 const struct net_device_ops *ops = dev->netdev_ops;
4694 int err;
4695
4696 if (new_mtu == dev->mtu)
4697 return 0;
4698
4699 /* MTU must be positive. */
4700 if (new_mtu < 0)
4701 return -EINVAL;
4702
4703 if (!netif_device_present(dev))
4704 return -ENODEV;
4705
4706 err = 0;
4707 if (ops->ndo_change_mtu)
4708 err = ops->ndo_change_mtu(dev, new_mtu);
4709 else
4710 dev->mtu = new_mtu;
4711
4712 if (!err && dev->flags & IFF_UP)
4713 call_netdevice_notifiers(NETDEV_CHANGEMTU, dev);
4714 return err;
4715}
4716EXPORT_SYMBOL(dev_set_mtu);
4717
4718/**
4719 * dev_set_group - Change group this device belongs to
4720 * @dev: device
4721 * @new_group: group this device should belong to
4722 */
4723void dev_set_group(struct net_device *dev, int new_group)
4724{
4725 dev->group = new_group;
4726}
4727EXPORT_SYMBOL(dev_set_group);
4728
4729/**
4730 * dev_set_mac_address - Change Media Access Control Address
4731 * @dev: device
4732 * @sa: new address
4733 *
4734 * Change the hardware (MAC) address of the device
4735 */
4736int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa)
4737{
4738 const struct net_device_ops *ops = dev->netdev_ops;
4739 int err;
4740
4741 if (!ops->ndo_set_mac_address)
4742 return -EOPNOTSUPP;
4743 if (sa->sa_family != dev->type)
4744 return -EINVAL;
4745 if (!netif_device_present(dev))
4746 return -ENODEV;
4747 err = ops->ndo_set_mac_address(dev, sa);
4748 if (!err)
4749 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4750 return err;
4751}
4752EXPORT_SYMBOL(dev_set_mac_address);
4753
4754/*
4755 * Perform the SIOCxIFxxx calls, inside rcu_read_lock()
4756 */
4757static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cmd)
4758{
4759 int err;
4760 struct net_device *dev = dev_get_by_name_rcu(net, ifr->ifr_name);
4761
4762 if (!dev)
4763 return -ENODEV;
4764
4765 switch (cmd) {
4766 case SIOCGIFFLAGS: /* Get interface flags */
4767 ifr->ifr_flags = (short) dev_get_flags(dev);
4768 return 0;
4769
4770 case SIOCGIFMETRIC: /* Get the metric on the interface
4771 (currently unused) */
4772 ifr->ifr_metric = 0;
4773 return 0;
4774
4775 case SIOCGIFMTU: /* Get the MTU of a device */
4776 ifr->ifr_mtu = dev->mtu;
4777 return 0;
4778
4779 case SIOCGIFHWADDR:
4780 if (!dev->addr_len)
4781 memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data);
4782 else
4783 memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr,
4784 min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
4785 ifr->ifr_hwaddr.sa_family = dev->type;
4786 return 0;
4787
4788 case SIOCGIFSLAVE:
4789 err = -EINVAL;
4790 break;
4791
4792 case SIOCGIFMAP:
4793 ifr->ifr_map.mem_start = dev->mem_start;
4794 ifr->ifr_map.mem_end = dev->mem_end;
4795 ifr->ifr_map.base_addr = dev->base_addr;
4796 ifr->ifr_map.irq = dev->irq;
4797 ifr->ifr_map.dma = dev->dma;
4798 ifr->ifr_map.port = dev->if_port;
4799 return 0;
4800
4801 case SIOCGIFINDEX:
4802 ifr->ifr_ifindex = dev->ifindex;
4803 return 0;
4804
4805 case SIOCGIFTXQLEN:
4806 ifr->ifr_qlen = dev->tx_queue_len;
4807 return 0;
4808
4809 default:
4810 /* dev_ioctl() should ensure this case
4811 * is never reached
4812 */
4813 WARN_ON(1);
4814 err = -ENOTTY;
4815 break;
4816
4817 }
4818 return err;
4819}
4820
4821/*
4822 * Perform the SIOCxIFxxx calls, inside rtnl_lock()
4823 */
4824static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd)
4825{
4826 int err;
4827 struct net_device *dev = __dev_get_by_name(net, ifr->ifr_name);
4828 const struct net_device_ops *ops;
4829
4830 if (!dev)
4831 return -ENODEV;
4832
4833 ops = dev->netdev_ops;
4834
4835 switch (cmd) {
4836 case SIOCSIFFLAGS: /* Set interface flags */
4837 return dev_change_flags(dev, ifr->ifr_flags);
4838
4839 case SIOCSIFMETRIC: /* Set the metric on the interface
4840 (currently unused) */
4841 return -EOPNOTSUPP;
4842
4843 case SIOCSIFMTU: /* Set the MTU of a device */
4844 return dev_set_mtu(dev, ifr->ifr_mtu);
4845
4846 case SIOCSIFHWADDR:
4847 return dev_set_mac_address(dev, &ifr->ifr_hwaddr);
4848
4849 case SIOCSIFHWBROADCAST:
4850 if (ifr->ifr_hwaddr.sa_family != dev->type)
4851 return -EINVAL;
4852 memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data,
4853 min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len));
4854 call_netdevice_notifiers(NETDEV_CHANGEADDR, dev);
4855 return 0;
4856
4857 case SIOCSIFMAP:
4858 if (ops->ndo_set_config) {
4859 if (!netif_device_present(dev))
4860 return -ENODEV;
4861 return ops->ndo_set_config(dev, &ifr->ifr_map);
4862 }
4863 return -EOPNOTSUPP;
4864
4865 case SIOCADDMULTI:
4866 if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
4867 ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
4868 return -EINVAL;
4869 if (!netif_device_present(dev))
4870 return -ENODEV;
4871 return dev_mc_add_global(dev, ifr->ifr_hwaddr.sa_data);
4872
4873 case SIOCDELMULTI:
4874 if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) ||
4875 ifr->ifr_hwaddr.sa_family != AF_UNSPEC)
4876 return -EINVAL;
4877 if (!netif_device_present(dev))
4878 return -ENODEV;
4879 return dev_mc_del_global(dev, ifr->ifr_hwaddr.sa_data);
4880
4881 case SIOCSIFTXQLEN:
4882 if (ifr->ifr_qlen < 0)
4883 return -EINVAL;
4884 dev->tx_queue_len = ifr->ifr_qlen;
4885 return 0;
4886
4887 case SIOCSIFNAME:
4888 ifr->ifr_newname[IFNAMSIZ-1] = '\0';
4889 return dev_change_name(dev, ifr->ifr_newname);
4890
4891 /*
4892 * Unknown or private ioctl
4893 */
4894 default:
4895 if ((cmd >= SIOCDEVPRIVATE &&
4896 cmd <= SIOCDEVPRIVATE + 15) ||
4897 cmd == SIOCBONDENSLAVE ||
4898 cmd == SIOCBONDRELEASE ||
4899 cmd == SIOCBONDSETHWADDR ||
4900 cmd == SIOCBONDSLAVEINFOQUERY ||
4901 cmd == SIOCBONDINFOQUERY ||
4902 cmd == SIOCBONDCHANGEACTIVE ||
4903 cmd == SIOCGMIIPHY ||
4904 cmd == SIOCGMIIREG ||
4905 cmd == SIOCSMIIREG ||
4906 cmd == SIOCBRADDIF ||
4907 cmd == SIOCBRDELIF ||
4908 cmd == SIOCSHWTSTAMP ||
4909 cmd == SIOCWANDEV) {
4910 err = -EOPNOTSUPP;
4911 if (ops->ndo_do_ioctl) {
4912 if (netif_device_present(dev))
4913 err = ops->ndo_do_ioctl(dev, ifr, cmd);
4914 else
4915 err = -ENODEV;
4916 }
4917 } else
4918 err = -EINVAL;
4919
4920 }
4921 return err;
4922}
4923
4924/*
4925 * This function handles all "interface"-type I/O control requests. The actual
4926 * 'doing' part of this is dev_ifsioc above.
4927 */
4928
4929/**
4930 * dev_ioctl - network device ioctl
4931 * @net: the applicable net namespace
4932 * @cmd: command to issue
4933 * @arg: pointer to a struct ifreq in user space
4934 *
4935 * Issue ioctl functions to devices. This is normally called by the
4936 * user space syscall interfaces but can sometimes be useful for
4937 * other purposes. The return value is the return from the syscall if
4938 * positive or a negative errno code on error.
4939 */
4940
4941int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg)
4942{
4943 struct ifreq ifr;
4944 int ret;
4945 char *colon;
4946
4947 /* One special case: SIOCGIFCONF takes ifconf argument
4948 and requires shared lock, because it sleeps writing
4949 to user space.
4950 */
4951
4952 if (cmd == SIOCGIFCONF) {
4953 rtnl_lock();
4954 ret = dev_ifconf(net, (char __user *) arg);
4955 rtnl_unlock();
4956 return ret;
4957 }
4958 if (cmd == SIOCGIFNAME)
4959 return dev_ifname(net, (struct ifreq __user *)arg);
4960
4961 if (copy_from_user(&ifr, arg, sizeof(struct ifreq)))
4962 return -EFAULT;
4963
4964 ifr.ifr_name[IFNAMSIZ-1] = 0;
4965
4966 colon = strchr(ifr.ifr_name, ':');
4967 if (colon)
4968 *colon = 0;
4969
4970 /*
4971 * See which interface the caller is talking about.
4972 */
4973
4974 switch (cmd) {
4975 /*
4976 * These ioctl calls:
4977 * - can be done by all.
4978 * - atomic and do not require locking.
4979 * - return a value
4980 */
4981 case SIOCGIFFLAGS:
4982 case SIOCGIFMETRIC:
4983 case SIOCGIFMTU:
4984 case SIOCGIFHWADDR:
4985 case SIOCGIFSLAVE:
4986 case SIOCGIFMAP:
4987 case SIOCGIFINDEX:
4988 case SIOCGIFTXQLEN:
4989 dev_load(net, ifr.ifr_name);
4990 rcu_read_lock();
4991 ret = dev_ifsioc_locked(net, &ifr, cmd);
4992 rcu_read_unlock();
4993 if (!ret) {
4994 if (colon)
4995 *colon = ':';
4996 if (copy_to_user(arg, &ifr,
4997 sizeof(struct ifreq)))
4998 ret = -EFAULT;
4999 }
5000 return ret;
5001
5002 case SIOCETHTOOL:
5003 dev_load(net, ifr.ifr_name);
5004 rtnl_lock();
5005 ret = dev_ethtool(net, &ifr);
5006 rtnl_unlock();
5007 if (!ret) {
5008 if (colon)
5009 *colon = ':';
5010 if (copy_to_user(arg, &ifr,
5011 sizeof(struct ifreq)))
5012 ret = -EFAULT;
5013 }
5014 return ret;
5015
5016 /*
5017 * These ioctl calls:
5018 * - require superuser power.
5019 * - require strict serialization.
5020 * - return a value
5021 */
5022 case SIOCGMIIPHY:
5023 case SIOCGMIIREG:
5024 case SIOCSIFNAME:
5025 if (!capable(CAP_NET_ADMIN))
5026 return -EPERM;
5027 dev_load(net, ifr.ifr_name);
5028 rtnl_lock();
5029 ret = dev_ifsioc(net, &ifr, cmd);
5030 rtnl_unlock();
5031 if (!ret) {
5032 if (colon)
5033 *colon = ':';
5034 if (copy_to_user(arg, &ifr,
5035 sizeof(struct ifreq)))
5036 ret = -EFAULT;
5037 }
5038 return ret;
5039
5040 /*
5041 * These ioctl calls:
5042 * - require superuser power.
5043 * - require strict serialization.
5044 * - do not return a value
5045 */
5046 case SIOCSIFFLAGS:
5047 case SIOCSIFMETRIC:
5048 case SIOCSIFMTU:
5049 case SIOCSIFMAP:
5050 case SIOCSIFHWADDR:
5051 case SIOCSIFSLAVE:
5052 case SIOCADDMULTI:
5053 case SIOCDELMULTI:
5054 case SIOCSIFHWBROADCAST:
5055 case SIOCSIFTXQLEN:
5056 case SIOCSMIIREG:
5057 case SIOCBONDENSLAVE:
5058 case SIOCBONDRELEASE:
5059 case SIOCBONDSETHWADDR:
5060 case SIOCBONDCHANGEACTIVE:
5061 case SIOCBRADDIF:
5062 case SIOCBRDELIF:
5063 case SIOCSHWTSTAMP:
5064 if (!capable(CAP_NET_ADMIN))
5065 return -EPERM;
5066 /* fall through */
5067 case SIOCBONDSLAVEINFOQUERY:
5068 case SIOCBONDINFOQUERY:
5069 dev_load(net, ifr.ifr_name);
5070 rtnl_lock();
5071 ret = dev_ifsioc(net, &ifr, cmd);
5072 rtnl_unlock();
5073 return ret;
5074
5075 case SIOCGIFMEM:
5076 /* Get the per device memory space. We can add this but
5077 * currently do not support it */
5078 case SIOCSIFMEM:
5079 /* Set the per device memory buffer space.
5080 * Not applicable in our case */
5081 case SIOCSIFLINK:
5082 return -ENOTTY;
5083
5084 /*
5085 * Unknown or private ioctl.
5086 */
5087 default:
5088 if (cmd == SIOCWANDEV ||
5089 (cmd >= SIOCDEVPRIVATE &&
5090 cmd <= SIOCDEVPRIVATE + 15)) {
5091 dev_load(net, ifr.ifr_name);
5092 rtnl_lock();
5093 ret = dev_ifsioc(net, &ifr, cmd);
5094 rtnl_unlock();
5095 if (!ret && copy_to_user(arg, &ifr,
5096 sizeof(struct ifreq)))
5097 ret = -EFAULT;
5098 return ret;
5099 }
5100 /* Take care of Wireless Extensions */
5101 if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST)
5102 return wext_handle_ioctl(net, &ifr, cmd, arg);
5103 return -ENOTTY;
5104 }
5105}
5106
5107
5108/**
5109 * dev_new_index - allocate an ifindex
5110 * @net: the applicable net namespace
5111 *
5112 * Returns a suitable unique value for a new device interface
5113 * number. The caller must hold the rtnl semaphore or the
5114 * dev_base_lock to be sure it remains unique.
5115 */
5116static int dev_new_index(struct net *net)
5117{
5118 static int ifindex;
5119 for (;;) {
5120 if (++ifindex <= 0)
5121 ifindex = 1;
5122 if (!__dev_get_by_index(net, ifindex))
5123 return ifindex;
5124 }
5125}
5126
5127/* Delayed registration/unregisteration */
5128static LIST_HEAD(net_todo_list);
5129
5130static void net_set_todo(struct net_device *dev)
5131{
5132 list_add_tail(&dev->todo_list, &net_todo_list);
5133}
5134
5135static void rollback_registered_many(struct list_head *head)
5136{
5137 struct net_device *dev, *tmp;
5138
5139 BUG_ON(dev_boot_phase);
5140 ASSERT_RTNL();
5141
5142 list_for_each_entry_safe(dev, tmp, head, unreg_list) {
5143 /* Some devices call without registering
5144 * for initialization unwind. Remove those
5145 * devices and proceed with the remaining.
5146 */
5147 if (dev->reg_state == NETREG_UNINITIALIZED) {
5148 pr_debug("unregister_netdevice: device %s/%p never "
5149 "was registered\n", dev->name, dev);
5150
5151 WARN_ON(1);
5152 list_del(&dev->unreg_list);
5153 continue;
5154 }
5155 dev->dismantle = true;
5156 BUG_ON(dev->reg_state != NETREG_REGISTERED);
5157 }
5158
5159 /* If device is running, close it first. */
5160 dev_close_many(head);
5161
5162 list_for_each_entry(dev, head, unreg_list) {
5163 /* And unlink it from device chain. */
5164 unlist_netdevice(dev);
5165
5166 dev->reg_state = NETREG_UNREGISTERING;
5167 }
5168
5169 synchronize_net();
5170
5171 list_for_each_entry(dev, head, unreg_list) {
5172 /* Shutdown queueing discipline. */
5173 dev_shutdown(dev);
5174
5175
5176 /* Notify protocols, that we are about to destroy
5177 this device. They should clean all the things.
5178 */
5179 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
5180
5181 if (!dev->rtnl_link_ops ||
5182 dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
5183 rtmsg_ifinfo(RTM_DELLINK, dev, ~0U);
5184
5185 /*
5186 * Flush the unicast and multicast chains
5187 */
5188 dev_uc_flush(dev);
5189 dev_mc_flush(dev);
5190
5191 if (dev->netdev_ops->ndo_uninit)
5192 dev->netdev_ops->ndo_uninit(dev);
5193
5194 /* Notifier chain MUST detach us from master device. */
5195 WARN_ON(dev->master);
5196
5197 /* Remove entries from kobject tree */
5198 netdev_unregister_kobject(dev);
5199 }
5200
5201 /* Process any work delayed until the end of the batch */
5202 dev = list_first_entry(head, struct net_device, unreg_list);
5203 call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);
5204
5205 rcu_barrier();
5206
5207 list_for_each_entry(dev, head, unreg_list)
5208 dev_put(dev);
5209}
5210
5211static void rollback_registered(struct net_device *dev)
5212{
5213 LIST_HEAD(single);
5214
5215 list_add(&dev->unreg_list, &single);
5216 rollback_registered_many(&single);
5217 list_del(&single);
5218}
5219
5220static u32 netdev_fix_features(struct net_device *dev, u32 features)
5221{
5222 /* Fix illegal checksum combinations */
5223 if ((features & NETIF_F_HW_CSUM) &&
5224 (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
5225 netdev_warn(dev, "mixed HW and IP checksum settings.\n");
5226 features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
5227 }
5228
5229 if ((features & NETIF_F_NO_CSUM) &&
5230 (features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
5231 netdev_warn(dev, "mixed no checksumming and other settings.\n");
5232 features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM);
5233 }
5234
5235 /* Fix illegal SG+CSUM combinations. */
5236 if ((features & NETIF_F_SG) &&
5237 !(features & NETIF_F_ALL_CSUM)) {
5238 netdev_dbg(dev,
5239 "Dropping NETIF_F_SG since no checksum feature.\n");
5240 features &= ~NETIF_F_SG;
5241 }
5242
5243 /* TSO requires that SG is present as well. */
5244 if ((features & NETIF_F_ALL_TSO) && !(features & NETIF_F_SG)) {
5245 netdev_dbg(dev, "Dropping TSO features since no SG feature.\n");
5246 features &= ~NETIF_F_ALL_TSO;
5247 }
5248
5249 /* TSO ECN requires that TSO is present as well. */
5250 if ((features & NETIF_F_ALL_TSO) == NETIF_F_TSO_ECN)
5251 features &= ~NETIF_F_TSO_ECN;
5252
5253 /* Software GSO depends on SG. */
5254 if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) {
5255 netdev_dbg(dev, "Dropping NETIF_F_GSO since no SG feature.\n");
5256 features &= ~NETIF_F_GSO;
5257 }
5258
5259 /* UFO needs SG and checksumming */
5260 if (features & NETIF_F_UFO) {
5261 /* maybe split UFO into V4 and V6? */
5262 if (!((features & NETIF_F_GEN_CSUM) ||
5263 (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))
5264 == (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
5265 netdev_dbg(dev,
5266 "Dropping NETIF_F_UFO since no checksum offload features.\n");
5267 features &= ~NETIF_F_UFO;
5268 }
5269
5270 if (!(features & NETIF_F_SG)) {
5271 netdev_dbg(dev,
5272 "Dropping NETIF_F_UFO since no NETIF_F_SG feature.\n");
5273 features &= ~NETIF_F_UFO;
5274 }
5275 }
5276
5277 return features;
5278}
5279
5280int __netdev_update_features(struct net_device *dev)
5281{
5282 u32 features;
5283 int err = 0;
5284
5285 ASSERT_RTNL();
5286
5287 features = netdev_get_wanted_features(dev);
5288
5289 if (dev->netdev_ops->ndo_fix_features)
5290 features = dev->netdev_ops->ndo_fix_features(dev, features);
5291
5292 /* driver might be less strict about feature dependencies */
5293 features = netdev_fix_features(dev, features);
5294
5295 if (dev->features == features)
5296 return 0;
5297
5298 netdev_dbg(dev, "Features changed: 0x%08x -> 0x%08x\n",
5299 dev->features, features);
5300
5301 if (dev->netdev_ops->ndo_set_features)
5302 err = dev->netdev_ops->ndo_set_features(dev, features);
5303
5304 if (unlikely(err < 0)) {
5305 netdev_err(dev,
5306 "set_features() failed (%d); wanted 0x%08x, left 0x%08x\n",
5307 err, features, dev->features);
5308 return -1;
5309 }
5310
5311 if (!err)
5312 dev->features = features;
5313
5314 return 1;
5315}
5316
5317/**
5318 * netdev_update_features - recalculate device features
5319 * @dev: the device to check
5320 *
5321 * Recalculate dev->features set and send notifications if it
5322 * has changed. Should be called after driver or hardware dependent
5323 * conditions might have changed that influence the features.
5324 */
5325void netdev_update_features(struct net_device *dev)
5326{
5327 if (__netdev_update_features(dev))
5328 netdev_features_change(dev);
5329}
5330EXPORT_SYMBOL(netdev_update_features);
5331
5332/**
5333 * netdev_change_features - recalculate device features
5334 * @dev: the device to check
5335 *
5336 * Recalculate dev->features set and send notifications even
5337 * if they have not changed. Should be called instead of
5338 * netdev_update_features() if also dev->vlan_features might
5339 * have changed to allow the changes to be propagated to stacked
5340 * VLAN devices.
5341 */
5342void netdev_change_features(struct net_device *dev)
5343{
5344 __netdev_update_features(dev);
5345 netdev_features_change(dev);
5346}
5347EXPORT_SYMBOL(netdev_change_features);
5348
5349/**
5350 * netif_stacked_transfer_operstate - transfer operstate
5351 * @rootdev: the root or lower level device to transfer state from
5352 * @dev: the device to transfer operstate to
5353 *
5354 * Transfer operational state from root to device. This is normally
5355 * called when a stacking relationship exists between the root
5356 * device and the device(a leaf device).
5357 */
5358void netif_stacked_transfer_operstate(const struct net_device *rootdev,
5359 struct net_device *dev)
5360{
5361 if (rootdev->operstate == IF_OPER_DORMANT)
5362 netif_dormant_on(dev);
5363 else
5364 netif_dormant_off(dev);
5365
5366 if (netif_carrier_ok(rootdev)) {
5367 if (!netif_carrier_ok(dev))
5368 netif_carrier_on(dev);
5369 } else {
5370 if (netif_carrier_ok(dev))
5371 netif_carrier_off(dev);
5372 }
5373}
5374EXPORT_SYMBOL(netif_stacked_transfer_operstate);
5375
5376#ifdef CONFIG_RPS
5377static int netif_alloc_rx_queues(struct net_device *dev)
5378{
5379 unsigned int i, count = dev->num_rx_queues;
5380 struct netdev_rx_queue *rx;
5381
5382 BUG_ON(count < 1);
5383
5384 rx = kcalloc(count, sizeof(struct netdev_rx_queue), GFP_KERNEL);
5385 if (!rx) {
5386 pr_err("netdev: Unable to allocate %u rx queues.\n", count);
5387 return -ENOMEM;
5388 }
5389 dev->_rx = rx;
5390
5391 for (i = 0; i < count; i++)
5392 rx[i].dev = dev;
5393 return 0;
5394}
5395#endif
5396
5397static void netdev_init_one_queue(struct net_device *dev,
5398 struct netdev_queue *queue, void *_unused)
5399{
5400 /* Initialize queue lock */
5401 spin_lock_init(&queue->_xmit_lock);
5402 netdev_set_xmit_lockdep_class(&queue->_xmit_lock, dev->type);
5403 queue->xmit_lock_owner = -1;
5404 netdev_queue_numa_node_write(queue, NUMA_NO_NODE);
5405 queue->dev = dev;
5406}
5407
5408static int netif_alloc_netdev_queues(struct net_device *dev)
5409{
5410 unsigned int count = dev->num_tx_queues;
5411 struct netdev_queue *tx;
5412
5413 BUG_ON(count < 1);
5414
5415 tx = kcalloc(count, sizeof(struct netdev_queue), GFP_KERNEL);
5416 if (!tx) {
5417 pr_err("netdev: Unable to allocate %u tx queues.\n",
5418 count);
5419 return -ENOMEM;
5420 }
5421 dev->_tx = tx;
5422
5423 netdev_for_each_tx_queue(dev, netdev_init_one_queue, NULL);
5424 spin_lock_init(&dev->tx_global_lock);
5425
5426 return 0;
5427}
5428
5429/**
5430 * register_netdevice - register a network device
5431 * @dev: device to register
5432 *
5433 * Take a completed network device structure and add it to the kernel
5434 * interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
5435 * chain. 0 is returned on success. A negative errno code is returned
5436 * on a failure to set up the device, or if the name is a duplicate.
5437 *
5438 * Callers must hold the rtnl semaphore. You may want
5439 * register_netdev() instead of this.
5440 *
5441 * BUGS:
5442 * The locking appears insufficient to guarantee two parallel registers
5443 * will not get the same name.
5444 */
5445
5446int register_netdevice(struct net_device *dev)
5447{
5448 int ret;
5449 struct net *net = dev_net(dev);
5450
5451 BUG_ON(dev_boot_phase);
5452 ASSERT_RTNL();
5453
5454 might_sleep();
5455
5456 /* When net_device's are persistent, this will be fatal. */
5457 BUG_ON(dev->reg_state != NETREG_UNINITIALIZED);
5458 BUG_ON(!net);
5459
5460 spin_lock_init(&dev->addr_list_lock);
5461 netdev_set_addr_lockdep_class(dev);
5462
5463 dev->iflink = -1;
5464
5465 ret = dev_get_valid_name(dev, dev->name);
5466 if (ret < 0)
5467 goto out;
5468
5469 /* Init, if this function is available */
5470 if (dev->netdev_ops->ndo_init) {
5471 ret = dev->netdev_ops->ndo_init(dev);
5472 if (ret) {
5473 if (ret > 0)
5474 ret = -EIO;
5475 goto out;
5476 }
5477 }
5478
5479 dev->ifindex = dev_new_index(net);
5480 if (dev->iflink == -1)
5481 dev->iflink = dev->ifindex;
5482
5483 /* Transfer changeable features to wanted_features and enable
5484 * software offloads (GSO and GRO).
5485 */
5486 dev->hw_features |= NETIF_F_SOFT_FEATURES;
5487 dev->features |= NETIF_F_SOFT_FEATURES;
5488 dev->wanted_features = dev->features & dev->hw_features;
5489
5490 /* Turn on no cache copy if HW is doing checksum */
5491 dev->hw_features |= NETIF_F_NOCACHE_COPY;
5492 if ((dev->features & NETIF_F_ALL_CSUM) &&
5493 !(dev->features & NETIF_F_NO_CSUM)) {
5494 dev->wanted_features |= NETIF_F_NOCACHE_COPY;
5495 dev->features |= NETIF_F_NOCACHE_COPY;
5496 }
5497
5498 /* Make NETIF_F_HIGHDMA inheritable to VLAN devices.
5499 */
5500 dev->vlan_features |= NETIF_F_HIGHDMA;
5501
5502 ret = call_netdevice_notifiers(NETDEV_POST_INIT, dev);
5503 ret = notifier_to_errno(ret);
5504 if (ret)
5505 goto err_uninit;
5506
5507 ret = netdev_register_kobject(dev);
5508 if (ret)
5509 goto err_uninit;
5510 dev->reg_state = NETREG_REGISTERED;
5511
5512 __netdev_update_features(dev);
5513
5514 /*
5515 * Default initial state at registry is that the
5516 * device is present.
5517 */
5518
5519 set_bit(__LINK_STATE_PRESENT, &dev->state);
5520
5521 dev_init_scheduler(dev);
5522 dev_hold(dev);
5523 list_netdevice(dev);
5524
5525 /* Notify protocols, that a new device appeared. */
5526 ret = call_netdevice_notifiers(NETDEV_REGISTER, dev);
5527 ret = notifier_to_errno(ret);
5528 if (ret) {
5529 rollback_registered(dev);
5530 dev->reg_state = NETREG_UNREGISTERED;
5531 }
5532 /*
5533 * Prevent userspace races by waiting until the network
5534 * device is fully setup before sending notifications.
5535 */
5536 if (!dev->rtnl_link_ops ||
5537 dev->rtnl_link_state == RTNL_LINK_INITIALIZED)
5538 rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U);
5539
5540out:
5541 return ret;
5542
5543err_uninit:
5544 if (dev->netdev_ops->ndo_uninit)
5545 dev->netdev_ops->ndo_uninit(dev);
5546 goto out;
5547}
5548EXPORT_SYMBOL(register_netdevice);
5549
5550/**
5551 * init_dummy_netdev - init a dummy network device for NAPI
5552 * @dev: device to init
5553 *
5554 * This takes a network device structure and initialize the minimum
5555 * amount of fields so it can be used to schedule NAPI polls without
5556 * registering a full blown interface. This is to be used by drivers
5557 * that need to tie several hardware interfaces to a single NAPI
5558 * poll scheduler due to HW limitations.
5559 */
5560int init_dummy_netdev(struct net_device *dev)
5561{
5562 /* Clear everything. Note we don't initialize spinlocks
5563 * are they aren't supposed to be taken by any of the
5564 * NAPI code and this dummy netdev is supposed to be
5565 * only ever used for NAPI polls
5566 */
5567 memset(dev, 0, sizeof(struct net_device));
5568
5569 /* make sure we BUG if trying to hit standard
5570 * register/unregister code path
5571 */
5572 dev->reg_state = NETREG_DUMMY;
5573
5574 /* NAPI wants this */
5575 INIT_LIST_HEAD(&dev->napi_list);
5576
5577 /* a dummy interface is started by default */
5578 set_bit(__LINK_STATE_PRESENT, &dev->state);
5579 set_bit(__LINK_STATE_START, &dev->state);
5580
5581 /* Note : We dont allocate pcpu_refcnt for dummy devices,
5582 * because users of this 'device' dont need to change
5583 * its refcount.
5584 */
5585
5586 return 0;
5587}
5588EXPORT_SYMBOL_GPL(init_dummy_netdev);
5589
5590
5591/**
5592 * register_netdev - register a network device
5593 * @dev: device to register
5594 *
5595 * Take a completed network device structure and add it to the kernel
5596 * interfaces. A %NETDEV_REGISTER message is sent to the netdev notifier
5597 * chain. 0 is returned on success. A negative errno code is returned
5598 * on a failure to set up the device, or if the name is a duplicate.
5599 *
5600 * This is a wrapper around register_netdevice that takes the rtnl semaphore
5601 * and expands the device name if you passed a format string to
5602 * alloc_netdev.
5603 */
5604int register_netdev(struct net_device *dev)
5605{
5606 int err;
5607
5608 rtnl_lock();
5609 err = register_netdevice(dev);
5610 rtnl_unlock();
5611 return err;
5612}
5613EXPORT_SYMBOL(register_netdev);
5614
5615int netdev_refcnt_read(const struct net_device *dev)
5616{
5617 int i, refcnt = 0;
5618
5619 for_each_possible_cpu(i)
5620 refcnt += *per_cpu_ptr(dev->pcpu_refcnt, i);
5621 return refcnt;
5622}
5623EXPORT_SYMBOL(netdev_refcnt_read);
5624
5625/*
5626 * netdev_wait_allrefs - wait until all references are gone.
5627 *
5628 * This is called when unregistering network devices.
5629 *
5630 * Any protocol or device that holds a reference should register
5631 * for netdevice notification, and cleanup and put back the
5632 * reference if they receive an UNREGISTER event.
5633 * We can get stuck here if buggy protocols don't correctly
5634 * call dev_put.
5635 */
5636static void netdev_wait_allrefs(struct net_device *dev)
5637{
5638 unsigned long rebroadcast_time, warning_time;
5639 int refcnt;
5640
5641 linkwatch_forget_dev(dev);
5642
5643 rebroadcast_time = warning_time = jiffies;
5644 refcnt = netdev_refcnt_read(dev);
5645
5646 while (refcnt != 0) {
5647 if (time_after(jiffies, rebroadcast_time + 1 * HZ)) {
5648 rtnl_lock();
5649
5650 /* Rebroadcast unregister notification */
5651 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
5652 /* don't resend NETDEV_UNREGISTER_BATCH, _BATCH users
5653 * should have already handle it the first time */
5654
5655 if (test_bit(__LINK_STATE_LINKWATCH_PENDING,
5656 &dev->state)) {
5657 /* We must not have linkwatch events
5658 * pending on unregister. If this
5659 * happens, we simply run the queue
5660 * unscheduled, resulting in a noop
5661 * for this device.
5662 */
5663 linkwatch_run_queue();
5664 }
5665
5666 __rtnl_unlock();
5667
5668 rebroadcast_time = jiffies;
5669 }
5670
5671 msleep(250);
5672
5673 refcnt = netdev_refcnt_read(dev);
5674
5675 if (time_after(jiffies, warning_time + 10 * HZ)) {
5676 printk(KERN_EMERG "unregister_netdevice: "
5677 "waiting for %s to become free. Usage "
5678 "count = %d\n",
5679 dev->name, refcnt);
5680 warning_time = jiffies;
5681 }
5682 }
5683}
5684
5685/* The sequence is:
5686 *
5687 * rtnl_lock();
5688 * ...
5689 * register_netdevice(x1);
5690 * register_netdevice(x2);
5691 * ...
5692 * unregister_netdevice(y1);
5693 * unregister_netdevice(y2);
5694 * ...
5695 * rtnl_unlock();
5696 * free_netdev(y1);
5697 * free_netdev(y2);
5698 *
5699 * We are invoked by rtnl_unlock().
5700 * This allows us to deal with problems:
5701 * 1) We can delete sysfs objects which invoke hotplug
5702 * without deadlocking with linkwatch via keventd.
5703 * 2) Since we run with the RTNL semaphore not held, we can sleep
5704 * safely in order to wait for the netdev refcnt to drop to zero.
5705 *
5706 * We must not return until all unregister events added during
5707 * the interval the lock was held have been completed.
5708 */
5709void netdev_run_todo(void)
5710{
5711 struct list_head list;
5712
5713 /* Snapshot list, allow later requests */
5714 list_replace_init(&net_todo_list, &list);
5715
5716 __rtnl_unlock();
5717
5718 while (!list_empty(&list)) {
5719 struct net_device *dev
5720 = list_first_entry(&list, struct net_device, todo_list);
5721 list_del(&dev->todo_list);
5722
5723 if (unlikely(dev->reg_state != NETREG_UNREGISTERING)) {
5724 printk(KERN_ERR "network todo '%s' but state %d\n",
5725 dev->name, dev->reg_state);
5726 dump_stack();
5727 continue;
5728 }
5729
5730 dev->reg_state = NETREG_UNREGISTERED;
5731
5732 on_each_cpu(flush_backlog, dev, 1);
5733
5734 netdev_wait_allrefs(dev);
5735
5736 /* paranoia */
5737 BUG_ON(netdev_refcnt_read(dev));
5738 WARN_ON(rcu_dereference_raw(dev->ip_ptr));
5739 WARN_ON(rcu_dereference_raw(dev->ip6_ptr));
5740 WARN_ON(dev->dn_ptr);
5741
5742 if (dev->destructor)
5743 dev->destructor(dev);
5744
5745 /* Free network device */
5746 kobject_put(&dev->dev.kobj);
5747 }
5748}
5749
5750/* Convert net_device_stats to rtnl_link_stats64. They have the same
5751 * fields in the same order, with only the type differing.
5752 */
5753static void netdev_stats_to_stats64(struct rtnl_link_stats64 *stats64,
5754 const struct net_device_stats *netdev_stats)
5755{
5756#if BITS_PER_LONG == 64
5757 BUILD_BUG_ON(sizeof(*stats64) != sizeof(*netdev_stats));
5758 memcpy(stats64, netdev_stats, sizeof(*stats64));
5759#else
5760 size_t i, n = sizeof(*stats64) / sizeof(u64);
5761 const unsigned long *src = (const unsigned long *)netdev_stats;
5762 u64 *dst = (u64 *)stats64;
5763
5764 BUILD_BUG_ON(sizeof(*netdev_stats) / sizeof(unsigned long) !=
5765 sizeof(*stats64) / sizeof(u64));
5766 for (i = 0; i < n; i++)
5767 dst[i] = src[i];
5768#endif
5769}
5770
5771/**
5772 * dev_get_stats - get network device statistics
5773 * @dev: device to get statistics from
5774 * @storage: place to store stats
5775 *
5776 * Get network statistics from device. Return @storage.
5777 * The device driver may provide its own method by setting
5778 * dev->netdev_ops->get_stats64 or dev->netdev_ops->get_stats;
5779 * otherwise the internal statistics structure is used.
5780 */
5781struct rtnl_link_stats64 *dev_get_stats(struct net_device *dev,
5782 struct rtnl_link_stats64 *storage)
5783{
5784 const struct net_device_ops *ops = dev->netdev_ops;
5785
5786 if (ops->ndo_get_stats64) {
5787 memset(storage, 0, sizeof(*storage));
5788 ops->ndo_get_stats64(dev, storage);
5789 } else if (ops->ndo_get_stats) {
5790 netdev_stats_to_stats64(storage, ops->ndo_get_stats(dev));
5791 } else {
5792 netdev_stats_to_stats64(storage, &dev->stats);
5793 }
5794 storage->rx_dropped += atomic_long_read(&dev->rx_dropped);
5795 return storage;
5796}
5797EXPORT_SYMBOL(dev_get_stats);
5798
5799struct netdev_queue *dev_ingress_queue_create(struct net_device *dev)
5800{
5801 struct netdev_queue *queue = dev_ingress_queue(dev);
5802
5803#ifdef CONFIG_NET_CLS_ACT
5804 if (queue)
5805 return queue;
5806 queue = kzalloc(sizeof(*queue), GFP_KERNEL);
5807 if (!queue)
5808 return NULL;
5809 netdev_init_one_queue(dev, queue, NULL);
5810 queue->qdisc = &noop_qdisc;
5811 queue->qdisc_sleeping = &noop_qdisc;
5812 rcu_assign_pointer(dev->ingress_queue, queue);
5813#endif
5814 return queue;
5815}
5816
5817/**
5818 * alloc_netdev_mqs - allocate network device
5819 * @sizeof_priv: size of private data to allocate space for
5820 * @name: device name format string
5821 * @setup: callback to initialize device
5822 * @txqs: the number of TX subqueues to allocate
5823 * @rxqs: the number of RX subqueues to allocate
5824 *
5825 * Allocates a struct net_device with private data area for driver use
5826 * and performs basic initialization. Also allocates subquue structs
5827 * for each queue on the device.
5828 */
5829struct net_device *alloc_netdev_mqs(int sizeof_priv, const char *name,
5830 void (*setup)(struct net_device *),
5831 unsigned int txqs, unsigned int rxqs)
5832{
5833 struct net_device *dev;
5834 size_t alloc_size;
5835 struct net_device *p;
5836
5837 BUG_ON(strlen(name) >= sizeof(dev->name));
5838
5839 if (txqs < 1) {
5840 pr_err("alloc_netdev: Unable to allocate device "
5841 "with zero queues.\n");
5842 return NULL;
5843 }
5844
5845#ifdef CONFIG_RPS
5846 if (rxqs < 1) {
5847 pr_err("alloc_netdev: Unable to allocate device "
5848 "with zero RX queues.\n");
5849 return NULL;
5850 }
5851#endif
5852
5853 alloc_size = sizeof(struct net_device);
5854 if (sizeof_priv) {
5855 /* ensure 32-byte alignment of private area */
5856 alloc_size = ALIGN(alloc_size, NETDEV_ALIGN);
5857 alloc_size += sizeof_priv;
5858 }
5859 /* ensure 32-byte alignment of whole construct */
5860 alloc_size += NETDEV_ALIGN - 1;
5861
5862 p = kzalloc(alloc_size, GFP_KERNEL);
5863 if (!p) {
5864 printk(KERN_ERR "alloc_netdev: Unable to allocate device.\n");
5865 return NULL;
5866 }
5867
5868 dev = PTR_ALIGN(p, NETDEV_ALIGN);
5869 dev->padded = (char *)dev - (char *)p;
5870
5871 dev->pcpu_refcnt = alloc_percpu(int);
5872 if (!dev->pcpu_refcnt)
5873 goto free_p;
5874
5875 if (dev_addr_init(dev))
5876 goto free_pcpu;
5877
5878 dev_mc_init(dev);
5879 dev_uc_init(dev);
5880
5881 dev_net_set(dev, &init_net);
5882
5883 dev->gso_max_size = GSO_MAX_SIZE;
5884
5885 INIT_LIST_HEAD(&dev->napi_list);
5886 INIT_LIST_HEAD(&dev->unreg_list);
5887 INIT_LIST_HEAD(&dev->link_watch_list);
5888 dev->priv_flags = IFF_XMIT_DST_RELEASE;
5889 setup(dev);
5890
5891 dev->num_tx_queues = txqs;
5892 dev->real_num_tx_queues = txqs;
5893 if (netif_alloc_netdev_queues(dev))
5894 goto free_all;
5895
5896#ifdef CONFIG_RPS
5897 dev->num_rx_queues = rxqs;
5898 dev->real_num_rx_queues = rxqs;
5899 if (netif_alloc_rx_queues(dev))
5900 goto free_all;
5901#endif
5902
5903 strcpy(dev->name, name);
5904 dev->group = INIT_NETDEV_GROUP;
5905 return dev;
5906
5907free_all:
5908 free_netdev(dev);
5909 return NULL;
5910
5911free_pcpu:
5912 free_percpu(dev->pcpu_refcnt);
5913 kfree(dev->_tx);
5914#ifdef CONFIG_RPS
5915 kfree(dev->_rx);
5916#endif
5917
5918free_p:
5919 kfree(p);
5920 return NULL;
5921}
5922EXPORT_SYMBOL(alloc_netdev_mqs);
5923
5924/**
5925 * free_netdev - free network device
5926 * @dev: device
5927 *
5928 * This function does the last stage of destroying an allocated device
5929 * interface. The reference to the device object is released.
5930 * If this is the last reference then it will be freed.
5931 */
5932void free_netdev(struct net_device *dev)
5933{
5934 struct napi_struct *p, *n;
5935
5936 release_net(dev_net(dev));
5937
5938 kfree(dev->_tx);
5939#ifdef CONFIG_RPS
5940 kfree(dev->_rx);
5941#endif
5942
5943 kfree(rcu_dereference_raw(dev->ingress_queue));
5944
5945 /* Flush device addresses */
5946 dev_addr_flush(dev);
5947
5948 list_for_each_entry_safe(p, n, &dev->napi_list, dev_list)
5949 netif_napi_del(p);
5950
5951 free_percpu(dev->pcpu_refcnt);
5952 dev->pcpu_refcnt = NULL;
5953
5954 /* Compatibility with error handling in drivers */
5955 if (dev->reg_state == NETREG_UNINITIALIZED) {
5956 kfree((char *)dev - dev->padded);
5957 return;
5958 }
5959
5960 BUG_ON(dev->reg_state != NETREG_UNREGISTERED);
5961 dev->reg_state = NETREG_RELEASED;
5962
5963 /* will free via device release */
5964 put_device(&dev->dev);
5965}
5966EXPORT_SYMBOL(free_netdev);
5967
5968/**
5969 * synchronize_net - Synchronize with packet receive processing
5970 *
5971 * Wait for packets currently being received to be done.
5972 * Does not block later packets from starting.
5973 */
5974void synchronize_net(void)
5975{
5976 might_sleep();
5977 if (rtnl_is_locked())
5978 synchronize_rcu_expedited();
5979 else
5980 synchronize_rcu();
5981}
5982EXPORT_SYMBOL(synchronize_net);
5983
5984/**
5985 * unregister_netdevice_queue - remove device from the kernel
5986 * @dev: device
5987 * @head: list
5988 *
5989 * This function shuts down a device interface and removes it
5990 * from the kernel tables.
5991 * If head not NULL, device is queued to be unregistered later.
5992 *
5993 * Callers must hold the rtnl semaphore. You may want
5994 * unregister_netdev() instead of this.
5995 */
5996
5997void unregister_netdevice_queue(struct net_device *dev, struct list_head *head)
5998{
5999 ASSERT_RTNL();
6000
6001 if (head) {
6002 list_move_tail(&dev->unreg_list, head);
6003 } else {
6004 rollback_registered(dev);
6005 /* Finish processing unregister after unlock */
6006 net_set_todo(dev);
6007 }
6008}
6009EXPORT_SYMBOL(unregister_netdevice_queue);
6010
6011/**
6012 * unregister_netdevice_many - unregister many devices
6013 * @head: list of devices
6014 */
6015void unregister_netdevice_many(struct list_head *head)
6016{
6017 struct net_device *dev;
6018
6019 if (!list_empty(head)) {
6020 rollback_registered_many(head);
6021 list_for_each_entry(dev, head, unreg_list)
6022 net_set_todo(dev);
6023 }
6024}
6025EXPORT_SYMBOL(unregister_netdevice_many);
6026
6027/**
6028 * unregister_netdev - remove device from the kernel
6029 * @dev: device
6030 *
6031 * This function shuts down a device interface and removes it
6032 * from the kernel tables.
6033 *
6034 * This is just a wrapper for unregister_netdevice that takes
6035 * the rtnl semaphore. In general you want to use this and not
6036 * unregister_netdevice.
6037 */
6038void unregister_netdev(struct net_device *dev)
6039{
6040 rtnl_lock();
6041 unregister_netdevice(dev);
6042 rtnl_unlock();
6043}
6044EXPORT_SYMBOL(unregister_netdev);
6045
6046/**
6047 * dev_change_net_namespace - move device to different nethost namespace
6048 * @dev: device
6049 * @net: network namespace
6050 * @pat: If not NULL name pattern to try if the current device name
6051 * is already taken in the destination network namespace.
6052 *
6053 * This function shuts down a device interface and moves it
6054 * to a new network namespace. On success 0 is returned, on
6055 * a failure a netagive errno code is returned.
6056 *
6057 * Callers must hold the rtnl semaphore.
6058 */
6059
6060int dev_change_net_namespace(struct net_device *dev, struct net *net, const char *pat)
6061{
6062 int err;
6063
6064 ASSERT_RTNL();
6065
6066 /* Don't allow namespace local devices to be moved. */
6067 err = -EINVAL;
6068 if (dev->features & NETIF_F_NETNS_LOCAL)
6069 goto out;
6070
6071 /* Ensure the device has been registrered */
6072 err = -EINVAL;
6073 if (dev->reg_state != NETREG_REGISTERED)
6074 goto out;
6075
6076 /* Get out if there is nothing todo */
6077 err = 0;
6078 if (net_eq(dev_net(dev), net))
6079 goto out;
6080
6081 /* Pick the destination device name, and ensure
6082 * we can use it in the destination network namespace.
6083 */
6084 err = -EEXIST;
6085 if (__dev_get_by_name(net, dev->name)) {
6086 /* We get here if we can't use the current device name */
6087 if (!pat)
6088 goto out;
6089 if (dev_get_valid_name(dev, pat) < 0)
6090 goto out;
6091 }
6092
6093 /*
6094 * And now a mini version of register_netdevice unregister_netdevice.
6095 */
6096
6097 /* If device is running close it first. */
6098 dev_close(dev);
6099
6100 /* And unlink it from device chain */
6101 err = -ENODEV;
6102 unlist_netdevice(dev);
6103
6104 synchronize_net();
6105
6106 /* Shutdown queueing discipline. */
6107 dev_shutdown(dev);
6108
6109 /* Notify protocols, that we are about to destroy
6110 this device. They should clean all the things.
6111
6112 Note that dev->reg_state stays at NETREG_REGISTERED.
6113 This is wanted because this way 8021q and macvlan know
6114 the device is just moving and can keep their slaves up.
6115 */
6116 call_netdevice_notifiers(NETDEV_UNREGISTER, dev);
6117 call_netdevice_notifiers(NETDEV_UNREGISTER_BATCH, dev);
6118
6119 /*
6120 * Flush the unicast and multicast chains
6121 */
6122 dev_uc_flush(dev);
6123 dev_mc_flush(dev);
6124
6125 /* Actually switch the network namespace */
6126 dev_net_set(dev, net);
6127
6128 /* If there is an ifindex conflict assign a new one */
6129 if (__dev_get_by_index(net, dev->ifindex)) {
6130 int iflink = (dev->iflink == dev->ifindex);
6131 dev->ifindex = dev_new_index(net);
6132 if (iflink)
6133 dev->iflink = dev->ifindex;
6134 }
6135
6136 /* Fixup kobjects */
6137 err = device_rename(&dev->dev, dev->name);
6138 WARN_ON(err);
6139
6140 /* Add the device back in the hashes */
6141 list_netdevice(dev);
6142
6143 /* Notify protocols, that a new device appeared. */
6144 call_netdevice_notifiers(NETDEV_REGISTER, dev);
6145
6146 /*
6147 * Prevent userspace races by waiting until the network
6148 * device is fully setup before sending notifications.
6149 */
6150 rtmsg_ifinfo(RTM_NEWLINK, dev, ~0U);
6151
6152 synchronize_net();
6153 err = 0;
6154out:
6155 return err;
6156}
6157EXPORT_SYMBOL_GPL(dev_change_net_namespace);
6158
6159static int dev_cpu_callback(struct notifier_block *nfb,
6160 unsigned long action,
6161 void *ocpu)
6162{
6163 struct sk_buff **list_skb;
6164 struct sk_buff *skb;
6165 unsigned int cpu, oldcpu = (unsigned long)ocpu;
6166 struct softnet_data *sd, *oldsd;
6167
6168 if (action != CPU_DEAD && action != CPU_DEAD_FROZEN)
6169 return NOTIFY_OK;
6170
6171 local_irq_disable();
6172 cpu = smp_processor_id();
6173 sd = &per_cpu(softnet_data, cpu);
6174 oldsd = &per_cpu(softnet_data, oldcpu);
6175
6176 /* Find end of our completion_queue. */
6177 list_skb = &sd->completion_queue;
6178 while (*list_skb)
6179 list_skb = &(*list_skb)->next;
6180 /* Append completion queue from offline CPU. */
6181 *list_skb = oldsd->completion_queue;
6182 oldsd->completion_queue = NULL;
6183
6184 /* Append output queue from offline CPU. */
6185 if (oldsd->output_queue) {
6186 *sd->output_queue_tailp = oldsd->output_queue;
6187 sd->output_queue_tailp = oldsd->output_queue_tailp;
6188 oldsd->output_queue = NULL;
6189 oldsd->output_queue_tailp = &oldsd->output_queue;
6190 }
6191 /* Append NAPI poll list from offline CPU. */
6192 if (!list_empty(&oldsd->poll_list)) {
6193 list_splice_init(&oldsd->poll_list, &sd->poll_list);
6194 raise_softirq_irqoff(NET_RX_SOFTIRQ);
6195 }
6196
6197 raise_softirq_irqoff(NET_TX_SOFTIRQ);
6198 local_irq_enable();
6199
6200 /* Process offline CPU's input_pkt_queue */
6201 while ((skb = __skb_dequeue(&oldsd->process_queue))) {
6202 netif_rx(skb);
6203 input_queue_head_incr(oldsd);
6204 }
6205 while ((skb = __skb_dequeue(&oldsd->input_pkt_queue))) {
6206 netif_rx(skb);
6207 input_queue_head_incr(oldsd);
6208 }
6209
6210 return NOTIFY_OK;
6211}
6212
6213
6214/**
6215 * netdev_increment_features - increment feature set by one
6216 * @all: current feature set
6217 * @one: new feature set
6218 * @mask: mask feature set
6219 *
6220 * Computes a new feature set after adding a device with feature set
6221 * @one to the master device with current feature set @all. Will not
6222 * enable anything that is off in @mask. Returns the new feature set.
6223 */
6224u32 netdev_increment_features(u32 all, u32 one, u32 mask)
6225{
6226 if (mask & NETIF_F_GEN_CSUM)
6227 mask |= NETIF_F_ALL_CSUM;
6228 mask |= NETIF_F_VLAN_CHALLENGED;
6229
6230 all |= one & (NETIF_F_ONE_FOR_ALL|NETIF_F_ALL_CSUM) & mask;
6231 all &= one | ~NETIF_F_ALL_FOR_ALL;
6232
6233 /* If device needs checksumming, downgrade to it. */
6234 if (all & (NETIF_F_ALL_CSUM & ~NETIF_F_NO_CSUM))
6235 all &= ~NETIF_F_NO_CSUM;
6236
6237 /* If one device supports hw checksumming, set for all. */
6238 if (all & NETIF_F_GEN_CSUM)
6239 all &= ~(NETIF_F_ALL_CSUM & ~NETIF_F_GEN_CSUM);
6240
6241 return all;
6242}
6243EXPORT_SYMBOL(netdev_increment_features);
6244
6245static struct hlist_head *netdev_create_hash(void)
6246{
6247 int i;
6248 struct hlist_head *hash;
6249
6250 hash = kmalloc(sizeof(*hash) * NETDEV_HASHENTRIES, GFP_KERNEL);
6251 if (hash != NULL)
6252 for (i = 0; i < NETDEV_HASHENTRIES; i++)
6253 INIT_HLIST_HEAD(&hash[i]);
6254
6255 return hash;
6256}
6257
6258/* Initialize per network namespace state */
6259static int __net_init netdev_init(struct net *net)
6260{
6261 INIT_LIST_HEAD(&net->dev_base_head);
6262
6263 net->dev_name_head = netdev_create_hash();
6264 if (net->dev_name_head == NULL)
6265 goto err_name;
6266
6267 net->dev_index_head = netdev_create_hash();
6268 if (net->dev_index_head == NULL)
6269 goto err_idx;
6270
6271 return 0;
6272
6273err_idx:
6274 kfree(net->dev_name_head);
6275err_name:
6276 return -ENOMEM;
6277}
6278
6279/**
6280 * netdev_drivername - network driver for the device
6281 * @dev: network device
6282 *
6283 * Determine network driver for device.
6284 */
6285const char *netdev_drivername(const struct net_device *dev)
6286{
6287 const struct device_driver *driver;
6288 const struct device *parent;
6289 const char *empty = "";
6290
6291 parent = dev->dev.parent;
6292 if (!parent)
6293 return empty;
6294
6295 driver = parent->driver;
6296 if (driver && driver->name)
6297 return driver->name;
6298 return empty;
6299}
6300
6301static int __netdev_printk(const char *level, const struct net_device *dev,
6302 struct va_format *vaf)
6303{
6304 int r;
6305
6306 if (dev && dev->dev.parent)
6307 r = dev_printk(level, dev->dev.parent, "%s: %pV",
6308 netdev_name(dev), vaf);
6309 else if (dev)
6310 r = printk("%s%s: %pV", level, netdev_name(dev), vaf);
6311 else
6312 r = printk("%s(NULL net_device): %pV", level, vaf);
6313
6314 return r;
6315}
6316
6317int netdev_printk(const char *level, const struct net_device *dev,
6318 const char *format, ...)
6319{
6320 struct va_format vaf;
6321 va_list args;
6322 int r;
6323
6324 va_start(args, format);
6325
6326 vaf.fmt = format;
6327 vaf.va = &args;
6328
6329 r = __netdev_printk(level, dev, &vaf);
6330 va_end(args);
6331
6332 return r;
6333}
6334EXPORT_SYMBOL(netdev_printk);
6335
6336#define define_netdev_printk_level(func, level) \
6337int func(const struct net_device *dev, const char *fmt, ...) \
6338{ \
6339 int r; \
6340 struct va_format vaf; \
6341 va_list args; \
6342 \
6343 va_start(args, fmt); \
6344 \
6345 vaf.fmt = fmt; \
6346 vaf.va = &args; \
6347 \
6348 r = __netdev_printk(level, dev, &vaf); \
6349 va_end(args); \
6350 \
6351 return r; \
6352} \
6353EXPORT_SYMBOL(func);
6354
6355define_netdev_printk_level(netdev_emerg, KERN_EMERG);
6356define_netdev_printk_level(netdev_alert, KERN_ALERT);
6357define_netdev_printk_level(netdev_crit, KERN_CRIT);
6358define_netdev_printk_level(netdev_err, KERN_ERR);
6359define_netdev_printk_level(netdev_warn, KERN_WARNING);
6360define_netdev_printk_level(netdev_notice, KERN_NOTICE);
6361define_netdev_printk_level(netdev_info, KERN_INFO);
6362
6363static void __net_exit netdev_exit(struct net *net)
6364{
6365 kfree(net->dev_name_head);
6366 kfree(net->dev_index_head);
6367}
6368
6369static struct pernet_operations __net_initdata netdev_net_ops = {
6370 .init = netdev_init,
6371 .exit = netdev_exit,
6372};
6373
6374static void __net_exit default_device_exit(struct net *net)
6375{
6376 struct net_device *dev, *aux;
6377 /*
6378 * Push all migratable network devices back to the
6379 * initial network namespace
6380 */
6381 rtnl_lock();
6382 for_each_netdev_safe(net, dev, aux) {
6383 int err;
6384 char fb_name[IFNAMSIZ];
6385
6386 /* Ignore unmoveable devices (i.e. loopback) */
6387 if (dev->features & NETIF_F_NETNS_LOCAL)
6388 continue;
6389
6390 /* Leave virtual devices for the generic cleanup */
6391 if (dev->rtnl_link_ops)
6392 continue;
6393
6394 /* Push remaining network devices to init_net */
6395 snprintf(fb_name, IFNAMSIZ, "dev%d", dev->ifindex);
6396 err = dev_change_net_namespace(dev, &init_net, fb_name);
6397 if (err) {
6398 printk(KERN_EMERG "%s: failed to move %s to init_net: %d\n",
6399 __func__, dev->name, err);
6400 BUG();
6401 }
6402 }
6403 rtnl_unlock();
6404}
6405
6406static void __net_exit default_device_exit_batch(struct list_head *net_list)
6407{
6408 /* At exit all network devices most be removed from a network
6409 * namespace. Do this in the reverse order of registration.
6410 * Do this across as many network namespaces as possible to
6411 * improve batching efficiency.
6412 */
6413 struct net_device *dev;
6414 struct net *net;
6415 LIST_HEAD(dev_kill_list);
6416
6417 rtnl_lock();
6418 list_for_each_entry(net, net_list, exit_list) {
6419 for_each_netdev_reverse(net, dev) {
6420 if (dev->rtnl_link_ops)
6421 dev->rtnl_link_ops->dellink(dev, &dev_kill_list);
6422 else
6423 unregister_netdevice_queue(dev, &dev_kill_list);
6424 }
6425 }
6426 unregister_netdevice_many(&dev_kill_list);
6427 list_del(&dev_kill_list);
6428 rtnl_unlock();
6429}
6430
6431static struct pernet_operations __net_initdata default_device_ops = {
6432 .exit = default_device_exit,
6433 .exit_batch = default_device_exit_batch,
6434};
6435
6436/*
6437 * Initialize the DEV module. At boot time this walks the device list and
6438 * unhooks any devices that fail to initialise (normally hardware not
6439 * present) and leaves us with a valid list of present and active devices.
6440 *
6441 */
6442
6443/*
6444 * This is called single threaded during boot, so no need
6445 * to take the rtnl semaphore.
6446 */
6447static int __init net_dev_init(void)
6448{
6449 int i, rc = -ENOMEM;
6450
6451 BUG_ON(!dev_boot_phase);
6452
6453 if (dev_proc_init())
6454 goto out;
6455
6456 if (netdev_kobject_init())
6457 goto out;
6458
6459 INIT_LIST_HEAD(&ptype_all);
6460 for (i = 0; i < PTYPE_HASH_SIZE; i++)
6461 INIT_LIST_HEAD(&ptype_base[i]);
6462
6463 if (register_pernet_subsys(&netdev_net_ops))
6464 goto out;
6465
6466 /*
6467 * Initialise the packet receive queues.
6468 */
6469
6470 for_each_possible_cpu(i) {
6471 struct softnet_data *sd = &per_cpu(softnet_data, i);
6472
6473 memset(sd, 0, sizeof(*sd));
6474 skb_queue_head_init(&sd->input_pkt_queue);
6475 skb_queue_head_init(&sd->process_queue);
6476 sd->completion_queue = NULL;
6477 INIT_LIST_HEAD(&sd->poll_list);
6478 sd->output_queue = NULL;
6479 sd->output_queue_tailp = &sd->output_queue;
6480#ifdef CONFIG_RPS
6481 sd->csd.func = rps_trigger_softirq;
6482 sd->csd.info = sd;
6483 sd->csd.flags = 0;
6484 sd->cpu = i;
6485#endif
6486
6487 sd->backlog.poll = process_backlog;
6488 sd->backlog.weight = weight_p;
6489 sd->backlog.gro_list = NULL;
6490 sd->backlog.gro_count = 0;
6491 }
6492
6493 dev_boot_phase = 0;
6494
6495 /* The loopback device is special if any other network devices
6496 * is present in a network namespace the loopback device must
6497 * be present. Since we now dynamically allocate and free the
6498 * loopback device ensure this invariant is maintained by
6499 * keeping the loopback device as the first device on the
6500 * list of network devices. Ensuring the loopback devices
6501 * is the first device that appears and the last network device
6502 * that disappears.
6503 */
6504 if (register_pernet_device(&loopback_net_ops))
6505 goto out;
6506
6507 if (register_pernet_device(&default_device_ops))
6508 goto out;
6509
6510 open_softirq(NET_TX_SOFTIRQ, net_tx_action);
6511 open_softirq(NET_RX_SOFTIRQ, net_rx_action);
6512
6513 hotcpu_notifier(dev_cpu_callback, 0);
6514 dst_init();
6515 dev_mcast_init();
6516 rc = 0;
6517out:
6518 return rc;
6519}
6520
6521subsys_initcall(net_dev_init);
6522
6523static int __init initialize_hashrnd(void)
6524{
6525 get_random_bytes(&hashrnd, sizeof(hashrnd));
6526 return 0;
6527}
6528
6529late_initcall_sync(initialize_hashrnd);
6530