[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