On 1/31/2017 9:42 AM, Pascal Mazon wrote:
> Signed-off-by: Pascal Mazon <pascal.ma...@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;
> +     }
<...>

Reply via email to