[dpdk-dev] [PATCH] kni: create KNI interface in current network namespace

2014-12-01 Thread Nicolas Dichtel
Le 01/12/2014 06:45, Hemant at freescale.com a ?crit :
>> 2014-11-21 12:10, Takayuki Usui:
>>> With this patch, KNI interface (e.g. vEth0) is created in the network
>>> namespace where the DPDK application is running.
>>> Otherwise, all interfaces are created in the default namespace in the
>>> host.
>>>
>>> Signed-off-by: Takayuki Usui 
>>> ---
>>>   lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++
>>>   1 file changed, 2 insertions(+)
>>>
>>> diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c
>>> b/lib/librte_eal/linuxapp/kni/kni_misc.c
>>> index ba6..f4a9965 100644
>>> --- a/lib/librte_eal/linuxapp/kni/kni_misc.c
>>> +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c
>>> @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned
>> long ioctl_param)
>>> return -EBUSY;
>>> }
>>>
>>> +   dev_net_set(net_dev, get_net_ns_by_pid(current->pid));
>>> +
>
> Another way to get it done is by the following. It will be init_net for the 
> root container.
>
> #ifdef CONFIG_NET_NS
>   net_dev->nd_net = current->nsproxy->net_ns;
> #endif
No. It's always better to use existing helpers, it hides this kind of ifdef and
more importantly, it do the right things (call release_net()/hold_net())!
Reimplemented helpers is error prone.


[dpdk-dev] [PATCH] kni: create KNI interface in current network namespace

2014-12-01 Thread hem...@freescale.com
> 2014-11-21 12:10, Takayuki Usui:
> > With this patch, KNI interface (e.g. vEth0) is created in the network
> > namespace where the DPDK application is running.
> > Otherwise, all interfaces are created in the default namespace in the
> > host.
> >
> > Signed-off-by: Takayuki Usui 
> > ---
> >  lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++
> >  1 file changed, 2 insertions(+)
> >
> > diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c
> > b/lib/librte_eal/linuxapp/kni/kni_misc.c
> > index ba6..f4a9965 100644
> > --- a/lib/librte_eal/linuxapp/kni/kni_misc.c
> > +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c
> > @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned
> long ioctl_param)
> > return -EBUSY;
> > }
> >
> > +   dev_net_set(net_dev, get_net_ns_by_pid(current->pid));
> > +

Another way to get it done is by the following. It will be init_net for the 
root container.

#ifdef CONFIG_NET_NS
net_dev->nd_net = current->nsproxy->net_ns; 
#endif
> > kni = netdev_priv(net_dev);
> >
> > kni->net_dev = net_dev;



[dpdk-dev] [PATCH] kni: create KNI interface in current network namespace

2014-11-27 Thread Nicolas Dichtel
Le 21/11/2014 04:10, Takayuki Usui a ?crit :
> With this patch, KNI interface (e.g. vEth0) is created in the
> network namespace where the DPDK application is running.
> Otherwise, all interfaces are created in the default namespace
> in the host.
>
> Signed-off-by: Takayuki Usui 
> ---
>   lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++
>   1 file changed, 2 insertions(+)
>
> diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c 
> b/lib/librte_eal/linuxapp/kni/kni_misc.c
> index ba6..f4a9965 100644
> --- a/lib/librte_eal/linuxapp/kni/kni_misc.c
> +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c
> @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long 
> ioctl_param)
>   return -EBUSY;
>   }
>
> + dev_net_set(net_dev, get_net_ns_by_pid(current->pid));
You should test the returned value and release the refcnt.
net = get_net_ns_by_pid(current->pid)
if (IS_ERR(net))
...
put_net(net);

> +
>   kni = netdev_priv(net_dev);
>
>   kni->net_dev = net_dev;
>



[dpdk-dev] [PATCH] kni: create KNI interface in current network namespace

2014-11-26 Thread Thomas Monjalon
Anyone to review this KNI patch?

2014-11-21 12:10, Takayuki Usui:
> With this patch, KNI interface (e.g. vEth0) is created in the
> network namespace where the DPDK application is running.
> Otherwise, all interfaces are created in the default namespace
> in the host.
> 
> Signed-off-by: Takayuki Usui 
> ---
>  lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c 
> b/lib/librte_eal/linuxapp/kni/kni_misc.c
> index ba6..f4a9965 100644
> --- a/lib/librte_eal/linuxapp/kni/kni_misc.c
> +++ b/lib/librte_eal/linuxapp/kni/kni_misc.c
> @@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long 
> ioctl_param)
>   return -EBUSY;
>   }
>  
> + dev_net_set(net_dev, get_net_ns_by_pid(current->pid));
> +
>   kni = netdev_priv(net_dev);
>  
>   kni->net_dev = net_dev;



[dpdk-dev] [PATCH] kni: create KNI interface in current network namespace

2014-11-21 Thread Takayuki Usui
With this patch, KNI interface (e.g. vEth0) is created in the
network namespace where the DPDK application is running.
Otherwise, all interfaces are created in the default namespace
in the host.

Signed-off-by: Takayuki Usui 
---
 lib/librte_eal/linuxapp/kni/kni_misc.c | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/lib/librte_eal/linuxapp/kni/kni_misc.c 
b/lib/librte_eal/linuxapp/kni/kni_misc.c
index ba6..f4a9965 100644
--- a/lib/librte_eal/linuxapp/kni/kni_misc.c
+++ b/lib/librte_eal/linuxapp/kni/kni_misc.c
@@ -354,6 +354,8 @@ kni_ioctl_create(unsigned int ioctl_num, unsigned long 
ioctl_param)
return -EBUSY;
}

+   dev_net_set(net_dev, get_net_ns_by_pid(current->pid));
+
kni = netdev_priv(net_dev);

kni->net_dev = net_dev;
-- 
2.1.3