From patchwork Tue Jan 5 12:24:11 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuri Benditovich X-Patchwork-Id: 11998737 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 066C4C433E0 for ; Tue, 5 Jan 2021 12:26:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id B536B22AAC for ; Tue, 5 Jan 2021 12:26:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728695AbhAEMZl (ORCPT ); Tue, 5 Jan 2021 07:25:41 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37334 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727304AbhAEMZk (ORCPT ); Tue, 5 Jan 2021 07:25:40 -0500 Received: from mail-wm1-x32f.google.com (mail-wm1-x32f.google.com [IPv6:2a00:1450:4864:20::32f]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9C95EC06179A for ; Tue, 5 Jan 2021 04:24:31 -0800 (PST) Received: by mail-wm1-x32f.google.com with SMTP id 190so2862102wmz.0 for ; Tue, 05 Jan 2021 04:24:31 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=95fcQ7XOzwxPXY92PHMXKGjY9iDFTd+3y3erYQ9GO9s=; b=iIG6RHpaEDCYDyHHaHHz5lfqneKL//162o6PaecyRMmpgqZZ5U5KUefBSFTnAGQi+R wqietjz3diqRGXleLo4HCy0fTHlUgUBSZ4kHjhT65Nrx9ckCvaqjWiDAqKCGMvNJos72 fPOOnFKHjb9+rYcHOI6J73EafrnWkxZU1e+hM9c7kYg0Toh/jOYpWM9uSN1ePIsrOHdQ ZCB3nB0ECeEsFGdMh4nMnogIcT9zPeiTwG9At5oUkqW627rO+LCZZ1f9ZYn22xH+RxoJ qFBXGavyiC+ex0VSFxq+Y2baqg2Rfx1Fg6DMT1atmtOGPJ3aA/f8Z+CK2b3XcEvT/QXR SM4Q== 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=95fcQ7XOzwxPXY92PHMXKGjY9iDFTd+3y3erYQ9GO9s=; b=la7nQUiaNGC/3DiM9zrqQl5Vt7W7CuiVD21RfeWe6eE00pSbL6nNT1ZpCVHyarxk7T ZOGut4L8jPhs+kPoUf67zQHcMWcoLsBYokcKiTpbq/Zsg1jQovQtoie3zjEDaqFmGXVx /d9nDtKTTPo+TLnqo4Q/X5w2PqOORMPv52udh18iLuSxnIogNqc40WzBocFRs9wuE5Iq x59hrRaTLxh9Mvp3DxH2FtVFfxrlzLz6hBDjZ+k+N6A5vljT7lrW/J0zfDJRGyoUBj1t BH77Msla1TzTHbr5I2uMlIMIm0azzjxlPvbFkwFxZYcayVU0p1UHcnzMMyImjCh89cKP m0Aw== X-Gm-Message-State: AOAM533Ej0Wy/NkTEdcd6xh+4Um28cDEUyHJgER+bcTNpzEFQjlYIGCD kyZ9hpmLnx6O8AzdM2txGWe8pQ== X-Google-Smtp-Source: ABdhPJzorTi7ks7HQy2lPJ0gpjzOHvfFV47zjsVnH3IZt0rAIvgZ6KHOYmU//Cm9oLOW/QQz86qGVg== X-Received: by 2002:a1c:9c52:: with SMTP id f79mr3233640wme.3.1609849470379; Tue, 05 Jan 2021 04:24:30 -0800 (PST) Received: from f2.redhat.com (bzq-79-183-72-147.red.bezeqint.net. [79.183.72.147]) by smtp.gmail.com with ESMTPSA id 138sm4242281wma.41.2021.01.05.04.24.29 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jan 2021 04:24:29 -0800 (PST) From: Yuri Benditovich To: "Michael S. Tsirkin" , Jason Wang Cc: yan@daynix.com, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 2/7] vhost: support for hash report virtio-net feature Date: Tue, 5 Jan 2021 14:24:11 +0200 Message-Id: <20210105122416.16492-3-yuri.benditovich@daynix.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210105122416.16492-1-yuri.benditovich@daynix.com> References: <20210105122416.16492-1-yuri.benditovich@daynix.com> Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-State: RFC According to the virtio specification if VIRTIO_NET_F_HASH_REPORT feature acked the virtio-net header is extended to hold the hash value and hash report type. Signed-off-by: Yuri Benditovich --- drivers/vhost/net.c | 37 +++++++++++++++++++++++++++++-------- 1 file changed, 29 insertions(+), 8 deletions(-) diff --git a/drivers/vhost/net.c b/drivers/vhost/net.c index 531a00d703cd..31a894b9a992 100644 --- a/drivers/vhost/net.c +++ b/drivers/vhost/net.c @@ -73,7 +73,8 @@ enum { VHOST_NET_FEATURES = VHOST_FEATURES | (1ULL << VHOST_NET_F_VIRTIO_NET_HDR) | (1ULL << VIRTIO_NET_F_MRG_RXBUF) | - (1ULL << VIRTIO_F_ACCESS_PLATFORM) + (1ULL << VIRTIO_F_ACCESS_PLATFORM) | + (1ULL << VIRTIO_NET_F_HASH_REPORT) }; enum { @@ -1108,14 +1109,16 @@ static void handle_rx(struct vhost_net *net) .msg_controllen = 0, .msg_flags = MSG_DONTWAIT, }; - struct virtio_net_hdr hdr = { - .flags = 0, - .gso_type = VIRTIO_NET_HDR_GSO_NONE + struct virtio_net_hdr_v1_hash hdrv1 = { + { + .flags = 0, + .gso_type = VIRTIO_NET_HDR_GSO_NONE + } }; size_t total_len = 0; int err, mergeable; s16 headcount; - size_t vhost_hlen, sock_hlen; + size_t vhost_hlen, sock_hlen, extra_hlen; size_t vhost_len, sock_len; bool busyloop_intr = false; struct socket *sock; @@ -1137,9 +1140,12 @@ static void handle_rx(struct vhost_net *net) vhost_hlen = nvq->vhost_hlen; sock_hlen = nvq->sock_hlen; + vq_log = unlikely(vhost_has_feature(vq, VHOST_F_LOG_ALL)) ? vq->log : NULL; mergeable = vhost_has_feature(vq, VIRTIO_NET_F_MRG_RXBUF); + extra_hlen = vhost_has_feature(vq, VIRTIO_NET_F_HASH_REPORT) ? + sizeof(hdrv1) - sizeof(hdrv1.hdr) : 0; do { sock_len = vhost_net_rx_peek_head_len(net, sock->sk, @@ -1201,8 +1207,8 @@ static void handle_rx(struct vhost_net *net) } /* Supply virtio_net_hdr if VHOST_NET_F_VIRTIO_NET_HDR */ if (unlikely(vhost_hlen)) { - if (copy_to_iter(&hdr, sizeof(hdr), - &fixup) != sizeof(hdr)) { + if (copy_to_iter(&hdrv1, sizeof(struct virtio_net_hdr), + &fixup) != sizeof(struct virtio_net_hdr)) { vq_err(vq, "Unable to write vnet_hdr " "at addr %p\n", vq->iov->iov_base); goto out; @@ -1211,7 +1217,7 @@ static void handle_rx(struct vhost_net *net) /* Header came from socket; we'll need to patch * ->num_buffers over if VIRTIO_NET_F_MRG_RXBUF */ - iov_iter_advance(&fixup, sizeof(hdr)); + iov_iter_advance(&fixup, sizeof(struct virtio_net_hdr)); } /* TODO: Should check and handle checksum. */ @@ -1223,6 +1229,18 @@ static void handle_rx(struct vhost_net *net) vhost_discard_vq_desc(vq, headcount); goto out; } + if (unlikely(extra_hlen)) { + if (unlikely(vhost_hlen)) { + if (copy_to_iter(&hdrv1.hash_value, extra_hlen, + &fixup) != extra_hlen) { + vq_err(vq, "Unable to write extra_hdr " + "at addr %p\n", vq->iov->iov_base); + goto out; + } + } else { + iov_iter_advance(&fixup, extra_hlen); + } + } nvq->done_idx += headcount; if (nvq->done_idx > VHOST_NET_BATCH) vhost_net_signal_used(nvq); @@ -1624,6 +1642,9 @@ static int vhost_net_set_features(struct vhost_net *n, u64 features) (1ULL << VIRTIO_F_VERSION_1))) ? sizeof(struct virtio_net_hdr_mrg_rxbuf) : sizeof(struct virtio_net_hdr); + if (features & (1ULL << VIRTIO_NET_F_HASH_REPORT)) { + hdr_len = sizeof(struct virtio_net_hdr_v1_hash); + } if (features & (1 << VHOST_NET_F_VIRTIO_NET_HDR)) { /* vhost provides vnet_hdr */ vhost_hlen = hdr_len; From patchwork Tue Jan 5 12:24:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuri Benditovich X-Patchwork-Id: 11998725 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id D26CFC433DB for ; Tue, 5 Jan 2021 12:26:45 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 8F37A22AAC for ; Tue, 5 Jan 2021 12:26:45 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728987AbhAEMZ4 (ORCPT ); Tue, 5 Jan 2021 07:25:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37364 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728875AbhAEMZz (ORCPT ); Tue, 5 Jan 2021 07:25:55 -0500 Received: from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com [IPv6:2a00:1450:4864:20::42a]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id A052DC06179E for ; Tue, 5 Jan 2021 04:24:33 -0800 (PST) Received: by mail-wr1-x42a.google.com with SMTP id i9so35990880wrc.4 for ; Tue, 05 Jan 2021 04:24:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=RENS1yiCoqDoLkKN/GRTnjThUIFO+qOBX6TnsDEXMJ4=; b=Rsjc+UbI6l1AKroxhh3v0TqyRX6k81MRpq+7OB6mC3k6sYU270+X7iDmnPcUJwrq4H QB9Go38farUyWX6zlc1p2fQCfYdkXNd/NVwmFAxjZj30JF5wv/1987mxINy3Vl3ySTjl ArjkurbUGoZGDnC4NKIImUw8OBGE1O796zl91v3MgCWXUyb/XY60ZHTqlaNuwhnrH6Y+ PCC8FtYIt1sOuS1sR5Kyzo4RdPZoiW8SUnXpqT2voCdoqGrMqI1dSRX1j04Tt2ScerCi nWCywRHrCIVN3UlXN1eB9d/uliwbj94xC5PgNvjNHwNXT3/VEG+IaIQHlxx8W+M1LMHb aFGg== 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=RENS1yiCoqDoLkKN/GRTnjThUIFO+qOBX6TnsDEXMJ4=; b=BLfNDNwEFz4xTAZcLdf4iGnZekBQ/E2DOKCcqwiIGqyr2I2eR9MQwtGUopEyFX06uU QqG2hg+iqlAdWI6sbW9Lik8k/EafP4wqY+ffTD8pJhSf5WEEe6wi3hGrMEwtDNrimjDE sxStpwGJmetIqvbjz5YtgDQ5XrQbUL244K5Z1iJyiCuCHWxz9L7YyFiEk6sNoA8sf8SL j0OtxFo3h/fwcnZNxnPHU5N9x4d7JnsItnaR94XLQQnKykNXe+TMFYbBVR3GzO84M3DU cuWN+PWPl8F5Y1LOCtki49FcBh9jeck5x3FNhMtSfvc8HypwMCLBVZmr8OgoMQmFkIkV g+Sg== X-Gm-Message-State: AOAM532qYMO51SBWxcuF5ACbdn/aL4HUxNh0WztnnffcWUX1ap+2Ecxf 5Wjt9qKFoTG1r4CpvcWEwaGy7g== X-Google-Smtp-Source: ABdhPJwUKO0ye0ZNgsk1g3yOggrEXv0KCoEdblfRWwUU30iRrMbnsJIJGtAgBYucbZzegbuNHb95LA== X-Received: by 2002:adf:94c7:: with SMTP id 65mr82268745wrr.423.1609849472424; Tue, 05 Jan 2021 04:24:32 -0800 (PST) Received: from f2.redhat.com (bzq-79-183-72-147.red.bezeqint.net. [79.183.72.147]) by smtp.gmail.com with ESMTPSA id 138sm4242281wma.41.2021.01.05.04.24.30 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jan 2021 04:24:31 -0800 (PST) From: Yuri Benditovich To: "David S. Miller" , Jakub Kicinski , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh Cc: yan@daynix.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [RFC PATCH 3/7] tun: allow use of BPF_PROG_TYPE_SCHED_CLS program type Date: Tue, 5 Jan 2021 14:24:12 +0200 Message-Id: <20210105122416.16492-4-yuri.benditovich@daynix.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210105122416.16492-1-yuri.benditovich@daynix.com> References: <20210105122416.16492-1-yuri.benditovich@daynix.com> Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org X-Patchwork-State: RFC This program type can set skb hash value. It will be useful when the tun will support hash reporting feature if virtio-net. Signed-off-by: Yuri Benditovich --- drivers/net/tun.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 7959b5c2d11f..455f7afc1f36 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -2981,6 +2981,8 @@ static int tun_set_ebpf(struct tun_struct *tun, struct tun_prog __rcu **prog_p, prog = NULL; } else { prog = bpf_prog_get_type(fd, BPF_PROG_TYPE_SOCKET_FILTER); + if (IS_ERR(prog)) + prog = bpf_prog_get_type(fd, BPF_PROG_TYPE_SCHED_CLS); if (IS_ERR(prog)) return PTR_ERR(prog); } From patchwork Tue Jan 5 12:24:13 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuri Benditovich X-Patchwork-Id: 11998721 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1A93DC433E6 for ; Tue, 5 Jan 2021 12:26:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id D450022AAD for ; Tue, 5 Jan 2021 12:26:05 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728815AbhAEMZw (ORCPT ); Tue, 5 Jan 2021 07:25:52 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37376 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728747AbhAEMZv (ORCPT ); Tue, 5 Jan 2021 07:25:51 -0500 Received: from mail-wr1-x42c.google.com (mail-wr1-x42c.google.com [IPv6:2a00:1450:4864:20::42c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C1B3EC0617A3 for ; Tue, 5 Jan 2021 04:24:35 -0800 (PST) Received: by mail-wr1-x42c.google.com with SMTP id t16so35995789wra.3 for ; Tue, 05 Jan 2021 04:24:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=u0kBDkZSof0LwbMWuYCOPhj4hHVMvwb36KmGU51ii7Y=; b=ND819YouqBX2OWqXMdqdQeyowrfISKhBPc2XrLPMSsEl7svulPDlyyq3EkBtNbL33u TDaKNAZRhQCDcM6g7W1VV86CZMsGPo/Xj6o9ovlgTu1Dkia9VLQEAhbNY9nR9vAFrfOF fgoEuPBj4FgxID677UG7GgUc9XU/RXpFh/gbm7eTWT5Nri3rbP72bDPpaO6Sm9HCNgI3 3NSpgM2+U6guAItcMAeEWlToNz5eKPh3fU1yovidq2zYfknj0ya64YVX6h9x0A8df3W+ 2aGD7YS/4qoFccPopziAfM1EXWE23Jv2Hdf4xMOmznant61CMaghciMWLZOQMjrSc6PP LOEg== 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=u0kBDkZSof0LwbMWuYCOPhj4hHVMvwb36KmGU51ii7Y=; b=DgjqSk04Ig9221TbEml6rp0OjTXnyn1czr19mlBONNxhLQ4FEQL49VdywxywIhJ0GT vMy/rDO/4OiX00w+zp+j93sd1UcMNWnu2K05U0/C4ffZ9H9Aa6o9gQwZpxFywVV39SFE BpsITLKSt+k5vhsIX2+ikoRjxzQdj7vHgOrKyxTk/mF1jTDtIEzhwbN9IYUnaygFQvYs TP/kksr2zI7vvXAKggaAa5i5Qg3CPTVrIBrbC7IYmKWfQ1mSd9YbVGOn9CeevEQxbKmH mPyALEMc+EDqeMgRYD2h14hdrzvC81vvA/MKTABaxH83SXx7e+SZyfOIvQ00k9BmVSLz WA4g== X-Gm-Message-State: AOAM531ixV7EKfK3BLPMTi3Y1u11xQrMWbsVW10mh3odWgmBpnijhNqb MDtlrUZdBzvw+fSY6gCOt4yizg== X-Google-Smtp-Source: ABdhPJyJfqvsRJHDTSpaa9QAkR2GGFTavM6RbFaNNqtKETNWn4GmNRmrqwUcSVEVi1csBmRIq/qoBg== X-Received: by 2002:a5d:56c3:: with SMTP id m3mr84858735wrw.419.1609849474478; Tue, 05 Jan 2021 04:24:34 -0800 (PST) Received: from f2.redhat.com (bzq-79-183-72-147.red.bezeqint.net. [79.183.72.147]) by smtp.gmail.com with ESMTPSA id 138sm4242281wma.41.2021.01.05.04.24.32 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jan 2021 04:24:33 -0800 (PST) From: Yuri Benditovich To: "David S. Miller" , Jakub Kicinski , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh Cc: yan@daynix.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [RFC PATCH 4/7] tun: free bpf_program by bpf_prog_put instead of bpf_prog_destroy Date: Tue, 5 Jan 2021 14:24:13 +0200 Message-Id: <20210105122416.16492-5-yuri.benditovich@daynix.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210105122416.16492-1-yuri.benditovich@daynix.com> References: <20210105122416.16492-1-yuri.benditovich@daynix.com> Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org X-Patchwork-State: RFC The module never creates the bpf program with bpf_prog_create so it shouldn't free it with bpf_prog_destroy. The program is obtained by bpf_prog_get and should be freed by bpf_prog_put. For BPF_PROG_TYPE_SOCKET_FILTER both methods do the same but for other program types they don't. Signed-off-by: Yuri Benditovich --- drivers/net/tun.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 455f7afc1f36..18c1baf1a6c1 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -2218,7 +2218,7 @@ static void tun_prog_free(struct rcu_head *rcu) { struct tun_prog *prog = container_of(rcu, struct tun_prog, rcu); - bpf_prog_destroy(prog->prog); + bpf_prog_put(prog->prog); kfree(prog); } From patchwork Tue Jan 5 12:24:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuri Benditovich X-Patchwork-Id: 11998723 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4B5A3C43381 for ; Tue, 5 Jan 2021 12:26:06 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 242D322AAC for ; Tue, 5 Jan 2021 12:26:06 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1728872AbhAEMZz (ORCPT ); Tue, 5 Jan 2021 07:25:55 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37386 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1728827AbhAEMZw (ORCPT ); Tue, 5 Jan 2021 07:25:52 -0500 Received: from mail-wm1-x333.google.com (mail-wm1-x333.google.com [IPv6:2a00:1450:4864:20::333]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id EB93CC0617A6 for ; Tue, 5 Jan 2021 04:24:37 -0800 (PST) Received: by mail-wm1-x333.google.com with SMTP id 190so2862373wmz.0 for ; Tue, 05 Jan 2021 04:24:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZIRhmzhJTza1eg/duDC8aSWDJ8wELCNq6nzGwLtOGgE=; b=oM7Uaab4ruWgkghbIDEOJNIaXwqhUApJ0Q1qI8YZ7j2FgLmvh+kbEF87EClI/IK6yY yzjECu0tIzEYKTcKptZaeGef9Tu2KzA64wGHRRhZc93RzR6IxBp0KTOxPJULx4GwghGG sWD+qdT2OHiG+Pk/wZ5gUJYyoOtL2PuW+nTQwoxHRhhI3wHRR98wd0bb9UrUoZ74qBI5 xoOzlWrzQxH6A1m8YE/qrHaW/WAzS5sUozTF1XzxT0BhELThcof6y2efIbU3iq6/RycR qnpBb8vk3foVmiig+dknBebuqWRau1IWgxnJfww81uTk7HSLNbG9Q68be0v5UZAIJQ3+ 8SfA== 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=ZIRhmzhJTza1eg/duDC8aSWDJ8wELCNq6nzGwLtOGgE=; b=RArkL7S2nmObabuNW23y4BIp6/DgU+O7DY8CjUKh2jNAE0obUVLRNiNtldgt7oMlQW sjsZK6HXXfDjLeOHLZt7Py3vX3dQURp2D9rKe9/9ff86SJ69+Cty+li+sxRxhUJC8fvX gF8tKOpmFEfpqzXSbJSf37KF980sY1KYsSEzH8TMyLho+zq4QMCO4rHWUXZyueCQyrbe 3/wT2jF0Ept71FeZ0Yqhl7mz40MkieOHydl/NVR1GWfuklQg2NEqnZWGOC/OCyM8Stq/ F9S+zoqz07lRtozxpMN0Q7+Wc5AGwg8InA/4n8CP08pY5kkTO5ss1nmZQviIIiUbBnAn 2N/g== X-Gm-Message-State: AOAM533+/Eh1LBuBXKclSMTf9Rj1adUb7sG72BKXJ7Z66SW4qgaDo7em gGJTXRxnrC8zkEHwJYlCOl3HYA== X-Google-Smtp-Source: ABdhPJwsZIfp2E0WD/WaUPQr2r1SKukjbwPMIEk+a83Sf+F25hCwt+3IhYcYUSeVGBgsrzC1+osq+A== X-Received: by 2002:a1c:2288:: with SMTP id i130mr3350183wmi.78.1609849476766; Tue, 05 Jan 2021 04:24:36 -0800 (PST) Received: from f2.redhat.com (bzq-79-183-72-147.red.bezeqint.net. [79.183.72.147]) by smtp.gmail.com with ESMTPSA id 138sm4242281wma.41.2021.01.05.04.24.34 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jan 2021 04:24:36 -0800 (PST) From: Yuri Benditovich To: "David S. Miller" , Jakub Kicinski , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh Cc: yan@daynix.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [RFC PATCH 5/7] tun: add ioctl code TUNSETHASHPOPULATION Date: Tue, 5 Jan 2021 14:24:14 +0200 Message-Id: <20210105122416.16492-6-yuri.benditovich@daynix.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210105122416.16492-1-yuri.benditovich@daynix.com> References: <20210105122416.16492-1-yuri.benditovich@daynix.com> Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org X-Patchwork-State: RFC User mode program calls this ioctl before loading of BPF program to inform the tun that the BPF program has extended functionality, i.e. sets hash value and returns the virtqueue number in the lower 16 bits and the type of the hash report in the upper 16 bits. Signed-off-by: Yuri Benditovich --- drivers/net/tun.c | 12 +++++++++++- include/uapi/linux/if_tun.h | 1 + 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 18c1baf1a6c1..45f4f04a4a3e 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -197,6 +197,7 @@ struct tun_struct { struct sock_fprog fprog; /* protected by rtnl lock */ bool filter_attached; + bool bpf_populates_hash; u32 msg_enable; spinlock_t lock; struct hlist_head flows[TUN_NUM_FLOW_ENTRIES]; @@ -2765,6 +2766,7 @@ static int tun_set_iff(struct net *net, struct file *file, struct ifreq *ifr) tun->align = NET_SKB_PAD; tun->filter_attached = false; + tun->bpf_populates_hash = false; tun->sndbuf = tfile->socket.sk->sk_sndbuf; tun->rx_batched = 0; RCU_INIT_POINTER(tun->steering_prog, NULL); @@ -2997,7 +2999,7 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, struct net *net = sock_net(&tfile->sk); struct tun_struct *tun; void __user* argp = (void __user*)arg; - unsigned int ifindex, carrier; + unsigned int ifindex, carrier, populate_hash; struct ifreq ifr; kuid_t owner; kgid_t group; @@ -3298,6 +3300,14 @@ static long __tun_chr_ioctl(struct file *file, unsigned int cmd, ret = open_related_ns(&net->ns, get_net_ns); break; + case TUNSETHASHPOPULATION: + ret = -EFAULT; + if (copy_from_user(&populate_hash, argp, sizeof(populate_hash))) + goto unlock; + tun->bpf_populates_hash = !!populate_hash; + ret = 0; + break; + default: ret = -EINVAL; break; diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h index 454ae31b93c7..0fd43533da26 100644 --- a/include/uapi/linux/if_tun.h +++ b/include/uapi/linux/if_tun.h @@ -61,6 +61,7 @@ #define TUNSETFILTEREBPF _IOR('T', 225, int) #define TUNSETCARRIER _IOW('T', 226, int) #define TUNGETDEVNETNS _IO('T', 227) +#define TUNSETHASHPOPULATION _IOR('T', 228, int) /* TUNSETIFF ifr flags */ #define IFF_TUN 0x0001 From patchwork Tue Jan 5 12:24:15 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuri Benditovich X-Patchwork-Id: 11998727 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9FBFEC4332E for ; Tue, 5 Jan 2021 12:26:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 71B8B22AAD for ; Tue, 5 Jan 2021 12:26:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729440AbhAEM0V (ORCPT ); Tue, 5 Jan 2021 07:26:21 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37458 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729785AbhAEM0U (ORCPT ); Tue, 5 Jan 2021 07:26:20 -0500 Received: from mail-wm1-x32d.google.com (mail-wm1-x32d.google.com [IPv6:2a00:1450:4864:20::32d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0A567C0617AA for ; Tue, 5 Jan 2021 04:24:40 -0800 (PST) Received: by mail-wm1-x32d.google.com with SMTP id c133so2842614wme.4 for ; Tue, 05 Jan 2021 04:24:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vbacyc4brsO7fCWWmN34VX2kLRLEZOENYLDCsoU/LjI=; b=DUue5w4sNmjFSztZsNkWwJal7840OEUG93mZRmlUiovZ70//yuPDENjbD52th+i7Hm sdUmUp9itIyvkH+bVxW13cpTvKiuOoFtTAM9b2jR69Us3xR2j4YG49N7UMfFWGyjlbkr Ez328SRQClhxvGJJbfIoshkAgk7v9845j+VPzLikfjS4GNTjIUJSaSdmcTWV3sV6vJEk HHOQMvR2Z1U5CvJBLf+7abqQ/z50fRQosycKDyguVroZqnAXY03woxqd3JhAsN4rlTFT 9W8P8yFomL3VZ70hq8o9+47grbwrBMLcaWSuhlDsgsZd/2K1YeD0fFoSHbMZuqcAp+zT b6Wg== 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=vbacyc4brsO7fCWWmN34VX2kLRLEZOENYLDCsoU/LjI=; b=qBWXL9421r1/v7yCPt/h/P1YRJpijgf28NiL/r7BvwnHiJH7dy2c9+/6Gxe3byimXr 4mjpCQf2mxaW6IP5JnmKng7UzrJqTefKKbFomFzDHPIiNenU52LG1ocgd8RO2CQ4fPTz NSMUs9v3agPn9Y7CNoyn2WxalgcImUcmPyOgEXjAnkmFwH/u9az78qBaKC1VI0JDLGTz 3HNvnizJ73wU740Uz+TrrltokTrh1xnlPKsc/9bcxo+ShWU8CAtp3FdJBcpVcZdC3Zg2 ivWF3J1Fr6mRO/3GCACwSqKKSUeRzizAbZBtsWvU5uJ16Yi0I3ZN1YJ09J3Iv8e0bb0Z G/Wg== X-Gm-Message-State: AOAM532rV9TSrMSygX2eaGbVaU3yzJf7Tpl8QrkWQAr6ZmRmMyHBtYfD 7og8F88A6F+z8jIloWEk1YzxDg7e3O7Ptftv X-Google-Smtp-Source: ABdhPJz7B+8XH+eWVDEfcl2ghSQU/ocHdDP7XOqYGm8XUD3QUk7ti4dvUlAJN39m/ISqwst8HvF+CQ== X-Received: by 2002:a7b:cbcc:: with SMTP id n12mr3241318wmi.23.1609849478800; Tue, 05 Jan 2021 04:24:38 -0800 (PST) Received: from f2.redhat.com (bzq-79-183-72-147.red.bezeqint.net. [79.183.72.147]) by smtp.gmail.com with ESMTPSA id 138sm4242281wma.41.2021.01.05.04.24.37 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jan 2021 04:24:38 -0800 (PST) From: Yuri Benditovich To: "David S. Miller" , Jakub Kicinski , Alexei Starovoitov , Daniel Borkmann , Andrii Nakryiko , Martin KaFai Lau , Song Liu , Yonghong Song , John Fastabend , KP Singh Cc: yan@daynix.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, bpf@vger.kernel.org Subject: [RFC PATCH 6/7] tun: populate hash in virtio-net header when needed Date: Tue, 5 Jan 2021 14:24:15 +0200 Message-Id: <20210105122416.16492-7-yuri.benditovich@daynix.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210105122416.16492-1-yuri.benditovich@daynix.com> References: <20210105122416.16492-1-yuri.benditovich@daynix.com> Precedence: bulk List-ID: X-Mailing-List: bpf@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org X-Patchwork-State: RFC If the BPF program populated the hash in the skb the tun propagates the hash value and hash report type to the respective fields of virtio-net header. Signed-off-by: Yuri Benditovich --- drivers/net/tun.c | 25 ++++++++++++++++++++++--- 1 file changed, 22 insertions(+), 3 deletions(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 45f4f04a4a3e..214feb0b16fb 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -556,15 +556,20 @@ static u16 tun_ebpf_select_queue(struct tun_struct *tun, struct sk_buff *skb) { struct tun_prog *prog; u32 numqueues; - u16 ret = 0; + u32 ret = 0; numqueues = READ_ONCE(tun->numqueues); if (!numqueues) return 0; prog = rcu_dereference(tun->steering_prog); - if (prog) + if (prog) { ret = bpf_prog_run_clear_cb(prog->prog, skb); + if (tun->bpf_populates_hash) { + *skb_hash_report_type(skb) = (__u8)(ret >> 16); + ret &= 0xffff; + } + } return ret % numqueues; } @@ -2062,6 +2067,7 @@ static ssize_t tun_put_user(struct tun_struct *tun, if (vnet_hdr_sz) { struct virtio_net_hdr gso; + __u16 extra_copy = 0; if (iov_iter_count(iter) < vnet_hdr_sz) return -EINVAL; @@ -2085,7 +2091,20 @@ static ssize_t tun_put_user(struct tun_struct *tun, if (copy_to_iter(&gso, sizeof(gso), iter) != sizeof(gso)) return -EFAULT; - iov_iter_advance(iter, vnet_hdr_sz - sizeof(gso)); + if (tun->bpf_populates_hash && + vnet_hdr_sz >= sizeof(struct virtio_net_hdr_v1_hash)) { + struct virtio_net_hdr_v1_hash hdr; + + hdr.hdr.num_buffers = 0; + hdr.hash_value = cpu_to_le32(skb_get_hash(skb)); + hdr.hash_report = cpu_to_le16(*skb_hash_report_type(skb)); + hdr.padding = 0; + extra_copy = sizeof(hdr) - sizeof(gso); + if (copy_to_iter(&hdr.hdr.num_buffers, extra_copy, iter) != extra_copy) + return -EFAULT; + } + + iov_iter_advance(iter, vnet_hdr_sz - sizeof(gso) - extra_copy); } if (vlan_hlen) { From patchwork Tue Jan 5 12:24:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yuri Benditovich X-Patchwork-Id: 11998739 X-Patchwork-Delegate: kuba@kernel.org Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-16.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 35C29C43381 for ; Tue, 5 Jan 2021 12:26:46 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 17E7D22AAC for ; Tue, 5 Jan 2021 12:26:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729371AbhAEM0G (ORCPT ); Tue, 5 Jan 2021 07:26:06 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37368 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1729183AbhAEM0F (ORCPT ); Tue, 5 Jan 2021 07:26:05 -0500 Received: from mail-wr1-x432.google.com (mail-wr1-x432.google.com [IPv6:2a00:1450:4864:20::432]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 981BAC0617B9 for ; Tue, 5 Jan 2021 04:24:41 -0800 (PST) Received: by mail-wr1-x432.google.com with SMTP id q18so36043197wrn.1 for ; Tue, 05 Jan 2021 04:24:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=daynix-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=vUG4KrkwS/48VCqb3gPEYEavBv7WJyPV6SrQz/KaLAM=; b=JguxiQSaUv6GGwqarkI4f+dXsBJW3n0KkyJDT3BnbU1VaRJXjiAGj0JuAujNpX7oJp 4+1wushqPCLsluacp/kpfkNPv0w1FjcYLdcO9VFhA0A04eKqBcNKVgjJRbAMw0v0ac1r 7VpQqn/J1idqy6nzVKnjdQyJn89kLUBslkXVS6NZtFBkz86LQi1Fp8u6dw+GW35RLzBs uhy9Fktpf7b/oXCfl2vEqDcKR2gmxfyVngJgf6WU3F0uFyKOn0pYpNnZ8reEhaeVXuB+ wQ8YJRPOu6Lv4BWQ+LVyl7fBWbVJQU7f7qe5NwHyza9IBEb7CmWpD+Y3Yy4VbUgQryBy FK/Q== 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=vUG4KrkwS/48VCqb3gPEYEavBv7WJyPV6SrQz/KaLAM=; b=XA2VQ53WYCHINywnMnwPAwZDGoJNhzl5qoPg9f2rxUoU5gdCpOusV0s1WJVkG2ULqr etGV+rHqgymHyEynL71AqBwG3Azi6gtpT8rLWkf9YqLaPOguzbN8+0UeYck9a+WPl5QB W52oh/rnJ9hPdLKf8ZWcpQo2J1/KgcI3dqHZr5M5qXS5cSe4CblggO638ymXvsrdhINX TSTd9ueyXGIoZ30kwNhCFuDsyEXIopCUORysgkO00ROh+Q+8/gWbRKRzronHMoa3XVpF 77r7BREHgbJWBwY1ssuT2rM4b9QbwltfsXxPSStDXX84POEb7GxXfYfQzehMOhS0gx7w bjzg== X-Gm-Message-State: AOAM530/uPgCNuJW0C66ZMx6SFToCttXbaOP6SSTQd6x2vZVpvrlDZ3J Z52GcYJEYjx5fQt084sdztAjgQ== X-Google-Smtp-Source: ABdhPJxyHqkDMckR34D6J0/zEz5z+4AYLnYjJYaIBFFxajHjIK8UpmQDSJm/1GZJWoM1KCiS6UmSig== X-Received: by 2002:adf:b519:: with SMTP id a25mr72616195wrd.263.1609849480376; Tue, 05 Jan 2021 04:24:40 -0800 (PST) Received: from f2.redhat.com (bzq-79-183-72-147.red.bezeqint.net. [79.183.72.147]) by smtp.gmail.com with ESMTPSA id 138sm4242281wma.41.2021.01.05.04.24.39 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 05 Jan 2021 04:24:39 -0800 (PST) From: Yuri Benditovich To: "David S. Miller" , Jakub Kicinski Cc: yan@daynix.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org Subject: [RFC PATCH 7/7] tun: report new tun feature IFF_HASH Date: Tue, 5 Jan 2021 14:24:16 +0200 Message-Id: <20210105122416.16492-8-yuri.benditovich@daynix.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210105122416.16492-1-yuri.benditovich@daynix.com> References: <20210105122416.16492-1-yuri.benditovich@daynix.com> Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org X-Patchwork-Delegate: kuba@kernel.org X-Patchwork-State: RFC IFF_HASH feature indicates that the tun supports TUNSETHASHPOPULATION ioctl and can propagate the hash data to the virtio-net packet. Signed-off-by: Yuri Benditovich --- drivers/net/tun.c | 2 +- include/uapi/linux/if_tun.h | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/tun.c b/drivers/net/tun.c index 214feb0b16fb..b46aa8941a9d 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -88,7 +88,7 @@ static void tun_default_link_ksettings(struct net_device *dev, #define TUN_VNET_LE 0x80000000 #define TUN_VNET_BE 0x40000000 -#define TUN_FEATURES (IFF_NO_PI | IFF_ONE_QUEUE | IFF_VNET_HDR | \ +#define TUN_FEATURES (IFF_NO_PI | IFF_ONE_QUEUE | IFF_VNET_HDR | IFF_HASH |\ IFF_MULTI_QUEUE | IFF_NAPI | IFF_NAPI_FRAGS) #define GOODCOPY_LEN 128 diff --git a/include/uapi/linux/if_tun.h b/include/uapi/linux/if_tun.h index 0fd43533da26..116b84ede3a0 100644 --- a/include/uapi/linux/if_tun.h +++ b/include/uapi/linux/if_tun.h @@ -73,6 +73,7 @@ #define IFF_ONE_QUEUE 0x2000 #define IFF_VNET_HDR 0x4000 #define IFF_TUN_EXCL 0x8000 +#define IFF_HASH 0x0080 #define IFF_MULTI_QUEUE 0x0100 #define IFF_ATTACH_QUEUE 0x0200 #define IFF_DETACH_QUEUE 0x0400