mirror of
https://github.com/lkl/linux.git
synced 2025-12-19 08:03:01 +09:00
net: Introduce a new proto_ops ->read_skb()
Currently both splice() and sockmap use ->read_sock() to read skb from receive queue, but for sockmap we only read one entire skb at a time, so ->read_sock() is too conservative to use. Introduce a new proto_ops ->read_skb() which supports this sematic, with this we can finally pass the ownership of skb to recv actors. For non-TCP protocols, all ->read_sock() can be simply converted to ->read_skb(). Signed-off-by: Cong Wang <cong.wang@bytedance.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Reviewed-by: John Fastabend <john.fastabend@gmail.com> Link: https://lore.kernel.org/bpf/20220615162014.89193-3-xiyou.wangcong@gmail.com
This commit is contained in:
committed by
Daniel Borkmann
parent
04919bed94
commit
965b57b469
@@ -306,8 +306,7 @@ struct sock *__udp6_lib_lookup(struct net *net,
|
||||
struct sk_buff *skb);
|
||||
struct sock *udp6_lib_lookup_skb(const struct sk_buff *skb,
|
||||
__be16 sport, __be16 dport);
|
||||
int udp_read_sock(struct sock *sk, read_descriptor_t *desc,
|
||||
sk_read_actor_t recv_actor);
|
||||
int udp_read_skb(struct sock *sk, skb_read_actor_t recv_actor);
|
||||
|
||||
/* UDP uses skb->dev_scratch to cache as much information as possible and avoid
|
||||
* possibly multiple cache miss on dequeue()
|
||||
|
||||
Reference in New Issue
Block a user