mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-28 18:51:56 -04:00
tun: switch to new type of msg_control
This patch introduces to a new tun/tap specific msg_control:
#define TUN_MSG_UBUF 1
#define TUN_MSG_PTR 2
struct tun_msg_ctl {
int type;
void *ptr;
};
This allows us to pass different kinds of msg_control through
sendmsg(). The first supported type is ubuf (TUN_MSG_UBUF) which will
be used by the existed vhost_net zerocopy code. The second is XDP
buff, which allows vhost_net to pass XDP buff to TUN. This could be
used to implement accepting an array of XDP buffs from vhost_net in
the following patches.
Signed-off-by: Jason Wang <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
This commit is contained in:
parent
1a097910ad
commit
fe8dd45bb7
4 changed files with 36 additions and 9 deletions
|
|
@ -620,6 +620,7 @@ static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)
|
|||
.msg_controllen = 0,
|
||||
.msg_flags = MSG_DONTWAIT,
|
||||
};
|
||||
struct tun_msg_ctl ctl;
|
||||
size_t len, total_len = 0;
|
||||
int err;
|
||||
struct vhost_net_ubuf_ref *uninitialized_var(ubufs);
|
||||
|
|
@ -664,8 +665,10 @@ static void handle_tx_zerocopy(struct vhost_net *net, struct socket *sock)
|
|||
ubuf->ctx = nvq->ubufs;
|
||||
ubuf->desc = nvq->upend_idx;
|
||||
refcount_set(&ubuf->refcnt, 1);
|
||||
msg.msg_control = ubuf;
|
||||
msg.msg_controllen = sizeof(ubuf);
|
||||
msg.msg_control = &ctl;
|
||||
ctl.type = TUN_MSG_UBUF;
|
||||
ctl.ptr = ubuf;
|
||||
msg.msg_controllen = sizeof(ctl);
|
||||
ubufs = nvq->ubufs;
|
||||
atomic_inc(&ubufs->refcount);
|
||||
nvq->upend_idx = (nvq->upend_idx + 1) % UIO_MAXIOV;
|
||||
|
|
|
|||
Loading…
Reference in a new issue