net/vmw_vsock/virtio_transport_common.c | 63 +++++++++++++++++++------ 1 file changed, 49 insertions(+), 14 deletions(-)
This adds small optimization for tx path: instead of allocating single skbuff on every call to transport, allocate multiple skbuff's until credit space allows, thus trying to send as much as possible data without return to af_vsock.c. Also this patchset includes second patch which adds check and return from 'virtio_transport_get_credit()' and 'virtio_transport_put_credit()' when these functions are called with 0 argument. This is needed, because zero argument makes both functions to behave as no-effect, but both of them always tries to acquire spinlock. Moreover, first patch always calls function 'virtio_transport_put_credit()' with zero argument in case of successful packet transmission. Link to v1: https://lore.kernel.org/netdev/2c52aa26-8181-d37a-bccd-a86bd3cbc6e1@sberdevices.ru/ Link to v2: https://lore.kernel.org/netdev/ea5725eb-6cb5-cf15-2938-34e335a442fa@sberdevices.ru/ Link to v3: https://lore.kernel.org/netdev/f33ef593-982e-2b3f-0986-6d537a3aaf08@sberdevices.ru/ Link to v4: https://lore.kernel.org/netdev/0e0c1421-7cdc-2582-b120-cad6f42824bb@sberdevices.ru/ Link to v5: https://lore.kernel.org/netdev/f0b283a1-cc63-dc3d-cc0c-0da7f684d4d2@sberdevices.ru/ Changelog: v1 -> v2: - If sent something, return number of bytes sent (even in case of error). Return error only if failed to sent first skbuff. v2 -> v3: - Handle case when transport callback returns unexpected value which is not equal to 'skb->len'. Break loop. - Don't check for zero value of 'rest_len' before calling 'virtio_transport_put_credit()'. Decided to add this check directly to 'virtio_transport_put_credit()' in separate patch. v3 -> v4: - Use WARN_ONCE() to handle case when transport callback returns unexpected value. - Remove useless 'ret = -EFAULT;' assignment for case above. v4 -> v5: - Remove extra 'ret' initialization. - Remove empty extra line before 'if (ret < 0)'. - Add R-b tag for the first patch. - Add second patch, thus creating patchset of 2 patches. Arseniy Krasnov (2): virtio/vsock: allocate multiple skbuffs on tx virtio/vsock: check argument to avoid no effect call net/vmw_vsock/virtio_transport_common.c | 63 +++++++++++++++++++------ 1 file changed, 49 insertions(+), 14 deletions(-) -- 2.25.1
Hello: This series was applied to netdev/net-next.git (main) by Paolo Abeni <pabeni@redhat.com>: On Sun, 26 Mar 2023 01:02:43 +0300 you wrote: > This adds small optimization for tx path: instead of allocating single > skbuff on every call to transport, allocate multiple skbuff's until > credit space allows, thus trying to send as much as possible data without > return to af_vsock.c. > > Also this patchset includes second patch which adds check and return from > 'virtio_transport_get_credit()' and 'virtio_transport_put_credit()' when > these functions are called with 0 argument. This is needed, because zero > argument makes both functions to behave as no-effect, but both of them > always tries to acquire spinlock. Moreover, first patch always calls > function 'virtio_transport_put_credit()' with zero argument in case of > successful packet transmission. > > [...] Here is the summary with links: - [net-next,v5,1/2] virtio/vsock: allocate multiple skbuffs on tx https://git.kernel.org/netdev/net-next/c/b68ffb1b3bee - [net-next,v5,2/2] virtio/vsock: check argument to avoid no effect call https://git.kernel.org/netdev/net-next/c/e3ec366eb0d1 You are awesome, thank you! -- Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/patchwork/pwbot.html
© 2016 - 2024 Red Hat, Inc.