From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Monjalon Subject: Re: [PATCH] kni: set kni mac on ioctl_create Date: Thu, 17 Mar 2016 16:06:41 +0100 Message-ID: <1937236.JoGhlxSSgr@xps13> References: <1440767187-19120-1-git-send-email-balabanovsv@ecotelecom.ru> <3010257.KLf28YlHHW@stand> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7Bit Cc: dev@dpdk.org, Sergey Balabanov To: Helin Zhang Return-path: Received: from mail-wm0-f42.google.com (mail-wm0-f42.google.com [74.125.82.42]) by dpdk.org (Postfix) with ESMTP id 7AA9A2BD0 for ; Thu, 17 Mar 2016 16:08:12 +0100 (CET) Received: by mail-wm0-f42.google.com with SMTP id p65so121716267wmp.0 for ; Thu, 17 Mar 2016 08:08:12 -0700 (PDT) In-Reply-To: <3010257.KLf28YlHHW@stand> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Helin, You have probably missed this (old) patch / bug report. 2015-08-28 16:08, Sergey Balabanov: > Hi, > > Probably I missed something in understanding why the mac is not set on kni > creation. Any comments would be highly appreciated. > > Thanks, > Sergey > > On Friday 28 August 2015 16:06:27 Sergey Balabanov wrote: > > 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). > > > > Signed-off-by: Sergey Balabanov > > --- > > 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 > > #include > > #include > > +#include /* eth_type_trans */ > > > > #include > > #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); > > + > > 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));