]> git.hungrycats.org Git - linux/commitdiff
[NET]: Kill NET_PROFILE, has not built for years.
authorDavid S. Miller <davem@nuts.ninka.net>
Wed, 3 Sep 2003 17:51:33 +0000 (10:51 -0700)
committerDavid S. Miller <davem@nuts.ninka.net>
Wed, 3 Sep 2003 17:51:33 +0000 (10:51 -0700)
include/linux/netdevice.h
include/net/profile.h [deleted file]
net/Kconfig
net/core/Makefile
net/core/dev.c
net/core/profile.c [deleted file]

index f2a63e8004d6dbc6a507241c2355e368c7ab5f48..c99e53fed30e19975384cce8d1571a04d063de22 100644 (file)
@@ -37,9 +37,6 @@
 
 #ifdef __KERNEL__
 #include <linux/config.h>
-#ifdef CONFIG_NET_PROFILE
-#include <net/profile.h>
-#endif
 
 struct divert_blk;
 struct vlan_group;
diff --git a/include/net/profile.h b/include/net/profile.h
deleted file mode 100644 (file)
index fd6a3b3..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-#include <linux/config.h> /* for CONFIG_NET_PROFILE */
-#ifndef _NET_PROFILE_H_
-#define _NET_PROFILE_H_ 1
-
-#ifdef CONFIG_NET_PROFILE
-
-#include <linux/types.h>
-#include <linux/time.h>
-#include <linux/kernel.h>
-#include <asm/system.h>
-
-#ifdef CONFIG_X86_TSC
-#include <asm/msr.h>
-#endif
-
-struct net_profile_slot
-{
-       char   id[16];
-       struct net_profile_slot *next;
-       struct timeval entered;
-       struct timeval accumulator;
-       struct timeval irq;
-       int     hits;
-       int     active;
-       int     underflow;
-};
-
-extern atomic_t net_profile_active;
-extern struct timeval net_profile_adjust;
-extern void net_profile_irq_adjust(struct timeval *entered, struct timeval* leaved);
-
-#ifdef CONFIG_X86_TSC
-
-static inline void  net_profile_stamp(struct timeval *pstamp)
-{
-       rdtsc(pstamp->tv_usec, pstamp->tv_sec);
-}
-
-static inline void  net_profile_accumulate(struct timeval *entered,
-                                              struct timeval *leaved,
-                                              struct timeval *acc)
-{
-       __asm__ __volatile__ ("subl %2,%0\n\t" 
-                             "sbbl %3,%1\n\t" 
-                             "addl %4,%0\n\t" 
-                             "adcl %5,%1\n\t" 
-                             "subl net_profile_adjust+4,%0\n\t" 
-                             "sbbl $0,%1\n\t" 
-                             : "=r" (acc->tv_usec), "=r" (acc->tv_sec)
-                             : "g" (entered->tv_usec), "g" (entered->tv_sec),
-                             "g" (leaved->tv_usec), "g" (leaved->tv_sec),
-                             "0" (acc->tv_usec), "1" (acc->tv_sec));
-}
-
-static inline void  net_profile_sub(struct timeval *sub,
-                                       struct timeval *acc)
-{
-       __asm__ __volatile__ ("subl %2,%0\n\t" 
-                             "sbbl %3,%1\n\t" 
-                             : "=r" (acc->tv_usec), "=r" (acc->tv_sec)
-                             : "g" (sub->tv_usec), "g" (sub->tv_sec),
-                             "0" (acc->tv_usec), "1" (acc->tv_sec));
-}
-
-static inline void  net_profile_add(struct timeval *add,
-                                       struct timeval *acc)
-{
-       __asm__ __volatile__ ("addl %2,%0\n\t" 
-                             "adcl %3,%1\n\t" 
-                             : "=r" (acc->tv_usec), "=r" (acc->tv_sec)
-                             : "g" (add->tv_usec), "g" (add->tv_sec),
-                             "0" (acc->tv_usec), "1" (acc->tv_sec));
-}
-
-
-#elif defined (__alpha__)
-
-extern __u32 alpha_lo;
-extern long alpha_hi;
-
-/* On alpha cycle counter has only 32 bits :-( :-( */
-
-static inline void  net_profile_stamp(struct timeval *pstamp)
-{
-       __u32 result;
-       __asm__ __volatile__ ("rpcc %0" : "r="(result));
-       if (result <= alpha_lo)
-               alpha_hi++;
-       alpha_lo = result;
-       pstamp->tv_sec = alpha_hi;
-       pstamp->tv_usec = alpha_lo;
-}
-
-static inline void  net_profile_accumulate(struct timeval *entered,
-                                              struct timeval *leaved,
-                                              struct timeval *acc)
-{
-       time_t usecs = acc->tv_usec + leaved->tv_usec - entered->tv_usec
-               - net_profile_adjust.tv_usec;
-       time_t secs = acc->tv_sec + leaved->tv_sec - entered->tv_sec;
-
-       if (usecs >= 0x100000000L) {
-               usecs -= 0x100000000L;
-               secs++;
-       } else if (usecs < -0x100000000L) {
-               usecs += 0x200000000L;
-               secs -= 2;
-       } else if (usecs < 0) {
-               usecs += 0x100000000L;
-               secs--;
-       }
-       acc->tv_sec = secs;
-       acc->tv_usec = usecs;
-}
-
-static inline void  net_profile_sub(struct timeval *entered,
-                                       struct timeval *leaved)
-{
-       time_t usecs = leaved->tv_usec - entered->tv_usec;
-       time_t secs = leaved->tv_sec - entered->tv_sec;
-
-       if (usecs < 0) {
-               usecs += 0x100000000L;
-               secs--;
-       }
-       leaved->tv_sec = secs;
-       leaved->tv_usec = usecs;
-}
-
-static inline void  net_profile_add(struct timeval *entered, struct timeval *leaved)
-{
-       time_t usecs = leaved->tv_usec + entered->tv_usec;
-       time_t secs = leaved->tv_sec + entered->tv_sec;
-
-       if (usecs >= 0x100000000L) {
-               usecs -= 0x100000000L;
-               secs++;
-       }
-       leaved->tv_sec = secs;
-       leaved->tv_usec = usecs;
-}
-
-
-#else
-
-static inline void  net_profile_stamp(struct timeval *pstamp)
-{
-       /* Not "fast" counterpart! On architectures without
-          cpu clock "fast" routine is absolutely useless in this
-          situation. do_gettimeofday still says something on slow-slow-slow
-          boxes, though it eats more cpu time than the subject of
-          investigation :-) :-)
-        */
-       do_gettimeofday(pstamp);
-}
-
-static inline void  net_profile_accumulate(struct timeval *entered,
-                                              struct timeval *leaved,
-                                              struct timeval *acc)
-{
-       time_t usecs = acc->tv_usec + leaved->tv_usec - entered->tv_usec
-               - net_profile_adjust.tv_usec;
-       time_t secs = acc->tv_sec + leaved->tv_sec - entered->tv_sec;
-
-       if (usecs >= 1000000) {
-               usecs -= 1000000;
-               secs++;
-       } else if (usecs < -1000000) {
-               usecs += 2000000;
-               secs -= 2;
-       } else if (usecs < 0) {
-               usecs += 1000000;
-               secs--;
-       }
-       acc->tv_sec = secs;
-       acc->tv_usec = usecs;
-}
-
-static inline void  net_profile_sub(struct timeval *entered,
-                                       struct timeval *leaved)
-{
-       time_t usecs = leaved->tv_usec - entered->tv_usec;
-       time_t secs = leaved->tv_sec - entered->tv_sec;
-
-       if (usecs < 0) {
-               usecs += 1000000;
-               secs--;
-       }
-       leaved->tv_sec = secs;
-       leaved->tv_usec = usecs;
-}
-
-static inline void  net_profile_add(struct timeval *entered, struct timeval *leaved)
-{
-       time_t usecs = leaved->tv_usec + entered->tv_usec;
-       time_t secs = leaved->tv_sec + entered->tv_sec;
-
-       if (usecs >= 1000000) {
-               usecs -= 1000000;
-               secs++;
-       }
-       leaved->tv_sec = secs;
-       leaved->tv_usec = usecs;
-}
-
-
-
-#endif
-
-static inline void net_profile_enter(struct net_profile_slot *s)
-{
-       unsigned long flags;
-
-       save_flags(flags);
-       cli();
-       if (s->active++ == 0) {
-               net_profile_stamp(&s->entered);
-               atomic_inc(&net_profile_active);
-       }
-       restore_flags(flags);
-}
-
-static inline void net_profile_leave_irq(struct net_profile_slot *s)
-{
-       unsigned long flags;
-
-       save_flags(flags);
-       cli();
-       if (--s->active <= 0) {
-               if (s->active == 0) {
-                       struct timeval curr_pstamp;
-                       net_profile_stamp(&curr_pstamp);
-                       net_profile_accumulate(&s->entered, &curr_pstamp, &s->accumulator);
-                       if (!atomic_dec_and_test(&net_profile_active))
-                               net_profile_irq_adjust(&s->entered, &curr_pstamp);
-               } else {
-                       s->underflow++;
-               }
-       }
-       s->hits++;
-       restore_flags(flags);
-}
-
-static inline void net_profile_leave(struct net_profile_slot *s)
-{
-       unsigned long flags;
-       save_flags(flags);
-       cli();
-       if (--s->active <= 0) {
-               if (s->active == 0) {
-                       struct timeval curr_pstamp;
-                       net_profile_stamp(&curr_pstamp);
-                       net_profile_accumulate(&s->entered, &curr_pstamp, &s->accumulator);
-                       atomic_dec(&net_profile_active);
-               } else {
-                       s->underflow++;
-               }
-       }
-       s->hits++;
-       restore_flags(flags);
-}
-
-
-#define NET_PROFILE_ENTER(slot) net_profile_enter(&net_prof_##slot)
-#define NET_PROFILE_LEAVE(slot) net_profile_leave(&net_prof_##slot)
-#define NET_PROFILE_LEAVE_IRQ(slot) net_profile_leave_irq(&net_prof_##slot)
-
-#define NET_PROFILE_SKB_CLEAR(skb) ({ \
- skb->pstamp.tv_usec = 0; \
-})
-
-#define NET_PROFILE_SKB_INIT(skb) ({ \
- net_profile_stamp(&skb->pstamp); \
-})
-
-#define NET_PROFILE_SKB_PASSED(skb, slot) ({ \
- if (skb->pstamp.tv_usec) { \
-   struct timeval cur_pstamp = skb->pstamp; \
-   net_profile_stamp(&skb->pstamp); \
-   net_profile_accumulate(&cur_pstamp, &skb->pstamp, &net_prof_##slot.accumulator); \
-   net_prof_##slot.hits++; \
- }})
-
-#define NET_PROFILE_DECL(slot) \
-  extern struct net_profile_slot net_prof_##slot;
-
-#define NET_PROFILE_DEFINE(slot) \
-  struct net_profile_slot net_prof_##slot = { #slot, };
-
-#define NET_PROFILE_REGISTER(slot) net_profile_register(&net_prof_##slot)
-#define NET_PROFILE_UNREGISTER(slot) net_profile_unregister(&net_prof_##slot)
-
-extern int net_profile_init(void);
-extern int net_profile_register(struct net_profile_slot *);
-extern int net_profile_unregister(struct net_profile_slot *);
-
-#else
-
-#define NET_PROFILE_ENTER(slot) do { /* nothing */ } while(0)
-#define NET_PROFILE_LEAVE(slot) do { /* nothing */ } while(0)
-#define NET_PROFILE_LEAVE_IRQ(slot) do { /* nothing */ } while(0)
-#define NET_PROFILE_SKB_CLEAR(skb) do { /* nothing */ } while(0)
-#define NET_PROFILE_SKB_INIT(skb) do { /* nothing */ } while(0)
-#define NET_PROFILE_SKB_PASSED(skb, slot) do { /* nothing */ } while(0)
-#define NET_PROFILE_DECL(slot)
-#define NET_PROFILE_DEFINE(slot)
-#define NET_PROFILE_REGISTER(slot) do { /* nothing */ } while(0)
-#define NET_PROFILE_UNREGISTER(slot) do { /* nothing */ } while(0)
-
-#endif
-
-#endif
index 4c3474604a0c7584ef90c932955e6b3fce04c48b..7d76574a9cc32d9646c29459f072cc656f66ac82 100644 (file)
@@ -676,7 +676,6 @@ config NET_SCHED
 
 source "net/sched/Kconfig"
 
