Linux Kernel Selftest development
 help / color / mirror / Atom feed
From: Bobby Eshleman <bobbyeshleman@gmail.com>
To: "Stefano Garzarella" <sgarzare@redhat.com>,
	"Shuah Khan" <shuah@kernel.org>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Simon Horman" <horms@kernel.org>,
	"Stefan Hajnoczi" <stefanha@redhat.com>,
	"Michael S. Tsirkin" <mst@redhat.com>,
	"Jason Wang" <jasowang@redhat.com>,
	"Xuan Zhuo" <xuanzhuo@linux.alibaba.com>,
	"Eugenio Pérez" <eperezma@redhat.com>,
	"K. Y. Srinivasan" <kys@microsoft.com>,
	"Haiyang Zhang" <haiyangz@microsoft.com>,
	"Wei Liu" <wei.liu@kernel.org>,
	"Dexuan Cui" <decui@microsoft.com>,
	"Bryan Tan" <bryan-bt.tan@broadcom.com>,
	"Vishnu Dasa" <vishnu.dasa@broadcom.com>,
	"Broadcom internal kernel review list"
	<bcm-kernel-feedback-list@broadcom.com>,
	"Bobby Eshleman" <bobbyeshleman@gmail.com>
Cc: virtualization@lists.linux.dev, netdev@vger.kernel.org,
	 linux-kselftest@vger.kernel.org, linux-kernel@vger.kernel.org,
	 kvm@vger.kernel.org, linux-hyperv@vger.kernel.org,
	berrange@redhat.com,  Bobby Eshleman <bobbyeshleman@meta.com>
Subject: [PATCH net-next v7 03/26] vsock: add netns to vsock skb cb
Date: Tue, 21 Oct 2025 16:46:46 -0700	[thread overview]
Message-ID: <20251021-vsock-vmtest-v7-3-0661b7b6f081@meta.com> (raw)
In-Reply-To: <20251021-vsock-vmtest-v7-0-0661b7b6f081@meta.com>

From: Bobby Eshleman <bobbyeshleman@meta.com>

Add a net pointer and net_mode to the vsock skb and helpers for
getting/setting them. When skbs are received the transport needs a way
to tell the vsock layer and/or virtio common layer which namespace and
what namespace mode the packet belongs to. This will be used by those
upper layers for finding the correct socket object. This patch stashes
these fields in the skb control buffer.

This extends virtio_vsock_skb_cb to 24 bytes:

struct virtio_vsock_skb_cb {
	struct net *               net;                  /*     0     8 */
	enum vsock_net_mode        net_mode;        /*     8     4 */
	u32                        offset;               /*    12     4 */
	bool                       reply;                /*    16     1 */
	bool                       tap_delivered;        /*    17     1 */

	/* size: 24, cachelines: 1, members: 5 */
	/* padding: 6 */
	/* last cacheline: 24 bytes */
};

Signed-off-by: Bobby Eshleman <bobbyeshleman@meta.com>

---
Changes in v7:
- rename `orig_net_mode` to `net_mode`
- update commit message with a more complete explanation of changes

Changes in v5:
- some diff context change due to rebase to current net-next
---
 include/linux/virtio_vsock.h | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/include/linux/virtio_vsock.h b/include/linux/virtio_vsock.h
index 87cf4dcac78a..7f334a32133c 100644
--- a/include/linux/virtio_vsock.h
+++ b/include/linux/virtio_vsock.h
@@ -10,6 +10,8 @@
 #define VIRTIO_VSOCK_SKB_HEADROOM (sizeof(struct virtio_vsock_hdr))
 
 struct virtio_vsock_skb_cb {
+	struct net *net;
+	enum vsock_net_mode net_mode;
 	u32 offset;
 	bool reply;
 	bool tap_delivered;
@@ -130,6 +132,27 @@ static inline size_t virtio_vsock_skb_len(struct sk_buff *skb)
 	return (size_t)(skb_end_pointer(skb) - skb->head);
 }
 
