uncompress patches, requested by Kaloz
[oweals/openwrt.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;