mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
gre: Count GRE packet drops
GRE is silently dropping packets without updating statistics. In case of drop, increment rx_dropped counter to provide visibility into packet loss. For the case where no GRE protocol handler is registered, use rx_nohandler. Reviewed-by: Dragos Tatulea <dtatulea@nvidia.com> Reviewed-by: Nimrod Oren <noren@nvidia.com> Signed-off-by: Gal Pressman <gal@nvidia.com> Link: https://patch.msgid.link/20260409090945.1542440-1-gal@nvidia.com Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
4e17b9b433
commit
8632175ccb
|
|
@ -159,14 +159,18 @@ static int gre_rcv(struct sk_buff *skb)
|
|||
rcu_read_lock();
|
||||
proto = rcu_dereference(gre_proto[ver]);
|
||||
if (!proto || !proto->handler)
|
||||
goto drop_unlock;
|
||||
goto drop_nohandler;
|
||||
ret = proto->handler(skb);
|
||||
rcu_read_unlock();
|
||||
return ret;
|
||||
|
||||
drop_unlock:
|
||||
drop_nohandler:
|
||||
rcu_read_unlock();
|
||||
dev_core_stats_rx_nohandler_inc(skb->dev);
|
||||
kfree_skb(skb);
|
||||
return NET_RX_DROP;
|
||||
drop:
|
||||
dev_core_stats_rx_dropped_inc(skb->dev);
|
||||
kfree_skb(skb);
|
||||
return NET_RX_DROP;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -468,6 +468,7 @@ static int gre_rcv(struct sk_buff *skb)
|
|||
out:
|
||||
icmp_send(skb, ICMP_DEST_UNREACH, ICMP_PORT_UNREACH, 0);
|
||||
drop:
|
||||
dev_core_stats_rx_dropped_inc(skb->dev);
|
||||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -593,6 +593,7 @@ static int gre_rcv(struct sk_buff *skb)
|
|||
out:
|
||||
icmpv6_send(skb, ICMPV6_DEST_UNREACH, ICMPV6_PORT_UNREACH, 0);
|
||||
drop:
|
||||
dev_core_stats_rx_dropped_inc(skb->dev);
|
||||
kfree_skb(skb);
|
||||
return 0;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user