On 2/20/22 10:34 PM, Dongli Zhang wrote:
The TAP can be used as vhost-net backend. E.g., the tap_handle_frame() is
the interface to forward the skb from TAP to vhost-net/virtio-net.
However, there are many "goto drop" in the TAP driver. Therefore, the
kfree_skb_reason() is involved at each "goto drop" to help userspace
ftrace/ebpf to track the reason for the loss of packets.
The below reasons are introduced:
- SKB_DROP_REASON_SKB_CSUM
- SKB_DROP_REASON_SKB_COPY_DATA
- SKB_DROP_REASON_SKB_GSO_SEG
- SKB_DROP_REASON_DEV_HDR
- SKB_DROP_REASON_FULL_RING
Cc: Joao Martins <redacted>
Cc: Joe Jin <redacted>
Signed-off-by: Dongli Zhang <redacted>
---
Changed since v1:
- revise the reason name
Changed since v2:
- declare drop_reason as type "enum skb_drop_reason"
- handle the drop in skb_list_walk_safe() case
drivers/net/tap.c | 35 +++++++++++++++++++++++++----------
include/linux/skbuff.h | 9 +++++++++
include/trace/events/skb.h | 5 +++++
3 files changed, 39 insertions(+), 10 deletions(-)
couple of places where the new reason should be in reverse xmas order;
logic wise:
Reviewed-by: David Ahern <dsahern@kernel.org>