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; > + } <...>