diff options
author | Eric Dumazet <eric.dumazet@gmail.com> | 2009-11-05 21:04:32 -0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-11-05 22:34:27 -0800 |
commit | baac8564547ac7f944af1c2e8cc6fdd57f2836a4 (patch) | |
tree | 3e8054248800b2da155dcc039270e7ca75db177c /net | |
parent | bf8e56bfc4fcfcef9f08e6233dc619706807893a (diff) | |
download | op-kernel-dev-baac8564547ac7f944af1c2e8cc6fdd57f2836a4.zip op-kernel-dev-baac8564547ac7f944af1c2e8cc6fdd57f2836a4.tar.gz |
pktgen: tx_bytes might be slightly wrong
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>
Diffstat (limited to 'net')
-rw-r--r-- | net/core/pktgen.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/net/core/pktgen.c b/net/core/pktgen.c index 5ce017b..d38470a 100644 --- a/net/core/pktgen.c +++ b/net/core/pktgen.c @@ -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()) |