netdev
[Top] [All Lists]

Constant errors with pktgen

To: cliff white <cliffw@xxxxxxxx>
Subject: Constant errors with pktgen
From: Robert Olsson <Robert.Olsson@xxxxxxxxxxx>
Date: Tue, 15 Mar 2005 16:39:18 +0100
Cc: Robert.Olsson@xxxxxxxxxxx, netdev@xxxxxxxxxxx
In-reply-to: <20050314133404.2528647f@es175>
References: <20050314133404.2528647f@es175>
Sender: netdev-bounce@xxxxxxxxxxx
cliff white writes:

 > My test rig is two machines with an e100 card, connected by crossover 
 > cable.
 > 
 > When i run pktgen, the error counter == packet count, always. 

 I see. Try the patch patch below it cleans up the code a bit and
 restores the old meaning of error. It also has the minor fix from 
 Adrian Bunk

                                                --ro

--- net/core/pktgen.c.050315    2005-03-11 10:48:43.000000000 +0100
+++ net/core/pktgen.c   2005-03-15 16:16:01.000000000 +0100
@@ -151,7 +151,7 @@
 #include <asm/timex.h>
 
 
-#define VERSION  "pktgen v2.60: Packet Generator for packet performance 
testing.\n"
+#define VERSION  "pktgen v2.61: Packet Generator for packet performance 
testing.\n"
 
 /* #define PG_DEBUG(a) a */
 #define PG_DEBUG(a) 
@@ -2590,7 +2590,7 @@
         thread_unlock();
 }
 
-__inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev)
+static __inline__ void pktgen_xmit(struct pktgen_dev *pkt_dev)
 {
        struct net_device *odev = NULL;
        __u64 idle_start = 0;
@@ -2654,7 +2654,6 @@
        
        spin_lock_bh(&odev->xmit_lock);
        if (!netif_queue_stopped(odev)) {
-               u64 now;
 
                atomic_inc(&(pkt_dev->skb->users));
 retry_now:
@@ -2678,24 +2677,18 @@
                        
                        pkt_dev->errors++;
                        pkt_dev->last_ok = 0;
-                       pkt_dev->next_tx_us = getCurUs(); /* TODO */
-                       pkt_dev->next_tx_ns = 0;
                }
 
+               pkt_dev->next_tx_us = getCurUs();
+               pkt_dev->next_tx_ns = 0;
+
                pkt_dev->next_tx_us += pkt_dev->delay_us;
                pkt_dev->next_tx_ns += pkt_dev->delay_ns;
+
                if (pkt_dev->next_tx_ns > 1000) {
                        pkt_dev->next_tx_us++;
                        pkt_dev->next_tx_ns -= 1000;
                }
-
-               now = getCurUs();
-               if (now > pkt_dev->next_tx_us) {
-                       /* TODO: this code is slightly wonky.  */
-                       pkt_dev->errors++;
-                       pkt_dev->next_tx_us = now - pkt_dev->delay_us;
-                       pkt_dev->next_tx_ns = 0;
-               }
        } 
 
        else {  /* Retry it next time */

<Prev in Thread] Current Thread [Next in Thread>