|
@@ -754,7 +754,6 @@ struct rtl8169_tc_offsets {
|
|
|
bool inited;
|
|
|
__le64 tx_errors;
|
|
|
__le32 tx_multi_collision;
|
|
|
- __le32 rx_multicast;
|
|
|
__le16 tx_aborted;
|
|
|
};
|
|
|
|
|
@@ -2326,7 +2325,6 @@ static bool rtl8169_init_counter_offsets(struct net_device *dev)
|
|
|
|
|
|
tp->tc_offset.tx_errors = tp->counters.tx_errors;
|
|
|
tp->tc_offset.tx_multi_collision = tp->counters.tx_multi_collision;
|
|
|
- tp->tc_offset.rx_multicast = tp->counters.rx_multicast;
|
|
|
tp->tc_offset.tx_aborted = tp->counters.tx_aborted;
|
|
|
tp->tc_offset.inited = true;
|
|
|
|
|
@@ -7480,6 +7478,9 @@ process_pkt:
|
|
|
tp->rx_stats.packets++;
|
|
|
tp->rx_stats.bytes += pkt_size;
|
|
|
u64_stats_update_end(&tp->rx_stats.syncp);
|
|
|
+
|
|
|
+ if (skb->pkt_type == PACKET_MULTICAST)
|
|
|
+ dev->stats.multicast++;
|
|
|
}
|
|
|
release_descriptor:
|
|
|
desc->opts2 = 0;
|
|
@@ -7790,7 +7791,6 @@ rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
|
|
|
stats->rx_bytes = tp->rx_stats.bytes;
|
|
|
} while (u64_stats_fetch_retry_irq(&tp->rx_stats.syncp, start));
|
|
|
|
|
|
-
|
|
|
do {
|
|
|
start = u64_stats_fetch_begin_irq(&tp->tx_stats.syncp);
|
|
|
stats->tx_packets = tp->tx_stats.packets;
|
|
@@ -7804,6 +7804,7 @@ rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
|
|
|
stats->rx_crc_errors = dev->stats.rx_crc_errors;
|
|
|
stats->rx_fifo_errors = dev->stats.rx_fifo_errors;
|
|
|
stats->rx_missed_errors = dev->stats.rx_missed_errors;
|
|
|
+ stats->multicast = dev->stats.multicast;
|
|
|
|
|
|
/*
|
|
|
* Fetch additonal counter values missing in stats collected by driver
|
|
@@ -7819,8 +7820,6 @@ rtl8169_get_stats64(struct net_device *dev, struct rtnl_link_stats64 *stats)
|
|
|
le64_to_cpu(tp->tc_offset.tx_errors);
|
|
|
stats->collisions = le32_to_cpu(tp->counters.tx_multi_collision) -
|
|
|
le32_to_cpu(tp->tc_offset.tx_multi_collision);
|
|
|
- stats->multicast = le32_to_cpu(tp->counters.rx_multicast) -
|
|
|
- le32_to_cpu(tp->tc_offset.rx_multicast);
|
|
|
stats->tx_aborted_errors = le16_to_cpu(tp->counters.tx_aborted) -
|
|
|
le16_to_cpu(tp->tc_offset.tx_aborted);
|
|
|
|