search for: u64_stats_fetch_begin

Displaying 10 results from an estimated 10 matches for "u64_stats_fetch_begin".

2012 Jun 06
9
[PATCH] virtio-net: fix a race on 32bit arches
...;stats->syncp); + u64_stats_update_end(&stats->tx_syncp); tot_sgs += skb_vnet_hdr(skb)->num_sg; dev_kfree_skb_any(skb); @@ -703,12 +704,16 @@ static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev, u64 tpackets, tbytes, rpackets, rbytes; do { - start = u64_stats_fetch_begin(&stats->syncp); + start = u64_stats_fetch_begin(&stats->tx_syncp); tpackets = stats->tx_packets; tbytes = stats->tx_bytes; + } while (u64_stats_fetch_retry(&stats->tx_syncp, start)); + + do { + start = u64_stats_fetch_begin(&stats->rx_syncp); rp...
2012 Jun 06
9
[PATCH] virtio-net: fix a race on 32bit arches
...;stats->syncp); + u64_stats_update_end(&stats->tx_syncp); tot_sgs += skb_vnet_hdr(skb)->num_sg; dev_kfree_skb_any(skb); @@ -703,12 +704,16 @@ static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev, u64 tpackets, tbytes, rpackets, rbytes; do { - start = u64_stats_fetch_begin(&stats->syncp); + start = u64_stats_fetch_begin(&stats->tx_syncp); tpackets = stats->tx_packets; tbytes = stats->tx_bytes; + } while (u64_stats_fetch_retry(&stats->tx_syncp, start)); + + do { + start = u64_stats_fetch_begin(&stats->rx_syncp); rp...
2012 Jun 06
2
[V2 RFC net-next PATCH 1/2] virtio_net: convert the statistics into array
...stats->data[VIRTNET_TX_BYTES] += skb->len; + stats->data[VIRTNET_TX_PACKETS]++; u64_stats_update_end(&stats->syncp); tot_sgs += skb_vnet_hdr(skb)->num_sg; @@ -704,10 +708,10 @@ static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev, do { start = u64_stats_fetch_begin(&stats->syncp); - tpackets = stats->tx_packets; - tbytes = stats->tx_bytes; - rpackets = stats->rx_packets; - rbytes = stats->rx_bytes; + tpackets = stats->data[VIRTNET_TX_PACKETS]; + tbytes = stats->data[VIRTNET_TX_BYTES]; + rpackets = stats->data[VI...
2012 Jun 06
2
[V2 RFC net-next PATCH 1/2] virtio_net: convert the statistics into array
...stats->data[VIRTNET_TX_BYTES] += skb->len; + stats->data[VIRTNET_TX_PACKETS]++; u64_stats_update_end(&stats->syncp); tot_sgs += skb_vnet_hdr(skb)->num_sg; @@ -704,10 +708,10 @@ static struct rtnl_link_stats64 *virtnet_stats(struct net_device *dev, do { start = u64_stats_fetch_begin(&stats->syncp); - tpackets = stats->tx_packets; - tbytes = stats->tx_bytes; - rpackets = stats->rx_packets; - rbytes = stats->rx_bytes; + tpackets = stats->data[VIRTNET_TX_PACKETS]; + tbytes = stats->data[VIRTNET_TX_BYTES]; + rpackets = stats->data[VI...
2011 Jun 15
3
[PATCH] virtio-net: per cpu 64 bit stats
...struct rtnl_link_stats64 *tot) +{ + struct virtnet_info *vi = netdev_priv(dev); + int cpu; + unsigned int start; + + for_each_possible_cpu(cpu) { + struct virtnet_stats __percpu *stats + = per_cpu_ptr(vi->stats, cpu); + u64 tpackets, tbytes, rpackets, rbytes; + + do { + start = u64_stats_fetch_begin(&stats->syncp); + tpackets = stats->tx_packets; + tbytes = stats->tx_bytes; + rpackets = stats->rx_packets; + rbytes = stats->rx_bytes; + } while (u64_stats_fetch_retry(&stats->syncp, start)); + + tot->rx_packets += rpackets; + tot->tx_packets += tpack...
2011 Jun 15
3
[PATCH] virtio-net: per cpu 64 bit stats
...struct rtnl_link_stats64 *tot) +{ + struct virtnet_info *vi = netdev_priv(dev); + int cpu; + unsigned int start; + + for_each_possible_cpu(cpu) { + struct virtnet_stats __percpu *stats + = per_cpu_ptr(vi->stats, cpu); + u64 tpackets, tbytes, rpackets, rbytes; + + do { + start = u64_stats_fetch_begin(&stats->syncp); + tpackets = stats->tx_packets; + tbytes = stats->tx_bytes; + rpackets = stats->rx_packets; + rbytes = stats->rx_bytes; + } while (u64_stats_fetch_retry(&stats->syncp, start)); + + tot->rx_packets += rpackets; + tot->tx_packets += tpack...
2012 Jun 05
1
[net-next RFC PATCH] virtio_net: collect satistics and export through ethtool
...*vi = netdev_priv(dev); + int cpu, i; + unsigned int start; + struct virtnet_stats sample, total; + + memset(&total, 0, sizeof(total)); + memset(&sample, 0, sizeof(sample)); + + for_each_possible_cpu(cpu) { + struct virtnet_stats *stats = per_cpu_ptr(vi->stats, cpu); + do { + start = u64_stats_fetch_begin(&stats->syncp); + for (i = 0; i < VIRTNET_NUM_STATS; i++) { + VIRTNET_STAT(&sample, i) = + VIRTNET_STAT(stats, i); + + } + } while (u64_stats_fetch_retry(&stats->syncp, start)); + for (i = 0; i < VIRTNET_NUM_STATS; i++) { + *buf = VIRTNET_STAT(&sample, i);...
2012 Jun 05
1
[net-next RFC PATCH] virtio_net: collect satistics and export through ethtool
...*vi = netdev_priv(dev); + int cpu, i; + unsigned int start; + struct virtnet_stats sample, total; + + memset(&total, 0, sizeof(total)); + memset(&sample, 0, sizeof(sample)); + + for_each_possible_cpu(cpu) { + struct virtnet_stats *stats = per_cpu_ptr(vi->stats, cpu); + do { + start = u64_stats_fetch_begin(&stats->syncp); + for (i = 0; i < VIRTNET_NUM_STATS; i++) { + VIRTNET_STAT(&sample, i) = + VIRTNET_STAT(stats, i); + + } + } while (u64_stats_fetch_retry(&stats->syncp, start)); + for (i = 0; i < VIRTNET_NUM_STATS; i++) { + *buf = VIRTNET_STAT(&sample, i);...
2011 Nov 11
10
[RFC] [ver3 PATCH 0/6] Implement multiqueue virtio-net
This patch series resurrects the earlier multiple TX/RX queues functionality for virtio_net, and addresses the issues pointed out. It also includes an API to share irq's, f.e. amongst the TX vqs. I plan to run TCP/UDP STREAM and RR tests for local->host and local->remote, and send the results in the next couple of days. patch #1: Introduce VIRTIO_NET_F_MULTIQUEUE patch #2: Move
2011 Nov 11
10
[RFC] [ver3 PATCH 0/6] Implement multiqueue virtio-net
This patch series resurrects the earlier multiple TX/RX queues functionality for virtio_net, and addresses the issues pointed out. It also includes an API to share irq's, f.e. amongst the TX vqs. I plan to run TCP/UDP STREAM and RR tests for local->host and local->remote, and send the results in the next couple of days. patch #1: Introduce VIRTIO_NET_F_MULTIQUEUE patch #2: Move