From nobody Mon Jun 29 15:59:55 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id B44D4C433EF for ; Tue, 8 Feb 2022 03:56:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346640AbiBHD4p (ORCPT ); Mon, 7 Feb 2022 22:56:45 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35528 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346586AbiBHD41 (ORCPT ); Mon, 7 Feb 2022 22:56:27 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 533E1C0401E9; Mon, 7 Feb 2022 19:56:27 -0800 (PST) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 2182heIi004452; Tue, 8 Feb 2022 03:55:36 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2021-07-09; bh=80XCyxtM54pk/m3McabUOojmV1zB7KPHD65XkaCXA4c=; b=KfZIuNUS2X5iQxDHvJEaYBXD0nFlT62wuKRskhqHBHGcxiaJ9ugwGS6o4nm/Ek3EyDPV LLqmNgzkV8xEjOY0TqjDJgUULwWBvevx1A+Go/uBJ7OogbNT3ZJbl+fXNNdxi0vLXmmn i5t29jKThQcfzVDMHXTra3ci6qGOIvBX9oNE9+aS4GNXC9LiGkWsqlWxcRv5aWONv2GE EUE36r0gOdP8o9xKYCc8SCkc+csWeDE/B1eOB2dsO/vE/aB+1QynssdqIwEoEFMWorLG D08pVxObeBV7CL+yv8vdDu+VKIK7V3MV3vaGoIq/sac4GBEReNg11+rLjoHj8nr05fiI Aw== Received: from aserp3020.oracle.com (aserp3020.oracle.com [141.146.126.70]) by mx0b-00069f02.pphosted.com with ESMTP id 3e1g13r7w4-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 08 Feb 2022 03:55:36 +0000 Received: from pps.filterd (aserp3020.oracle.com [127.0.0.1]) by aserp3020.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 2183tWpr009521; Tue, 8 Feb 2022 03:55:35 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam08lp2174.outbound.protection.outlook.com [104.47.73.174]) by aserp3020.oracle.com with ESMTP id 3e1h25ckv3-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 08 Feb 2022 03:55:35 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=k2dqXkfmYDX2bpUnCvQa2GJdK1iFYYACzMZm+DRUicTGTW2DdkLvw6ahrtbbcWTi/a5+5dmU4Fh8Oz9+Uu2aMIkQC7wjnJ2zFo98MEP05ZfKUIru4RabZ5xu7xArEE0G9TGeOJ6TVBJBM3fnu4hbn6bx1NQ8bVNYN+I4KEZXWWdrwAumza72nDvoXm3tiLRtX444Jvq+ejDjkdP6EwKdS4R1uDfI15DDT/K6ePUlICmDOSIy8MwhAlxjmFF94E8i7R/gYOIQ2HTpCizO6irh1RI2P0xmY7jPReNc+KPT7PrgRnZaS7JUPm1FEAs3iO9mEaKFfbbMifqmEiGXDH8rbw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=80XCyxtM54pk/m3McabUOojmV1zB7KPHD65XkaCXA4c=; b=lC0d1ASrQx1wZcn7JPJi3vsuY6CMPpcptkcUMqcMw+XKdHsiv6a59tBLZqKz+cJynb3lffL4esPN+g6Dg70pE0R0pt0x54wbOCiLZhN15fw4mAoJiWdqJr4YGIxJuPRKLSo4IOs8Z8fqGOr8O3Zj+iutFUumPTR2cTw6Fv3rtQSlws8ohQtWBjar19eiq1UIGwQ75AEFeFDKWSrKflmQrmti4ZWGOXuINnn+W3/4tXHvgm1g7Z2jbsm6siffyWSUo2/wnlCtRT9EWXOSAiAw3KVi4XntDEJIaGUtVXDLQte+0daViTScSDKvsz1UcyObXpK/1DhiuTme7lluPIgt7A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=80XCyxtM54pk/m3McabUOojmV1zB7KPHD65XkaCXA4c=; b=UuNOmXo+vHf986m7gaNEzJZOwpdAO7bw18rhH4fTum9teY0GR8PYolcSM1juzylmDwDnvjDho2l9rbo6pFEjHtrwgy9k5WXr3haLKxUCog1C8m6Q6ZGH2Hk1VHseFGdAif9+C2zXJvVLwPo61x25mn8tG+uDH8VHvitr66yY0f4= Received: from BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) by CY4PR10MB1352.namprd10.prod.outlook.com (2603:10b6:903:28::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.16; Tue, 8 Feb 2022 03:55:33 +0000 Received: from BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47]) by BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47%4]) with mapi id 15.20.4951.019; Tue, 8 Feb 2022 03:55:33 +0000 From: Dongli Zhang To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: linux-kernel@vger.kernel.org, davem@davemloft.net, kuba@kernel.org, rostedt@goodmis.org, mingo@redhat.com, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, imagedong@tencent.com, joao.m.martins@oracle.com, joe.jin@oracle.com, dsahern@gmail.com, edumazet@google.com Subject: [PATCH 1/2] net: tap: track dropped skb via kfree_skb_reason() Date: Mon, 7 Feb 2022 19:55:09 -0800 Message-Id: <20220208035510.1200-2-dongli.zhang@oracle.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220208035510.1200-1-dongli.zhang@oracle.com> References: <20220208035510.1200-1-dongli.zhang@oracle.com> X-ClientProxiedBy: SA0PR13CA0010.namprd13.prod.outlook.com (2603:10b6:806:130::15) To BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 71018ff7-9931-44cf-562e-08d9eab6db5b X-MS-TrafficTypeDiagnostic: CY4PR10MB1352:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:7691; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: N2GHdDKEVVB0Cs0/sgPoXmdLy9M6YpqOYosfdX+3n3d+3ZXSCnfGIVuy4FTcgawHK70lj4aae6D38tBRubSEV1Sbx8OPl03ZscDLDC9ISQ0RCvzpAN0ub65IrKZmtZD6BnJjABanza0v9daMBWVmhNF7lYY+E1T/wDefO0vzw3tTv9btXtXekkZXnUuQc3pCzqKF8llMv0qMrkVuvMFb7pxnCMudn95l3IDbA4OmuAfs5naqgS0FrN3H/xo7YWFDZYN/ruPunRlc0z5S2KJeBD894fstjqyNMO0iQluqnzGvc/uVfg7Jep5hNBuq8xpSnLgPLXM18zaXGQEK3CNvEHcpf+lw73cvkC7DAjIAnJGecZKtDElBgyJjdAz4Lo+yMVUQO1ch8fJrlJIo36OTo/UH5VChL2UdwCFz6Sr9OPX40kbCTTO90s/VfASyccaZh5MAMBwC7+AMLFbVi3zco3hWsLBKw2zfliv5XXvDHO/dL0Fgp5z/cLkoSnIDrKKLVmf+EXognXnJmMrHZcHTGF75GIhycdyu3g80xR5j6wTCt2IO0ulLQSOCN01SLNczDuxtuRtVe98z3KxcXtxQ0G1Us8IekXH8pSaSFoolplm1sJ9tPb0OGSl1YuM/SSAsCuq3BNWlIrG5+wVDwBLJ7LsE3jxGkp/uDwfFc2ffOSGykFtnX1EKkutxQBW3m+eRJblQKnjjbydxrCh7+KSP5A== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2663.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6486002)(4326008)(1076003)(38350700002)(38100700002)(83380400001)(6512007)(26005)(186003)(8936002)(2616005)(52116002)(6666004)(6506007)(8676002)(7416002)(66476007)(2906002)(86362001)(36756003)(44832011)(508600001)(66556008)(66946007)(5660300002)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?BjqBzQcEYdVQVlvAEY3CKCnlPsZoTSeb+qGPmEjxdnf5PUD2ZC5bBQ4oUEFD?= =?us-ascii?Q?N2HFeapbe8rbMOqWipIy39aqPqfB42ySdBcLBGoCV2tclLXvTeMW+qsedIdV?= =?us-ascii?Q?PZKHQZzA3WDExswWVOKYe7QlaqnYquqNxaNpcazX9AMFdUlRxrROcXvm9hYB?= =?us-ascii?Q?g3mL0j7ymcEy2TTrgM1hNL8tMDas/7BlfOIHfL9nKp9i+TFi+pSRTbJiptqo?= =?us-ascii?Q?tnJDEsKNru/14iDGcYoAbrTQQCoNwTE+cJVd68kr3bVyQjFTB1y820ht9gtl?= =?us-ascii?Q?5SYbRFeZxgND6oeZBjx8DiFeVt61ZJGUseR8zaznVMagz/DoaDUbt4CVJ1Gj?= =?us-ascii?Q?RMJpvglVXVEdNM3ewF1dCa0IYZcd14zNTXBkNENDmtkAsghWVVvrLBLub4xl?= =?us-ascii?Q?lZuJXgaV3yV9nW000R3A8Omwm+4jFdHOx49mzEdavySZPa2H7oXguv7NQ9Dx?= =?us-ascii?Q?wcF9p0JJsUQhSQ43JpQ357qgdyoUr1ySqNiPEvGaYiaQep/Kxuj2k1Ktysi0?= =?us-ascii?Q?LnQl3nGVDO2wofqFLXKIVBJJdDtcJ4L5p1q2DBX5yU38KIbWBiAx+JBeHqmn?= =?us-ascii?Q?FTK8HZKgjnjrmeIyRDQZKZM7yyp6AcdkSWTZhJqKIUmtHL27IlflMC/3sXjC?= =?us-ascii?Q?XvXjrm/3wL8cmg5eEDBkp/5tee7fWknGjyjv25Szpd0T22G3Cbj1VTEOosf1?= =?us-ascii?Q?NhLVDr+L2LhgaXpYKi++MTspziWJQFo/WYWsS4tjGN7be5puy+tKQNaSRa4z?= =?us-ascii?Q?WNPSaUwJNcG/0yUuVztkraNrWAtTeJW2YqCikSNNMhezd0dd/9ntwDhsZB5S?= =?us-ascii?Q?qAAuVm4YVMnoqlltJIjHpKU0O/1AyqsRjn0wHw3W226NbBnR7+C9UvHjHVS3?= =?us-ascii?Q?DKxvcvN2u4eiiP4wlXLBhSwule98k7JJwu7t3xw+ZZ6ZGo+pbYUQ+lEGc9BI?= =?us-ascii?Q?ThQAqL9jL4R+veUeezvs1IsafDA+/iOqTDHC1/vTDMscijYCHSVPNiQMc59d?= =?us-ascii?Q?9bKhaM5rdk1qJlswXmGsakpKMW8e0/VsEGQ4uDEj9EK0M8EPqZrQUghi+l0X?= =?us-ascii?Q?12EOdz3JUfbP7YqAcLEoHYdcs13YP3gZauIzf/Pd8lb/m/4ROpZlWaW4OLeH?= =?us-ascii?Q?Up5J92kle2y7vPEflht4zs5qeDjET1gz4Zo94geWZk48Df3F33pCFpu+5CzE?= =?us-ascii?Q?UkBnyl3jbHMrS0WPZGcjWKcnOmJDNRq7dB+zRhhSm3KKmC3cPQq7ZSPGS55w?= =?us-ascii?Q?RGtKMVVr/QdvSuVB9DVb51ZSdjGruFTN9PWVfiT/XFc32QWYnXhYZk1GT5xZ?= =?us-ascii?Q?aXwvcZJS2Yheg88TXkMWZxuodw5J1QONAAsdFCufsLsjNBDUK5kkNKI6x2YH?= =?us-ascii?Q?7VkDpeOZcG6Od4kWE0s284vB7I7/EadsRiWYDX2q5ZS2H+X8BYpjpZNoybh0?= =?us-ascii?Q?wnYe9at7+dmSprFy24rDIKbYzqtQm3ywZBeze0umqvmBtOdIoKeJw2ov4+IP?= =?us-ascii?Q?8hStGUCFDnjrUGuxtFYDbjcltxEG5v5pEVqwI+gYFcEO2uE2puOlXk2a1Su/?= =?us-ascii?Q?xduQMgGRTg1S5ONaOyZiwMC3Kot9cFxUfq6wanB7GuhEmdGRSAPMLBDMUO1r?= =?us-ascii?Q?cnD5PMhYQ8IkaYY5itUEVLc=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: 71018ff7-9931-44cf-562e-08d9eab6db5b X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2663.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Feb 2022 03:55:33.7279 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /d0quLaGOYCqSFuyMXa2ATJkdKIQmmvnVNRrxTI9lSZdVyP/yr9hbYmnrlfzEOicmA2LXd/vD4dlkAXm70z0dg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR10MB1352 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10251 signatures=673430 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 mlxscore=0 bulkscore=0 phishscore=0 malwarescore=0 mlxlogscore=999 adultscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202080019 X-Proofpoint-GUID: 9ut66aZSMiMZd6sg0Pu2kreK320tH9zK X-Proofpoint-ORIG-GUID: 9ut66aZSMiMZd6sg0Pu2kreK320tH9zK Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" 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 Cc: Joao Martins Cc: Joe Jin Signed-off-by: Dongli Zhang --- drivers/net/tap.c | 30 ++++++++++++++++++++++-------- include/linux/skbuff.h | 5 +++++ include/trace/events/skb.h | 5 +++++ 3 files changed, 32 insertions(+), 8 deletions(-) diff --git a/drivers/net/tap.c b/drivers/net/tap.c index 8e3a28ba6b28..232572289e63 100644 --- a/drivers/net/tap.c +++ b/drivers/net/tap.c @@ -322,6 +322,7 @@ rx_handler_result_t tap_handle_frame(struct sk_buff **p= skb) struct tap_dev *tap; struct tap_queue *q; netdev_features_t features =3D TAP_FEATURES; + int drop_reason =3D SKB_DROP_REASON_NOT_SPECIFIED; =20 tap =3D tap_dev_get_rcu(dev); if (!tap) @@ -343,12 +344,16 @@ rx_handler_result_t tap_handle_frame(struct sk_buff *= *pskb) struct sk_buff *segs =3D __skb_gso_segment(skb, features, false); struct sk_buff *next; =20 - if (IS_ERR(segs)) + if (IS_ERR(segs)) { + drop_reason =3D SKB_DROP_REASON_SKB_GSO_SEGMENT; goto drop; + } =20 if (!segs) { - if (ptr_ring_produce(&q->ring, skb)) + if (ptr_ring_produce(&q->ring, skb)) { + drop_reason =3D SKB_DROP_REASON_PTR_FULL; goto drop; + } goto wake_up; } =20 @@ -369,10 +374,14 @@ rx_handler_result_t tap_handle_frame(struct sk_buff *= *pskb) */ if (skb->ip_summed =3D=3D CHECKSUM_PARTIAL && !(features & NETIF_F_CSUM_MASK) && - skb_checksum_help(skb)) + skb_checksum_help(skb)) { + drop_reason =3D SKB_DROP_REASON_SKB_CHECKSUM; goto drop; - if (ptr_ring_produce(&q->ring, skb)) + } + if (ptr_ring_produce(&q->ring, skb)) { + drop_reason =3D SKB_DROP_REASON_PTR_FULL; goto drop; + } } =20 wake_up: @@ -383,7 +392,7 @@ rx_handler_result_t tap_handle_frame(struct sk_buff **p= skb) /* Count errors/drops only here, thus don't care about args. */ if (tap->count_rx_dropped) tap->count_rx_dropped(tap); - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); return RX_HANDLER_CONSUMED; } EXPORT_SYMBOL_GPL(tap_handle_frame); @@ -632,6 +641,7 @@ static ssize_t tap_get_user(struct tap_queue *q, void *= msg_control, int depth; bool zerocopy =3D false; size_t linear; + int drop_reason =3D SKB_DROP_REASON_NOT_SPECIFIED; =20 if (q->flags & IFF_VNET_HDR) { vnet_hdr_len =3D READ_ONCE(q->vnet_hdr_sz); @@ -696,8 +706,10 @@ static ssize_t tap_get_user(struct tap_queue *q, void = *msg_control, else err =3D skb_copy_datagram_from_iter(skb, 0, from, len); =20 - if (err) + if (err) { + drop_reason =3D SKB_DROP_REASON_SKB_COPY_DATA; goto err_kfree; + } =20 skb_set_network_header(skb, ETH_HLEN); skb_reset_mac_header(skb); @@ -706,8 +718,10 @@ static ssize_t tap_get_user(struct tap_queue *q, void = *msg_control, if (vnet_hdr_len) { err =3D virtio_net_hdr_to_skb(skb, &vnet_hdr, tap_is_little_endian(q)); - if (err) + if (err) { + drop_reason =3D SKB_DROP_REASON_VIRTNET_HDR; goto err_kfree; + } } =20 skb_probe_transport_header(skb); @@ -738,7 +752,7 @@ static ssize_t tap_get_user(struct tap_queue *q, void *= msg_control, return total_len; =20 err_kfree: - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); =20 err: rcu_read_lock(); diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 8a636e678902..16c30d2e20dc 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -320,6 +320,11 @@ enum skb_drop_reason { SKB_DROP_REASON_TCP_CSUM, SKB_DROP_REASON_SOCKET_FILTER, SKB_DROP_REASON_UDP_CSUM, + SKB_DROP_REASON_SKB_GSO_SEGMENT, + SKB_DROP_REASON_SKB_CHECKSUM, + SKB_DROP_REASON_SKB_COPY_DATA, + SKB_DROP_REASON_PTR_FULL, + SKB_DROP_REASON_VIRTNET_HDR, SKB_DROP_REASON_MAX, }; =20 diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h index a8a64b97504d..bf1509c31cea 100644 --- a/include/trace/events/skb.h +++ b/include/trace/events/skb.h @@ -16,6 +16,11 @@ EM(SKB_DROP_REASON_TCP_CSUM, TCP_CSUM) \ EM(SKB_DROP_REASON_SOCKET_FILTER, SOCKET_FILTER) \ EM(SKB_DROP_REASON_UDP_CSUM, UDP_CSUM) \ + EM(SKB_DROP_REASON_SKB_GSO_SEGMENT, SKB_GSO_SEGMENT) \ + EM(SKB_DROP_REASON_SKB_CHECKSUM, SKB_CHECKSUM) \ + EM(SKB_DROP_REASON_SKB_COPY_DATA, SKB_COPY_DATA) \ + EM(SKB_DROP_REASON_PTR_FULL, PTR_FULL) \ + EM(SKB_DROP_REASON_VIRTNET_HDR, VIRTNET_HDR) \ EMe(SKB_DROP_REASON_MAX, MAX) =20 #undef EM --=20 2.17.1 From nobody Mon Jun 29 15:59:55 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 10C17C433EF for ; Tue, 8 Feb 2022 03:56:43 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1346634AbiBHD4l (ORCPT ); Mon, 7 Feb 2022 22:56:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:35520 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1346495AbiBHD41 (ORCPT ); Mon, 7 Feb 2022 22:56:27 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BD822C0401DC; Mon, 7 Feb 2022 19:56:25 -0800 (PST) Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.16.1.2/8.16.1.2) with SMTP id 2182Yv8m011786; Tue, 8 Feb 2022 03:55:39 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : in-reply-to : references : content-type : mime-version; s=corp-2021-07-09; bh=rcdfWI3MVOr2TR/JdreyHzhUkcT3OOW6y5xI4BEen2Q=; b=Oahy8y1id7nqrGjXu9LspYpGYza+Ls38LtvAhptosPTO6wHw38OySyS1RRkEX/WNTICi KCSYQulnjrQp1y62rlSLJ3dg3DCKrYnQG5lRXJkF6OsTGpyEhndQL7L/ngDEzAIS5vVs 1Tl+DtehLcgw5HqNcjCpzHXd+BXSep+beif+RthUBO6gLuMgAuvRWfg5mDbKW5eQOMJU 5L6g0K4ZGQEi6mIPgNZ7HQKiEwS5ClwLO3a08ARhI3V2pP9WZHVNNr0N1qUp+iYUzmE0 jdt1g3ktfDXSo1KVkjFI4GKKH2tUqTTuV7wq3ujPGjqFPMKUOzAfQQ7Kw0OviuPJvWEx Ug== Received: from userp3030.oracle.com (userp3030.oracle.com [156.151.31.80]) by mx0b-00069f02.pphosted.com with ESMTP id 3e345shyyp-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 08 Feb 2022 03:55:39 +0000 Received: from pps.filterd (userp3030.oracle.com [127.0.0.1]) by userp3030.oracle.com (8.16.1.2/8.16.1.2) with SMTP id 2183jjRW044635; Tue, 8 Feb 2022 03:55:38 GMT Received: from nam04-mw2-obe.outbound.protection.outlook.com (mail-mw2nam08lp2174.outbound.protection.outlook.com [104.47.73.174]) by userp3030.oracle.com with ESMTP id 3e1ebyab49-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Tue, 08 Feb 2022 03:55:37 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=fnjtO0BiwgZUyNRcOdTKnfeYq8YrJ0GHAWkekU3TB9CQ2nRYIMjmmMDUclN5CeWFGdtzJV3wOZjhlaG9FS0pLXSDZJLbF1xtGEcl1RfFlugZ9wWDFC+9rHYMslZGVpxi/mxbqBmZhtPmZ2L/V6hpsPJbJo69Q8jq1d7R2Hzlv0DVV41d8/4A1eYcItdltbhNMKok9Jwf1XzonTcP6Y+dgu6tmMxcw6s7Gbad7lOf4cEljHJWdRV5xTzsNaZ2uTBre85vm2kRTmcr7RN1C7f8JiLKTHo48aJtZqsQCXoFqReS2PK74D/57JOMzabiPkKWVEZsiCAlUnCxs9nK+diatw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=rcdfWI3MVOr2TR/JdreyHzhUkcT3OOW6y5xI4BEen2Q=; b=OyA6Iax8etMxKNsHw00Ff5Kvtl3Jxeesq93+nLNkBKerh0zX0EFQFiXunguwiAO+kYNmGdr7VUwz2MLm/FYDZimhM1QEzalpfUZ/eClE3yk2FSzNv7f8LJ2knefaCly3XmuGMFw0ZwEh+HbCJrMY8VJqkl9hT1WVTqyPslf8+LckbOecn7pT+TO07fiavcwguXmVBHpXVKehHdYjAMicdVBUmqnlhwXVtxwTabqEuBdZ6/ceqRjY1uKcbz8HV7JCOx33g+hNxGzFSSmq1YGRVRqTL/ytb89AkXdEghwOmiw9F1i7o1wsBfyfY2rHZUc/f+3tVzeb0XkY0Gd3G9YQug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=rcdfWI3MVOr2TR/JdreyHzhUkcT3OOW6y5xI4BEen2Q=; b=Kt1a3Uag4mnLfTFfirJLuZ/UyirdrbYHAvqZ1o+8q8Ip3b+tMt0n3LWuCe6DDZjP0VWgQFVMTTe6RUiUUw223EXdIM7Sqri5++khHVI2uxH2L/Si4XwP/wNHBNsoY1VUkN0FewamSkorGRJTpoUxKa+5Q4V4GfVYEoN3p/unfvA= Received: from BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) by CY4PR10MB1352.namprd10.prod.outlook.com (2603:10b6:903:28::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.16; Tue, 8 Feb 2022 03:55:35 +0000 Received: from BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47]) by BYAPR10MB2663.namprd10.prod.outlook.com ([fe80::a0d5:610d:bcf:9b47%4]) with mapi id 15.20.4951.019; Tue, 8 Feb 2022 03:55:35 +0000 From: Dongli Zhang To: netdev@vger.kernel.org, bpf@vger.kernel.org Cc: linux-kernel@vger.kernel.org, davem@davemloft.net, kuba@kernel.org, rostedt@goodmis.org, mingo@redhat.com, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, imagedong@tencent.com, joao.m.martins@oracle.com, joe.jin@oracle.com, dsahern@gmail.com, edumazet@google.com Subject: [PATCH 2/2] net: tun: track dropped skb via kfree_skb_reason() Date: Mon, 7 Feb 2022 19:55:10 -0800 Message-Id: <20220208035510.1200-3-dongli.zhang@oracle.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20220208035510.1200-1-dongli.zhang@oracle.com> References: <20220208035510.1200-1-dongli.zhang@oracle.com> X-ClientProxiedBy: SA0PR13CA0010.namprd13.prod.outlook.com (2603:10b6:806:130::15) To BYAPR10MB2663.namprd10.prod.outlook.com (2603:10b6:a02:a9::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: fe843066-e5d3-4140-e1f6-08d9eab6dc6f X-MS-TrafficTypeDiagnostic: CY4PR10MB1352:EE_ X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4714; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: r0nvLdBBCuyNbdA1hYcyiPVMID8qtHfaTjPfJ0HjSoPSMFKF/tsLGNIEgTJIrVVNkwhuWoT9Nh4y5ipRrhusC9sMN6fRErH1fRi1O5rALWwVBzRz1BW4NWmsamTE+42dITeINPt6N9EFh2DgrNJuI4WhJg7BdINeQgs7y+k3lKzm266CAdsjqdkaAIf6IRgVVliOg2n/8cCF2dOB4k36xjIJbFmhsfl41lTKIfXqIex4+cT/VVFvay/M7pEO4fuVhPZL8zefeXF3P7FiHks6vNM9DQKKz33yJlHxN3eab8DHGtMKzmHzaatxmd7sJ3piaUVdFGjgqbAnqlXia8NCdYekW+tEh6UQVNXV2QF2gGfRs8FboSFAcFAwgr/gVqdgsXJbbHF/7VXWDA28Rm1/5cc/Ibnm0rs8Cyqg/Mc86a9HB7TtsYjIH5xePFiKSuhN1akFklMrr5o1pbg3YHO3xuUqlEx6ITMHBqYKRfn8f0K9kNvOXUky4JTk4dmAksf2BvQZnbHBQGK4Vp22JHVl6lLOkOgreCP3zCGAWmhedvdSXcS1MecZV6Wnc0rZmsT24msYWUR12w3sqIAZhhVpySvRsV67Nl75NyT+0mBCY67SnUTRFu3Tp7/q+bpbirzw1/Pc4LG+HJSVVtL0O3eKU0jic7fpHCwPuHOfpEeSY9dTwzR8brBWyxXNz5a4q3RloCKKaIxm7YyiUliuzw5jZg== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BYAPR10MB2663.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230001)(366004)(6486002)(4326008)(1076003)(38350700002)(38100700002)(83380400001)(6512007)(26005)(186003)(8936002)(2616005)(52116002)(6666004)(6506007)(8676002)(7416002)(66476007)(2906002)(86362001)(36756003)(44832011)(508600001)(66556008)(66946007)(5660300002)(316002);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?WKOnEkIMv3GQpxFwotS3bc1BW1goAgHMt8ZL4CYo5I5xAhxD21uTPT8175r6?= =?us-ascii?Q?t4klNOVMj0MpRCKVFK9/TSFLzUW6p151QZ1rLlvQ1HY+BleznBu3zlRMaT11?= =?us-ascii?Q?1N9oX9bpL4hsRA1zUSWSfbjwv5OOsOPms08SrQBilGJJJ4KO0v9f8qXJ/b/C?= =?us-ascii?Q?qsrhNGf1GwF/7eMJkQqPtx4NGFaHM0mUAqViL3mMnbr64EcLMGtdgKXuPxPl?= =?us-ascii?Q?N12OPyWSqvwBzKmKSQ0jPt2BP2Qtl+vRkxWvvJ0F41huhuNGLiBcZXUD7uQ8?= =?us-ascii?Q?qU4s5uhRAxDQ5/BYQpqaxLL6p/ZIN3/cv2XGe2hvQ4mqqGrL/UEstbY7/rq+?= =?us-ascii?Q?C3jprVrWfRhCl1AhE/DhGqwL7ev2UbmgbtuCx2lv7BI61mqgg3diW9GqpNpv?= =?us-ascii?Q?eAuUu/fEDOkkKI25BL4PrkoOFgLYIqnxeumhY7LTY8hHcKWhTG+mztsHnFX+?= =?us-ascii?Q?UtWVKYAP9O8lRiD7sWJnB9TZiOnc/yWmyNylbAmmxhiuDBUwy/OpxTqpBPIp?= =?us-ascii?Q?3mrQGpir6QEwyVOF8CFbGthPUYb8GrxDmiFEO1tTlVVGTnCWeR+dUcEHVXxE?= =?us-ascii?Q?phIQociR2qKRoRzQZmMEGiMgSyo4t0wiWMqPtSUH0yS+KybIOUHKkQTsFbNj?= =?us-ascii?Q?Ig1VASDFjIJR0dfCXsmX+mKE1RLYtCl8/0oDH90tgh6r/msyWo/dAPd/F+ae?= =?us-ascii?Q?IKGgmyFUtBNbslFUZRYEElLFL+6pEY2hDP5zYkEwnrQv0tZ/XCO/qhRSN31x?= =?us-ascii?Q?/88d3dMuupF5k1FBFxDuXljwGS5GEdKlGQbcmFPSniQF6iFi8sOsgXG5TUsQ?= =?us-ascii?Q?jxxzupUTJo8ssMcIdJkSt+K1AVHpBubyThdBxflcD0JbO8JynbnUm01fuAuL?= =?us-ascii?Q?6lMly63nZJ+CAxuKBVEt9UFhT5rXqIkAUvAf/ls1bV0Se6PO+DKZfPhQW6jX?= =?us-ascii?Q?d9Gq5s0jGA/7c6dEgQHcGeEo//ATrZt6KfWwqqWLlQB/yhD/96KfW7sKp2ay?= =?us-ascii?Q?bNmZ1vJtaNec6eRHJZbQm/XkLm6KsKMY52AQ92PDsd9hSc+W/63V+hIvtkT2?= =?us-ascii?Q?LNEmdZJz2AevxLv2hYyZnNbndbNd93k0UDmojq0Yzw9HSxLhpdLnXxNBZ7yN?= =?us-ascii?Q?CxKJjCi2bNhEAhicOa5/pUv0oR9n6YdVlUyXF4/sNKw78aWGynHUK095jAE0?= =?us-ascii?Q?OuLq6yaprcWSFe8QIr/A5X05HyE+T8jusv3zTRBySQm/YroQv3OZfWeUMAOq?= =?us-ascii?Q?eXz3A9NgnkPHGxFS8Nc29JxgEFWH+foZFWC36r9jUD9INNALgmPMkV40aDoM?= =?us-ascii?Q?YiJjIqifV8wfAPOFNetUDE8v1btBbq6L7Zq5HX11paV+z39T5orC4TrIqT43?= =?us-ascii?Q?mYRmJS31xwY6XrSdx7Ns3FqQcyecJf2JNoRmnpl6az9C7UP5pfelBYsSGQ8q?= =?us-ascii?Q?s8mBsgHBHDv70auec/i8Exu6ZWCgY79JaIZTFKqQpdS/HEmuEUcljSKCJjOZ?= =?us-ascii?Q?55FBzEwqrYHxNTKZ3/kl6xzPi+XG73aMKsKXhx8x9kl5zn2RG2yP6zvuUywW?= =?us-ascii?Q?EoYgOKU4KadD1D0q6HT1asA9mOfzHIfeHlyWvZEHnuI4mdv8geAKzRaFL28K?= =?us-ascii?Q?zhgd+LUn/k1LdYtr8SfbX5c=3D?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-Network-Message-Id: fe843066-e5d3-4140-e1f6-08d9eab6dc6f X-MS-Exchange-CrossTenant-AuthSource: BYAPR10MB2663.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Feb 2022 03:55:35.4621 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: bF7yfzNIWzgfXEDMQxu4McnNDc6FTmWQjDTEa++uRY1/BbucxZP/Nj5vbk+D2jv8GJb3zrLihYapXZQj+UgCTw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR10MB1352 X-Proofpoint-Virus-Version: vendor=nai engine=6300 definitions=10251 signatures=673430 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 phishscore=0 bulkscore=0 suspectscore=0 mlxlogscore=999 mlxscore=0 adultscore=0 malwarescore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2201110000 definitions=main-2202080018 X-Proofpoint-GUID: U0-E-5VSbatKltcfQXLGLqhMeU43l-ND X-Proofpoint-ORIG-GUID: U0-E-5VSbatKltcfQXLGLqhMeU43l-ND Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The TUN can be used as vhost-net backend. E.g, the tun_net_xmit() is the interface to forward the skb from TUN to vhost-net/virtio-net. However, there are many "goto drop" in the TUN 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. Cc: Joao Martins Cc: Joe Jin Signed-off-by: Dongli Zhang --- drivers/net/tun.c | 33 +++++++++++++++++++++++++-------- include/linux/skbuff.h | 6 ++++++ include/trace/events/skb.h | 6 ++++++ 3 files changed, 37 insertions(+), 8 deletions(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index fed85447701a..d67f2419dbb4 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1062,13 +1062,16 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb= , struct net_device *dev) struct netdev_queue *queue; struct tun_file *tfile; int len =3D skb->len; + int drop_reason =3D SKB_DROP_REASON_NOT_SPECIFIED; =20 rcu_read_lock(); tfile =3D rcu_dereference(tun->tfiles[txq]); =20 /* Drop packet if interface is not attached */ - if (!tfile) + if (!tfile) { + drop_reason =3D SKB_DROP_REASON_DEV_NOT_ATTACHED; goto drop; + } =20 if (!rcu_dereference(tun->steering_prog)) tun_automq_xmit(tun, skb); @@ -1078,19 +1081,27 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb= , struct net_device *dev) /* Drop if the filter does not like it. * This is a noop if the filter is disabled. * Filter can be enabled only for the TAP devices. */ - if (!check_filter(&tun->txflt, skb)) + if (!check_filter(&tun->txflt, skb)) { + drop_reason =3D SKB_DROP_REASON_TAP_RUN_FILTER; goto drop; + } =20 if (tfile->socket.sk->sk_filter && - sk_filter(tfile->socket.sk, skb)) + sk_filter(tfile->socket.sk, skb)) { + drop_reason =3D SKB_DROP_REASON_SKB_TRIM; goto drop; + } =20 len =3D run_ebpf_filter(tun, skb, len); - if (len =3D=3D 0 || pskb_trim(skb, len)) + if (len =3D=3D 0 || pskb_trim(skb, len)) { + drop_reason =3D SKB_DROP_REASON_SKB_TRIM; goto drop; + } =20 - if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) + if (unlikely(skb_orphan_frags_rx(skb, GFP_ATOMIC))) { + drop_reason =3D SKB_DROP_REASON_SKB_ORPHAN_FRAGS; goto drop; + } =20 skb_tx_timestamp(skb); =20 @@ -1101,8 +1112,10 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb,= struct net_device *dev) =20 nf_reset_ct(skb); =20 - if (ptr_ring_produce(&tfile->tx_ring, skb)) + if (ptr_ring_produce(&tfile->tx_ring, skb)) { + drop_reason =3D SKB_DROP_REASON_PTR_FULL; goto drop; + } =20 /* NETIF_F_LLTX requires to do our own update of trans_start */ queue =3D netdev_get_tx_queue(dev, txq); @@ -1119,7 +1132,7 @@ static netdev_tx_t tun_net_xmit(struct sk_buff *skb, = struct net_device *dev) drop: atomic_long_inc(&dev->tx_dropped); skb_tx_error(skb); - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); rcu_read_unlock(); return NET_XMIT_DROP; } @@ -1717,6 +1730,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, s= truct tun_file *tfile, u32 rxhash =3D 0; int skb_xdp =3D 1; bool frags =3D tun_napi_frags_enabled(tfile); + int drop_reason =3D SKB_DROP_REASON_NOT_SPECIFIED; =20 if (!(tun->flags & IFF_NO_PI)) { if (len < sizeof(pi)) @@ -1820,9 +1834,10 @@ static ssize_t tun_get_user(struct tun_struct *tun, = struct tun_file *tfile, =20 if (err) { err =3D -EFAULT; + drop_reason =3D SKB_DROP_REASON_SKB_COPY_DATA; drop: atomic_long_inc(&tun->dev->rx_dropped); - kfree_skb(skb); + kfree_skb_reason(skb, drop_reason); if (frags) { tfile->napi.skb =3D NULL; mutex_unlock(&tfile->napi_mutex); @@ -1869,6 +1884,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, s= truct tun_file *tfile, case IFF_TAP: if (frags && !pskb_may_pull(skb, ETH_HLEN)) { err =3D -ENOMEM; + drop_reason =3D SKB_DROP_REASON_SKB_PULL; goto drop; } skb->protocol =3D eth_type_trans(skb, tun->dev); @@ -1922,6 +1938,7 @@ static ssize_t tun_get_user(struct tun_struct *tun, s= truct tun_file *tfile, if (unlikely(!(tun->dev->flags & IFF_UP))) { err =3D -EIO; rcu_read_unlock(); + drop_reason =3D SKB_DROP_REASON_DEV_DOWN; goto drop; } =20 diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h index 16c30d2e20dc..db2ef8e8d878 100644 --- a/include/linux/skbuff.h +++ b/include/linux/skbuff.h @@ -323,8 +323,14 @@ enum skb_drop_reason { SKB_DROP_REASON_SKB_GSO_SEGMENT, SKB_DROP_REASON_SKB_CHECKSUM, SKB_DROP_REASON_SKB_COPY_DATA, + SKB_DROP_REASON_SKB_TRIM, + SKB_DROP_REASON_SKB_ORPHAN_FRAGS, + SKB_DROP_REASON_SKB_PULL, + SKB_DROP_REASON_DEV_NOT_ATTACHED, + SKB_DROP_REASON_DEV_DOWN, SKB_DROP_REASON_PTR_FULL, SKB_DROP_REASON_VIRTNET_HDR, + SKB_DROP_REASON_TAP_RUN_FILTER, SKB_DROP_REASON_MAX, }; =20 diff --git a/include/trace/events/skb.h b/include/trace/events/skb.h index bf1509c31cea..03121373d2f0 100644 --- a/include/trace/events/skb.h +++ b/include/trace/events/skb.h @@ -19,8 +19,14 @@ EM(SKB_DROP_REASON_SKB_GSO_SEGMENT, SKB_GSO_SEGMENT) \ EM(SKB_DROP_REASON_SKB_CHECKSUM, SKB_CHECKSUM) \ EM(SKB_DROP_REASON_SKB_COPY_DATA, SKB_COPY_DATA) \ + EM(SKB_DROP_REASON_SKB_TRIM, SKB_TRIM) \ + EM(SKB_DROP_REASON_SKB_ORPHAN_FRAGS, SKB_ORPHAN_FRAGS) \ + EM(SKB_DROP_REASON_SKB_PULL, SKB_PULL) \ + EM(SKB_DROP_REASON_DEV_NOT_ATTACHED, DEV_NOT_ATTACHED) \ + EM(SKB_DROP_REASON_DEV_DOWN, DEV_DOWN) \ EM(SKB_DROP_REASON_PTR_FULL, PTR_FULL) \ EM(SKB_DROP_REASON_VIRTNET_HDR, VIRTNET_HDR) \ + EM(SKB_DROP_REASON_TAP_RUN_FILTER, TAP_RUN_FILTER) \ EMe(SKB_DROP_REASON_MAX, MAX) =20 #undef EM --=20 2.17.1