[dpdk-dev] [PATCH v2 2/2] net/netvsc: support VF device hot add/remove
Long Li
longli at microsoft.com
Wed Jan 6 03:50:58 CET 2021
> Subject: Re: [dpdk-dev] [PATCH v2 2/2] net/netvsc: support VF device hot
> add/remove
>
> On Mon, 21 Dec 2020 13:33:22 -0800
> Long Li <longli at linuxonhyperv.com> wrote:
>
> > /* trying to get mac address if this is a network device*/
> > + s = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP);
> > + if (s == -1) {
> > + PMD_DRV_LOG(ERR, "Failed to create socket
> errno %d\n",
> > + errno);
> > + break;
> > + }
> > + strlcpy(req.ifr_name, dir->d_name, sizeof(req.ifr_name));
> > + ret = ioctl(s, SIOCGIFHWADDR, &req);
> > + close(s);
> > + if (ret == -1) {
> > + PMD_DRV_LOG(ERR, "Failed to send
> SIOCGIFHWADDR for "
> > + "device %s\n", dir->d_name);
> > + break;
> > + }
> > + if (req.ifr_hwaddr.sa_family != ARPHRD_ETHER) {
> > + closedir(di);
> > + return;
> > + }
>
> You have sysfs directory open at this point, would it be easier to continue
> with sysfs to find the mac address?
>
> snprintf(ifpath, sizeof(ifpath), "%s/address", dir->d_name);
> fd = openat(dirfd(di), ifpath, O_RDONLY);
> read(fd...)
I think sending SIOCGIFHWADDR through socket is safer. This is the same as vdev_netvsc does. If the network hardware is not ethernet, reading the address directly from sysfs may require some additional parsing.
More information about the dev
mailing list