On 11/20/2018 10:26 AM, Tiago Lam wrote:
> Instead of re-iterating through kvlist just to parse the
> ETH_AF_PACKET_IFACE_ARG argument in rte_pmd_init_internals(), we now use
> the already existing iteration in rte_eth_from_packet() to parse and
> validate the ETH_AF_PACKET_IFACE_ARG argument.

+1

> 
> This will be useful for a later commit, which needs to access the
> interface name to get the underlying configured MTU.
> 
> Signed-off-by: Tiago Lam <tiago....@intel.com>
> ---
> 
> v2: Fix checkpatches.sh and check-git-log.sh warnings.
> 
> ---
>  drivers/net/af_packet/rte_eth_af_packet.c | 77 
> ++++++++++++++++---------------
>  1 file changed, 41 insertions(+), 36 deletions(-)
> 
> diff --git a/drivers/net/af_packet/rte_eth_af_packet.c 
> b/drivers/net/af_packet/rte_eth_af_packet.c
> index 264cfc0..8d749a2 100644
> --- a/drivers/net/af_packet/rte_eth_af_packet.c
> +++ b/drivers/net/af_packet/rte_eth_af_packet.c
> @@ -540,15 +540,12 @@ rte_pmd_init_internals(struct rte_vdev_device *dev,
>                      unsigned int qdisc_bypass,
>                         struct pmd_internals **internals,
>                         struct rte_eth_dev **eth_dev,
> -                       struct rte_kvargs *kvlist)
> +                                        const char *ifname)

Please align other parameter formatting.

<...>

> @@ -877,6 +856,32 @@ rte_eth_from_packet(struct rte_vdev_device *dev,
>                       }
>                       continue;
>               }
> +             if (strstr(pair->key, ETH_AF_PACKET_IFACE_ARG) != NULL) {
> +                     ifname = pair->value;
> +                     if (strlen(ifname) == 0) {
> +                             RTE_LOG(ERR, PMD,
> +                                     "%s: invalid iface value\n",
> +                                     name);
> +                             return -1;
> +                     }
> +
> +                     continue;
> +             }

Indeed instead of accessing kvargs internal pair->values, this should call
rte_kvargs_process() but that is for another patch to fix all occurrences.

> +     }
> +
> +     if (ifname == NULL) {
> +             RTE_LOG(ERR, PMD,
> +                     "%s: no interface specified for AF_PACKET ethdev\n",
> +                     name);
> +             return -1;
> +     }
> +
> +     ifnamelen = strlen(ifname);

I am aware this is copy-paste but since update, perhaps we can use strnlen()
instead.

Reply via email to