[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20201222000926.1054993-10-jonathan.lemon@gmail.com>
Date: Mon, 21 Dec 2020 16:09:23 -0800
From: Jonathan Lemon <jonathan.lemon@...il.com>
To: <netdev@...r.kernel.org>, <edumazet@...gle.com>,
<willemdebruijn.kernel@...il.com>
CC: <kernel-team@...com>
Subject: [PATCH 09/12 v2 RFC] skbuff: add zc_flags to ubuf_info for ubuf setup
From: Jonathan Lemon <bsd@...com>
Currently, an ubuf is attached to a new skb, the skb zc_flags
is initialized to a fixed value. Instead of doing this, set
the default zc_flags in the ubuf, and have new skb's inherit
from this default.
This is needed when setting up different zerocopy types.
Signed-off-by: Jonathan Lemon <jonathan.lemon@...il.com>
---
include/linux/skbuff.h | 3 ++-
net/core/skbuff.c | 1 +
2 files changed, 3 insertions(+), 1 deletion(-)
diff --git a/include/linux/skbuff.h b/include/linux/skbuff.h
index da0c1dddd0da..b90be4b0b2de 100644
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
@@ -478,6 +478,7 @@ struct ubuf_info {
};
};
refcount_t refcnt;
+ u8 zc_flags;
struct mmpin {
struct user_struct *user;
@@ -1454,7 +1455,7 @@ static inline void skb_zcopy_set(struct sk_buff *skb, struct ubuf_info *uarg,
else
skb_zcopy_get(uarg);
skb_shinfo(skb)->destructor_arg = uarg;
- skb_shinfo(skb)->zc_flags |= SKBZC_FRAGMENTS;
+ skb_shinfo(skb)->zc_flags |= uarg->zc_flags;
}
}
diff --git a/net/core/skbuff.c b/net/core/skbuff.c
index 8352da29f052..463078ba663f 100644
--- a/net/core/skbuff.c
+++ b/net/core/skbuff.c
@@ -1118,6 +1118,7 @@ struct ubuf_info *sock_zerocopy_alloc(struct sock *sk, size_t size)
uarg->len = 1;
uarg->bytelen = size;
uarg->zerocopy = 1;
+ uarg->zc_flags = SKBZC_FRAGMENTS;
refcount_set(&uarg->refcnt, 1);
sock_hold(sk);
--
2.24.1
Powered by blists - more mailing lists