On 3/8/22 2:25 PM, Jeffrey Ji wrote:
quoted hunk ↗ jump to hunk
diff --git a/net/ipv4/ip_input.c b/net/ipv4/ip_input.c
index 95f7bb052784..8b87ea99904b 100644
--- a/net/ipv4/ip_input.c
+++ b/net/ipv4/ip_input.c
@@ -451,6 +451,7 @@ static struct sk_buff *ip_rcv_core(struct sk_buff *skb, struct net *net)
* that it receives, do not try to analyse it.
*/
if (skb->pkt_type == PACKET_OTHERHOST) {
+ atomic_long_inc(&skb->dev->rx_otherhost_dropped);
drop_reason = SKB_DROP_REASON_OTHERHOST;
goto drop;
}diff --git a/net/ipv6/ip6_input.c b/net/ipv6/ip6_input.c
index 5b5ea35635f9..5624c937f87f 100644
--- a/net/ipv6/ip6_input.c
+++ b/net/ipv6/ip6_input.c
@@ -150,6 +150,7 @@ static struct sk_buff *ip6_rcv_core(struct sk_buff *skb, struct net_device *dev,
struct inet6_dev *idev;
if (skb->pkt_type == PACKET_OTHERHOST) {
+ atomic_long_inc(&skb->dev->rx_otherhost_dropped);
kfree_skb(skb);
return NULL;
}
that's an expensive packet counter for a common path (e.g., hosting
environments).