pktgen: tx_bytes might be slightly wrong
authorEric Dumazet <eric.dumazet@gmail.com>
Fri, 6 Nov 2009 05:04:32 +0000 (21:04 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 6 Nov 2009 06:34:27 +0000 (22:34 -0800)
cur_pkt_size can be changed in proc fs while pktgen is running,
we better use a private field to get precise tx-bytes counter.

Signed-off-by: Ben Greear <greearb@candelatech.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/pktgen.c

index 5ce017bf4afad5f43842384a7efb803620bde573..d38470a32792737b5dbeabaa3ec10d250cca0a82 100644 (file)
@@ -340,6 +340,7 @@ struct pktgen_dev {
        __u16 cur_udp_src;
        __u16 cur_queue_map;
        __u32 cur_pkt_size;
+       __u32 last_pkt_size;
 
        __u8 hh[14];
        /* = {
@@ -3434,7 +3435,7 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
                        pkt_dev->clone_count--; /* back out increment, OOM */
                        return;
                }
-
+               pkt_dev->last_pkt_size = pkt_dev->skb->len;
                pkt_dev->allocated_skbs++;
                pkt_dev->clone_count = 0;       /* reset counter */
        }
@@ -3461,7 +3462,7 @@ static void pktgen_xmit(struct pktgen_dev *pkt_dev)
                pkt_dev->last_ok = 1;
                pkt_dev->sofar++;
                pkt_dev->seq_num++;
-               pkt_dev->tx_bytes += pkt_dev->cur_pkt_size;
+               pkt_dev->tx_bytes += pkt_dev->last_pkt_size;
                break;
        default: /* Drivers are not supposed to return other values! */
                if (net_ratelimit())