Message ID | 20240710212555.1617795-3-amery.hung@bytedance.com (mailing list archive) |
---|---|
State | RFC |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | virtio/vsock: support datagrams | expand |
Hi +static const struct vsock_transport * +vsock_connectible_lookup_transport(unsigned int cid, __u8 flags) ^^^ may be just 'u8' ? +{ + const struct vsock_transport *transport; ^^^ do we really need this variable now? May be shorter like: if (A) return transport_local; else if (B) return transport_g2h; else return transport_h2g; + + if (vsock_use_local_transport(cid)) + transport = transport_local; + else if (cid <= VMADDR_CID_HOST || !transport_h2g || + (flags & VMADDR_FLAG_TO_HOST)) + transport = transport_g2h; + else + transport = transport_h2g; + + return transport; +} + Thanks
On Wed, Jul 24, 2024 at 11:41 PM Arseniy Krasnov <avkrasnov@salutedevices.com> wrote: > > Hi > > +static const struct vsock_transport * > +vsock_connectible_lookup_transport(unsigned int cid, __u8 flags) > ^^^ may be just 'u8' ? > +{ > + const struct vsock_transport *transport; > ^^^ do we really need this variable now? > May be shorter like: > if (A) > return transport_local; > else if (B) > return transport_g2h; > else > return transport_h2g; Looks good to me. Will change it in the next version. Thanks, Amery > + > + if (vsock_use_local_transport(cid)) > + transport = transport_local; > + else if (cid <= VMADDR_CID_HOST || !transport_h2g || > + (flags & VMADDR_FLAG_TO_HOST)) > + transport = transport_g2h; > + else > + transport = transport_h2g; > + > + return transport; > +} > + > > Thanks
diff --git a/net/vmw_vsock/af_vsock.c b/net/vmw_vsock/af_vsock.c index 5e7d4d99ea2c..98d10cd30483 100644 --- a/net/vmw_vsock/af_vsock.c +++ b/net/vmw_vsock/af_vsock.c @@ -424,6 +424,22 @@ static void vsock_deassign_transport(struct vsock_sock *vsk) vsk->transport = NULL; } +static const struct vsock_transport * +vsock_connectible_lookup_transport(unsigned int cid, __u8 flags) +{ + const struct vsock_transport *transport; + + if (vsock_use_local_transport(cid)) + transport = transport_local; + else if (cid <= VMADDR_CID_HOST || !transport_h2g || + (flags & VMADDR_FLAG_TO_HOST)) + transport = transport_g2h; + else + transport = transport_h2g; + + return transport; +} + /* Assign a transport to a socket and call the .init transport callback. * * Note: for connection oriented socket this must be called when vsk->remote_addr @@ -464,13 +480,8 @@ int vsock_assign_transport(struct vsock_sock *vsk, struct vsock_sock *psk) break; case SOCK_STREAM: case SOCK_SEQPACKET: - if (vsock_use_local_transport(remote_cid)) - new_transport = transport_local; - else if (remote_cid <= VMADDR_CID_HOST || !transport_h2g || - (remote_flags & VMADDR_FLAG_TO_HOST)) - new_transport = transport_g2h; - else - new_transport = transport_h2g; + new_transport = vsock_connectible_lookup_transport(remote_cid, + remote_flags); break; default: return -ESOCKTNOSUPPORT;