+static inline struct net *virtio_vsock_skb_net(struct sk_buff *skb)
+{
+	return VIRTIO_VSOCK_SKB_CB(skb)->net;
+}
+
+static inline void virtio_vsock_skb_set_net(struct sk_buff *skb, struct net *net)
+{
+	VIRTIO_VSOCK_SKB_CB(skb)->net = net;
+}
+
+static inline enum vsock_net_mode virtio_vsock_skb_net_mode(struct sk_buff *skb)
+{
+	return VIRTIO_VSOCK_SKB_CB(skb)->net_mode;
+}
+
+static inline void virtio_vsock_skb_set_net_mode(struct sk_buff *skb,
+						      enum vsock_net_mode net_mode)
+{
+	VIRTIO_VSOCK_SKB_CB(skb)->net_mode = net_mode;
+}
+
 /* Dimension the RX SKB so that the entire thing fits exactly into
  * a single 4KiB page. This avoids wasting memory due to alloc_skb()
  * rounding up to the next page order and also means that we

-- 
2.47.3


  parent reply	other threads:[~2025-10-21 23:47 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-21 23:46 [PATCH net-next v7 00/26] vsock: add namespace support to vhost-vsock Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 01/26] vsock: a per-net vsock NS mode state Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 02/26] vsock/virtio: pack struct virtio_vsock_skb_cb Bobby Eshleman
2025-10-21 23:46 ` Bobby Eshleman [this message]
2025-10-21 23:46 ` [PATCH net-next v7 04/26] vsock: add netns to vsock core Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 05/26] vsock/loopback: add netns support Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 06/26] vsock/virtio: add netns to virtio transport common Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 07/26] vhost/vsock: add netns support Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 08/26] selftests/vsock: improve logging in vmtest.sh Bobby Eshleman
2025-10-22  0:01   ` Jakub Kicinski
2025-10-22  0:18     ` Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 09/26] selftests/vsock: make wait_for_listener() work even if pipefail is on Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 10/26] selftests/vsock: reuse logic for vsock_test through wrapper functions Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 11/26] selftests/vsock: avoid multi-VM pidfile collisions with QEMU Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 12/26] selftests/vsock: do not unconditionally die if qemu fails Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 13/26] selftests/vsock: speed up tests by reducing the QEMU pidfile timeout Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 14/26] selftests/vsock: add check_result() for pass/fail counting Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 15/26] selftests/vsock: identify and execute tests that can re-use VM Bobby Eshleman
2025-10-21 23:46 ` [PATCH net-next v7 16/26] selftests/vsock: add namespace initialization function Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 17/26] selftests/vsock: remove namespaces in cleanup() Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 18/26] selftests/vsock: prepare vm management helpers for namespaces Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 19/26] selftests/vsock: add BUILD=0 definition Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 20/26] selftests/vsock: avoid false-positives when checking dmesg Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 21/26] selftests/vsock: add tests for proc sys vsock ns_mode Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 22/26] selftests/vsock: add namespace tests for CID collisions Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 23/26] selftests/vsock: add tests for host <-> vm connectivity with namespaces Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 24/26] selftests/vsock: add tests for namespace deletion and mode changes Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 25/26] selftests/vsock: add tests for module loading order Bobby Eshleman
2025-10-21 23:47 ` [PATCH net-next v7 26/26] selftests/vsock: add 1.37 to tested virtme-ng versions Bobby Eshleman

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20251021-vsock-vmtest-v7-3-0661b7b6f081@meta.com \
    --to=bobbyeshleman@gmail.com \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=berrange@redhat.com \
    --cc=bobbyeshleman@meta.com \
    --cc=bryan-bt.tan@broadcom.com \
    --cc=davem@davemloft.net \
    --cc=decui@microsoft.com \
    --cc=edumazet@google.com \
    --cc=eperezma@redhat.com \
    --cc=haiyangz@microsoft.com \
    --cc=horms@kernel.org \
    --cc=jasowang@redhat.com \
    --cc=kuba@kernel.org \
    --cc=kvm@vger.kernel.org \
    --cc=kys@microsoft.com \
    --cc=linux-hyperv@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=mst@redhat.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sgarzare@redhat.com \
    --cc=shuah@kernel.org \
    --cc=stefanha@redhat.com \
    --cc=virtualization@lists.linux.dev \
    --cc=vishnu.dasa@broadcom.com \
    --cc=wei.liu@kernel.org \
    --cc=xuanzhuo@linux.alibaba.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox