[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