Message ID | 4A9F7BFC.5000401@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
From: Eric Dumazet <eric.dumazet@gmail.com> Date: Thu, 03 Sep 2009 10:19:08 +0200 > Pure style cleanup patch before surgery :) > > Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Applied :-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Hmm, this patch causes following warnings for me: eth%d dev=ffff88007b9dc000 queue_count=1 tx=ffff88007c565e00 ------------[ cut here ]------------ WARNING: at net/core/dev.c:5159 alloc_netdev_mq+0xda/0x1fa() Hardware name: Product Name To Be Filled By O.E.M. Modules linked in: e1000e(+) 8139too pcspkr snd_timer snd soundcore mii snd_page_alloc ata_generic pata_acpi Pid: 1396, comm: work_for_cpu Tainted: G W 2.6.31-rc5testing #6 Call Trace: [<ffffffff812f99a4>] ? alloc_netdev_mq+0xda/0x1fa [<ffffffff8104d08c>] warn_slowpath_common+0x77/0xa4 [<ffffffff8104d0c8>] warn_slowpath_null+0xf/0x11 [<ffffffff812f99a4>] alloc_netdev_mq+0xda/0x1fa [<ffffffff811af36e>] ? pci_find_capability+0x6f/0x71 [<ffffffff81308262>] ? ether_setup+0x0/0x5c [<ffffffff8105e674>] ? do_work_for_cpu+0x0/0x25 [<ffffffff81308260>] alloc_etherdev_mq+0x19/0x1b [<ffffffffa00649eb>] e1000_probe+0x16e/0xb85 [e1000e] [<ffffffff81038b31>] ? __wake_up_common+0x46/0x76 [<ffffffff8105e674>] ? do_work_for_cpu+0x0/0x25 [<ffffffff811b21cf>] local_pci_probe+0x12/0x16 [<ffffffff8105e687>] do_work_for_cpu+0x13/0x25 [<ffffffff8105e674>] ? do_work_for_cpu+0x0/0x25 [<ffffffff81062068>] kthread+0x88/0x90 [<ffffffff81011c6a>] child_rip+0xa/0x20 [<ffffffff81061fe0>] ? kthread+0x0/0x90 [<ffffffff81011c60>] ? child_rip+0x0/0x20 ---[ end trace 4eaa2a86a8e2da27 ]--- Thu, Sep 03, 2009 at 10:19:08AM CEST, eric.dumazet@gmail.com wrote: >Pure style cleanup patch before surgery :) > >Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> >--- > net/core/dev.c | 589 +++++++++++++++++++++++------------------------ > 1 files changed, 292 insertions(+), 297 deletions(-) > >diff --git a/net/core/dev.c b/net/core/dev.c >index 4b33566..dd94ae6 100644 >--- a/net/core/dev.c >+++ b/net/core/dev.c >@@ -191,7 +191,6 @@ static struct list_head ptype_all __read_mostly; /* Taps */ > * semaphore held. > */ > DEFINE_RWLOCK(dev_base_lock); >- > EXPORT_SYMBOL(dev_base_lock); > > #define NETDEV_HASHBITS 8 >@@ -248,6 +247,7 @@ static RAW_NOTIFIER_HEAD(netdev_chain); > */ > > DEFINE_PER_CPU(struct softnet_data, softnet_data); >+EXPORT_PER_CPU_SYMBOL(softnet_data); > > #ifdef CONFIG_LOCKDEP > /* >@@ -381,6 +381,7 @@ void dev_add_pack(struct packet_type *pt) > } > spin_unlock_bh(&ptype_lock); > } >+EXPORT_SYMBOL(dev_add_pack); > > /** > * __dev_remove_pack - remove packet handler >@@ -418,6 +419,8 @@ void __dev_remove_pack(struct packet_type *pt) > out: > spin_unlock_bh(&ptype_lock); > } >+EXPORT_SYMBOL(__dev_remove_pack); >+ > /** > * dev_remove_pack - remove packet handler > * @pt: packet type declaration >@@ -436,6 +439,7 @@ void dev_remove_pack(struct packet_type *pt) > > synchronize_net(); > } >+EXPORT_SYMBOL(dev_remove_pack); > > /****************************************************************************** > >@@ -499,6 +503,7 @@ int netdev_boot_setup_check(struct net_device *dev) > } > return 0; > } >+EXPORT_SYMBOL(netdev_boot_setup_check); > > > /** >@@ -591,6 +596,7 @@ struct net_device *__dev_get_by_name(struct net *net, const char *name) > } > return NULL; > } >+EXPORT_SYMBOL(__dev_get_by_name); > > /** > * dev_get_by_name - find a device by its name >@@ -615,6 +621,7 @@ struct net_device *dev_get_by_name(struct net *net, const char *name) > read_unlock(&dev_base_lock); > return dev; > } >+EXPORT_SYMBOL(dev_get_by_name); > > /** > * __dev_get_by_index - find a device by its ifindex >@@ -640,6 +647,7 @@ struct net_device *__dev_get_by_index(struct net *net, int ifindex) > } > return NULL; > } >+EXPORT_SYMBOL(__dev_get_by_index); > > > /** >@@ -664,6 +672,7 @@ struct net_device *dev_get_by_index(struct net *net, int ifindex) > read_unlock(&dev_base_lock); > return dev; > } >+EXPORT_SYMBOL(dev_get_by_index); > > /** > * dev_getbyhwaddr - find a device by its hardware address >@@ -693,7 +702,6 @@ struct net_device *dev_getbyhwaddr(struct net *net, unsigned short type, char *h > > return NULL; > } >- > EXPORT_SYMBOL(dev_getbyhwaddr); > > struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type) >@@ -707,7 +715,6 @@ struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type) > > return NULL; > } >- > EXPORT_SYMBOL(__dev_getfirstbyhwtype); > > struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type) >@@ -721,7 +728,6 @@ struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type) > rtnl_unlock(); > return dev; > } >- > EXPORT_SYMBOL(dev_getfirstbyhwtype); > > /** >@@ -736,7 +742,8 @@ EXPORT_SYMBOL(dev_getfirstbyhwtype); > * dev_put to indicate they have finished with it. > */ > >-struct net_device * dev_get_by_flags(struct net *net, unsigned short if_flags, unsigned short mask) >+struct net_device *dev_get_by_flags(struct net *net, unsigned short if_flags, >+ unsigned short mask) > { > struct net_device *dev, *ret; > >@@ -752,6 +759,7 @@ struct net_device * dev_get_by_flags(struct net *net, unsigned short if_flags, u > read_unlock(&dev_base_lock); > return ret; > } >+EXPORT_SYMBOL(dev_get_by_flags); > > /** > * dev_valid_name - check if name is okay for network device >@@ -777,6 +785,7 @@ int dev_valid_name(const char *name) > } > return 1; > } >+EXPORT_SYMBOL(dev_valid_name); > > /** > * __dev_alloc_name - allocate a name for a device >@@ -870,6 +879,7 @@ int dev_alloc_name(struct net_device *dev, const char *name) > strlcpy(dev->name, buf, IFNAMSIZ); > return ret; > } >+EXPORT_SYMBOL(dev_alloc_name); > > > /** >@@ -906,8 +916,7 @@ int dev_change_name(struct net_device *dev, const char *newname) > err = dev_alloc_name(dev, newname); > if (err < 0) > return err; >- } >- else if (__dev_get_by_name(net, newname)) >+ } else if (__dev_get_by_name(net, newname)) > return -EEXIST; > else > strlcpy(dev->name, newname, IFNAMSIZ); >@@ -970,7 +979,7 @@ int dev_set_alias(struct net_device *dev, const char *alias, size_t len) > return 0; > } > >- dev->ifalias = krealloc(dev->ifalias, len+1, GFP_KERNEL); >+ dev->ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL); > if (!dev->ifalias) > return -ENOMEM; > >@@ -1006,6 +1015,7 @@ void netdev_state_change(struct net_device *dev) > rtmsg_ifinfo(RTM_NEWLINK, dev, 0); > } > } >+EXPORT_SYMBOL(netdev_state_change); > > void netdev_bonding_change(struct net_device *dev) > { >@@ -1034,6 +1044,7 @@ void dev_load(struct net *net, const char *name) > if (!dev && capable(CAP_SYS_MODULE)) > request_module("%s", name); > } >+EXPORT_SYMBOL(dev_load); > > /** > * dev_open - prepare an interface for use. >@@ -1118,6 +1129,7 @@ int dev_open(struct net_device *dev) > > return ret; > } >+EXPORT_SYMBOL(dev_open); > > /** > * dev_close - shutdown an interface. >@@ -1184,6 +1196,7 @@ int dev_close(struct net_device *dev) > > return 0; > } >+EXPORT_SYMBOL(dev_close); > > > /** >@@ -1279,6 +1292,7 @@ rollback: > raw_notifier_chain_unregister(&netdev_chain, nb); > goto unlock; > } >+EXPORT_SYMBOL(register_netdevice_notifier); > > /** > * unregister_netdevice_notifier - unregister a network notifier block >@@ -1299,6 +1313,7 @@ int unregister_netdevice_notifier(struct notifier_block *nb) > rtnl_unlock(); > return err; > } >+EXPORT_SYMBOL(unregister_netdevice_notifier); > > /** > * call_netdevice_notifiers - call all network notifier blocks >@@ -1321,11 +1336,13 @@ void net_enable_timestamp(void) > { > atomic_inc(&netstamp_needed); > } >+EXPORT_SYMBOL(net_enable_timestamp); > > void net_disable_timestamp(void) > { > atomic_dec(&netstamp_needed); > } >+EXPORT_SYMBOL(net_disable_timestamp); > > static inline void net_timestamp(struct sk_buff *skb) > { >@@ -1359,7 +1376,7 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev) > if ((ptype->dev == dev || !ptype->dev) && > (ptype->af_packet_priv == NULL || > (struct sock *)ptype->af_packet_priv != skb->sk)) { >- struct sk_buff *skb2= skb_clone(skb, GFP_ATOMIC); >+ struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC); > if (!skb2) > break; > >@@ -1527,6 +1544,7 @@ out_set_summed: > out: > return ret; > } >+EXPORT_SYMBOL(skb_checksum_help); > > /** > * skb_gso_segment - Perform segmentation on skb. >@@ -1589,7 +1607,6 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features) > > return segs; > } >- > EXPORT_SYMBOL(skb_gso_segment); > > /* Take action when hardware reception checksum errors are detected. */ >@@ -1755,7 +1772,7 @@ u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb) > > if (skb_rx_queue_recorded(skb)) { > hash = skb_get_rx_queue(skb); >- while (unlikely (hash >= dev->real_num_tx_queues)) >+ while (unlikely(hash >= dev->real_num_tx_queues)) > hash -= dev->real_num_tx_queues; > return hash; > } >@@ -1890,7 +1907,7 @@ gso: > q = rcu_dereference(txq->qdisc); > > #ifdef CONFIG_NET_CLS_ACT >- skb->tc_verd = SET_TC_AT(skb->tc_verd,AT_EGRESS); >+ skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_EGRESS); > #endif > if (q->enqueue) { > rc = __dev_xmit_skb(skb, q, dev, txq); >@@ -1946,6 +1963,7 @@ out: > rcu_read_unlock_bh(); > return rc; > } >+EXPORT_SYMBOL(dev_queue_xmit); > > > /*======================================================================= >@@ -2012,6 +2030,7 @@ enqueue: > kfree_skb(skb); > return NET_RX_DROP; > } >+EXPORT_SYMBOL(netif_rx); > > int netif_rx_ni(struct sk_buff *skb) > { >@@ -2025,7 +2044,6 @@ int netif_rx_ni(struct sk_buff *skb) > > return err; > } >- > EXPORT_SYMBOL(netif_rx_ni); > > static void net_tx_action(struct softirq_action *h) >@@ -2358,6 +2376,7 @@ out: > rcu_read_unlock(); > return ret; > } >+EXPORT_SYMBOL(netif_receive_skb); > > /* Network device is going away, flush any packets still pending */ > static void flush_backlog(void *arg) >@@ -2874,7 +2893,7 @@ softnet_break: > goto out; > } > >-static gifconf_func_t * gifconf_list [NPROTO]; >+static gifconf_func_t *gifconf_list[NPROTO]; > > /** > * register_gifconf - register a SIOCGIF handler >@@ -2885,13 +2904,14 @@ static gifconf_func_t * gifconf_list [NPROTO]; > * that is passed must not be freed or reused until it has been replaced > * by another handler. > */ >-int register_gifconf(unsigned int family, gifconf_func_t * gifconf) >+int register_gifconf(unsigned int family, gifconf_func_t *gifconf) > { > if (family >= NPROTO) > return -EINVAL; > gifconf_list[family] = gifconf; > return 0; > } >+EXPORT_SYMBOL(register_gifconf); > > > /* >@@ -3102,7 +3122,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v) > seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x %08x\n", > s->total, s->dropped, s->time_squeeze, 0, > 0, 0, 0, 0, /* was fastroute */ >- s->cpu_collision ); >+ s->cpu_collision); > return 0; > } > >@@ -3338,6 +3358,7 @@ int netdev_set_master(struct net_device *slave, struct net_device *master) > rtmsg_ifinfo(RTM_NEWLINK, slave, IFF_SLAVE); > return 0; > } >+EXPORT_SYMBOL(netdev_set_master); > > static void dev_change_rx_flags(struct net_device *dev, int flags) > { >@@ -3416,6 +3437,7 @@ int dev_set_promiscuity(struct net_device *dev, int inc) > dev_set_rx_mode(dev); > return err; > } >+EXPORT_SYMBOL(dev_set_promiscuity); > > /** > * dev_set_allmulti - update allmulti count on a device >@@ -3459,6 +3481,7 @@ int dev_set_allmulti(struct net_device *dev, int inc) > } > return 0; > } >+EXPORT_SYMBOL(dev_set_allmulti); > > /* > * Upload unicast and multicast address lists to device and >@@ -4088,6 +4111,7 @@ unsigned dev_get_flags(const struct net_device *dev) > > return flags; > } >+EXPORT_SYMBOL(dev_get_flags); > > /** > * dev_change_flags - change device settings >@@ -4138,12 +4162,13 @@ int dev_change_flags(struct net_device *dev, unsigned flags) > } > > if (dev->flags & IFF_UP && >- ((old_flags ^ dev->flags) &~ (IFF_UP | IFF_PROMISC | IFF_ALLMULTI | >+ ((old_flags ^ dev->flags) & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | > IFF_VOLATILE))) > call_netdevice_notifiers(NETDEV_CHANGE, dev); > > if ((flags ^ dev->gflags) & IFF_PROMISC) { >- int inc = (flags & IFF_PROMISC) ? +1 : -1; >+ int inc = (flags & IFF_PROMISC) ? 1 : -1; >+ > dev->gflags ^= IFF_PROMISC; > dev_set_promiscuity(dev, inc); > } >@@ -4153,7 +4178,8 @@ int dev_change_flags(struct net_device *dev, unsigned flags) > IFF_ALLMULTI is requested not asking us and not reporting. > */ > if ((flags ^ dev->gflags) & IFF_ALLMULTI) { >- int inc = (flags & IFF_ALLMULTI) ? +1 : -1; >+ int inc = (flags & IFF_ALLMULTI) ? 1 : -1; >+ > dev->gflags ^= IFF_ALLMULTI; > dev_set_allmulti(dev, inc); > } >@@ -4165,6 +4191,7 @@ int dev_change_flags(struct net_device *dev, unsigned flags) > > return ret; > } >+EXPORT_SYMBOL(dev_change_flags); > > /** > * dev_set_mtu - Change maximum transfer unit >@@ -4198,6 +4225,7 @@ int dev_set_mtu(struct net_device *dev, int new_mtu) > call_netdevice_notifiers(NETDEV_CHANGEMTU, dev); > return err; > } >+EXPORT_SYMBOL(dev_set_mtu); > > /** > * dev_set_mac_address - Change Media Access Control Address >@@ -4222,6 +4250,7 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa) > call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); > return err; > } >+EXPORT_SYMBOL(dev_set_mac_address); > > /* > * Perform the SIOCxIFxxx calls, inside read_lock(dev_base_lock) >@@ -4235,56 +4264,56 @@ static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cm > return -ENODEV; > > switch (cmd) { >- case SIOCGIFFLAGS: /* Get interface flags */ >- ifr->ifr_flags = (short) dev_get_flags(dev); >- return 0; >+ case SIOCGIFFLAGS: /* Get interface flags */ >+ ifr->ifr_flags = (short) dev_get_flags(dev); >+ return 0; > >- case SIOCGIFMETRIC: /* Get the metric on the interface >- (currently unused) */ >- ifr->ifr_metric = 0; >- return 0; >+ case SIOCGIFMETRIC: /* Get the metric on the interface >+ (currently unused) */ >+ ifr->ifr_metric = 0; >+ return 0; > >- case SIOCGIFMTU: /* Get the MTU of a device */ >- ifr->ifr_mtu = dev->mtu; >- return 0; >+ case SIOCGIFMTU: /* Get the MTU of a device */ >+ ifr->ifr_mtu = dev->mtu; >+ return 0; > >- case SIOCGIFHWADDR: >- if (!dev->addr_len) >- memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data); >- else >- memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr, >- min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); >- ifr->ifr_hwaddr.sa_family = dev->type; >- return 0; >+ case SIOCGIFHWADDR: >+ if (!dev->addr_len) >+ memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data); >+ else >+ memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr, >+ min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); >+ ifr->ifr_hwaddr.sa_family = dev->type; >+ return 0; > >- case SIOCGIFSLAVE: >- err = -EINVAL; >- break; >+ case SIOCGIFSLAVE: >+ err = -EINVAL; >+ break; > >- case SIOCGIFMAP: >- ifr->ifr_map.mem_start = dev->mem_start; >- ifr->ifr_map.mem_end = dev->mem_end; >- ifr->ifr_map.base_addr = dev->base_addr; >- ifr->ifr_map.irq = dev->irq; >- ifr->ifr_map.dma = dev->dma; >- ifr->ifr_map.port = dev->if_port; >- return 0; >+ case SIOCGIFMAP: >+ ifr->ifr_map.mem_start = dev->mem_start; >+ ifr->ifr_map.mem_end = dev->mem_end; >+ ifr->ifr_map.base_addr = dev->base_addr; >+ ifr->ifr_map.irq = dev->irq; >+ ifr->ifr_map.dma = dev->dma; >+ ifr->ifr_map.port = dev->if_port; >+ return 0; > >- case SIOCGIFINDEX: >- ifr->ifr_ifindex = dev->ifindex; >- return 0; >+ case SIOCGIFINDEX: >+ ifr->ifr_ifindex = dev->ifindex; >+ return 0; > >- case SIOCGIFTXQLEN: >- ifr->ifr_qlen = dev->tx_queue_len; >- return 0; >+ case SIOCGIFTXQLEN: >+ ifr->ifr_qlen = dev->tx_queue_len; >+ return 0; > >- default: >- /* dev_ioctl() should ensure this case >- * is never reached >- */ >- WARN_ON(1); >- err = -EINVAL; >- break; >+ default: >+ /* dev_ioctl() should ensure this case >+ * is never reached >+ */ >+ WARN_ON(1); >+ err = -EINVAL; >+ break; > > } > return err; >@@ -4305,92 +4334,91 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) > ops = dev->netdev_ops; > > switch (cmd) { >- case SIOCSIFFLAGS: /* Set interface flags */ >- return dev_change_flags(dev, ifr->ifr_flags); >- >- case SIOCSIFMETRIC: /* Set the metric on the interface >- (currently unused) */ >- return -EOPNOTSUPP; >- >- case SIOCSIFMTU: /* Set the MTU of a device */ >- return dev_set_mtu(dev, ifr->ifr_mtu); >+ case SIOCSIFFLAGS: /* Set interface flags */ >+ return dev_change_flags(dev, ifr->ifr_flags); > >- case SIOCSIFHWADDR: >- return dev_set_mac_address(dev, &ifr->ifr_hwaddr); >+ case SIOCSIFMETRIC: /* Set the metric on the interface >+ (currently unused) */ >+ return -EOPNOTSUPP; > >- case SIOCSIFHWBROADCAST: >- if (ifr->ifr_hwaddr.sa_family != dev->type) >- return -EINVAL; >- memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data, >- min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); >- call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); >- return 0; >+ case SIOCSIFMTU: /* Set the MTU of a device */ >+ return dev_set_mtu(dev, ifr->ifr_mtu); > >- case SIOCSIFMAP: >- if (ops->ndo_set_config) { >- if (!netif_device_present(dev)) >- return -ENODEV; >- return ops->ndo_set_config(dev, &ifr->ifr_map); >- } >- return -EOPNOTSUPP; >+ case SIOCSIFHWADDR: >+ return dev_set_mac_address(dev, &ifr->ifr_hwaddr); > >- case SIOCADDMULTI: >- if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || >- ifr->ifr_hwaddr.sa_family != AF_UNSPEC) >- return -EINVAL; >- if (!netif_device_present(dev)) >- return -ENODEV; >- return dev_mc_add(dev, ifr->ifr_hwaddr.sa_data, >- dev->addr_len, 1); >+ case SIOCSIFHWBROADCAST: >+ if (ifr->ifr_hwaddr.sa_family != dev->type) >+ return -EINVAL; >+ memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data, >+ min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); >+ call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); >+ return 0; > >- case SIOCDELMULTI: >- if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || >- ifr->ifr_hwaddr.sa_family != AF_UNSPEC) >- return -EINVAL; >+ case SIOCSIFMAP: >+ if (ops->ndo_set_config) { > if (!netif_device_present(dev)) > return -ENODEV; >- return dev_mc_delete(dev, ifr->ifr_hwaddr.sa_data, >- dev->addr_len, 1); >+ return ops->ndo_set_config(dev, &ifr->ifr_map); >+ } >+ return -EOPNOTSUPP; > >- case SIOCSIFTXQLEN: >- if (ifr->ifr_qlen < 0) >- return -EINVAL; >- dev->tx_queue_len = ifr->ifr_qlen; >- return 0; >+ case SIOCADDMULTI: >+ if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || >+ ifr->ifr_hwaddr.sa_family != AF_UNSPEC) >+ return -EINVAL; >+ if (!netif_device_present(dev)) >+ return -ENODEV; >+ return dev_mc_add(dev, ifr->ifr_hwaddr.sa_data, >+ dev->addr_len, 1); >+ >+ case SIOCDELMULTI: >+ if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || >+ ifr->ifr_hwaddr.sa_family != AF_UNSPEC) >+ return -EINVAL; >+ if (!netif_device_present(dev)) >+ return -ENODEV; >+ return dev_mc_delete(dev, ifr->ifr_hwaddr.sa_data, >+ dev->addr_len, 1); > >- case SIOCSIFNAME: >- ifr->ifr_newname[IFNAMSIZ-1] = '\0'; >- return dev_change_name(dev, ifr->ifr_newname); >+ case SIOCSIFTXQLEN: >+ if (ifr->ifr_qlen < 0) >+ return -EINVAL; >+ dev->tx_queue_len = ifr->ifr_qlen; >+ return 0; > >- /* >- * Unknown or private ioctl >- */ >+ case SIOCSIFNAME: >+ ifr->ifr_newname[IFNAMSIZ-1] = '\0'; >+ return dev_change_name(dev, ifr->ifr_newname); > >- default: >- if ((cmd >= SIOCDEVPRIVATE && >- cmd <= SIOCDEVPRIVATE + 15) || >- cmd == SIOCBONDENSLAVE || >- cmd == SIOCBONDRELEASE || >- cmd == SIOCBONDSETHWADDR || >- cmd == SIOCBONDSLAVEINFOQUERY || >- cmd == SIOCBONDINFOQUERY || >- cmd == SIOCBONDCHANGEACTIVE || >- cmd == SIOCGMIIPHY || >- cmd == SIOCGMIIREG || >- cmd == SIOCSMIIREG || >- cmd == SIOCBRADDIF || >- cmd == SIOCBRDELIF || >- cmd == SIOCSHWTSTAMP || >- cmd == SIOCWANDEV) { >- err = -EOPNOTSUPP; >- if (ops->ndo_do_ioctl) { >- if (netif_device_present(dev)) >- err = ops->ndo_do_ioctl(dev, ifr, cmd); >- else >- err = -ENODEV; >- } >- } else >- err = -EINVAL; >+ /* >+ * Unknown or private ioctl >+ */ >+ default: >+ if ((cmd >= SIOCDEVPRIVATE && >+ cmd <= SIOCDEVPRIVATE + 15) || >+ cmd == SIOCBONDENSLAVE || >+ cmd == SIOCBONDRELEASE || >+ cmd == SIOCBONDSETHWADDR || >+ cmd == SIOCBONDSLAVEINFOQUERY || >+ cmd == SIOCBONDINFOQUERY || >+ cmd == SIOCBONDCHANGEACTIVE || >+ cmd == SIOCGMIIPHY || >+ cmd == SIOCGMIIREG || >+ cmd == SIOCSMIIREG || >+ cmd == SIOCBRADDIF || >+ cmd == SIOCBRDELIF || >+ cmd == SIOCSHWTSTAMP || >+ cmd == SIOCWANDEV) { >+ err = -EOPNOTSUPP; >+ if (ops->ndo_do_ioctl) { >+ if (netif_device_present(dev)) >+ err = ops->ndo_do_ioctl(dev, ifr, cmd); >+ else >+ err = -ENODEV; >+ } >+ } else >+ err = -EINVAL; > > } > return err; >@@ -4447,135 +4475,135 @@ int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg) > */ > > switch (cmd) { >- /* >- * These ioctl calls: >- * - can be done by all. >- * - atomic and do not require locking. >- * - return a value >- */ >- case SIOCGIFFLAGS: >- case SIOCGIFMETRIC: >- case SIOCGIFMTU: >- case SIOCGIFHWADDR: >- case SIOCGIFSLAVE: >- case SIOCGIFMAP: >- case SIOCGIFINDEX: >- case SIOCGIFTXQLEN: >- dev_load(net, ifr.ifr_name); >- read_lock(&dev_base_lock); >- ret = dev_ifsioc_locked(net, &ifr, cmd); >- read_unlock(&dev_base_lock); >- if (!ret) { >- if (colon) >- *colon = ':'; >- if (copy_to_user(arg, &ifr, >- sizeof(struct ifreq))) >- ret = -EFAULT; >- } >- return ret; >+ /* >+ * These ioctl calls: >+ * - can be done by all. >+ * - atomic and do not require locking. >+ * - return a value >+ */ >+ case SIOCGIFFLAGS: >+ case SIOCGIFMETRIC: >+ case SIOCGIFMTU: >+ case SIOCGIFHWADDR: >+ case SIOCGIFSLAVE: >+ case SIOCGIFMAP: >+ case SIOCGIFINDEX: >+ case SIOCGIFTXQLEN: >+ dev_load(net, ifr.ifr_name); >+ read_lock(&dev_base_lock); >+ ret = dev_ifsioc_locked(net, &ifr, cmd); >+ read_unlock(&dev_base_lock); >+ if (!ret) { >+ if (colon) >+ *colon = ':'; >+ if (copy_to_user(arg, &ifr, >+ sizeof(struct ifreq))) >+ ret = -EFAULT; >+ } >+ return ret; > >- case SIOCETHTOOL: >- dev_load(net, ifr.ifr_name); >- rtnl_lock(); >- ret = dev_ethtool(net, &ifr); >- rtnl_unlock(); >- if (!ret) { >- if (colon) >- *colon = ':'; >- if (copy_to_user(arg, &ifr, >- sizeof(struct ifreq))) >- ret = -EFAULT; >- } >- return ret; >+ case SIOCETHTOOL: >+ dev_load(net, ifr.ifr_name); >+ rtnl_lock(); >+ ret = dev_ethtool(net, &ifr); >+ rtnl_unlock(); >+ if (!ret) { >+ if (colon) >+ *colon = ':'; >+ if (copy_to_user(arg, &ifr, >+ sizeof(struct ifreq))) >+ ret = -EFAULT; >+ } >+ return ret; > >- /* >- * These ioctl calls: >- * - require superuser power. >- * - require strict serialization. >- * - return a value >- */ >- case SIOCGMIIPHY: >- case SIOCGMIIREG: >- case SIOCSIFNAME: >- if (!capable(CAP_NET_ADMIN)) >- return -EPERM; >- dev_load(net, ifr.ifr_name); >- rtnl_lock(); >- ret = dev_ifsioc(net, &ifr, cmd); >- rtnl_unlock(); >- if (!ret) { >- if (colon) >- *colon = ':'; >- if (copy_to_user(arg, &ifr, >- sizeof(struct ifreq))) >- ret = -EFAULT; >- } >- return ret; >+ /* >+ * These ioctl calls: >+ * - require superuser power. >+ * - require strict serialization. >+ * - return a value >+ */ >+ case SIOCGMIIPHY: >+ case SIOCGMIIREG: >+ case SIOCSIFNAME: >+ if (!capable(CAP_NET_ADMIN)) >+ return -EPERM; >+ dev_load(net, ifr.ifr_name); >+ rtnl_lock(); >+ ret = dev_ifsioc(net, &ifr, cmd); >+ rtnl_unlock(); >+ if (!ret) { >+ if (colon) >+ *colon = ':'; >+ if (copy_to_user(arg, &ifr, >+ sizeof(struct ifreq))) >+ ret = -EFAULT; >+ } >+ return ret; > >- /* >- * These ioctl calls: >- * - require superuser power. >- * - require strict serialization. >- * - do not return a value >- */ >- case SIOCSIFFLAGS: >- case SIOCSIFMETRIC: >- case SIOCSIFMTU: >- case SIOCSIFMAP: >- case SIOCSIFHWADDR: >- case SIOCSIFSLAVE: >- case SIOCADDMULTI: >- case SIOCDELMULTI: >- case SIOCSIFHWBROADCAST: >- case SIOCSIFTXQLEN: >- case SIOCSMIIREG: >- case SIOCBONDENSLAVE: >- case SIOCBONDRELEASE: >- case SIOCBONDSETHWADDR: >- case SIOCBONDCHANGEACTIVE: >- case SIOCBRADDIF: >- case SIOCBRDELIF: >- case SIOCSHWTSTAMP: >- if (!capable(CAP_NET_ADMIN)) >- return -EPERM; >- /* fall through */ >- case SIOCBONDSLAVEINFOQUERY: >- case SIOCBONDINFOQUERY: >+ /* >+ * These ioctl calls: >+ * - require superuser power. >+ * - require strict serialization. >+ * - do not return a value >+ */ >+ case SIOCSIFFLAGS: >+ case SIOCSIFMETRIC: >+ case SIOCSIFMTU: >+ case SIOCSIFMAP: >+ case SIOCSIFHWADDR: >+ case SIOCSIFSLAVE: >+ case SIOCADDMULTI: >+ case SIOCDELMULTI: >+ case SIOCSIFHWBROADCAST: >+ case SIOCSIFTXQLEN: >+ case SIOCSMIIREG: >+ case SIOCBONDENSLAVE: >+ case SIOCBONDRELEASE: >+ case SIOCBONDSETHWADDR: >+ case SIOCBONDCHANGEACTIVE: >+ case SIOCBRADDIF: >+ case SIOCBRDELIF: >+ case SIOCSHWTSTAMP: >+ if (!capable(CAP_NET_ADMIN)) >+ return -EPERM; >+ /* fall through */ >+ case SIOCBONDSLAVEINFOQUERY: >+ case SIOCBONDINFOQUERY: >+ dev_load(net, ifr.ifr_name); >+ rtnl_lock(); >+ ret = dev_ifsioc(net, &ifr, cmd); >+ rtnl_unlock(); >+ return ret; >+ >+ case SIOCGIFMEM: >+ /* Get the per device memory space. We can add this but >+ * currently do not support it */ >+ case SIOCSIFMEM: >+ /* Set the per device memory buffer space. >+ * Not applicable in our case */ >+ case SIOCSIFLINK: >+ return -EINVAL; >+ >+ /* >+ * Unknown or private ioctl. >+ */ >+ default: >+ if (cmd == SIOCWANDEV || >+ (cmd >= SIOCDEVPRIVATE && >+ cmd <= SIOCDEVPRIVATE + 15)) { > dev_load(net, ifr.ifr_name); > rtnl_lock(); > ret = dev_ifsioc(net, &ifr, cmd); > rtnl_unlock(); >+ if (!ret && copy_to_user(arg, &ifr, >+ sizeof(struct ifreq))) >+ ret = -EFAULT; > return ret; >- >- case SIOCGIFMEM: >- /* Get the per device memory space. We can add this but >- * currently do not support it */ >- case SIOCSIFMEM: >- /* Set the per device memory buffer space. >- * Not applicable in our case */ >- case SIOCSIFLINK: >- return -EINVAL; >- >- /* >- * Unknown or private ioctl. >- */ >- default: >- if (cmd == SIOCWANDEV || >- (cmd >= SIOCDEVPRIVATE && >- cmd <= SIOCDEVPRIVATE + 15)) { >- dev_load(net, ifr.ifr_name); >- rtnl_lock(); >- ret = dev_ifsioc(net, &ifr, cmd); >- rtnl_unlock(); >- if (!ret && copy_to_user(arg, &ifr, >- sizeof(struct ifreq))) >- ret = -EFAULT; >- return ret; >- } >- /* Take care of Wireless Extensions */ >- if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) >- return wext_handle_ioctl(net, &ifr, cmd, arg); >- return -EINVAL; >+ } >+ /* Take care of Wireless Extensions */ >+ if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) >+ return wext_handle_ioctl(net, &ifr, cmd, arg); >+ return -EINVAL; > } > } > >@@ -4840,6 +4868,7 @@ err_uninit: > dev->netdev_ops->ndo_uninit(dev); > goto out; > } >+EXPORT_SYMBOL(register_netdevice); > > /** > * init_dummy_netdev - init a dummy network device for NAPI >@@ -5126,6 +5155,8 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, > } > > dev = PTR_ALIGN(p, NETDEV_ALIGN); >+ pr_err("%s dev=%p queue_count=%d tx=%p\n", name, dev, queue_count, tx); >+ WARN_ON(queue_count == 1); > dev->padded = (char *)dev - (char *)p; > > if (dev_addr_init(dev)) >@@ -5192,6 +5223,7 @@ void free_netdev(struct net_device *dev) > /* will free via device release */ > put_device(&dev->dev); > } >+EXPORT_SYMBOL(free_netdev); > > /** > * synchronize_net - Synchronize with packet receive processing >@@ -5204,6 +5236,7 @@ void synchronize_net(void) > might_sleep(); > synchronize_rcu(); > } >+EXPORT_SYMBOL(synchronize_net); > > /** > * unregister_netdevice - remove device from the kernel >@@ -5224,6 +5257,7 @@ void unregister_netdevice(struct net_device *dev) > /* Finish processing unregister after unlock */ > net_set_todo(dev); > } >+EXPORT_SYMBOL(unregister_netdevice); > > /** > * unregister_netdev - remove device from the kernel >@@ -5242,7 +5276,6 @@ void unregister_netdev(struct net_device *dev) > unregister_netdevice(dev); > rtnl_unlock(); > } >- > EXPORT_SYMBOL(unregister_netdev); > > /** >@@ -5432,7 +5465,7 @@ unsigned long netdev_increment_features(unsigned long all, unsigned long one, > unsigned long mask) > { > /* If device needs checksumming, downgrade to it. */ >- if (all & NETIF_F_NO_CSUM && !(one & NETIF_F_NO_CSUM)) >+ if (all & NETIF_F_NO_CSUM && !(one & NETIF_F_NO_CSUM)) > all ^= NETIF_F_NO_CSUM | (one & NETIF_F_ALL_CSUM); > else if (mask & NETIF_F_ALL_CSUM) { > /* If one device supports v4/v6 checksumming, set for all. */ >@@ -5658,41 +5691,3 @@ static int __init initialize_hashrnd(void) > > late_initcall_sync(initialize_hashrnd); > >-EXPORT_SYMBOL(__dev_get_by_index); >-EXPORT_SYMBOL(__dev_get_by_name); >-EXPORT_SYMBOL(__dev_remove_pack); >-EXPORT_SYMBOL(dev_valid_name); >-EXPORT_SYMBOL(dev_add_pack); >-EXPORT_SYMBOL(dev_alloc_name); >-EXPORT_SYMBOL(dev_close); >-EXPORT_SYMBOL(dev_get_by_flags); >-EXPORT_SYMBOL(dev_get_by_index); >-EXPORT_SYMBOL(dev_get_by_name); >-EXPORT_SYMBOL(dev_open); >-EXPORT_SYMBOL(dev_queue_xmit); >-EXPORT_SYMBOL(dev_remove_pack); >-EXPORT_SYMBOL(dev_set_allmulti); >-EXPORT_SYMBOL(dev_set_promiscuity); >-EXPORT_SYMBOL(dev_change_flags); >-EXPORT_SYMBOL(dev_set_mtu); >-EXPORT_SYMBOL(dev_set_mac_address); >-EXPORT_SYMBOL(free_netdev); >-EXPORT_SYMBOL(netdev_boot_setup_check); >-EXPORT_SYMBOL(netdev_set_master); >-EXPORT_SYMBOL(netdev_state_change); >-EXPORT_SYMBOL(netif_receive_skb); >-EXPORT_SYMBOL(netif_rx); >-EXPORT_SYMBOL(register_gifconf); >-EXPORT_SYMBOL(register_netdevice); >-EXPORT_SYMBOL(register_netdevice_notifier); >-EXPORT_SYMBOL(skb_checksum_help); >-EXPORT_SYMBOL(synchronize_net); >-EXPORT_SYMBOL(unregister_netdevice); >-EXPORT_SYMBOL(unregister_netdevice_notifier); >-EXPORT_SYMBOL(net_enable_timestamp); >-EXPORT_SYMBOL(net_disable_timestamp); >-EXPORT_SYMBOL(dev_get_flags); >- >-EXPORT_SYMBOL(dev_load); >- >-EXPORT_PER_CPU_SYMBOL(softnet_data); >-- >To unsubscribe from this list: send the line "unsubscribe netdev" in >the body of a message to majordomo@vger.kernel.org >More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/net/core/dev.c b/net/core/dev.c index 4b33566..dd94ae6 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -191,7 +191,6 @@ static struct list_head ptype_all __read_mostly; /* Taps */ * semaphore held. */ DEFINE_RWLOCK(dev_base_lock); - EXPORT_SYMBOL(dev_base_lock); #define NETDEV_HASHBITS 8 @@ -248,6 +247,7 @@ static RAW_NOTIFIER_HEAD(netdev_chain); */ DEFINE_PER_CPU(struct softnet_data, softnet_data); +EXPORT_PER_CPU_SYMBOL(softnet_data); #ifdef CONFIG_LOCKDEP /* @@ -381,6 +381,7 @@ void dev_add_pack(struct packet_type *pt) } spin_unlock_bh(&ptype_lock); } +EXPORT_SYMBOL(dev_add_pack); /** * __dev_remove_pack - remove packet handler @@ -418,6 +419,8 @@ void __dev_remove_pack(struct packet_type *pt) out: spin_unlock_bh(&ptype_lock); } +EXPORT_SYMBOL(__dev_remove_pack); + /** * dev_remove_pack - remove packet handler * @pt: packet type declaration @@ -436,6 +439,7 @@ void dev_remove_pack(struct packet_type *pt) synchronize_net(); } +EXPORT_SYMBOL(dev_remove_pack); /****************************************************************************** @@ -499,6 +503,7 @@ int netdev_boot_setup_check(struct net_device *dev) } return 0; } +EXPORT_SYMBOL(netdev_boot_setup_check); /** @@ -591,6 +596,7 @@ struct net_device *__dev_get_by_name(struct net *net, const char *name) } return NULL; } +EXPORT_SYMBOL(__dev_get_by_name); /** * dev_get_by_name - find a device by its name @@ -615,6 +621,7 @@ struct net_device *dev_get_by_name(struct net *net, const char *name) read_unlock(&dev_base_lock); return dev; } +EXPORT_SYMBOL(dev_get_by_name); /** * __dev_get_by_index - find a device by its ifindex @@ -640,6 +647,7 @@ struct net_device *__dev_get_by_index(struct net *net, int ifindex) } return NULL; } +EXPORT_SYMBOL(__dev_get_by_index); /** @@ -664,6 +672,7 @@ struct net_device *dev_get_by_index(struct net *net, int ifindex) read_unlock(&dev_base_lock); return dev; } +EXPORT_SYMBOL(dev_get_by_index); /** * dev_getbyhwaddr - find a device by its hardware address @@ -693,7 +702,6 @@ struct net_device *dev_getbyhwaddr(struct net *net, unsigned short type, char *h return NULL; } - EXPORT_SYMBOL(dev_getbyhwaddr); struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type) @@ -707,7 +715,6 @@ struct net_device *__dev_getfirstbyhwtype(struct net *net, unsigned short type) return NULL; } - EXPORT_SYMBOL(__dev_getfirstbyhwtype); struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type) @@ -721,7 +728,6 @@ struct net_device *dev_getfirstbyhwtype(struct net *net, unsigned short type) rtnl_unlock(); return dev; } - EXPORT_SYMBOL(dev_getfirstbyhwtype); /** @@ -736,7 +742,8 @@ EXPORT_SYMBOL(dev_getfirstbyhwtype); * dev_put to indicate they have finished with it. */ -struct net_device * dev_get_by_flags(struct net *net, unsigned short if_flags, unsigned short mask) +struct net_device *dev_get_by_flags(struct net *net, unsigned short if_flags, + unsigned short mask) { struct net_device *dev, *ret; @@ -752,6 +759,7 @@ struct net_device * dev_get_by_flags(struct net *net, unsigned short if_flags, u read_unlock(&dev_base_lock); return ret; } +EXPORT_SYMBOL(dev_get_by_flags); /** * dev_valid_name - check if name is okay for network device @@ -777,6 +785,7 @@ int dev_valid_name(const char *name) } return 1; } +EXPORT_SYMBOL(dev_valid_name); /** * __dev_alloc_name - allocate a name for a device @@ -870,6 +879,7 @@ int dev_alloc_name(struct net_device *dev, const char *name) strlcpy(dev->name, buf, IFNAMSIZ); return ret; } +EXPORT_SYMBOL(dev_alloc_name); /** @@ -906,8 +916,7 @@ int dev_change_name(struct net_device *dev, const char *newname) err = dev_alloc_name(dev, newname); if (err < 0) return err; - } - else if (__dev_get_by_name(net, newname)) + } else if (__dev_get_by_name(net, newname)) return -EEXIST; else strlcpy(dev->name, newname, IFNAMSIZ); @@ -970,7 +979,7 @@ int dev_set_alias(struct net_device *dev, const char *alias, size_t len) return 0; } - dev->ifalias = krealloc(dev->ifalias, len+1, GFP_KERNEL); + dev->ifalias = krealloc(dev->ifalias, len + 1, GFP_KERNEL); if (!dev->ifalias) return -ENOMEM; @@ -1006,6 +1015,7 @@ void netdev_state_change(struct net_device *dev) rtmsg_ifinfo(RTM_NEWLINK, dev, 0); } } +EXPORT_SYMBOL(netdev_state_change); void netdev_bonding_change(struct net_device *dev) { @@ -1034,6 +1044,7 @@ void dev_load(struct net *net, const char *name) if (!dev && capable(CAP_SYS_MODULE)) request_module("%s", name); } +EXPORT_SYMBOL(dev_load); /** * dev_open - prepare an interface for use. @@ -1118,6 +1129,7 @@ int dev_open(struct net_device *dev) return ret; } +EXPORT_SYMBOL(dev_open); /** * dev_close - shutdown an interface. @@ -1184,6 +1196,7 @@ int dev_close(struct net_device *dev) return 0; } +EXPORT_SYMBOL(dev_close); /** @@ -1279,6 +1292,7 @@ rollback: raw_notifier_chain_unregister(&netdev_chain, nb); goto unlock; } +EXPORT_SYMBOL(register_netdevice_notifier); /** * unregister_netdevice_notifier - unregister a network notifier block @@ -1299,6 +1313,7 @@ int unregister_netdevice_notifier(struct notifier_block *nb) rtnl_unlock(); return err; } +EXPORT_SYMBOL(unregister_netdevice_notifier); /** * call_netdevice_notifiers - call all network notifier blocks @@ -1321,11 +1336,13 @@ void net_enable_timestamp(void) { atomic_inc(&netstamp_needed); } +EXPORT_SYMBOL(net_enable_timestamp); void net_disable_timestamp(void) { atomic_dec(&netstamp_needed); } +EXPORT_SYMBOL(net_disable_timestamp); static inline void net_timestamp(struct sk_buff *skb) { @@ -1359,7 +1376,7 @@ static void dev_queue_xmit_nit(struct sk_buff *skb, struct net_device *dev) if ((ptype->dev == dev || !ptype->dev) && (ptype->af_packet_priv == NULL || (struct sock *)ptype->af_packet_priv != skb->sk)) { - struct sk_buff *skb2= skb_clone(skb, GFP_ATOMIC); + struct sk_buff *skb2 = skb_clone(skb, GFP_ATOMIC); if (!skb2) break; @@ -1527,6 +1544,7 @@ out_set_summed: out: return ret; } +EXPORT_SYMBOL(skb_checksum_help); /** * skb_gso_segment - Perform segmentation on skb. @@ -1589,7 +1607,6 @@ struct sk_buff *skb_gso_segment(struct sk_buff *skb, int features) return segs; } - EXPORT_SYMBOL(skb_gso_segment); /* Take action when hardware reception checksum errors are detected. */ @@ -1755,7 +1772,7 @@ u16 skb_tx_hash(const struct net_device *dev, const struct sk_buff *skb) if (skb_rx_queue_recorded(skb)) { hash = skb_get_rx_queue(skb); - while (unlikely (hash >= dev->real_num_tx_queues)) + while (unlikely(hash >= dev->real_num_tx_queues)) hash -= dev->real_num_tx_queues; return hash; } @@ -1890,7 +1907,7 @@ gso: q = rcu_dereference(txq->qdisc); #ifdef CONFIG_NET_CLS_ACT - skb->tc_verd = SET_TC_AT(skb->tc_verd,AT_EGRESS); + skb->tc_verd = SET_TC_AT(skb->tc_verd, AT_EGRESS); #endif if (q->enqueue) { rc = __dev_xmit_skb(skb, q, dev, txq); @@ -1946,6 +1963,7 @@ out: rcu_read_unlock_bh(); return rc; } +EXPORT_SYMBOL(dev_queue_xmit); /*======================================================================= @@ -2012,6 +2030,7 @@ enqueue: kfree_skb(skb); return NET_RX_DROP; } +EXPORT_SYMBOL(netif_rx); int netif_rx_ni(struct sk_buff *skb) { @@ -2025,7 +2044,6 @@ int netif_rx_ni(struct sk_buff *skb) return err; } - EXPORT_SYMBOL(netif_rx_ni); static void net_tx_action(struct softirq_action *h) @@ -2358,6 +2376,7 @@ out: rcu_read_unlock(); return ret; } +EXPORT_SYMBOL(netif_receive_skb); /* Network device is going away, flush any packets still pending */ static void flush_backlog(void *arg) @@ -2874,7 +2893,7 @@ softnet_break: goto out; } -static gifconf_func_t * gifconf_list [NPROTO]; +static gifconf_func_t *gifconf_list[NPROTO]; /** * register_gifconf - register a SIOCGIF handler @@ -2885,13 +2904,14 @@ static gifconf_func_t * gifconf_list [NPROTO]; * that is passed must not be freed or reused until it has been replaced * by another handler. */ -int register_gifconf(unsigned int family, gifconf_func_t * gifconf) +int register_gifconf(unsigned int family, gifconf_func_t *gifconf) { if (family >= NPROTO) return -EINVAL; gifconf_list[family] = gifconf; return 0; } +EXPORT_SYMBOL(register_gifconf); /* @@ -3102,7 +3122,7 @@ static int softnet_seq_show(struct seq_file *seq, void *v) seq_printf(seq, "%08x %08x %08x %08x %08x %08x %08x %08x %08x\n", s->total, s->dropped, s->time_squeeze, 0, 0, 0, 0, 0, /* was fastroute */ - s->cpu_collision ); + s->cpu_collision); return 0; } @@ -3338,6 +3358,7 @@ int netdev_set_master(struct net_device *slave, struct net_device *master) rtmsg_ifinfo(RTM_NEWLINK, slave, IFF_SLAVE); return 0; } +EXPORT_SYMBOL(netdev_set_master); static void dev_change_rx_flags(struct net_device *dev, int flags) { @@ -3416,6 +3437,7 @@ int dev_set_promiscuity(struct net_device *dev, int inc) dev_set_rx_mode(dev); return err; } +EXPORT_SYMBOL(dev_set_promiscuity); /** * dev_set_allmulti - update allmulti count on a device @@ -3459,6 +3481,7 @@ int dev_set_allmulti(struct net_device *dev, int inc) } return 0; } +EXPORT_SYMBOL(dev_set_allmulti); /* * Upload unicast and multicast address lists to device and @@ -4088,6 +4111,7 @@ unsigned dev_get_flags(const struct net_device *dev) return flags; } +EXPORT_SYMBOL(dev_get_flags); /** * dev_change_flags - change device settings @@ -4138,12 +4162,13 @@ int dev_change_flags(struct net_device *dev, unsigned flags) } if (dev->flags & IFF_UP && - ((old_flags ^ dev->flags) &~ (IFF_UP | IFF_PROMISC | IFF_ALLMULTI | + ((old_flags ^ dev->flags) & ~(IFF_UP | IFF_PROMISC | IFF_ALLMULTI | IFF_VOLATILE))) call_netdevice_notifiers(NETDEV_CHANGE, dev); if ((flags ^ dev->gflags) & IFF_PROMISC) { - int inc = (flags & IFF_PROMISC) ? +1 : -1; + int inc = (flags & IFF_PROMISC) ? 1 : -1; + dev->gflags ^= IFF_PROMISC; dev_set_promiscuity(dev, inc); } @@ -4153,7 +4178,8 @@ int dev_change_flags(struct net_device *dev, unsigned flags) IFF_ALLMULTI is requested not asking us and not reporting. */ if ((flags ^ dev->gflags) & IFF_ALLMULTI) { - int inc = (flags & IFF_ALLMULTI) ? +1 : -1; + int inc = (flags & IFF_ALLMULTI) ? 1 : -1; + dev->gflags ^= IFF_ALLMULTI; dev_set_allmulti(dev, inc); } @@ -4165,6 +4191,7 @@ int dev_change_flags(struct net_device *dev, unsigned flags) return ret; } +EXPORT_SYMBOL(dev_change_flags); /** * dev_set_mtu - Change maximum transfer unit @@ -4198,6 +4225,7 @@ int dev_set_mtu(struct net_device *dev, int new_mtu) call_netdevice_notifiers(NETDEV_CHANGEMTU, dev); return err; } +EXPORT_SYMBOL(dev_set_mtu); /** * dev_set_mac_address - Change Media Access Control Address @@ -4222,6 +4250,7 @@ int dev_set_mac_address(struct net_device *dev, struct sockaddr *sa) call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); return err; } +EXPORT_SYMBOL(dev_set_mac_address); /* * Perform the SIOCxIFxxx calls, inside read_lock(dev_base_lock) @@ -4235,56 +4264,56 @@ static int dev_ifsioc_locked(struct net *net, struct ifreq *ifr, unsigned int cm return -ENODEV; switch (cmd) { - case SIOCGIFFLAGS: /* Get interface flags */ - ifr->ifr_flags = (short) dev_get_flags(dev); - return 0; + case SIOCGIFFLAGS: /* Get interface flags */ + ifr->ifr_flags = (short) dev_get_flags(dev); + return 0; - case SIOCGIFMETRIC: /* Get the metric on the interface - (currently unused) */ - ifr->ifr_metric = 0; - return 0; + case SIOCGIFMETRIC: /* Get the metric on the interface + (currently unused) */ + ifr->ifr_metric = 0; + return 0; - case SIOCGIFMTU: /* Get the MTU of a device */ - ifr->ifr_mtu = dev->mtu; - return 0; + case SIOCGIFMTU: /* Get the MTU of a device */ + ifr->ifr_mtu = dev->mtu; + return 0; - case SIOCGIFHWADDR: - if (!dev->addr_len) - memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data); - else - memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr, - min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); - ifr->ifr_hwaddr.sa_family = dev->type; - return 0; + case SIOCGIFHWADDR: + if (!dev->addr_len) + memset(ifr->ifr_hwaddr.sa_data, 0, sizeof ifr->ifr_hwaddr.sa_data); + else + memcpy(ifr->ifr_hwaddr.sa_data, dev->dev_addr, + min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); + ifr->ifr_hwaddr.sa_family = dev->type; + return 0; - case SIOCGIFSLAVE: - err = -EINVAL; - break; + case SIOCGIFSLAVE: + err = -EINVAL; + break; - case SIOCGIFMAP: - ifr->ifr_map.mem_start = dev->mem_start; - ifr->ifr_map.mem_end = dev->mem_end; - ifr->ifr_map.base_addr = dev->base_addr; - ifr->ifr_map.irq = dev->irq; - ifr->ifr_map.dma = dev->dma; - ifr->ifr_map.port = dev->if_port; - return 0; + case SIOCGIFMAP: + ifr->ifr_map.mem_start = dev->mem_start; + ifr->ifr_map.mem_end = dev->mem_end; + ifr->ifr_map.base_addr = dev->base_addr; + ifr->ifr_map.irq = dev->irq; + ifr->ifr_map.dma = dev->dma; + ifr->ifr_map.port = dev->if_port; + return 0; - case SIOCGIFINDEX: - ifr->ifr_ifindex = dev->ifindex; - return 0; + case SIOCGIFINDEX: + ifr->ifr_ifindex = dev->ifindex; + return 0; - case SIOCGIFTXQLEN: - ifr->ifr_qlen = dev->tx_queue_len; - return 0; + case SIOCGIFTXQLEN: + ifr->ifr_qlen = dev->tx_queue_len; + return 0; - default: - /* dev_ioctl() should ensure this case - * is never reached - */ - WARN_ON(1); - err = -EINVAL; - break; + default: + /* dev_ioctl() should ensure this case + * is never reached + */ + WARN_ON(1); + err = -EINVAL; + break; } return err; @@ -4305,92 +4334,91 @@ static int dev_ifsioc(struct net *net, struct ifreq *ifr, unsigned int cmd) ops = dev->netdev_ops; switch (cmd) { - case SIOCSIFFLAGS: /* Set interface flags */ - return dev_change_flags(dev, ifr->ifr_flags); - - case SIOCSIFMETRIC: /* Set the metric on the interface - (currently unused) */ - return -EOPNOTSUPP; - - case SIOCSIFMTU: /* Set the MTU of a device */ - return dev_set_mtu(dev, ifr->ifr_mtu); + case SIOCSIFFLAGS: /* Set interface flags */ + return dev_change_flags(dev, ifr->ifr_flags); - case SIOCSIFHWADDR: - return dev_set_mac_address(dev, &ifr->ifr_hwaddr); + case SIOCSIFMETRIC: /* Set the metric on the interface + (currently unused) */ + return -EOPNOTSUPP; - case SIOCSIFHWBROADCAST: - if (ifr->ifr_hwaddr.sa_family != dev->type) - return -EINVAL; - memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data, - min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); - call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); - return 0; + case SIOCSIFMTU: /* Set the MTU of a device */ + return dev_set_mtu(dev, ifr->ifr_mtu); - case SIOCSIFMAP: - if (ops->ndo_set_config) { - if (!netif_device_present(dev)) - return -ENODEV; - return ops->ndo_set_config(dev, &ifr->ifr_map); - } - return -EOPNOTSUPP; + case SIOCSIFHWADDR: + return dev_set_mac_address(dev, &ifr->ifr_hwaddr); - case SIOCADDMULTI: - if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || - ifr->ifr_hwaddr.sa_family != AF_UNSPEC) - return -EINVAL; - if (!netif_device_present(dev)) - return -ENODEV; - return dev_mc_add(dev, ifr->ifr_hwaddr.sa_data, - dev->addr_len, 1); + case SIOCSIFHWBROADCAST: + if (ifr->ifr_hwaddr.sa_family != dev->type) + return -EINVAL; + memcpy(dev->broadcast, ifr->ifr_hwaddr.sa_data, + min(sizeof ifr->ifr_hwaddr.sa_data, (size_t) dev->addr_len)); + call_netdevice_notifiers(NETDEV_CHANGEADDR, dev); + return 0; - case SIOCDELMULTI: - if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || - ifr->ifr_hwaddr.sa_family != AF_UNSPEC) - return -EINVAL; + case SIOCSIFMAP: + if (ops->ndo_set_config) { if (!netif_device_present(dev)) return -ENODEV; - return dev_mc_delete(dev, ifr->ifr_hwaddr.sa_data, - dev->addr_len, 1); + return ops->ndo_set_config(dev, &ifr->ifr_map); + } + return -EOPNOTSUPP; - case SIOCSIFTXQLEN: - if (ifr->ifr_qlen < 0) - return -EINVAL; - dev->tx_queue_len = ifr->ifr_qlen; - return 0; + case SIOCADDMULTI: + if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || + ifr->ifr_hwaddr.sa_family != AF_UNSPEC) + return -EINVAL; + if (!netif_device_present(dev)) + return -ENODEV; + return dev_mc_add(dev, ifr->ifr_hwaddr.sa_data, + dev->addr_len, 1); + + case SIOCDELMULTI: + if ((!ops->ndo_set_multicast_list && !ops->ndo_set_rx_mode) || + ifr->ifr_hwaddr.sa_family != AF_UNSPEC) + return -EINVAL; + if (!netif_device_present(dev)) + return -ENODEV; + return dev_mc_delete(dev, ifr->ifr_hwaddr.sa_data, + dev->addr_len, 1); - case SIOCSIFNAME: - ifr->ifr_newname[IFNAMSIZ-1] = '\0'; - return dev_change_name(dev, ifr->ifr_newname); + case SIOCSIFTXQLEN: + if (ifr->ifr_qlen < 0) + return -EINVAL; + dev->tx_queue_len = ifr->ifr_qlen; + return 0; - /* - * Unknown or private ioctl - */ + case SIOCSIFNAME: + ifr->ifr_newname[IFNAMSIZ-1] = '\0'; + return dev_change_name(dev, ifr->ifr_newname); - default: - if ((cmd >= SIOCDEVPRIVATE && - cmd <= SIOCDEVPRIVATE + 15) || - cmd == SIOCBONDENSLAVE || - cmd == SIOCBONDRELEASE || - cmd == SIOCBONDSETHWADDR || - cmd == SIOCBONDSLAVEINFOQUERY || - cmd == SIOCBONDINFOQUERY || - cmd == SIOCBONDCHANGEACTIVE || - cmd == SIOCGMIIPHY || - cmd == SIOCGMIIREG || - cmd == SIOCSMIIREG || - cmd == SIOCBRADDIF || - cmd == SIOCBRDELIF || - cmd == SIOCSHWTSTAMP || - cmd == SIOCWANDEV) { - err = -EOPNOTSUPP; - if (ops->ndo_do_ioctl) { - if (netif_device_present(dev)) - err = ops->ndo_do_ioctl(dev, ifr, cmd); - else - err = -ENODEV; - } - } else - err = -EINVAL; + /* + * Unknown or private ioctl + */ + default: + if ((cmd >= SIOCDEVPRIVATE && + cmd <= SIOCDEVPRIVATE + 15) || + cmd == SIOCBONDENSLAVE || + cmd == SIOCBONDRELEASE || + cmd == SIOCBONDSETHWADDR || + cmd == SIOCBONDSLAVEINFOQUERY || + cmd == SIOCBONDINFOQUERY || + cmd == SIOCBONDCHANGEACTIVE || + cmd == SIOCGMIIPHY || + cmd == SIOCGMIIREG || + cmd == SIOCSMIIREG || + cmd == SIOCBRADDIF || + cmd == SIOCBRDELIF || + cmd == SIOCSHWTSTAMP || + cmd == SIOCWANDEV) { + err = -EOPNOTSUPP; + if (ops->ndo_do_ioctl) { + if (netif_device_present(dev)) + err = ops->ndo_do_ioctl(dev, ifr, cmd); + else + err = -ENODEV; + } + } else + err = -EINVAL; } return err; @@ -4447,135 +4475,135 @@ int dev_ioctl(struct net *net, unsigned int cmd, void __user *arg) */ switch (cmd) { - /* - * These ioctl calls: - * - can be done by all. - * - atomic and do not require locking. - * - return a value - */ - case SIOCGIFFLAGS: - case SIOCGIFMETRIC: - case SIOCGIFMTU: - case SIOCGIFHWADDR: - case SIOCGIFSLAVE: - case SIOCGIFMAP: - case SIOCGIFINDEX: - case SIOCGIFTXQLEN: - dev_load(net, ifr.ifr_name); - read_lock(&dev_base_lock); - ret = dev_ifsioc_locked(net, &ifr, cmd); - read_unlock(&dev_base_lock); - if (!ret) { - if (colon) - *colon = ':'; - if (copy_to_user(arg, &ifr, - sizeof(struct ifreq))) - ret = -EFAULT; - } - return ret; + /* + * These ioctl calls: + * - can be done by all. + * - atomic and do not require locking. + * - return a value + */ + case SIOCGIFFLAGS: + case SIOCGIFMETRIC: + case SIOCGIFMTU: + case SIOCGIFHWADDR: + case SIOCGIFSLAVE: + case SIOCGIFMAP: + case SIOCGIFINDEX: + case SIOCGIFTXQLEN: + dev_load(net, ifr.ifr_name); + read_lock(&dev_base_lock); + ret = dev_ifsioc_locked(net, &ifr, cmd); + read_unlock(&dev_base_lock); + if (!ret) { + if (colon) + *colon = ':'; + if (copy_to_user(arg, &ifr, + sizeof(struct ifreq))) + ret = -EFAULT; + } + return ret; - case SIOCETHTOOL: - dev_load(net, ifr.ifr_name); - rtnl_lock(); - ret = dev_ethtool(net, &ifr); - rtnl_unlock(); - if (!ret) { - if (colon) - *colon = ':'; - if (copy_to_user(arg, &ifr, - sizeof(struct ifreq))) - ret = -EFAULT; - } - return ret; + case SIOCETHTOOL: + dev_load(net, ifr.ifr_name); + rtnl_lock(); + ret = dev_ethtool(net, &ifr); + rtnl_unlock(); + if (!ret) { + if (colon) + *colon = ':'; + if (copy_to_user(arg, &ifr, + sizeof(struct ifreq))) + ret = -EFAULT; + } + return ret; - /* - * These ioctl calls: - * - require superuser power. - * - require strict serialization. - * - return a value - */ - case SIOCGMIIPHY: - case SIOCGMIIREG: - case SIOCSIFNAME: - if (!capable(CAP_NET_ADMIN)) - return -EPERM; - dev_load(net, ifr.ifr_name); - rtnl_lock(); - ret = dev_ifsioc(net, &ifr, cmd); - rtnl_unlock(); - if (!ret) { - if (colon) - *colon = ':'; - if (copy_to_user(arg, &ifr, - sizeof(struct ifreq))) - ret = -EFAULT; - } - return ret; + /* + * These ioctl calls: + * - require superuser power. + * - require strict serialization. + * - return a value + */ + case SIOCGMIIPHY: + case SIOCGMIIREG: + case SIOCSIFNAME: + if (!capable(CAP_NET_ADMIN)) + return -EPERM; + dev_load(net, ifr.ifr_name); + rtnl_lock(); + ret = dev_ifsioc(net, &ifr, cmd); + rtnl_unlock(); + if (!ret) { + if (colon) + *colon = ':'; + if (copy_to_user(arg, &ifr, + sizeof(struct ifreq))) + ret = -EFAULT; + } + return ret; - /* - * These ioctl calls: - * - require superuser power. - * - require strict serialization. - * - do not return a value - */ - case SIOCSIFFLAGS: - case SIOCSIFMETRIC: - case SIOCSIFMTU: - case SIOCSIFMAP: - case SIOCSIFHWADDR: - case SIOCSIFSLAVE: - case SIOCADDMULTI: - case SIOCDELMULTI: - case SIOCSIFHWBROADCAST: - case SIOCSIFTXQLEN: - case SIOCSMIIREG: - case SIOCBONDENSLAVE: - case SIOCBONDRELEASE: - case SIOCBONDSETHWADDR: - case SIOCBONDCHANGEACTIVE: - case SIOCBRADDIF: - case SIOCBRDELIF: - case SIOCSHWTSTAMP: - if (!capable(CAP_NET_ADMIN)) - return -EPERM; - /* fall through */ - case SIOCBONDSLAVEINFOQUERY: - case SIOCBONDINFOQUERY: + /* + * These ioctl calls: + * - require superuser power. + * - require strict serialization. + * - do not return a value + */ + case SIOCSIFFLAGS: + case SIOCSIFMETRIC: + case SIOCSIFMTU: + case SIOCSIFMAP: + case SIOCSIFHWADDR: + case SIOCSIFSLAVE: + case SIOCADDMULTI: + case SIOCDELMULTI: + case SIOCSIFHWBROADCAST: + case SIOCSIFTXQLEN: + case SIOCSMIIREG: + case SIOCBONDENSLAVE: + case SIOCBONDRELEASE: + case SIOCBONDSETHWADDR: + case SIOCBONDCHANGEACTIVE: + case SIOCBRADDIF: + case SIOCBRDELIF: + case SIOCSHWTSTAMP: + if (!capable(CAP_NET_ADMIN)) + return -EPERM; + /* fall through */ + case SIOCBONDSLAVEINFOQUERY: + case SIOCBONDINFOQUERY: + dev_load(net, ifr.ifr_name); + rtnl_lock(); + ret = dev_ifsioc(net, &ifr, cmd); + rtnl_unlock(); + return ret; + + case SIOCGIFMEM: + /* Get the per device memory space. We can add this but + * currently do not support it */ + case SIOCSIFMEM: + /* Set the per device memory buffer space. + * Not applicable in our case */ + case SIOCSIFLINK: + return -EINVAL; + + /* + * Unknown or private ioctl. + */ + default: + if (cmd == SIOCWANDEV || + (cmd >= SIOCDEVPRIVATE && + cmd <= SIOCDEVPRIVATE + 15)) { dev_load(net, ifr.ifr_name); rtnl_lock(); ret = dev_ifsioc(net, &ifr, cmd); rtnl_unlock(); + if (!ret && copy_to_user(arg, &ifr, + sizeof(struct ifreq))) + ret = -EFAULT; return ret; - - case SIOCGIFMEM: - /* Get the per device memory space. We can add this but - * currently do not support it */ - case SIOCSIFMEM: - /* Set the per device memory buffer space. - * Not applicable in our case */ - case SIOCSIFLINK: - return -EINVAL; - - /* - * Unknown or private ioctl. - */ - default: - if (cmd == SIOCWANDEV || - (cmd >= SIOCDEVPRIVATE && - cmd <= SIOCDEVPRIVATE + 15)) { - dev_load(net, ifr.ifr_name); - rtnl_lock(); - ret = dev_ifsioc(net, &ifr, cmd); - rtnl_unlock(); - if (!ret && copy_to_user(arg, &ifr, - sizeof(struct ifreq))) - ret = -EFAULT; - return ret; - } - /* Take care of Wireless Extensions */ - if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) - return wext_handle_ioctl(net, &ifr, cmd, arg); - return -EINVAL; + } + /* Take care of Wireless Extensions */ + if (cmd >= SIOCIWFIRST && cmd <= SIOCIWLAST) + return wext_handle_ioctl(net, &ifr, cmd, arg); + return -EINVAL; } } @@ -4840,6 +4868,7 @@ err_uninit: dev->netdev_ops->ndo_uninit(dev); goto out; } +EXPORT_SYMBOL(register_netdevice); /** * init_dummy_netdev - init a dummy network device for NAPI @@ -5126,6 +5155,8 @@ struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name, } dev = PTR_ALIGN(p, NETDEV_ALIGN); + pr_err("%s dev=%p queue_count=%d tx=%p\n", name, dev, queue_count, tx); + WARN_ON(queue_count == 1); dev->padded = (char *)dev - (char *)p; if (dev_addr_init(dev)) @@ -5192,6 +5223,7 @@ void free_netdev(struct net_device *dev) /* will free via device release */ put_device(&dev->dev); } +EXPORT_SYMBOL(free_netdev); /** * synchronize_net - Synchronize with packet receive processing @@ -5204,6 +5236,7 @@ void synchronize_net(void) might_sleep(); synchronize_rcu(); } +EXPORT_SYMBOL(synchronize_net); /** * unregister_netdevice - remove device from the kernel @@ -5224,6 +5257,7 @@ void unregister_netdevice(struct net_device *dev) /* Finish processing unregister after unlock */ net_set_todo(dev); } +EXPORT_SYMBOL(unregister_netdevice); /** * unregister_netdev - remove device from the kernel @@ -5242,7 +5276,6 @@ void unregister_netdev(struct net_device *dev) unregister_netdevice(dev); rtnl_unlock(); } - EXPORT_SYMBOL(unregister_netdev); /** @@ -5432,7 +5465,7 @@ unsigned long netdev_increment_features(unsigned long all, unsigned long one, unsigned long mask) { /* If device needs checksumming, downgrade to it. */ - if (all & NETIF_F_NO_CSUM && !(one & NETIF_F_NO_CSUM)) + if (all & NETIF_F_NO_CSUM && !(one & NETIF_F_NO_CSUM)) all ^= NETIF_F_NO_CSUM | (one & NETIF_F_ALL_CSUM); else if (mask & NETIF_F_ALL_CSUM) { /* If one device supports v4/v6 checksumming, set for all. */ @@ -5658,41 +5691,3 @@ static int __init initialize_hashrnd(void) late_initcall_sync(initialize_hashrnd); -EXPORT_SYMBOL(__dev_get_by_index); -EXPORT_SYMBOL(__dev_get_by_name); -EXPORT_SYMBOL(__dev_remove_pack); -EXPORT_SYMBOL(dev_valid_name); -EXPORT_SYMBOL(dev_add_pack); -EXPORT_SYMBOL(dev_alloc_name); -EXPORT_SYMBOL(dev_close); -EXPORT_SYMBOL(dev_get_by_flags); -EXPORT_SYMBOL(dev_get_by_index); -EXPORT_SYMBOL(dev_get_by_name); -EXPORT_SYMBOL(dev_open); -EXPORT_SYMBOL(dev_queue_xmit); -EXPORT_SYMBOL(dev_remove_pack); -EXPORT_SYMBOL(dev_set_allmulti); -EXPORT_SYMBOL(dev_set_promiscuity); -EXPORT_SYMBOL(dev_change_flags); -EXPORT_SYMBOL(dev_set_mtu); -EXPORT_SYMBOL(dev_set_mac_address); -EXPORT_SYMBOL(free_netdev); -EXPORT_SYMBOL(netdev_boot_setup_check); -EXPORT_SYMBOL(netdev_set_master); -EXPORT_SYMBOL(netdev_state_change); -EXPORT_SYMBOL(netif_receive_skb); -EXPORT_SYMBOL(netif_rx); -EXPORT_SYMBOL(register_gifconf); -EXPORT_SYMBOL(register_netdevice); -EXPORT_SYMBOL(register_netdevice_notifier); -EXPORT_SYMBOL(skb_checksum_help); -EXPORT_SYMBOL(synchronize_net); -EXPORT_SYMBOL(unregister_netdevice); -EXPORT_SYMBOL(unregister_netdevice_notifier); -EXPORT_SYMBOL(net_enable_timestamp); -EXPORT_SYMBOL(net_disable_timestamp); -EXPORT_SYMBOL(dev_get_flags); - -EXPORT_SYMBOL(dev_load); - -EXPORT_PER_CPU_SYMBOL(softnet_data);
Pure style cleanup patch before surgery :) Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> --- net/core/dev.c | 589 +++++++++++++++++++++++------------------------ 1 files changed, 292 insertions(+), 297 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html