add tinc
[openwrt/svn-archive/archive.git] / openwrt / package / linux / kernel-patches / 103-net_core_dev-performance
1 --- linux-mips-cvs-21012005/net/core/dev.c 2004-04-16 05:14:21.000000000 +0200
2 +++ linux-bridge/net/core/dev.c 2005-01-25 08:15:53.000000000 +0100
3 @@ -1289,6 +1289,19 @@
4 local_irq_save(flags);
5
6 netdev_rx_stat[this_cpu].total++;
7 +
8 +#if defined(CONFIG_BCM4710) && defined(CONFIG_BRIDGE)
9 + /* Optimisation for framebursting (allow interleaving of pkts by
10 + immediately processing the rx pkt instead of Qing the pkt and deferring
11 + the processing). Only optimise for bridging and guard against non
12 + TASKLET based netif_rx calls.
13 + */
14 + if (!in_irq() && skb->dev->br_port != NULL && br_handle_frame_hook != NULL){
15 + local_irq_restore(flags);
16 + return(netif_receive_skb(skb));
17 + }
18 +#endif
19 +
20 if (queue->input_pkt_queue.qlen <= netdev_max_backlog) {
21 if (queue->input_pkt_queue.qlen) {
22 if (queue->throttle)
23 @@ -2053,6 +2066,7 @@
24 {
25 struct net_device *dev;
26 int err;
27 + struct net_device_stats *stats;
28
29 if ((dev = __dev_get_by_name(ifr->ifr_name)) == NULL)
30 return -ENODEV;
31 @@ -2167,6 +2181,14 @@
32 ifr->ifr_ifindex = dev->ifindex;
33 return 0;
34
35 +#ifdef PERFORMANCE_SUPPORT
36 + case SIOCGIFSTATS:
37 + if (!dev->get_stats || !(stats = dev->get_stats(dev)))
38 + return -ENODEV;
39 + if (copy_to_user(ifr->ifr_data, stats, sizeof(struct net_device_stats)))
40 + return -EFAULT;
41 + return 0;
42 +#endif
43 case SIOCGIFTXQLEN:
44 ifr->ifr_qlen = dev->tx_queue_len;
45 return 0;