[dpdk-dev] [PATCH v2 1/5] net/virtio: prevent simple Tx path selection by default

Tiwei Bie tiwei.bie at intel.com
Thu Jun 7 09:53:53 CEST 2018


On Thu, Jun 07, 2018 at 09:40:35AM +0200, Maxime Coquelin wrote:
> On 06/07/2018 07:43 AM, Tiwei Bie wrote:
> > On Wed, Jun 06, 2018 at 02:31:24PM +0200, Maxime Coquelin wrote:
> > [...]
> > > +
> > > +static int
> > > +virtio_dev_args(struct rte_eth_dev *dev)
> > > +{
> > > +	struct rte_kvargs *kvlist;
> > > +	struct rte_devargs *devargs;
> > > +	const char *valid_args[] = {
> > > +		VIRTIO_SIMPLE_TX_SUPPORT,
> > > +		NULL,
> > > +	};
> > > +	int ret;
> > > +	int i;
> > > +
> > > +	devargs = dev->device->devargs;
> > > +	if (!devargs)
> > > +		return 0; /* return success */
> > > +
> > > +	kvlist = rte_kvargs_parse(devargs->args, valid_args);
> > > +	if (kvlist == NULL)
> > > +		return -EINVAL;
> > 
> > Virtio-user has defined some other mandatory devargs.
> > The parse will fail when other devargs have been
> > specified.
> 
> Ok, so IIUC, just returning 0 here should do the trick, right?

I think you can't just return 0 in this case,
because you still need to find and parse the
VIRTIO_SIMPLE_TX_SUPPORT devarg.

I didn't look into the kvargs code. It seems
that you can pass NULL as the second param
when calling rte_kvargs_parse(), i.e. just
get the KV list without valid keys check.

Best regards,
Tiwei Bie

> 
> > > +
> > > +	 /* Process parameters. */
> > > +	for (i = 0; (valid_args[i] != NULL); ++i) {
> > 
> > There is an extra space before the comment.
> > The () around `valid_args[i] != NULL` isn't necessary.
> 
> Fixed.
> 
> > > +		if (rte_kvargs_count(kvlist, valid_args[i])) {
> > > +			ret = rte_kvargs_process(kvlist, valid_args[i],
> > > +						 virtio_dev_args_check, dev);
> > > +			if (ret) {
> > > +				rte_kvargs_free(kvlist);
> > > +				return ret;
> > > +			}
> > > +		}
> > > +	}
> > > +	rte_kvargs_free(kvlist);
> > > +
> > > +	return 0;
> > > +}
> > > +
> > [...]
> > 
> 
> Thanks!
> Maxime


More information about the dev mailing list