From patchwork Wed Apr 18 04:42:13 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900110 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="xQ1/HbAn"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2pV5Bfwz9s3Z for ; Wed, 18 Apr 2018 23:22:10 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753928AbeDRNWI (ORCPT ); Wed, 18 Apr 2018 09:22:08 -0400 Received: from mail-pl0-f67.google.com ([209.85.160.67]:44038 "EHLO mail-pl0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753896AbeDRNWG (ORCPT ); Wed, 18 Apr 2018 09:22:06 -0400 Received: by mail-pl0-f67.google.com with SMTP id s13-v6so1110678plq.11 for ; Wed, 18 Apr 2018 06:22:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FAA28oXYCEJG6N9ulEKYDWLu6uTXFnU0VI555lC514I=; b=xQ1/HbAn3AXymqmh2+mCtpu4f6y/bDghPe7QNDfWxuRWsaw4yUlL+v3tEDVtnN7rtA CFGwyqRosFofUJgHfoM24qahdqhAqtcWsG2Upy/k239jyX8tSNRdwBdRIf8o01FX0hE7 nLhIR3T/2SBoGz8XODScHihZox2ccMI4VSyVrXOkHc/4Jd4me3Xi305iasLuw4AhX6/q 08ENN4KVOq/LygqXXjTGWW7aCA3hd9oCB+v4nN4S3HQq9nhwzfC9Y9La8Grmq77uNcAS TAhmADeGVnyEnC/YaCmNh5f3FwgmqF6oyXjVcvaLcOq5dLchCTCIZfiJLNJjbA8Wx9S2 iJkA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FAA28oXYCEJG6N9ulEKYDWLu6uTXFnU0VI555lC514I=; b=ul6CU4Iwh8L2oU0iVw/mJLr/2r9p69QyqdMce6wQZ4nYR5TvMKWMnm17wLSo/mWcdH SFpNRRZmEHiOe/tPPlVCGvg63YvnA5is1dPCrjmbg3QRl5p5PCvIftWGNtEkeAoAGoCa W5W0gJnpNciDSFnPH2caDzHyVu00yJIpkH7ZK4JISY1C7cWvE8JwKU9n5/86NxAv32Q2 coEqXLcYmsOC6kAyl81Zo1qjjhv5GX3ujJXvX0i/8w96hjn2Q8v+sqX7QrzKpaH5MxH/ P9cNLByaJnOfhnBWSld4KzUuQBZd0s2fp+IBaSPr0M4fhuC9fmgx/bFX4Pj0jlhg/suJ zjIg== X-Gm-Message-State: ALQs6tDmWN+alCwFwA34PtQlwJuwIJ9YKBQUN+GVdzovdhf9nDDhzGP9 k8nSSjYErGNvYy7nuSOmqE8h7w== X-Google-Smtp-Source: AIpwx49nlPXqSbmzRS3puTDFYPKQhq0Rk8/hVfW8zL/X9I4TEz9P1277mKp7+aDvh4A1MNV8uDcANA== X-Received: by 2002:a17:902:b595:: with SMTP id a21-v6mr2115016pls.68.1524057725734; Wed, 18 Apr 2018 06:22:05 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.04 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:05 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 01/11] bpf: adding bpf_xdp_adjust_tail helper Date: Tue, 17 Apr 2018 21:42:13 -0700 Message-Id: <20180418044223.17685-2-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org Adding new bpf helper which would allow us to manipulate xdp's data_end pointer, and allow us to reduce packet's size indended use case: to generate ICMP messages from XDP context, where such message would contain truncated original packet. Signed-off-by: Nikita V. Shirokov Acked-by: Alexei Starovoitov --- include/uapi/linux/bpf.h | 10 +++++++++- net/core/filter.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 37 insertions(+), 2 deletions(-) diff --git a/include/uapi/linux/bpf.h b/include/uapi/linux/bpf.h index c5ec89732a8d..9a2d1a04eb24 100644 --- a/include/uapi/linux/bpf.h +++ b/include/uapi/linux/bpf.h @@ -755,6 +755,13 @@ union bpf_attr { * @addr: pointer to struct sockaddr to bind socket to * @addr_len: length of sockaddr structure * Return: 0 on success or negative error code + * + * int bpf_xdp_adjust_tail(xdp_md, delta) + * Adjust the xdp_md.data_end by delta. Only shrinking of packet's + * size is supported. + * @xdp_md: pointer to xdp_md + * @delta: A negative integer to be added to xdp_md.data_end + * Return: 0 on success or negative on error */ #define __BPF_FUNC_MAPPER(FN) \ FN(unspec), \ @@ -821,7 +828,8 @@ union bpf_attr { FN(msg_apply_bytes), \ FN(msg_cork_bytes), \ FN(msg_pull_data), \ - FN(bind), + FN(bind), \ + FN(xdp_adjust_tail), /* integer value in 'imm' field of BPF_CALL instruction selects which helper * function eBPF program intends to call diff --git a/net/core/filter.c b/net/core/filter.c index a374b8560bc4..29318598fd60 100644 --- a/net/core/filter.c +++ b/net/core/filter.c @@ -2725,6 +2725,30 @@ static const struct bpf_func_proto bpf_xdp_adjust_head_proto = { .arg2_type = ARG_ANYTHING, }; +BPF_CALL_2(bpf_xdp_adjust_tail, struct xdp_buff *, xdp, int, offset) +{ + void *data_end = xdp->data_end + offset; + + /* only shrinking is allowed for now. */ + if (unlikely(offset >= 0)) + return -EINVAL; + + if (unlikely(data_end < xdp->data + ETH_HLEN)) + return -EINVAL; + + xdp->data_end = data_end; + + return 0; +} + +static const struct bpf_func_proto bpf_xdp_adjust_tail_proto = { + .func = bpf_xdp_adjust_tail, + .gpl_only = false, + .ret_type = RET_INTEGER, + .arg1_type = ARG_PTR_TO_CTX, + .arg2_type = ARG_ANYTHING, +}; + BPF_CALL_2(bpf_xdp_adjust_meta, struct xdp_buff *, xdp, int, offset) { void *meta = xdp->data_meta + offset; @@ -3074,7 +3098,8 @@ bool bpf_helper_changes_pkt_data(void *func) func == bpf_l4_csum_replace || func == bpf_xdp_adjust_head || func == bpf_xdp_adjust_meta || - func == bpf_msg_pull_data) + func == bpf_msg_pull_data || + func == bpf_xdp_adjust_tail) return true; return false; @@ -3888,6 +3913,8 @@ xdp_func_proto(enum bpf_func_id func_id, const struct bpf_prog *prog) return &bpf_xdp_redirect_proto; case BPF_FUNC_redirect_map: return &bpf_xdp_redirect_map_proto; + case BPF_FUNC_xdp_adjust_tail: + return &bpf_xdp_adjust_tail_proto; default: return bpf_base_func_proto(func_id); } From patchwork Wed Apr 18 04:42:14 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900120 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="eQvWVpVZ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2qM16tVz9s3X for ; Wed, 18 Apr 2018 23:22:55 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754023AbeDRNWw (ORCPT ); Wed, 18 Apr 2018 09:22:52 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:33516 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753883AbeDRNWH (ORCPT ); Wed, 18 Apr 2018 09:22:07 -0400 Received: by mail-pl0-f66.google.com with SMTP id w12-v6so1124337plp.0 for ; Wed, 18 Apr 2018 06:22:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=/H2BK4DW42sFoTvSuyFM1VzmNSYB3OdbTTfoBnASpMU=; b=eQvWVpVZlXW0Pt5TU9RLCmMYeAfXHeIyFR6upQ2iRrsJvOmIbnKFKV0tDElohxJl74 WARsSzqxJNPJX1J4EOLJ340i1DRBV/Y6f3PlQVm4ZWD4ENjZeT6sUZOGL3AXpIfc/8mv vAuMAntO75kpPYmqV5sXBScpCdDFk7YMArG107FykLkAPgEFme+JNRGMT/BSOR8LMD92 wyMMLFlwOrALQQ5YSTEy+H434pBts4g2sD/fmi4fqtjgvJp7bi5JPlcOPgFTns6hE+ap H4juu3ltlMT/mMURcTz9+V9CnhC0MWsnyqgW6X4rDaNc3NJwvdR4QW/SfZBMf0U2EnNb RgSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=/H2BK4DW42sFoTvSuyFM1VzmNSYB3OdbTTfoBnASpMU=; b=m3CJyX7RQtmuuhF2LHubaL1NRxUQYGmgqJDLR7IUSHQaTpHdNFz2CG6xVSuxdnP+jt wtcbnVDWowBDPplZPj5KZ7PLwwkEZ4I9ZnH1KmY/a5djwbvm4c5MEGyFSok04WuHdhzE rgBMUdZDuf+TNmird4b1auzuozwyIJB0smHJ89ptuKrilNv8etBI2CSMUTynVRB7d/z6 6xcB5jpa7iJbjEhK3l88bs8HA5smrfEpL9J/+s0v87JczPWXpCAcEbhrfbv5UjP97hRC exwN6NyKe2sGw3xBIaIz10WOOg6RkCCQXmBltP9vT5xk7kzta5HitwY8BTYpRLCl0f3t 3QrQ== X-Gm-Message-State: ALQs6tDOT5gyxuJ4qZPJdydR92yYn3P0qp5vTFkJ5ZJcTSZLmogiIBCL VMdnCNc/ZyxivfOVNRNgYclbaA== X-Google-Smtp-Source: AIpwx48Ak0flALVr3tqbGVvblw+4DxeHSOi345RtOCl+u9LuZske4WqBszebdz4kbNke6bVe2LoJWA== X-Received: by 2002:a17:902:f44:: with SMTP id 62-v6mr2119789ply.318.1524057726901; Wed, 18 Apr 2018 06:22:06 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:06 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , "David S. Miller " Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 02/11] bpf: make generic xdp compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:14 -0700 Message-Id: <20180418044223.17685-3-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for generic XDP we need to reflect this packet's length change by adjusting skb's tail pointer Acked-by: Alexei Starovoitov Signed-off-by: Nikita V. Shirokov --- net/core/dev.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/net/core/dev.c b/net/core/dev.c index 969462ebb296..11c789231a03 100644 --- a/net/core/dev.c +++ b/net/core/dev.c @@ -3996,9 +3996,9 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb, struct bpf_prog *xdp_prog) { struct netdev_rx_queue *rxqueue; + void *orig_data, *orig_data_end; u32 metalen, act = XDP_DROP; struct xdp_buff xdp; - void *orig_data; int hlen, off; u32 mac_len; @@ -4037,6 +4037,7 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb, xdp.data_meta = xdp.data; xdp.data_end = xdp.data + hlen; xdp.data_hard_start = skb->data - skb_headroom(skb); + orig_data_end = xdp.data_end; orig_data = xdp.data; rxqueue = netif_get_rxqueue(skb); @@ -4051,6 +4052,13 @@ static u32 netif_receive_generic_xdp(struct sk_buff *skb, __skb_push(skb, -off); skb->mac_header += off; + /* check if bpf_xdp_adjust_tail was used. it can only "shrink" + * pckt. + */ + off = orig_data_end - xdp.data_end; + if (off != 0) + skb_set_tail_pointer(skb, xdp.data_end - xdp.data); + switch (act) { case XDP_REDIRECT: case XDP_TX: From patchwork Wed Apr 18 04:42:15 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900111 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="OiSNf1Oe"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2pY3pYDz9s3X for ; Wed, 18 Apr 2018 23:22:13 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753938AbeDRNWK (ORCPT ); Wed, 18 Apr 2018 09:22:10 -0400 Received: from mail-pl0-f66.google.com ([209.85.160.66]:44043 "EHLO mail-pl0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753896AbeDRNWI (ORCPT ); Wed, 18 Apr 2018 09:22:08 -0400 Received: by mail-pl0-f66.google.com with SMTP id s13-v6so1110751plq.11 for ; Wed, 18 Apr 2018 06:22:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=yc8q9wM99y4+hrl5sGNzNfMhX0TFXYUZmDxyvfemTuU=; b=OiSNf1OelUY/H9azo3BezRmr0U+0PypNdWVq9s1PVgKD3e6eftw68D5ST2Fno6GPjl 9bgLtBBvqeFshIVUUnLadqYunYHBzlaoKklPustSUTGrKxyjoINl3kx/dnSF//d8fBUL 7h4xykhlXnR9WoUKvZzErzjyJ651P1wBlKzn/wBVRvhg4WpsubKUIwltnNExFkpmyFtI yb2/nS4ju4Sgc7YrfRx7C9z9FoPY5CSFv+JK9Npn4suejS0ILsg6fRDC16FYXOtJaPJG IUlXVgp+Py5q7WJFY1TIvw1w0o1VXzP+SN4p4A3CTJHnXSZmVBkJ3u427S5R3OGeKp7F luAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=yc8q9wM99y4+hrl5sGNzNfMhX0TFXYUZmDxyvfemTuU=; b=eeo63nFf/PSPWglgGfJWssR3b5EoZjwPqCTNzc/GxXt39DbtHJ2vKI7gQ+/g35az17 pTMRmPWMAu4He4qarf49AG4mE8QE5owDTGfTBQJ+F1Vs4VGQAv9NQwJteZX4XHUbBkPs BMFdVp+CbcCB1F3QsEnLTOcwgecGSrKTKgv9Cmd8Yq+rKl881avfnD4LBL5Ib6pTZbOF AysBVQAuI5VOuhVOE5T6CyOPprMdy6TZuKbtsybTunDIAXHK03OJ0Sbk7TwR91JFZhOz C3ypOXvxJYsvSdrOK2ActQxNAAo5lQKtWoXY/WIuKODC6bTDhetIQDHgmG/Up1aHWfm/ Q+vA== X-Gm-Message-State: ALQs6tD9q3UmJhVhc9RNKkc4GJkZ3tQ+y4QQtqtfP3dhM/hGFvrb1JNF Pq8NuikORLwuyVHlpIJ2IT9Apg== X-Google-Smtp-Source: AIpwx4+kl8xNih1FXOo33DBzJdyCGOPlploptyOlK6TC+cZol4a6vnJ24K+yqBWmXh0uK1Di/NOvPw== X-Received: by 2002:a17:902:6786:: with SMTP id g6-v6mr2079387plk.362.1524057728012; Wed, 18 Apr 2018 06:22:08 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.06 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:07 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , Tariq Toukan Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 03/11] bpf: make mlx4 compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:15 -0700 Message-Id: <20180418044223.17685-4-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for mlx4 driver we will just calculate packet's length unconditionally (the same way as it's already being done in mlx5) Acked-by: Alexei Starovoitov Acked-by: Tariq Toukan Signed-off-by: Nikita V. Shirokov --- drivers/net/ethernet/mellanox/mlx4/en_rx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/mellanox/mlx4/en_rx.c b/drivers/net/ethernet/mellanox/mlx4/en_rx.c index 5c613c6663da..efc55feddc5c 100644 --- a/drivers/net/ethernet/mellanox/mlx4/en_rx.c +++ b/drivers/net/ethernet/mellanox/mlx4/en_rx.c @@ -775,8 +775,8 @@ int mlx4_en_process_rx_cq(struct net_device *dev, struct mlx4_en_cq *cq, int bud act = bpf_prog_run_xdp(xdp_prog, &xdp); + length = xdp.data_end - xdp.data; if (xdp.data != orig_data) { - length = xdp.data_end - xdp.data; frags[0].page_offset = xdp.data - xdp.data_hard_start; va = xdp.data; From patchwork Wed Apr 18 04:42:16 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900113 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="n69ukp2C"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2pf6gXLz9s3X for ; Wed, 18 Apr 2018 23:22:18 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753971AbeDRNWR (ORCPT ); Wed, 18 Apr 2018 09:22:17 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:38427 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753931AbeDRNWK (ORCPT ); Wed, 18 Apr 2018 09:22:10 -0400 Received: by mail-pl0-f68.google.com with SMTP id c7-v6so1118606plr.5 for ; Wed, 18 Apr 2018 06:22:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=EcJ0VQHbTksTcJeI7dgh22SDvWwNE2GCc4GSEHCkO4s=; b=n69ukp2CkqQvkK1tH8Wd1pZ9tLNJQiGIVr9AVHfavhqpiOS+VedZgrlo9YyuHo5JZI hWs3Qo+g1pkCb9nwXJT5TF/9IyP/ZoAd2I28orHm4RYA4ai7+bqG93KDn4by2Wj7H5eo NLzhPSrvNBJ9W5bOQHD3nKfQGq8OSO+EpDcrW7Agpp4nTWPkUa1YGwRTzk1NXFHNR95W aQhEHyf6sqcpr/nBWB3q6AaHXLkpd8YY91s/M4pmR2Zfb8t3EUC7QcpxBP05PCnJ3zTS e6y+oMmcDsoBwG5AWP25a2Bsvay/VW5IsZumOoN11LfFdcXiUYqGRbmyJ2VdFgh3pc9t 90ug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=EcJ0VQHbTksTcJeI7dgh22SDvWwNE2GCc4GSEHCkO4s=; b=e7boAx+wGJSX1tU0xNVtqLE3S/CFGAXEcT4K8naD1cGkTnmW1MfIn9XQGwgRtdsExf 59pc9FVO+cSzoG6pmayrV56Au4TgcPtAFJ74P82VqGfxqughKaSRvh+GiUkNsBT2unZv Mtw+GwuVHOmqHxeAjva6zSL2fQWOHg4n9kQvSw8KFbdrpy5k5y8UOVMvLCTZ36tVU7ZS 1h9w6Tn2+wjiGP786SuO9d3fqlSmbeFQLyxilfubVhWNN/ZWBhGw5SvtlB6fVXqP2zaP EhSNAvtTbJe/AePf3DuoWsgjeuIGWTvMoPU62JMe5V82wHsqEqGa5fbqq+Fw//7ClxLe 68mQ== X-Gm-Message-State: ALQs6tBTQX9G0GXzxxrex2U5yw4MwQE3pQ/1HkCyJgsgeM9URwlfNTEI aEI5avFR1Pp5DY3w/Vs9TFkoxQ== X-Google-Smtp-Source: AIpwx48ZQvQaTAjmYejBSXz1iIxoZw48rbl7/ZRT/vv5MfukUNrcvFKvIwUBJYmP/6Fj6tLvezw3Iw== X-Received: by 2002:a17:902:33a5:: with SMTP id b34-v6mr2125362plc.232.1524057729128; Wed, 18 Apr 2018 06:22:09 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.08 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:08 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , Michael Chan Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 04/11] bpf: make bnxt compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:16 -0700 Message-Id: <20180418044223.17685-5-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for bnxt driver we will just calculate packet's length unconditionally Acked-by: Alexei Starovoitov Signed-off-by: Nikita V. Shirokov Acked-by: Michael Chan --- drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c index 1389ab5e05df..1f0e872d0667 100644 --- a/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c +++ b/drivers/net/ethernet/broadcom/bnxt/bnxt_xdp.c @@ -113,10 +113,10 @@ bool bnxt_rx_xdp(struct bnxt *bp, struct bnxt_rx_ring_info *rxr, u16 cons, if (tx_avail != bp->tx_ring_size) *event &= ~BNXT_RX_EVENT; + *len = xdp.data_end - xdp.data; if (orig_data != xdp.data) { offset = xdp.data - xdp.data_hard_start; *data_ptr = xdp.data_hard_start + offset; - *len = xdp.data_end - xdp.data; } switch (act) { case XDP_PASS: From patchwork Wed Apr 18 04:42:17 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900117 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="EhrTGS+r"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2py6CRkz9s3Z for ; Wed, 18 Apr 2018 23:22:34 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753958AbeDRNWP (ORCPT ); Wed, 18 Apr 2018 09:22:15 -0400 Received: from mail-pl0-f65.google.com ([209.85.160.65]:42247 "EHLO mail-pl0-f65.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753941AbeDRNWK (ORCPT ); Wed, 18 Apr 2018 09:22:10 -0400 Received: by mail-pl0-f65.google.com with SMTP id t20-v6so1113420ply.9 for ; Wed, 18 Apr 2018 06:22:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=9FFHkY9pro3dHmD2nlEGULbrgXkiWMw844ba2jEjRlk=; b=EhrTGS+rfQi2YV6xmlco6ILtRkcL2WhuP4tufKuoBtYjR0tut8P8+cimT06Q1wrl26 3N79I9zBPPIAq1aOCmdvxdvLaP+uOxt0c3/XEZo2aM4EdBF48iX7LPzsPmjzejLbtCeQ pb0tWSYPaS+gpF+sIjaGDy6qGmfkvQIhx2hqG8fWZjCfC/3Hi0/4DPI0b3Tqvhg3EAgy tbvpLM4FSr29o2/ylWiMtjbeS681xlQxyG7GoAc+8mDlX2GbPg4k+ueBmnflpAhkDhmC JGTi1uEaBDNAmg5kjSIiLdaMFLUlQgpXWKygwdEPItPq+Urxp7Tk0y0JDxzr14qQ0PKi /CRQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=9FFHkY9pro3dHmD2nlEGULbrgXkiWMw844ba2jEjRlk=; b=Yoz+NovXeMm+KeNhCDyUzgkQbwSDVe16eDhS6Z5qgH4FgOSRDcOVRMFnhotmSbgxR8 RrtUkTHSv937LgV/4pMbbheTudDb0YM47CpWtWYxCTbWEvCO+MF/5DVTHqrquWgMG2NH kFQd3AoGyJi0myfdGCOgcwbTUe75BqSMSf7UuFFaW73el4WvbDRAdt6DJSc6PU6Z1Db/ dlH2sjm4R7RLJvxWJrtx8Uqgyqego/m1pEtm0Vz602GLPSUc1xHKkrrCP4kJfKaPNAHJ xZainaX1RerrriPIAZKmfZn9Pjt41PghscMvZ4o12LXr62disPBt/gCQdKxJuI63WwLs Y5Jg== X-Gm-Message-State: ALQs6tAullu1Lfl61eU6xTBukodhCzO2ybEfsf1n7Ls2T2R2+rbYkYhp 1woo66RTP0t31fXdzy8NhDtQzg== X-Google-Smtp-Source: AIpwx4+8vy4eUHnzBe6xY7+C/CiHyix3Nq4Ds/KzMxF7vqBOROMdMqLPGOf6UYm3x50UOjK8Vx+UkA== X-Received: by 2002:a17:902:b212:: with SMTP id t18-v6mr2062336plr.137.1524057730277; Wed, 18 Apr 2018 06:22:10 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.09 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:09 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , Robert Richter , Sunil Goutham Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 05/11] bpf: make cavium thunder compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:17 -0700 Message-Id: <20180418044223.17685-6-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for cavium's thunder driver we will just calculate packet's length unconditionally Acked-by: Alexei Starovoitov Signed-off-by: Nikita V. Shirokov --- drivers/net/ethernet/cavium/thunder/nicvf_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/cavium/thunder/nicvf_main.c b/drivers/net/ethernet/cavium/thunder/nicvf_main.c index 707db3304396..7135db45927e 100644 --- a/drivers/net/ethernet/cavium/thunder/nicvf_main.c +++ b/drivers/net/ethernet/cavium/thunder/nicvf_main.c @@ -538,9 +538,9 @@ static inline bool nicvf_xdp_rx(struct nicvf *nic, struct bpf_prog *prog, action = bpf_prog_run_xdp(prog, &xdp); rcu_read_unlock(); + len = xdp.data_end - xdp.data; /* Check if XDP program has changed headers */ if (orig_data != xdp.data) { - len = xdp.data_end - xdp.data; offset = orig_data - xdp.data; dma_addr -= offset; } From patchwork Wed Apr 18 04:42:18 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900112 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="Osyb2Xwa"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2pc5c4Pz9s3X for ; Wed, 18 Apr 2018 23:22:16 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753950AbeDRNWO (ORCPT ); Wed, 18 Apr 2018 09:22:14 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:40463 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753896AbeDRNWL (ORCPT ); Wed, 18 Apr 2018 09:22:11 -0400 Received: by mail-pl0-f68.google.com with SMTP id t22-v6so1115840plo.7 for ; Wed, 18 Apr 2018 06:22:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=I/2pAhWUdF/wOdcAqAOQ45Y2kOEZFr9kRnkPKBTYKuw=; b=Osyb2XwaAJKlufJXe9nXZW35QW7kjZl55uV8w5JZRUHy1KyPTZQdpiRLnzeoVrN3bp C4aU11Qj7QlWoyOP/+6qxVAzkOnpTV8iqAPkeyTKMhjLngHeoSGHemutyGRp9m8WuimQ 8RZJfPfP8S/ELsM9a3SmTnHTN5boIxvGMQLDw2UbHH7xjGzG8iEQ2m/ELeReP8rgOW4h YheGpeI8HtbDXW/d9upAvoeuelZVoz+qMsyvV3IPnJWbnS/xdaon4kOYIFEZmPYtqflH d5HfB3A7RgP3KnC42rBkP3UPvLs3Nv3jg0wpEVcRtQsIgeKkP5g1qd/YR2ZhA1Rc5BwJ /nQA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=I/2pAhWUdF/wOdcAqAOQ45Y2kOEZFr9kRnkPKBTYKuw=; b=MjvG19JQE6ZzN71xwKIlgmj5BfUpS59x7zdzZVCMm/3B2YYMM+DM27f+lzm5cF+zkr MWwu11LdHW2LcFzkUpDNXYxIBol52EFQwh2wFKQ8vjqucSRXyNMrEACtrpxADwdsggkQ gIh4xfQgkYiExTDdRbstP42i3GqDKukfKMdWq/yZfwaN/cAFM4vyhLEHPkDas89OWpP7 3lEt+GMgfJYRP/5Hd88tvQiHtzCpD+zLwfO97yDC5RNYWq1fOUpzb/gYW+IkuyvPNACc srkPEQcewIq4cPA6ZAqHHSMsUrP5IENNoSahFCIDtrNtQ2w5zD1KlFScFqCjMfENh+r4 3xww== X-Gm-Message-State: ALQs6tBOdN9XLpEZHPAUMvpcsfTFZAM7QyHk+qyoE44Oqf49HAc+gCF8 ek66wPbGYL79t1Pta6jAv59IHA== X-Google-Smtp-Source: AIpwx4/AqbWGzMKtIHtTIVANorE7c/vKdeOf1KJueWvAIZgx/4ZgPGVj6BVKf8BptEoAbQq7xiiWnA== X-Received: by 2002:a17:902:2c83:: with SMTP id n3-v6mr2097840plb.140.1524057731404; Wed, 18 Apr 2018 06:22:11 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:10 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , Jakub Kicinski Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 06/11] bpf: make netronome nfp compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:18 -0700 Message-Id: <20180418044223.17685-7-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for nfp driver we will just calculate packet's length unconditionally Acked-by: Alexei Starovoitov Acked-by: Jakub Kicinski Signed-off-by: Nikita V. Shirokov --- drivers/net/ethernet/netronome/nfp/nfp_net_common.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c index 1eb6549f2a54..d9111c077699 100644 --- a/drivers/net/ethernet/netronome/nfp/nfp_net_common.c +++ b/drivers/net/ethernet/netronome/nfp/nfp_net_common.c @@ -1722,7 +1722,7 @@ static int nfp_net_rx(struct nfp_net_rx_ring *rx_ring, int budget) act = bpf_prog_run_xdp(xdp_prog, &xdp); - pkt_len -= xdp.data - orig_data; + pkt_len = xdp.data_end - xdp.data; pkt_off += xdp.data - orig_data; switch (act) { From patchwork Wed Apr 18 04:42:19 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900119 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="RtUhb9kF"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2qD12h3z9s3X for ; Wed, 18 Apr 2018 23:22:48 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754015AbeDRNWq (ORCPT ); Wed, 18 Apr 2018 09:22:46 -0400 Received: from mail-pf0-f195.google.com ([209.85.192.195]:38086 "EHLO mail-pf0-f195.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753942AbeDRNWN (ORCPT ); Wed, 18 Apr 2018 09:22:13 -0400 Received: by mail-pf0-f195.google.com with SMTP id y69so910428pfb.5 for ; Wed, 18 Apr 2018 06:22:13 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jTRdjXz4vtVjejIy8MDHGwyf66unvynocXi8pD/AiqI=; b=RtUhb9kF7FkXmDj+g+MwQYWwMW6hJvd93PUH5FrbhtwblflyRmEWdorDFzHgoyN2ef slXUy+zMRfzyZyupJWwvMhrJs/PPV8wzS2pMU+SHi+yI9zHb4qLBMxncV7sSeiwEGKLq l1NlVusBzGAJxb22assnA2K3SmKpaGJU+mJjc/JsWr62LnZjyEeZXs2CHH0u5oUZwazH BEi8fcndh8Z3pIUHkjbSlxV8XNEXNGe4yKqXWv3yhBl7KG42J4VNFK7UTurr+dWPDGJm dHg1liecAGEQceWO0LOuGLIRvXjp6LHLoXm4hU1SK4VjWwATu3lsapNC17SjZ3aODb5l sOZw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=jTRdjXz4vtVjejIy8MDHGwyf66unvynocXi8pD/AiqI=; b=fmJGqnAzhVSgR83ACOJJMjbcUaVX23LLg1UPB/v0TLTyBxpkF4AKPTM39iPbATLcEF tFc4C0vYcif9oEy0j6J3V/lY3JeOb13FQx1FfD5X2/pJvyIAYlOJMBQFFJRc7bJwteYv VJDdIYGxWx1ZSbsTNT1IvDOcy/8BLFFoXefGNexxKTT+D890UH47XvYv834JXBLUSPvm 7cK1U317bhyjDuRPqmgiMsZihloySdYoOrYXyzmxMLqBg7+qMuvW5lbLuakbb8T7Ulf1 DdKIGGktwJ9D7O2VJns4J5HMTziVayw28EIGg40YWsB+TZ1vyXsP8Tykt8+7L58uyFQF DBMA== X-Gm-Message-State: ALQs6tBu3nCKJI8fvjcUP4A0oKKqpC8jarmIZYpdyWbpV83r2BpE3QVA Jek0Tu3luyZY1vuscNeG5ocWdQ== X-Google-Smtp-Source: AIpwx481aoD8v+6GSqBvlpUewJ1J633ehodi4Sn1CgYM2FZkP7RLo6aCclk5pcTZRrFZ7qHnX9v3bw== X-Received: by 10.98.217.88 with SMTP id s85mr2034604pfg.20.1524057732624; Wed, 18 Apr 2018 06:22:12 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.11 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:12 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , Jason Wang , "David S. Miller" , "Michael S. Tsirkin" Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 07/11] bpf: make tun compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:19 -0700 Message-Id: <20180418044223.17685-8-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for tun driver we need to adjust XDP_PASS handling by recalculating length of the packet if it was passed to the TCP/IP stack (in case if after xdp's prog run data_end pointer was adjusted) Reviewed-by: Jason Wang Signed-off-by: Nikita V. Shirokov Acked-by: Michael S. Tsirkin --- drivers/net/tun.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 1e58be152d5c..901351a6ed21 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -1696,6 +1696,7 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun, return NULL; case XDP_PASS: delta = orig_data - xdp.data; + len = xdp.data_end - xdp.data; break; default: bpf_warn_invalid_xdp_action(act); @@ -1716,7 +1717,7 @@ static struct sk_buff *tun_build_skb(struct tun_struct *tun, } skb_reserve(skb, pad - delta); - skb_put(skb, len + delta); + skb_put(skb, len); get_page(alloc_frag->page); alloc_frag->offset += buflen; From patchwork Wed Apr 18 04:42:20 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900114 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="O7SZvUBm"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2ph30Swz9s4s for ; Wed, 18 Apr 2018 23:22:20 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753990AbeDRNWS (ORCPT ); Wed, 18 Apr 2018 09:22:18 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:38437 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753170AbeDRNWO (ORCPT ); Wed, 18 Apr 2018 09:22:14 -0400 Received: by mail-pl0-f68.google.com with SMTP id c7-v6so1118725plr.5 for ; Wed, 18 Apr 2018 06:22:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZuuVerOlUma3in/uqLFo7CeRJ+N5zRkmbaycMJUzg/E=; b=O7SZvUBmdtbtx4wg9Vj652mlly3Bud3/TsEBS3N78Xw4ThQEzjwMLSFtAOk64wNYRh BTvmxqirtGWE+ehpQtQoqOjANwgZb5X5pSCkDAxMN5ADrfHO6BpY5ITVvyQqsAXWJ2Op 6YMBUoTGoVImvsBGW61cUxmq7GKUZRR7m3SugiQavrhLFcIsLQkAfbzPRdSr0cz6wdoY 6tdb+ogkp2mzp4p+anc3agwDicep6uZ0wQ7w4uealXGfNebCOW3/n+14lqQpq7/1Pksy 2WsU3qP/THE1IPek/mS8WjPM2XixQbbbV+5D3dxFOJtHjKAqrYzc7SnD0DELgXpW3Bpl pgWg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ZuuVerOlUma3in/uqLFo7CeRJ+N5zRkmbaycMJUzg/E=; b=oAvOrrvw9EDhKypvM++jQH/WEwe76wED3mQAOBbX2dZV1vsQ+S2YGRYqX8tl7W0zac +s2dIZjEW1+74kNWPAaajEbGdmjJHYpqhFIAFyI2luq3NdxgKcqG3iLZm8dIWjUCmxcd pDqHp4K7YNWGiLz8Q0UQfgk6ldcSdHlmtb1abaT6zwIJjtzZSinXgWNi9GKwuvfHY1sM mS1zMuWVir3mA7KktRHvgd3HZQ6AWOlhSQPrcBEaL++MxPb/nl/VrxyxURn8bQQUG3b/ QFClMDTz+sw9LYJ/B8dkJSo4HZquY3AUowh4pvsE+QyC0pIRU2jIHh2flothjdW8fsC4 hAZQ== X-Gm-Message-State: ALQs6tBB55Yxy/cEWVP25X/10CazwdG0mjnDOT54Cmf3WW/DbugYUlF7 aTBYyrwNleMco7hm/rnY28MCr1JuKH1baQ== X-Google-Smtp-Source: AIpwx48MIldf7PaCO3ztLBlV/jG0BbMlPXnZ5FwkeQ5dxf4m+KZgKzK3kCtnOVuGynL79qaNlAYPrQ== X-Received: by 2002:a17:902:988d:: with SMTP id s13-v6mr2044094plp.30.1524057733823; Wed, 18 Apr 2018 06:22:13 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.12 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:13 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann , "Michael S. Tsirkin mst @ redhat . com , Jason Wang " Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 08/11] bpf: make virtio compatible w/ bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:20 -0700 Message-Id: <20180418044223.17685-9-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org w/ bpf_xdp_adjust_tail helper xdp's data_end pointer could be changed as well (only "decrease" of pointer's location is going to be supported). changing of this pointer will change packet's size. for virtio driver we need to adjust XDP_PASS handling by recalculating length of the packet if it was passed to the TCP/IP stack Reviewed-by: Jason Wang Signed-off-by: Nikita V. Shirokov --- drivers/net/virtio_net.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/drivers/net/virtio_net.c b/drivers/net/virtio_net.c index 01694e26f03e..779a4f798522 100644 --- a/drivers/net/virtio_net.c +++ b/drivers/net/virtio_net.c @@ -606,6 +606,7 @@ static struct sk_buff *receive_small(struct net_device *dev, case XDP_PASS: /* Recalculate length in case bpf program changed it */ delta = orig_data - xdp.data; + len = xdp.data_end - xdp.data; break; case XDP_TX: xdpf = convert_to_xdp_frame(&xdp); @@ -642,7 +643,7 @@ static struct sk_buff *receive_small(struct net_device *dev, goto err; } skb_reserve(skb, headroom - delta); - skb_put(skb, len + delta); + skb_put(skb, len); if (!delta) { buf += header_offset; memcpy(skb_vnet_hdr(skb), buf, vi->hdr_len); @@ -757,6 +758,10 @@ static struct sk_buff *receive_mergeable(struct net_device *dev, offset = xdp.data - page_address(xdp_page) - vi->hdr_len; + /* recalculate len if xdp.data or xdp.data_end were + * adjusted + */ + len = xdp.data_end - xdp.data; /* We can only create skb based on xdp_page. */ if (unlikely(xdp_page != page)) { rcu_read_unlock(); From patchwork Wed Apr 18 04:42:21 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900118 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="ru8mToyG"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2q41ydjz9s3Z for ; Wed, 18 Apr 2018 23:22:40 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754009AbeDRNWh (ORCPT ); Wed, 18 Apr 2018 09:22:37 -0400 Received: from mail-pf0-f194.google.com ([209.85.192.194]:38934 "EHLO mail-pf0-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753896AbeDRNWP (ORCPT ); Wed, 18 Apr 2018 09:22:15 -0400 Received: by mail-pf0-f194.google.com with SMTP id z9so909210pfe.6 for ; Wed, 18 Apr 2018 06:22:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Px4lY6VCLcLcPQ9Q1D2LLYmu0BIVNiM53ae/JWp7E3g=; b=ru8mToyGwQDP/tt5TbO39gsVuUQk0pKZxaJyaxF7jHpdAoYzxnErXgfgywy+cUap/z 2SARpskYhtGIbIe3qL6FhoxaufcEdBSvbc9mmdw7ibU110SfmyrcMkZnbLV1riT89QYI 3YUis88vjEl7ExO+Oj7fwUh9mSg4mAUxiKffy/ZWe20dKV+63lMuLdluy4ISHZ03bdI3 pJ+I1dIsbsYePF19l2SgSRnpuKnr0hR/eQEEYtDDl3Rz+aUbk0Ze7Ssnpp/RyIROVazR UKtAnKJLsH57thoxA0vfimtmMSiD4VNYxy5ah3w3fGOZwtvx7bzCd0ZzW1x7TYFR4uNv uX9A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=Px4lY6VCLcLcPQ9Q1D2LLYmu0BIVNiM53ae/JWp7E3g=; b=fs0TAO9PFPkqh5ijIcxqSp8XuvCWEyX+ka9XiLdbxcIaSOIGz5mTZij8SNWX0dfbh/ YHiXHr1RVCEF6iByrS/C4lVyKiueQP5RC+Nqo61HSHjtEPaJcRB6lFIkOJ8QQgzimi4R qilkkwA+e9H94TYgDBwKE7iCBLCIigLrTrvc4wr0LrHXUebFX7x8UGxpfQYt48pEoTWt 4urYOla1fFzYwBHTBIml32L28rHiMJ/zPov403MF9RSfGyLrBcFj9lEewRBTEBhYtnYN r+sea/Z2SJEX1G40ZE5uitPn8aZ5UXHKmv9LS0UmD8KMcDQl85Ou+ZCcxn4gR9HMpRuf QDmg== X-Gm-Message-State: ALQs6tC+2Qwekr6L9PIkrMWu5cr6K9TgcfLqL5V4kuay98Be5UdIs1pN VzVBZ0Qvhz2cyGb/eARnEAXuqG/IqpGy+g== X-Google-Smtp-Source: AIpwx4+ZX4/OkQEE9jzKlNJb6+kXNLdP6qrNSxuuaqyddXugn8Q5F1Og1QnO3qozMi3T+TSZPGehoA== X-Received: by 10.98.245.139 with SMTP id b11mr1743555pfm.113.1524057734794; Wed, 18 Apr 2018 06:22:14 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:14 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 09/11] bpf: making bpf_prog_test run aware of possible data_end ptr change Date: Tue, 17 Apr 2018 21:42:21 -0700 Message-Id: <20180418044223.17685-10-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org after introduction of bpf_xdp_adjust_tail helper packet length could be changed not only if xdp->data pointer has been changed but xdp->data_end as well. making bpf_prog_test_run aware of this possibility Signed-off-by: Nikita V. Shirokov --- net/bpf/test_run.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/net/bpf/test_run.c b/net/bpf/test_run.c index 2ced48662c1f..68c3578343b4 100644 --- a/net/bpf/test_run.c +++ b/net/bpf/test_run.c @@ -170,7 +170,8 @@ int bpf_prog_test_run_xdp(struct bpf_prog *prog, const union bpf_attr *kattr, xdp.rxq = &rxqueue->xdp_rxq; retval = bpf_test_run(prog, &xdp, repeat, &duration); - if (xdp.data != data + XDP_PACKET_HEADROOM + NET_IP_ALIGN) + if (xdp.data != data + XDP_PACKET_HEADROOM + NET_IP_ALIGN || + xdp.data_end != xdp.data + size) size = xdp.data_end - xdp.data; ret = bpf_test_finish(kattr, uattr, xdp.data, size, retval, duration); kfree(data); From patchwork Wed Apr 18 04:42:22 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900115 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="1xp6Pv9R"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2pj4YSbz9s3X for ; Wed, 18 Apr 2018 23:22:21 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753997AbeDRNWT (ORCPT ); Wed, 18 Apr 2018 09:22:19 -0400 Received: from mail-pl0-f68.google.com ([209.85.160.68]:45811 "EHLO mail-pl0-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753960AbeDRNWQ (ORCPT ); Wed, 18 Apr 2018 09:22:16 -0400 Received: by mail-pl0-f68.google.com with SMTP id k9-v6so1110268pll.12 for ; Wed, 18 Apr 2018 06:22:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3ml+V/en66JyX2P1+R+SKjPx5QR4xRtgr1c4Fqr5LUk=; b=1xp6Pv9R2cCzPcc7WncejKgzBdm6FUvWuG3MXUBfI+yvrpjGBxjkKD4HsFyEMx6ape H1/3wok3+29fBKZM7XK82adzhIJVlaGRFJU6wzThgHYgPUZQW+Rt7KzeK164zeomv+B1 G0ieI2NG/77UqDZKS4udDVp337GlNax5hTrhIoqZiBO7Y4AKxtnAvX3LfDCTtUKDHZ+I v++PDUSg7dSbSy3kiP1jwPt225n9QybMuzur9DhaEFVQX2J660yqBJS5R2hMIR8cnECj p7Q/sRJQ6oG+Hm+RTq46aPUVL7LSMTQs0sy/izzXGMVuBesgzecz3HpTKxgKvUp3utJm kOFA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3ml+V/en66JyX2P1+R+SKjPx5QR4xRtgr1c4Fqr5LUk=; b=GR+Ip/gBVNfjHM7ey/trs2ZTlBPaoD23sl0ckcRqEeMXcqHBJ4qDOScrHD93l3ADUd kMsu+xC9b6SxPdmGjSgu2SaszvaoBNT0oLRc8nQO3zOplPcPtfVcFFxWcG1Z+tL+qGkb uM8GQ3JJqQxrR4nK8bzqQrMbix0na0Ls0NzrCbtjgBz99RJE9UmiiVQ5JMegXX9wSov5 tIHROCJ6fz5Z9ODNi2xiQCLAqT6gv1H3X+vxDO2SqGq2PtIesBOk+7cmfazq6gCiWd33 VdvL/t2nT1q0DXMLN8IZ746EfVEfqVSl5pO8zrp8+DgvxqON1xNiHwO2rVtjxO4Oynsd 79Mg== X-Gm-Message-State: ALQs6tAn7m8QjnlKfsm+15BPDRdjoi7QhiRAaOTYnv4/FBlGIg2so4Dk wJN2ImQRvHe+cZ2vMEr+S+E0rA== X-Google-Smtp-Source: AIpwx4+1eNxXx4unsJBwARdxJIRH9PciRNSC3WjAEzA0Yvsa5dRak2rWbmy1mOl/JU2LPGMFMWoIPA== X-Received: by 2002:a17:902:2863:: with SMTP id e90-v6mr2108099plb.58.1524057735805; Wed, 18 Apr 2018 06:22:15 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:15 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 10/11] bpf: adding tests for bpf_xdp_adjust_tail Date: Tue, 17 Apr 2018 21:42:22 -0700 Message-Id: <20180418044223.17685-11-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org adding selftests for bpf_xdp_adjust_tail helper. in this synthetic test we are testing that 1) if data_end < data helper will return EINVAL 2) for normal use case packet's length would be reduced. Signed-off-by: Nikita V. Shirokov --- tools/include/uapi/linux/bpf.h | 10 +++++++- tools/testing/selftests/bpf/Makefile | 2 +- tools/testing/selftests/bpf/bpf_helpers.h | 3 +++ tools/testing/selftests/bpf/test_adjust_tail.c | 30 ++++++++++++++++++++++++ tools/testing/selftests/bpf/test_progs.c | 32 ++++++++++++++++++++++++++ 5 files changed, 75 insertions(+), 2 deletions(-) create mode 100644 tools/testing/selftests/bpf/test_adjust_tail.c diff --git a/tools/include/uapi/linux/bpf.h b/tools/include/uapi/linux/bpf.h index 9d07465023a2..56bf493ba7ed 100644 --- a/tools/include/uapi/linux/bpf.h +++ b/tools/include/uapi/linux/bpf.h @@ -755,6 +755,13 @@ union bpf_attr { * @addr: pointer to struct sockaddr to bind socket to * @addr_len: length of sockaddr structure * Return: 0 on success or negative error code + * + * int bpf_xdp_adjust_tail(xdp_md, delta) + * Adjust the xdp_md.data_end by delta. Only shrinking of packet's + * size is supported. + * @xdp_md: pointer to xdp_md + * @delta: A negative integer to be added to xdp_md.data_end + * Return: 0 on success or negative on error */ #define __BPF_FUNC_MAPPER(FN) \ FN(unspec), \ @@ -821,7 +828,8 @@ union bpf_attr { FN(msg_apply_bytes), \ FN(msg_cork_bytes), \ FN(msg_pull_data), \ - FN(bind), + FN(bind), \ + FN(xdp_adjust_tail), /* integer value in 'imm' field of BPF_CALL instruction selects which helper * function eBPF program intends to call diff --git a/tools/testing/selftests/bpf/Makefile b/tools/testing/selftests/bpf/Makefile index 0a315ddabbf4..3e819dc70bee 100644 --- a/tools/testing/selftests/bpf/Makefile +++ b/tools/testing/selftests/bpf/Makefile @@ -31,7 +31,7 @@ TEST_GEN_FILES = test_pkt_access.o test_xdp.o test_l4lb.o test_tcp_estats.o test sockmap_verdict_prog.o dev_cgroup.o sample_ret0.o test_tracepoint.o \ test_l4lb_noinline.o test_xdp_noinline.o test_stacktrace_map.o \ sample_map_ret0.o test_tcpbpf_kern.o test_stacktrace_build_id.o \ - sockmap_tcp_msg_prog.o connect4_prog.o connect6_prog.o + sockmap_tcp_msg_prog.o connect4_prog.o connect6_prog.o test_adjust_tail.o # Order correspond to 'make run_tests' order TEST_PROGS := test_kmod.sh \ diff --git a/tools/testing/selftests/bpf/bpf_helpers.h b/tools/testing/selftests/bpf/bpf_helpers.h index d8223d99f96d..50c607014b22 100644 --- a/tools/testing/selftests/bpf/bpf_helpers.h +++ b/tools/testing/selftests/bpf/bpf_helpers.h @@ -96,6 +96,9 @@ static int (*bpf_msg_pull_data)(void *ctx, int start, int end, int flags) = (void *) BPF_FUNC_msg_pull_data; static int (*bpf_bind)(void *ctx, void *addr, int addr_len) = (void *) BPF_FUNC_bind; +static int (*bpf_xdp_adjust_tail)(void *ctx, int offset) = + (void *) BPF_FUNC_xdp_adjust_tail; + /* llvm builtin functions that eBPF C program may use to * emit BPF_LD_ABS and BPF_LD_IND instructions diff --git a/tools/testing/selftests/bpf/test_adjust_tail.c b/tools/testing/selftests/bpf/test_adjust_tail.c new file mode 100644 index 000000000000..4cd5e860c903 --- /dev/null +++ b/tools/testing/selftests/bpf/test_adjust_tail.c @@ -0,0 +1,30 @@ +/* SPDX-License-Identifier: GPL-2.0 + * Copyright (c) 2018 Facebook + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + */ +#include +#include +#include "bpf_helpers.h" + +int _version SEC("version") = 1; + +SEC("xdp_adjust_tail") +int _xdp_adjust_tail(struct xdp_md *xdp) +{ + void *data_end = (void *)(long)xdp->data_end; + void *data = (void *)(long)xdp->data; + int offset = 0; + + if (data_end - data == 54) + offset = 256; + else + offset = 20; + if (bpf_xdp_adjust_tail(xdp, 0 - offset)) + return XDP_DROP; + return XDP_TX; +} + +char _license[] SEC("license") = "GPL"; diff --git a/tools/testing/selftests/bpf/test_progs.c b/tools/testing/selftests/bpf/test_progs.c index faadbe233966..eedda98d7bb1 100644 --- a/tools/testing/selftests/bpf/test_progs.c +++ b/tools/testing/selftests/bpf/test_progs.c @@ -166,6 +166,37 @@ static void test_xdp(void) bpf_object__close(obj); } +static void test_xdp_adjust_tail(void) +{ + const char *file = "./test_adjust_tail.o"; + struct bpf_object *obj; + char buf[128]; + __u32 duration, retval, size; + int err, prog_fd; + + err = bpf_prog_load(file, BPF_PROG_TYPE_XDP, &obj, &prog_fd); + if (err) { + error_cnt++; + return; + } + + err = bpf_prog_test_run(prog_fd, 1, &pkt_v4, sizeof(pkt_v4), + buf, &size, &retval, &duration); + + CHECK(err || errno || retval != XDP_DROP, + "ipv4", "err %d errno %d retval %d size %d\n", + err, errno, retval, size); + + err = bpf_prog_test_run(prog_fd, 1, &pkt_v6, sizeof(pkt_v6), + buf, &size, &retval, &duration); + CHECK(err || errno || retval != XDP_TX || size != 54, + "ipv6", "err %d errno %d retval %d size %d\n", + err, errno, retval, size); + bpf_object__close(obj); +} + + + #define MAGIC_VAL 0x1234 #define NUM_ITER 100000 #define VIP_NUM 5 @@ -1177,6 +1208,7 @@ int main(void) { test_pkt_access(); test_xdp(); + test_xdp_adjust_tail(); test_l4lb_all(); test_xdp_noinline(); test_tcp_estats(); From patchwork Wed Apr 18 04:42:23 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Nikita V. Shirokov" X-Patchwork-Id: 900116 X-Patchwork-Delegate: bpf@iogearbox.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=tehnerd.com Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; unprotected) header.d=tehnerd-com.20150623.gappssmtp.com header.i=@tehnerd-com.20150623.gappssmtp.com header.b="a5NDnG9P"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 40R2ps11tbz9s3X for ; Wed, 18 Apr 2018 23:22:29 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754003AbeDRNW1 (ORCPT ); Wed, 18 Apr 2018 09:22:27 -0400 Received: from mail-pg0-f46.google.com ([74.125.83.46]:37257 "EHLO mail-pg0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753931AbeDRNWR (ORCPT ); Wed, 18 Apr 2018 09:22:17 -0400 Received: by mail-pg0-f46.google.com with SMTP id r14so864767pgq.4 for ; Wed, 18 Apr 2018 06:22:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tehnerd-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=7clFN7aw2KsyNyDu5HvOpSqJu+Mnb1JKyEGbtS3r1Jk=; b=a5NDnG9PD52xKxcgY1dQ3VVZLdyHU8PNslD+TF6wzNlVlp+z2CKiqLavV8IQFMrzdy jEtfHhcTBlDVxVK09qi5RPvoU9HKvDSQ3hXADzRM5lUL8hmkjrRGRHdmFm50WoldinRa K/pNTjbJjNbJRy16YjI8RVCsGmpV8BTH1s7KS+9Z/pVhU3GWaYD702dvTxDd+0OYzIGv uYPOq5v08bdJuwIesXQpZFJ4xhFdeR5GL+xD3jCoquc+MjxlNR4ytTD8k+ZmNgayUsjQ g8UcEZWv6Zj9GWdUX16Q5Iogk8VFp/ti0zWkvmORX417O8Bb5Z9knhIHcNNbJjcjmHva wkEQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=7clFN7aw2KsyNyDu5HvOpSqJu+Mnb1JKyEGbtS3r1Jk=; b=j60MR+H+i/rhLGPc/yl16gr7ivj+kqgg9ByUCFvMs3653b0u444t1xKuNfgNYXT+p1 DZi1KyV7wviZeGSxf+ou6XSWTPggy/X1oo9PZ9XI85XTicHwgmvUIhWBDd5XzBxzGaDU Bk5GPyxPmv4S9Qo/Z9HdWr4Pf+Xpl7xuNP6moZGTAr/Tz1AxD0pcM7VW1ga07H+TB7Gz 6PQGMoF408K8/xxwJADdXoQAg0HMH/Blg+LVWEpCDR2aDTzlo91ukqmZcdruti1hGleT jIJAmswkzcsLUaonAbr4ZpUREwSfuHTwhGbAKo8u89lawHK8LlALikQslxNDKwslum6S 883Q== X-Gm-Message-State: ALQs6tDH0en9ODcQ1TuyH1sT/l0zpJ5rqd/NAmCDIcLRUDfIJFcrY4xV H+MYOT3iaonc4i+JM7sXhiJwIg== X-Google-Smtp-Source: AIpwx4957qaoJLAQCpsOYs5XDqp5HhtA+k9UA5Zn4MNvsfPrcfyLPHLN6Jdtgmwfg7gYh0sruAbNlA== X-Received: by 10.98.247.17 with SMTP id h17mr1938826pfi.165.1524057736892; Wed, 18 Apr 2018 06:22:16 -0700 (PDT) Received: from maindev.thefacebook.com ([199.201.64.2]) by smtp.gmail.com with ESMTPSA id u7sm3836378pfa.96.2018.04.18.06.22.15 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 18 Apr 2018 06:22:16 -0700 (PDT) From: "Nikita V. Shirokov" To: Alexei Starovoitov , Daniel Borkmann Cc: netdev@vger.kernel.org, "Nikita V. Shirokov" Subject: [PATCH bpf-next v3 11/11] bpf: add bpf_xdp_adjust_tail sample prog Date: Tue, 17 Apr 2018 21:42:23 -0700 Message-Id: <20180418044223.17685-12-tehnerd@tehnerd.com> X-Mailer: git-send-email 2.15.1 In-Reply-To: <20180418044223.17685-1-tehnerd@tehnerd.com> References: <20180418044223.17685-1-tehnerd@tehnerd.com> Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org adding bpf's sample program which is using bpf_xdp_adjust_tail helper by generating ICMPv4 "packet to big" message if ingress packet's size is bigger then 600 bytes Signed-off-by: Nikita V. Shirokov --- samples/bpf/Makefile | 4 + samples/bpf/xdp_adjust_tail_kern.c | 152 ++++++++++++++++++++++++++++++ samples/bpf/xdp_adjust_tail_user.c | 142 ++++++++++++++++++++++++++++ tools/testing/selftests/bpf/bpf_helpers.h | 2 + 4 files changed, 300 insertions(+) create mode 100644 samples/bpf/xdp_adjust_tail_kern.c create mode 100644 samples/bpf/xdp_adjust_tail_user.c diff --git a/samples/bpf/Makefile b/samples/bpf/Makefile index 4d6a6edd4bf6..aa8c392e2e52 100644 --- a/samples/bpf/Makefile +++ b/samples/bpf/Makefile @@ -44,6 +44,7 @@ hostprogs-y += xdp_monitor hostprogs-y += xdp_rxq_info hostprogs-y += syscall_tp hostprogs-y += cpustat +hostprogs-y += xdp_adjust_tail # Libbpf dependencies LIBBPF := ../../tools/lib/bpf/bpf.o ../../tools/lib/bpf/nlattr.o @@ -95,6 +96,7 @@ xdp_monitor-objs := bpf_load.o $(LIBBPF) xdp_monitor_user.o xdp_rxq_info-objs := bpf_load.o $(LIBBPF) xdp_rxq_info_user.o syscall_tp-objs := bpf_load.o $(LIBBPF) syscall_tp_user.o cpustat-objs := bpf_load.o $(LIBBPF) cpustat_user.o +xdp_adjust_tail-objs := bpf_load.o $(LIBBPF) xdp_adjust_tail_user.o # Tell kbuild to always build the programs always := $(hostprogs-y) @@ -148,6 +150,7 @@ always += xdp_rxq_info_kern.o always += xdp2skb_meta_kern.o always += syscall_tp_kern.o always += cpustat_kern.o +always += xdp_adjust_tail_kern.o HOSTCFLAGS += -I$(objtree)/usr/include HOSTCFLAGS += -I$(srctree)/tools/lib/ @@ -193,6 +196,7 @@ HOSTLOADLIBES_xdp_monitor += -lelf HOSTLOADLIBES_xdp_rxq_info += -lelf HOSTLOADLIBES_syscall_tp += -lelf HOSTLOADLIBES_cpustat += -lelf +HOSTLOADLIBES_xdp_adjust_tail += -lelf # Allows pointing LLC/CLANG to a LLVM backend with bpf support, redefine on cmdline: # make samples/bpf/ LLC=~/git/llvm/build/bin/llc CLANG=~/git/llvm/build/bin/clang diff --git a/samples/bpf/xdp_adjust_tail_kern.c b/samples/bpf/xdp_adjust_tail_kern.c new file mode 100644 index 000000000000..411fdb21f8bc --- /dev/null +++ b/samples/bpf/xdp_adjust_tail_kern.c @@ -0,0 +1,152 @@ +/* SPDX-License-Identifier: GPL-2.0 + * Copyright (c) 2018 Facebook + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + * + * This program shows how to use bpf_xdp_adjust_tail() by + * generating ICMPv4 "packet to big" (unreachable/ df bit set frag needed + * to be more preice in case of v4)" where receiving packets bigger then + * 600 bytes. + */ +#define KBUILD_MODNAME "foo" +#include +#include +#include +#include +#include +#include +#include +#include "bpf_helpers.h" + +#define DEFAULT_TTL 64 +#define MAX_PCKT_SIZE 600 +#define ICMP_TOOBIG_SIZE 98 +#define ICMP_TOOBIG_PAYLOAD_SIZE 92 + +struct bpf_map_def SEC("maps") icmpcnt = { + .type = BPF_MAP_TYPE_ARRAY, + .key_size = sizeof(__u32), + .value_size = sizeof(__u64), + .max_entries = 1, +}; + +static __always_inline void count_icmp(void) +{ + u64 key = 0; + u64 *icmp_count; + + icmp_count = bpf_map_lookup_elem(&icmpcnt, &key); + if (icmp_count) + *icmp_count += 1; +} + +static __always_inline void swap_mac(void *data, struct ethhdr *orig_eth) +{ + struct ethhdr *eth; + + eth = data; + memcpy(eth->h_source, orig_eth->h_dest, ETH_ALEN); + memcpy(eth->h_dest, orig_eth->h_source, ETH_ALEN); + eth->h_proto = orig_eth->h_proto; +} + +static __always_inline __u16 csum_fold_helper(__u32 csum) +{ + return ~((csum & 0xffff) + (csum >> 16)); +} + +static __always_inline void ipv4_csum(void *data_start, int data_size, + __u32 *csum) +{ + *csum = bpf_csum_diff(0, 0, data_start, data_size, *csum); + *csum = csum_fold_helper(*csum); +} + +static __always_inline int send_icmp4_too_big(struct xdp_md *xdp) +{ + int headroom = (int)sizeof(struct iphdr) + (int)sizeof(struct icmphdr); + + if (bpf_xdp_adjust_head(xdp, 0 - headroom)) + return XDP_DROP; + void *data = (void *)(long)xdp->data; + void *data_end = (void *)(long)xdp->data_end; + + if (data + (ICMP_TOOBIG_SIZE + headroom) > data_end) + return XDP_DROP; + + struct iphdr *iph, *orig_iph; + struct icmphdr *icmp_hdr; + struct ethhdr *orig_eth; + __u32 csum = 0; + __u64 off = 0; + + orig_eth = data + headroom; + swap_mac(data, orig_eth); + off += sizeof(struct ethhdr); + iph = data + off; + off += sizeof(struct iphdr); + icmp_hdr = data + off; + off += sizeof(struct icmphdr); + orig_iph = data + off; + icmp_hdr->type = ICMP_DEST_UNREACH; + icmp_hdr->code = ICMP_FRAG_NEEDED; + icmp_hdr->un.frag.mtu = htons(MAX_PCKT_SIZE-sizeof(struct ethhdr)); + icmp_hdr->checksum = 0; + ipv4_csum(icmp_hdr, ICMP_TOOBIG_PAYLOAD_SIZE, &csum); + icmp_hdr->checksum = csum; + iph->ttl = DEFAULT_TTL; + iph->daddr = orig_iph->saddr; + iph->saddr = orig_iph->daddr; + iph->version = 4; + iph->ihl = 5; + iph->protocol = IPPROTO_ICMP; + iph->tos = 0; + iph->tot_len = htons( + ICMP_TOOBIG_SIZE + headroom - sizeof(struct ethhdr)); + iph->check = 0; + csum = 0; + ipv4_csum(iph, sizeof(struct iphdr), &csum); + iph->check = csum; + count_icmp(); + return XDP_TX; +} + + +static __always_inline int handle_ipv4(struct xdp_md *xdp) +{ + void *data_end = (void *)(long)xdp->data_end; + void *data = (void *)(long)xdp->data; + int pckt_size = data_end - data; + int offset; + + if (pckt_size > MAX_PCKT_SIZE) { + offset = pckt_size - ICMP_TOOBIG_SIZE; + if (bpf_xdp_adjust_tail(xdp, 0 - offset)) + return XDP_PASS; + return send_icmp4_too_big(xdp); + } + return XDP_PASS; +} + +SEC("xdp_icmp") +int _xdp_icmp(struct xdp_md *xdp) +{ + void *data_end = (void *)(long)xdp->data_end; + void *data = (void *)(long)xdp->data; + struct ethhdr *eth = data; + __u16 h_proto; + + if (eth + 1 > data_end) + return XDP_DROP; + + h_proto = eth->h_proto; + + if (h_proto == htons(ETH_P_IP)) + return handle_ipv4(xdp); + else + return XDP_PASS; +} + +char _license[] SEC("license") = "GPL"; diff --git a/samples/bpf/xdp_adjust_tail_user.c b/samples/bpf/xdp_adjust_tail_user.c new file mode 100644 index 000000000000..f621a541b574 --- /dev/null +++ b/samples/bpf/xdp_adjust_tail_user.c @@ -0,0 +1,142 @@ +/* SPDX-License-Identifier: GPL-2.0 + * Copyright (c) 2018 Facebook + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of version 2 of the GNU General Public + * License as published by the Free Software Foundation. + */ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include "bpf_load.h" +#include "libbpf.h" +#include "bpf_util.h" + +#define STATS_INTERVAL_S 2U + +static int ifindex = -1; +static __u32 xdp_flags; + +static void int_exit(int sig) +{ + if (ifindex > -1) + bpf_set_link_xdp_fd(ifindex, -1, xdp_flags); + exit(0); +} + +/* simple "icmp packet too big sent" counter + */ +static void poll_stats(unsigned int kill_after_s) +{ + time_t started_at = time(NULL); + __u64 value = 0; + int key = 0; + + + while (!kill_after_s || time(NULL) - started_at <= kill_after_s) { + sleep(STATS_INTERVAL_S); + + assert(bpf_map_lookup_elem(map_fd[0], &key, &value) == 0); + + printf("icmp \"packet too big\" sent: %10llu pkts\n", value); + } +} + +static void usage(const char *cmd) +{ + printf("Start a XDP prog which send ICMP \"packet too big\" \n" + "messages if ingress packet is bigger then MAX_SIZE bytes\n"); + printf("Usage: %s [...]\n", cmd); + printf(" -i Interface Index\n"); + printf(" -T Default: 0 (forever)\n"); + printf(" -S use skb-mode\n"); + printf(" -N enforce native mode\n"); + printf(" -h Display this help\n"); +} + +int main(int argc, char **argv) +{ + unsigned char opt_flags[256] = {}; + unsigned int kill_after_s = 0; + const char *optstr = "i:T:SNh"; + struct rlimit r = {RLIM_INFINITY, RLIM_INFINITY}; + char filename[256]; + int opt; + int i; + + + for (i = 0; i < strlen(optstr); i++) + if (optstr[i] != 'h' && 'a' <= optstr[i] && optstr[i] <= 'z') + opt_flags[(unsigned char)optstr[i]] = 1; + + while ((opt = getopt(argc, argv, optstr)) != -1) { + + switch (opt) { + case 'i': + ifindex = atoi(optarg); + break; + case 'T': + kill_after_s = atoi(optarg); + break; + case 'S': + xdp_flags |= XDP_FLAGS_SKB_MODE; + break; + case 'N': + xdp_flags |= XDP_FLAGS_DRV_MODE; + break; + default: + usage(argv[0]); + return 1; + } + opt_flags[opt] = 0; + } + + for (i = 0; i < strlen(optstr); i++) { + if (opt_flags[(unsigned int)optstr[i]]) { + fprintf(stderr, "Missing argument -%c\n", optstr[i]); + usage(argv[0]); + return 1; + } + } + + if (setrlimit(RLIMIT_MEMLOCK, &r)) { + perror("setrlimit(RLIMIT_MEMLOCK, RLIM_INFINITY)"); + return 1; + } + + snprintf(filename, sizeof(filename), "%s_kern.o", argv[0]); + + if (load_bpf_file(filename)) { + printf("%s", bpf_log_buf); + return 1; + } + + if (!prog_fd[0]) { + printf("load_bpf_file: %s\n", strerror(errno)); + return 1; + } + + signal(SIGINT, int_exit); + signal(SIGTERM, int_exit); + + if (bpf_set_link_xdp_fd(ifindex, prog_fd[0], xdp_flags) < 0) { + printf("link set xdp fd failed\n"); + return 1; + } + + poll_stats(kill_after_s); + + bpf_set_link_xdp_fd(ifindex, -1, xdp_flags); + + return 0; +} diff --git a/tools/testing/selftests/bpf/bpf_helpers.h b/tools/testing/selftests/bpf/bpf_helpers.h index 50c607014b22..9271576bdc8f 100644 --- a/tools/testing/selftests/bpf/bpf_helpers.h +++ b/tools/testing/selftests/bpf/bpf_helpers.h @@ -132,6 +132,8 @@ static int (*bpf_l3_csum_replace)(void *ctx, int off, int from, int to, int flag (void *) BPF_FUNC_l3_csum_replace; static int (*bpf_l4_csum_replace)(void *ctx, int off, int from, int to, int flags) = (void *) BPF_FUNC_l4_csum_replace; +static int (*bpf_csum_diff)(void *from, int from_size, void *to, int to_size, int seed) = + (void *) BPF_FUNC_csum_diff; static int (*bpf_skb_under_cgroup)(void *ctx, void *map, int index) = (void *) BPF_FUNC_skb_under_cgroup; static int (*bpf_skb_change_head)(void *, int len, int flags) =