From: Igor Ryzhov [mailto:iryz...@nfware.com] Sent: Thursday, April 21, 2016 11:16 PM To: Zhang, Helin Cc: Sergey Balabanov; dev at dpdk.org Subject: Re: [dpdk-dev] [PATCH] kni: set kni mac on ioctl_create
Hello. I rebased a patch and added Suggested-by string. Check it, please:?http://dpdk.org/dev/patchwork/patch/12188/. [Helin] is that the v2 version? It seems that I cannot find that. Best regards, Igor 18 ????? 2016 ?., ? 5:14, Zhang, Helin <helin.zhang at intel.com> ???????(?): Hi Sergey -----Original Message----- From: dev [mailto:dev-boun...@dpdk.org] On Behalf Of Sergey Balabanov Sent: Friday, August 28, 2015 9:06 PM To:?dev at dpdk.org Subject: [dpdk-dev] [PATCH] kni: set kni mac on ioctl_create There is a situation when ioctl returns zero mac address (00:00:00:00:00:00) for just created kni. The situation happens because kni mac is set on 'ipconfig up' event (kni_net_open callback) not on kni creation (kni_ioctl_create). Could you help to clarify a bit of the real issue? What's wrong there? Signed-off-by: Sergey Balabanov <balabanovsv at ecotelecom.ru> --- lib/librte_eal/linuxapp/kni/kni_misc.c | 10 ++++++++++ lib/librte_eal/linuxapp/kni/kni_net.c ?| ?9 --------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c b/lib/librte_eal/linuxapp/kni/kni_misc.c index 2e9fa89..61f83a0 100644 --- a/lib/librte_eal/linuxapp/kni/kni_misc.c +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c @@ -28,6 +28,7 @@ #include <linux/pci.h> #include <linux/kthread.h> #include <linux/rwsem.h> +#include <linux/etherdevice.h> /* eth_type_trans */ #include <exec-env/rte_kni_common.h> #include "kni_dev.h" @@ -465,6 +466,15 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long ioctl_param) if (pci) pci_dev_put(pci); + if (kni->lad_dev) + memcpy(net_dev->dev_addr, kni->lad_dev->dev_addr, ETH_ALEN); + else + /* + ?* Generate random mac address. eth_random_addr() is the newer + ?* version of generating mac address in linux kernel. + ?*/ + random_ether_addr(net_dev->dev_addr); + A rebase is needed, as a lot of changes after that. Thanks! Helin ret = register_netdev(net_dev); if (ret) { KNI_ERR("error %i registering device \"%s\"\n", diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c b/lib/librte_eal/linuxapp/kni/kni_net.c index ab5add4..b50b4cf 100644 --- a/lib/librte_eal/linuxapp/kni/kni_net.c +++ b/lib/librte_eal/linuxapp/kni/kni_net.c @@ -70,15 +70,6 @@ kni_net_open(struct net_device *dev) struct rte_kni_request req; struct kni_dev *kni = netdev_priv(dev); - if (kni->lad_dev) - memcpy(dev->dev_addr, kni->lad_dev->dev_addr, ETH_ALEN); - else - /* - ?* Generate random mac address. eth_random_addr() is the newer - ?* version of generating mac address in linux kernel. - ?*/ - random_ether_addr(dev->dev_addr); - netif_start_queue(dev); memset(&req, 0, sizeof(req)); -- 2.1.4