Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7ad75b7 authored by Stephen Hemminger's avatar Stephen Hemminger Committed by David S. Miller
Browse files

hv_netvsc: count multicast packets received



Useful for debugging issues with multicast and SR-IOV to keep track
of number of received multicast packets.

Signed-off-by: default avatarStephen Hemminger <sthemmin@microsoft.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 9cbcc428
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -649,6 +649,8 @@ struct multi_recv_comp {
struct netvsc_stats {
	u64 packets;
	u64 bytes;
	u64 broadcast;
	u64 multicast;
	struct u64_stats_sync syncp;
};

+8 −1
Original line number Diff line number Diff line
@@ -705,6 +705,11 @@ int netvsc_recv_callback(struct hv_device *device_obj,
	u64_stats_update_begin(&rx_stats->syncp);
	rx_stats->packets++;
	rx_stats->bytes += packet->total_data_buflen;

	if (skb->pkt_type == PACKET_BROADCAST)
		++rx_stats->broadcast;
	else if (skb->pkt_type == PACKET_MULTICAST)
		++rx_stats->multicast;
	u64_stats_update_end(&rx_stats->syncp);

	/*
@@ -947,7 +952,7 @@ static struct rtnl_link_stats64 *netvsc_get_stats64(struct net_device *net,
							    cpu);
		struct netvsc_stats *rx_stats = per_cpu_ptr(ndev_ctx->rx_stats,
							    cpu);
		u64 tx_packets, tx_bytes, rx_packets, rx_bytes;
		u64 tx_packets, tx_bytes, rx_packets, rx_bytes, rx_multicast;
		unsigned int start;

		do {
@@ -960,12 +965,14 @@ static struct rtnl_link_stats64 *netvsc_get_stats64(struct net_device *net,
			start = u64_stats_fetch_begin_irq(&rx_stats->syncp);
			rx_packets = rx_stats->packets;
			rx_bytes = rx_stats->bytes;
			rx_multicast = rx_stats->multicast + rx_stats->broadcast;
		} while (u64_stats_fetch_retry_irq(&rx_stats->syncp, start));

		t->tx_bytes	+= tx_bytes;
		t->tx_packets	+= tx_packets;
		t->rx_bytes	+= rx_bytes;
		t->rx_packets	+= rx_packets;
		t->multicast	+= rx_multicast;
	}

	t->tx_dropped	= net->stats.tx_dropped;