[dpdk-dev] [PATCH 6/6] net/tap: implement link up and down callbacks

Ferruh Yigit ferruh.yigit at intel.com
Tue Jan 31 14:21:28 CET 2017


On 1/31/2017 9:42 AM, Pascal Mazon wrote:
> Signed-off-by: Pascal Mazon <pascal.mazon at 6wind.com>
> ---
>  drivers/net/tap/rte_eth_tap.c | 59 +++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 59 insertions(+)
> 
> diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c
> index 734e3a579219..9b6bbff5fd81 100644
> --- a/drivers/net/tap/rte_eth_tap.c
> +++ b/drivers/net/tap/rte_eth_tap.c
> @@ -405,6 +405,63 @@ tap_link_update(struct rte_eth_dev *dev __rte_unused,
>  	return 0;
>  }
>  
> +static int tap_link_set(struct pmd_internals *pmd, int state)
> +{
> +	struct ifreq ifr;
> +	int err, s;
> +
> +	/*
> +	 * An AF_INET/DGRAM socket is needed for
> +	 * SIOCGIFFLAGS/SIOCSIFFLAGS, using fd won't work.
> +	 */
> +	s = socket(AF_INET, SOCK_DGRAM, 0);
> +	if (s < 0) {
> +		RTE_LOG(ERR, PMD,
> +			"Unable to get a socket to set flags: %s\n",
> +			strerror(errno));
> +		return -1;
> +	}
> +	memset(&ifr, 0, sizeof(ifr));
> +	strncpy(ifr.ifr_name, pmd->name, IFNAMSIZ);

Again how this will behave for multiple queue setup.

Rest looks good.

> +	err = ioctl(s, SIOCGIFFLAGS, &ifr);
> +	if (err < 0) {
> +		RTE_LOG(ERR, PMD, "Unable to get tap netdevice flags: %s\n",
> +			strerror(errno));
> +		close(s);
> +		return -1;
> +	}
<...>


More information about the dev mailing list