-#bool 'Network code profiler' CONFIG_NET_PROFILE
 endmenu
 
 menu "Network testing"
index 28ec942019e8bd8dbf0b10b538669ec0bfda97e8..22e715cbdeb2026e49c45a39962707d8d2dfd679 100644 (file)
@@ -11,6 +11,5 @@ obj-y              += flow.o dev.o ethtool.o net-sysfs.o dev_mcast.o dst.o \
 
 obj-$(CONFIG_NETFILTER) += netfilter.o
 obj-$(CONFIG_NET_DIVERT) += dv.o
-obj-$(CONFIG_NET_PROFILE) += profile.o
 obj-$(CONFIG_NET_PKTGEN) += pktgen.o
 obj-$(CONFIG_NET_RADIO) += wireless.o
index 8a598f7f300cc8b7ee7c63f243f97d6c7eb1ce96..2cf887cee6d7a4e41079407bd942ef89677bb47a 100644 (file)
@@ -99,7 +99,6 @@
 #include <linux/divert.h>
 #include <net/dst.h>
 #include <net/pkt_sched.h>
-#include <net/profile.h>
 #include <net/checksum.h>
 #include <linux/highmem.h>
 #include <linux/init.h>
@@ -128,9 +127,6 @@ extern int plip_init(void);
  */
 #undef OFFLINE_SAMPLE
 
