Received: by 2002:a05:6a10:2785:0:0:0:0 with SMTP id ia5csp3328937pxb; Tue, 12 Jan 2021 11:47:08 -0800 (PST) X-Google-Smtp-Source: ABdhPJxa24oEcRVYispS1yTYdvmNxkyYG4vQvUk+IN4CW2oiamjKlosGtIZ3WeVR6eeuxh3e2fhG X-Received: by 2002:a05:6402:14c5:: with SMTP id f5mr604979edx.232.1610480828509; Tue, 12 Jan 2021 11:47:08 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1610480828; cv=none; d=google.com; s=arc-20160816; b=Y34OZXgFkIuqFTvKhuEK85ASdninJN6oil6axUZkVJ4XM6jKppW5T/H8MFv3+SLDzX cctF46r9PMTAqEub25DNmkqYssswLvX599jUC8WZLcg3O0XJEwhT9u9Vrm2KzCQkhC1F UZqj6p25xuUzIUfXaNke3aWjXenpIQp87pepu+5BgerHKhAMoFSDg//GEeK5XMxiwZe/ QLeX1S+IvvdkTV+16SAav2eTFRSvx3vTzSwJlPzcn1TTVoQKiUIf7z2PHRb6h8RHotmg HYnWu3sBBDKLE01VLc6Be7wqDTNMcxHh/rbVfcBb3ViAiLgawZ9UB6NK4L2FJZRYpyZX nRlA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:references:in-reply-to:message-id:date:subject :cc:to:from:dkim-signature; bh=ZIRhmzhJTza1eg/duDC8aSWDJ8wELCNq6nzGwLtOGgE=; b=o57xS8tUWZQ7+IvU6tkUW85VBs37LxBYNBjTya4mJ9b5DHXzN4JLfMBBbQ/RO/OIz9 7ilYICLiau66pauQOspaxeH+NC7eQpmfNrkJzgQwaQaE67lM1OCckFSvOEmoSVEGi1ih pSdoIamhuQlpG/e8BjLTSIoRFOgXwyq0TOYM6etGDGR8aHDOaiE0DQcZDGOpo4mUYyR2 ZiAqIHB7RBYohn3cKlmYECJsrAlyAwB3jW2Y5vr8XTywxbK9P1i8kRsYrI7+swy130U9 ukdEghUp5OnhsIhtgKCmyU0aqtHG/r4bdoIT4US4aXy8AlXppSjqn1JGZAgJO/jT8NoG lB2g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@daynix-com.20150623.gappssmtp.com header.s=20150623 header.b=d9NxmNZS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id y11si1895182edp.516.2021.01.12.11.46.44; Tue, 12 Jan 2021 11:47:08 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@daynix-com.20150623.gappssmtp.com header.s=20150623 header.b=d9NxmNZS; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S2436865AbhALTn4 (ORCPT + 99 others); Tue, 12 Jan 2021 14:43:56 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:48588 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S2406706AbhALTnz (ORCPT ); Tue, 12 Jan 2021 14:43:55 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 04028C061383 for ; Tue, 12 Jan 2021 11:42:12 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id g8so2972282wme.1 for ; Tue, 12 Jan 2021 11:42:11 -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=d9NxmNZSQNFWQVyP7EOF6ws9upmBjMm7Uu4vcCvAagQcJvjqLbg5+r9m2RsQFFiJis Phmfncl8NVLjetiCUd7//m3Bmb/XboSynU2+TTlz7fnQQrc7Jpxc4hbmaw8FZqV5TH7y sRRNBzmxv6jAlGIonq5UpuL7dMdRW+ftT3cnGIa3N0L2U2c/1jaGnLRqD4+8bMh4rAPo vOvc7I+Tm890KsTLrvzdfciGgT5p7v9XHa51iZ9aT1MwsRe8bYEEqZSNxG/W4qodptly zpZ2A26Vz1arJqMbfke1ek2319CmQxsbEOY6yJmN8LiK+JJsd/aLYiWW1hD2hgKV/tZM NhXw== 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=DUmnAAG89nfRZLWxYZnuAz5ncvvNB4DneLmamYOptYQCWRhzTxSRi4AHAN/gyL4ndq 6D35pI1J6XYBwj5vo93Nk11Zy2xm5IXCiOJNNe8WQArIawbtOqpzo0UON43q5DnC1Ic4 3mXq6QJlnbzxW7qQ/19hulpZkdNnR37swTN6aG+dIv1dehGa255whfqlsF4l3tnAd/jz NgVahFotPL30Z+FgZiqQXpaMXoU45ZX+lWZTzL9dbKIVKXgMFdIR30h9aaIXqCzwU7o8 te7jezhYSsWjblChyMGn4FAa0j0mcKV2tCZFk+IUgSCW8gBR22v0L5z9QcCpkMerG0Ln lNwg== X-Gm-Message-State: AOAM5317QJI8Afv8XsPF8ogRLjq5nsaylUlhSOI5pgNaRyAS4VQ23kcA B3Mv09So/LmFf4tsdFONbzRjyA== X-Received: by 2002:a7b:c45a:: with SMTP id l26mr755038wmi.91.1610480530694; Tue, 12 Jan 2021 11:42:10 -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 z63sm4885315wme.8.2021.01.12.11.42.07 (version=TLS1_2 cipher=ECDHE-ECDSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Jan 2021 11:42:09 -0800 (PST) From: Yuri Benditovich To: davem@davemloft.net, kuba@kernel.org, mst@redhat.com, jasowang@redhat.com, ast@kernel.org, daniel@iogearbox.net, andrii@kernel.org, kafai@fb.com, songliubraving@fb.com, yhs@fb.com, john.fastabend@gmail.com, kpsingh@kernel.org, rdunlap@infradead.org, willemb@google.com, gustavoars@kernel.org, herbert@gondor.apana.org.au, steffen.klassert@secunet.com, nogikh@google.com, pablo@netfilter.org, decui@microsoft.com, cai@lca.pw, jakub@cloudflare.com, elver@google.com, pabeni@redhat.com, netdev@vger.kernel.org, linux-kernel@vger.kernel.org, kvm@vger.kernel.org, virtualization@lists.linux-foundation.org, bpf@vger.kernel.org Cc: yan@daynix.com Subject: [RFC PATCH 5/7] tun: add ioctl code TUNSETHASHPOPULATION Date: Tue, 12 Jan 2021 21:41:41 +0200 Message-Id: <20210112194143.1494-6-yuri.benditovich@daynix.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20210112194143.1494-1-yuri.benditovich@daynix.com> References: <20210112194143.1494-1-yuri.benditovich@daynix.com> Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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 -- 2.17.1