[dpdk-dev] [PATCH v6] net/pcap: physical interface MAC address support

Ferruh Yigit ferruh.yigit at intel.com
Tue Sep 11 17:35:19 CEST 2018


On 9/10/2018 5:55 PM, Juhamatti Kuusisaari wrote:
> At the moment, PCAP interfaces use dummy MAC by default. This change
> adds support for selecting PCAP physical interface MAC with phy_mac=1
> devarg. This allows to setup packet flows using the physical interface
> MAC.
> 
> Signed-off-by: Juhamatti Kuusisaari <juhamatti.kuusisaari at coriant.com>
> 
> ---
>  v6:
>   * Review changes:
>     * Clarified devarg applicability (applies to iface-only)
>     * Introduced detailed documentation for the devarg
>     * More checkpatches-fixes
>  v5-v3:
>   * FreeBSD related compilation and checkpatches-fixes
>  v2:
>   * FreeBSD support introduced
>   * Release notes added
>  v1:
>   * phy_mac=1 devarg support

<...>

> +#elif defined(__FreeBSD__)

Just to double check did you check/verify below code on FreeBSD?

<...>

> @@ -955,6 +1034,10 @@ eth_from_pcaps_common(struct rte_vdev_device *vdev,
>  	else
>  		(*internals)->if_index = if_nametoindex(pair->value);
>  
> +	if (phy_mac && pair) /* phy_mac arg is applied only to iface */

Having this comment is good, but "iface" is so generic, it may be confusing for
beyond this context, what about "only if iface devarg provided" kind of detail?

<...>

> @@ -989,6 +1073,19 @@ eth_from_pcaps(struct rte_vdev_device *vdev,
>  	return 0;
>  }
>  
> +static int
> +select_phy_mac(const char *key, const char *value, void *extra_args)
> +{
> +	if (extra_args) {
> +		const int phy_mac = atoi(value);
> +		int *enable_phy_mac = extra_args;
> +
> +		if (phy_mac)
> +			*enable_phy_mac = 1;
> +	}
> +	return 0;
> +}

This is causing build error because of "key" not used, needs __rte_unused marker.

<...>

> @@ -1031,6 +1129,16 @@ pmd_pcap_probe(struct rte_vdev_device *dev)
>  	 * reading / writing
>  	 */
>  	if (rte_kvargs_count(kvlist, ETH_PCAP_IFACE_ARG) == 1) {
> +		/*
> +		 * We check first whether we want to use phy MAC of the PCAP
> +		 * interface.
> +		 */
> +		if (rte_kvargs_count(kvlist, ETH_PCAP_PHY_MAC_ARG)) {

Do you need count check at all?

> +			ret = rte_kvargs_process(kvlist, ETH_PCAP_PHY_MAC_ARG,
> +					&select_phy_mac, &phy_mac);
> +			if (ret < 0)
> +				goto free_kvlist;
> +		}

I would prefer to see this block below ETH_PCAP_IFACE_ARG check, this block is
for "iface", so it makes more sense to me first verify it, later verify phy_mac



More information about the dev mailing list