-NET_PROFILE_DEFINE(dev_queue_xmit)
-NET_PROFILE_DEFINE(softnet_process)
-
 /*
  *     The list of packet types we will receive (as opposed to discard)
  *     and the routines to invoke.
@@ -3015,12 +3011,6 @@ static int __init net_dev_init(void)
                atomic_set(&queue->backlog_dev.refcnt, 1);
        }
 
-#ifdef CONFIG_NET_PROFILE
-       net_profile_init();
-       NET_PROFILE_REGISTER(dev_queue_xmit);
-       NET_PROFILE_REGISTER(softnet_process);
-#endif
-
 #ifdef OFFLINE_SAMPLE
        samp_timer.expires = jiffies + (10 * HZ);
        add_timer(&samp_timer);
diff --git a/net/core/profile.c b/net/core/profile.c
deleted file mode 100644 (file)
index 0caedda..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-#include <linux/config.h>
-#include <linux/types.h>
-#include <linux/kernel.h>
-#include <linux/jiffies.h>
-#include <linux/mm.h>
-#include <linux/interrupt.h>
-#include <linux/netdevice.h>
-#include <linux/string.h>
-#include <linux/skbuff.h>
-#include <linux/proc_fs.h>
-#include <linux/init.h>
-#include <linux/ip.h>
-#include <linux/inet.h>
-#include <net/checksum.h>
-
-#include <asm/processor.h>
-#include <asm/uaccess.h>
-#include <asm/system.h>
-
-#include <net/profile.h>
-
-#ifdef CONFIG_NET_PROFILE
-
-atomic_t net_profile_active;
-struct timeval net_profile_adjust;
-
-NET_PROFILE_DEFINE(total);
-
-struct net_profile_slot *net_profile_chain = &net_prof_total;
-
-#ifdef __alpha__
-__u32 alpha_lo;
-long alpha_hi;
-
-static void alpha_tick(unsigned long);
-
-static struct timer_list alpha_timer = TIMER_INITIALIZER(alpha_tick, 0, 0);
-
-void alpha_tick(unsigned long dummy)
-{
-       struct timeval dummy_stamp;
-       net_profile_stamp(&dummy_stamp);
-       alpha_timer.expires = jiffies + 4*HZ;
-       add_timer(&alpha_timer);
-}
-
-#endif
-
-void net_profile_irq_adjust(struct timeval *entered, struct timeval* leaved)
-{
-       struct net_profile_slot *s;
-
-       net_profile_sub(entered, leaved);
-       for (s = net_profile_chain; s; s = s->next) {
-               if (s->active)
-                       net_profile_add(leaved, &s->irq);
-       }
-}
-
-
-#ifdef CONFIG_PROC_FS
-static int profile_read_proc(char *buffer, char **start, off_t offset,
-                            int length, int *eof, void *data)
-{
-       off_t pos=0;
-       off_t begin=0;
-       int len=0;
-       struct net_profile_slot *s;
-
-       len+= sprintf(buffer, "Slot            Hits       Hi         Lo         OnIrqHi    OnIrqLo    Ufl\n");
-
-       if (offset == 0) {
-               cli();
-               net_prof_total.active = 1;
-               atomic_inc(&net_profile_active);
-               NET_PROFILE_LEAVE(total);
-               sti();
-       }
-       for (s = net_profile_chain; s; s = s->next) {
-               struct net_profile_slot tmp;
-
-               cli();
-               tmp = *s;
-
-               /* Wrong, but pretty close to truth */
-
-               s->accumulator.tv_sec = 0;
-               s->accumulator.tv_usec = 0;
-               s->irq.tv_sec = 0;
-               s->irq.tv_usec = 0;
-               s->hits = 0;
-               s->underflow = 0;
-               /* Repair active count, it is possible, only if code has a bug */
-               if (s->active) {
-                       s->active = 0;
-                       atomic_dec(&net_profile_active);
-               }
-               sti();
-
-               net_profile_sub(&tmp.irq, &tmp.accumulator);
-
-               len += sprintf(buffer+len,"%-15s %-10d %-10ld %-10lu %-10lu %-10lu %d/%d",
-                              tmp.id,
-                              tmp.hits,
-                              tmp.accumulator.tv_sec,
-                              tmp.accumulator.tv_usec,
-                              tmp.irq.tv_sec,
-                              tmp.irq.tv_usec,
-                              tmp.underflow, tmp.active);
-
-                       buffer[len++]='\n';
-               
-                       pos=begin+len;
-                       if(pos<offset) {
-                               len=0;
-                               begin=pos;
-                       }
-                       if(pos>offset+length)
-                               goto done;
-       }
-       *eof = 1;
-
-done:
-       *start=buffer+(offset-begin);
-       len-=(offset-begin);
-       if(len>length)
-               len=length;
-       if (len < 0)
-               len = 0;
-       if (offset == 0) {
-               cli();
-               net_prof_total.active = 0;
-               net_prof_total.hits = 0;
-               net_profile_stamp(&net_prof_total.entered);
-               sti();
-       }
-       return len;
-}
-#endif
-
-struct iphdr whitehole_iph;
-int whitehole_count;
-
-static int whitehole_xmit(struct sk_buff *skb, struct net_device *dev)
-{
-       struct net_device_stats *stats;
-
-       stats = (struct net_device_stats *)dev->priv;
-       stats->tx_packets++;
-       stats->tx_bytes+=skb->len;
-
-       dev_kfree_skb(skb);
-       return 0;
-}
-
-static void whitehole_inject(unsigned long);
-int whitehole_init(struct net_device *dev);
-
-static struct timer_list whitehole_timer =
-               TIMER_INITIALIZER(whitehole_inject, 0, 0);
-
-static struct net_device whitehole_dev = {
-       .name   = "whitehole",
-       .init   = whitehole_init,
-};
-
-static int whitehole_open(struct net_device *dev)
-{
-       whitehole_count = 100000;
-       whitehole_timer.expires = jiffies + 5*HZ;
-       add_timer(&whitehole_timer);
-       return 0;
-}
-
-static int whitehole_close(struct net_device *dev)
-{
-       del_timer(&whitehole_timer);
-       return 0;
-}
-
-static void whitehole_inject(unsigned long dummy)
-{
-       struct net_device_stats *stats = (struct net_device_stats *)whitehole_dev.priv;
-       extern int netdev_dropping;
-
-       do {
-               struct iphdr *iph;
-               struct sk_buff *skb = alloc_skb(128, GFP_ATOMIC);
-               if (!skb)
-                       break;
-               skb_reserve(skb, 32);
-               iph = (struct iphdr*)skb_put(skb, sizeof(*iph));
-               skb->mac.raw = ((u8*)iph) - 14;
-               memcpy(iph, &whitehole_iph, sizeof(*iph));
-               skb->protocol = __constant_htons(ETH_P_IP);
-               skb->dev = &whitehole_dev;
-               skb->pkt_type = PACKET_HOST;
-               stats->rx_packets++;
-               stats->rx_bytes += skb->len;
-               netif_rx(skb);
-               whitehole_count--;
-       } while (netdev_dropping == 0 && whitehole_count>0);
-       if (whitehole_count > 0) {
-               whitehole_timer.expires = jiffies + 1;
-               add_timer(&whitehole_timer);
-       }
-}
-
-static struct net_device_stats *whitehole_get_stats(struct net_device *dev)
-{
-       struct net_device_stats *stats = (struct net_device_stats *) dev->priv;
-       return stats;
-}
-
-int __init whitehole_init(struct net_device *dev)
-{
-       dev->priv = kmalloc(sizeof(struct net_device_stats), GFP_KERNEL);
-       if (dev->priv == NULL)
-               return -ENOBUFS;
-       memset(dev->priv, 0, sizeof(struct net_device_stats));
-       dev->get_stats  = whitehole_get_stats;
-       dev->hard_start_xmit = whitehole_xmit;
-       dev->open = whitehole_open;
-       dev->stop = whitehole_close;
-       ether_setup(dev);
-       dev->tx_queue_len = 0;
-       dev->flags |= IFF_NOARP;
-       dev->flags &= ~(IFF_BROADCAST|IFF_MULTICAST);
-       dev->iflink = 0;
-       whitehole_iph.ihl = 5;
-       whitehole_iph.version = 4;
-       whitehole_iph.ttl = 2;
-       whitehole_iph.saddr = in_aton("193.233.7.21");
-       whitehole_iph.daddr = in_aton("193.233.7.10");
-       whitehole_iph.tot_len = htons(20);
-       whitehole_iph.check = ip_compute_csum((void *)&whitehole_iph, 20);
-       return 0;
-}
-
-int net_profile_register(struct net_profile_slot *slot)
-{
-       cli();
-       slot->next = net_profile_chain;
-       net_profile_chain = slot;
-       sti();
-       return 0;
-}
-
-int net_profile_unregister(struct net_profile_slot *slot)
-{
-       struct net_profile_slot **sp, *s;
-
-       for (sp = &net_profile_chain; (s = *sp) != NULL; sp = &s->next) {
-               if (s == slot) {
-                       cli();
-                       *sp = s->next;
-                       sti();
-                       return 0;
-               }
-       }
-       return -ESRCH;
-}
-
-
-int __init net_profile_init(void)
-{
-       int i;
-
-#ifdef CONFIG_PROC_FS
-       create_proc_read_entry("net/profile", 0, 0, profile_read_proc, NULL);
-#endif
-
-       register_netdevice(&whitehole_dev);
-
-       printk("Evaluating net profiler cost ...");
-#ifdef __alpha__
-       alpha_tick(0);
-#endif
-       for (i=0; i<1024; i++) {
-               NET_PROFILE_ENTER(total);
-               NET_PROFILE_LEAVE(total);
-       }
-       if (net_prof_total.accumulator.tv_sec) {
-               printk(" too high!\n");
-       } else {
-               net_profile_adjust.tv_usec = net_prof_total.accumulator.tv_usec>>10;
-               printk("%ld units\n", net_profile_adjust.tv_usec);
-       }
-       net_prof_total.hits = 0;
-       net_profile_stamp(&net_prof_total.entered);
-       return 0;
-}
-
-#endif