[dpdk-dev] [PATCH 2/2] net/vhost: support mrg-rxbuf disabling

Maxime Coquelin maxime.coquelin at redhat.com
Thu Jun 20 09:27:06 CEST 2019



On 6/20/19 7:57 AM, Noa Ezra wrote:
> Hi Maxime,
> Thanks for your comment, please see below.
> 
>> -----Original Message-----
>> From: Maxime Coquelin [mailto:maxime.coquelin at redhat.com]
>> Sent: Wednesday, June 19, 2019 12:10 PM
>> To: Noa Ezra <noae at mellanox.com>
>> Cc: Matan Azrad <matan at mellanox.com>; dev at dpdk.org
>> Subject: Re: [PATCH 2/2] net/vhost: support mrg-rxbuf disabling
>>
>> Hi Noa,
>>
>> On 6/19/19 8:13 AM, Noa Ezra wrote:
>>> Rx mergeable buffers is a virtio feature that allows chaining of
>>> multiple virtio descriptors to handle large packet size.
>>> This behavior is supported and enabled by default, however in case the
>>> user knows that rx mergeable buffers are not needed, he can disable
>>> the feature.
>>> The user should also set mrg_rxbuf=off in virtual machine's xml.
>>
>> I'm not sure to understand why it is needed, as the vhost-user library
>> supports the feature, it's better to let it being advertised.
>>
>> As you say, it is up to the user to disable it in the VM's XML.
>> Done this way, the feature won't be negotiated.
>>
> I agree with you, I'll remove this patch from the series.
> 
>> Moreover, the proposal deadline for v19.08 is over by more than 2 weeks.
> I'm sorry, the mail was sent  a long time but didn't get to the mailing list.

No problem, I just wanted to make you aware I could not take it anyway
in v19.08.

> In any case, I'll prepare a new patch with only TSO (the first patch) and send it to the next release.

As I replied to Matan, could you add the notice for the TSO disabled by
default in the release not for this release?

Thanks,
Maxime
>> Maxime
>>
>>> Signed-off-by: Noa Ezra <noae at mellanox.com>
>>> Reviewed-by: Matan Azrad <matan at mellanox.com>
>>> ---
>>>    doc/guides/nics/vhost.rst         |  5 +++++
>>>    drivers/net/vhost/rte_eth_vhost.c | 17 ++++++++++++++++-
>>>    2 files changed, 21 insertions(+), 1 deletion(-)
>>>
>>> diff --git a/doc/guides/nics/vhost.rst b/doc/guides/nics/vhost.rst
>>> index 8cfda4d..2a455b5 100644
>>> --- a/doc/guides/nics/vhost.rst
>>> +++ b/doc/guides/nics/vhost.rst
>>> @@ -81,6 +81,11 @@ The user can specify below arguments in `--vdev`
>> option.
>>>        It is used to disable tso support in vhost library.
>>>        (Default: 1 (enabled))
>>>
>>> +#.  ``mrg-rxbuf``:
>>> +
>>> +    It is used to disable mrg rxbuf support in vhost library.
>>> +    (Default: 1 (enabled))
>>> +
>>>    Vhost PMD event handling
>>>    ------------------------
>>>
>>> diff --git a/drivers/net/vhost/rte_eth_vhost.c
>>> b/drivers/net/vhost/rte_eth_vhost.c
>>> index a38c235..9a54020 100644
>>> --- a/drivers/net/vhost/rte_eth_vhost.c
>>> +++ b/drivers/net/vhost/rte_eth_vhost.c
>>> @@ -32,6 +32,7 @@
>>>    #define ETH_VHOST_IOMMU_SUPPORT		"iommu-support"
>>>    #define ETH_VHOST_POSTCOPY_SUPPORT	"postcopy-support"
>>>    #define ETH_VHOST_VIRTIO_NET_F_HOST_TSO "tso"
>>> +#define ETH_VHOST_VIRTIO_NET_F_MRG_RXBUF "mrg-rxbuf"
>>>    #define VHOST_MAX_PKT_BURST 32
>>>
>>>    static const char *valid_arguments[] = { @@ -42,6 +43,7 @@
>>>    	ETH_VHOST_IOMMU_SUPPORT,
>>>    	ETH_VHOST_POSTCOPY_SUPPORT,
>>>    	ETH_VHOST_VIRTIO_NET_F_HOST_TSO,
>>> +	ETH_VHOST_VIRTIO_NET_F_MRG_RXBUF,
>>>    	NULL
>>>    };
>>>
>>> @@ -1348,6 +1350,7 @@ struct vhost_xstats_name_off {
>>>    	int iommu_support = 0;
>>>    	int postcopy_support = 0;
>>>    	int tso = 1;
>>> +	int mrg_rxbuf = 1;
>>>    	struct rte_eth_dev *eth_dev;
>>>    	const char *name = rte_vdev_device_name(dev);
>>>
>>> @@ -1442,6 +1445,17 @@ struct vhost_xstats_name_off {
>>>    		}
>>>    	}
>>>
>>> +	if (rte_kvargs_count(kvlist,
>> ETH_VHOST_VIRTIO_NET_F_MRG_RXBUF) == 1) {
>>> +		ret = rte_kvargs_process(kvlist,
>>> +				ETH_VHOST_VIRTIO_NET_F_MRG_RXBUF,
>>> +				&open_int, &mrg_rxbuf);
>>> +		if (ret < 0)
>>> +			goto out_free;
>>> +
>>> + 		if (mrg_rxbuf == 0)
>>> +			disable_flags |= (1ULL <<
>> VIRTIO_NET_F_MRG_RXBUF);
>>> +	}
>>> +
>>>    	if (dev->device.numa_node == SOCKET_ID_ANY)
>>>    		dev->device.numa_node = rte_socket_id();
>>>
>>> @@ -1494,7 +1508,8 @@ struct vhost_xstats_name_off {
>>>    	"dequeue-zero-copy=<0|1> "
>>>    	"iommu-support=<0|1> "
>>>    	"postcopy-support=<0|1> "
>>> -	"tso=<0|1>");
>>> +	"tso=<0|1> "
>>> +	"mrg-rxbuf=<0|1>");
>>>
>>>    RTE_INIT(vhost_init_log)
>>>    {
>>>


More information about the dev mailing list