Message ID | 20150507151754.1620c4cb@miho (mailing list archive) |
---|---|
State | Superseded, archived |
Headers |
Return-Path: <dev-bounces@dpdk.org> X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 39FE35960; Thu, 7 May 2015 15:18:05 +0200 (CEST) Received: from ernst.netinsight.se (ernst.netinsight.se [194.16.221.21]) by dpdk.org (Postfix) with SMTP id 409805697 for <dev@dpdk.org>; Thu, 7 May 2015 15:18:03 +0200 (CEST) Received: from miho (unverified [10.100.1.152]) by ernst.netinsight.se (EMWAC SMTPRS 0.83) with SMTP id <B0029835986@ernst.netinsight.se>; Thu, 07 May 2015 15:17:54 +0200 Date: Thu, 7 May 2015 15:17:54 +0200 From: Simon Kagstrom <simon.kagstrom@netinsight.net> To: dev@dpdk.org Message-ID: <20150507151754.1620c4cb@miho> X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.27; x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Subject: [dpdk-dev] [PATCH / RFC] kni: Add set_rx_mode callback to handle multicast groups X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK <dev.dpdk.org> List-Unsubscribe: <http://dpdk.org/ml/options/dev>, <mailto:dev-request@dpdk.org?subject=unsubscribe> List-Archive: <http://dpdk.org/ml/archives/dev/> List-Post: <mailto:dev@dpdk.org> List-Help: <mailto:dev-request@dpdk.org?subject=help> List-Subscribe: <http://dpdk.org/ml/listinfo/dev>, <mailto:dev-request@dpdk.org?subject=subscribe> Errors-To: dev-bounces@dpdk.org Sender: "dev" <dev-bounces@dpdk.org> |
Commit Message
Simon Kagstrom
May 7, 2015, 1:17 p.m. UTC
This is needed to add / remove interfaces in multicast groups via the
ip tool.
The callback does nothing - the same as the kernel tun.c.
Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
---
Marked RFC since I'm by no means an expert on this. We noticed this
when playing with KNI and IGMP handling.
lib/librte_eal/linuxapp/kni/kni_net.c | 6 ++++++
1 file changed, 6 insertions(+)
Comments
Ping? // Simon On 2015-05-07 15:17, Simon Kagstrom wrote: > This is needed to add / remove interfaces in multicast groups via the > ip tool. > > The callback does nothing - the same as the kernel tun.c. > > Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net> > --- > Marked RFC since I'm by no means an expert on this. We noticed this > when playing with KNI and IGMP handling. > > lib/librte_eal/linuxapp/kni/kni_net.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c > b/lib/librte_eal/linuxapp/kni/kni_net.c index dd95db5..cf93c4b 100644 > --- a/lib/librte_eal/linuxapp/kni/kni_net.c > +++ b/lib/librte_eal/linuxapp/kni/kni_net.c > @@ -495,6 +495,11 @@ kni_net_ioctl(struct net_device *dev, struct ifreq > *rq, int cmd) return 0; > } > > +static void > +kni_net_set_rx_mode(struct net_device *dev) > +{ > +} > + > static int > kni_net_change_mtu(struct net_device *dev, int new_mtu) > { > @@ -645,6 +650,7 @@ static const struct net_device_ops > kni_net_netdev_ops = { .ndo_start_xmit = kni_net_tx, > .ndo_change_mtu = kni_net_change_mtu, > .ndo_do_ioctl = kni_net_ioctl, > + .ndo_set_rx_mode = kni_net_set_rx_mode, > .ndo_get_stats = kni_net_stats, > .ndo_tx_timeout = kni_net_tx_timeout, > .ndo_set_mac_address = kni_net_set_mac, >
Stephen, Helin, perhaps you have some comment about this patch? // Simon On 2015-05-07 15:17, Simon Kagstrom wrote: > This is needed to add / remove interfaces in multicast groups via the > ip tool. > > The callback does nothing - the same as the kernel tun.c. > > Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net> > --- > Marked RFC since I'm by no means an expert on this. We noticed this > when playing with KNI and IGMP handling. > > lib/librte_eal/linuxapp/kni/kni_net.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c > b/lib/librte_eal/linuxapp/kni/kni_net.c index dd95db5..cf93c4b 100644 > --- a/lib/librte_eal/linuxapp/kni/kni_net.c > +++ b/lib/librte_eal/linuxapp/kni/kni_net.c > @@ -495,6 +495,11 @@ kni_net_ioctl(struct net_device *dev, struct ifreq > *rq, int cmd) return 0; > } > > +static void > +kni_net_set_rx_mode(struct net_device *dev) > +{ > +} > + > static int > kni_net_change_mtu(struct net_device *dev, int new_mtu) > { > @@ -645,6 +650,7 @@ static const struct net_device_ops > kni_net_netdev_ops = { .ndo_start_xmit = kni_net_tx, > .ndo_change_mtu = kni_net_change_mtu, > .ndo_do_ioctl = kni_net_ioctl, > + .ndo_set_rx_mode = kni_net_set_rx_mode, > .ndo_get_stats = kni_net_stats, > .ndo_tx_timeout = kni_net_tx_timeout, > .ndo_set_mac_address = kni_net_set_mac, >
On Thu, 7 May 2015 15:17:54 +0200 Simon Kagstrom <simon.kagstrom@netinsight.net> wrote: > This is needed to add / remove interfaces in multicast groups via the > ip tool. > > The callback does nothing - the same as the kernel tun.c. > > Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net> Yes, the dummy callback is needed, otherwise SIOCADDMULTI ioctl will fail.
> -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Simon Kagstrom > Sent: Thursday, May 7, 2015 9:18 PM > To: dev@dpdk.org > Subject: [dpdk-dev] [PATCH / RFC] kni: Add set_rx_mode callback to handle > multicast groups > > This is needed to add / remove interfaces in multicast groups via the ip tool. Could you help to explain with more details of why it is needed? Thanks, Helin > > The callback does nothing - the same as the kernel tun.c. > > Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net> > --- > Marked RFC since I'm by no means an expert on this. We noticed this when > playing with KNI and IGMP handling. > > lib/librte_eal/linuxapp/kni/kni_net.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c > b/lib/librte_eal/linuxapp/kni/kni_net.c index dd95db5..cf93c4b 100644 > --- a/lib/librte_eal/linuxapp/kni/kni_net.c > +++ b/lib/librte_eal/linuxapp/kni/kni_net.c > @@ -495,6 +495,11 @@ kni_net_ioctl(struct net_device *dev, struct ifreq *rq, int > cmd) return 0; } > > +static void > +kni_net_set_rx_mode(struct net_device *dev) { } > + > static int > kni_net_change_mtu(struct net_device *dev, int new_mtu) { @@ -645,6 > +650,7 @@ static const struct net_device_ops kni_net_netdev_ops = > { .ndo_start_xmit = kni_net_tx, > .ndo_change_mtu = kni_net_change_mtu, > .ndo_do_ioctl = kni_net_ioctl, > + .ndo_set_rx_mode = kni_net_set_rx_mode, > .ndo_get_stats = kni_net_stats, > .ndo_tx_timeout = kni_net_tx_timeout, > .ndo_set_mac_address = kni_net_set_mac, > -- > 1.9.1
On 2015-06-02 05:44, Zhang, Helin wrote: >> -----Original Message----- >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Simon Kagstrom >> Sent: Thursday, May 7, 2015 9:18 PM >> To: dev@dpdk.org >> Subject: [dpdk-dev] [PATCH / RFC] kni: Add set_rx_mode callback to handle >> multicast groups >> >> This is needed to add / remove interfaces in multicast groups via the ip tool. > Could you help to explain with more details of why it is needed? We did some (very basic) tests with IGMP, which involves adding multicast addresses to ETH interfaces. This is done via the ip tool, an example can be found on e.g., http://superuser.com/questions/324824/linux-built-in-or-open-source-program-to-join-multicast-group and this will fail on KNI interfaces with the current code because of an unimplemented ioctl (as Stephen Hemminger said earlier). The patch simply adds an empty callback so that the ioctl succeeds, and this is the same thing as the Linux tap interface does (so I think it should be enough for KNI as well). If you want, I can update the patch with a bit more description (something like the above). // Simon
> -----Original Message----- > From: Simon Kågström [mailto:simon.kagstrom@netinsight.net] > Sent: Tuesday, June 2, 2015 1:44 PM > To: Zhang, Helin; dev@dpdk.org > Subject: Re: [dpdk-dev] [PATCH / RFC] kni: Add set_rx_mode callback to handle > multicast groups > > On 2015-06-02 05:44, Zhang, Helin wrote: > >> -----Original Message----- > >> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Simon Kagstrom > >> Sent: Thursday, May 7, 2015 9:18 PM > >> To: dev@dpdk.org > >> Subject: [dpdk-dev] [PATCH / RFC] kni: Add set_rx_mode callback to > >> handle multicast groups > >> > >> This is needed to add / remove interfaces in multicast groups via the ip tool. > > Could you help to explain with more details of why it is needed? > > We did some (very basic) tests with IGMP, which involves adding multicast > addresses to ETH interfaces. This is done via the ip tool, an example can be found > on e.g., > > > http://superuser.com/questions/324824/linux-built-in-or-open-source-program- > to-join-multicast-group > > and this will fail on KNI interfaces with the current code because of an > unimplemented ioctl (as Stephen Hemminger said earlier). The patch simply adds > an empty callback so that the ioctl succeeds, and this is the same thing as the > Linux tap interface does (so I think it should be enough for KNI as well). Yes, the root cause "null ioctl causes the failure" should be added in the commit log for future reference by others. I am OK for the reason, please add the details to the commit logs. Thanks, Helin > > > If you want, I can update the patch with a bit more description (something like > the above). > > // Simon
diff --git a/lib/librte_eal/linuxapp/kni/kni_net.c b/lib/librte_eal/linuxapp/kni/kni_net.c index dd95db5..cf93c4b 100644 --- a/lib/librte_eal/linuxapp/kni/kni_net.c +++ b/lib/librte_eal/linuxapp/kni/kni_net.c @@ -495,6 +495,11 @@ kni_net_ioctl(struct net_device *dev, struct ifreq *rq, int cmd) return 0; } +static void +kni_net_set_rx_mode(struct net_device *dev) +{ +} + static int kni_net_change_mtu(struct net_device *dev, int new_mtu) { @@ -645,6 +650,7 @@ static const struct net_device_ops kni_net_netdev_ops = { .ndo_start_xmit = kni_net_tx, .ndo_change_mtu = kni_net_change_mtu, .ndo_do_ioctl = kni_net_ioctl, + .ndo_set_rx_mode = kni_net_set_rx_mode, .ndo_get_stats = kni_net_stats, .ndo_tx_timeout = kni_net_tx_timeout, .ndo_set_mac_address = kni_net_set_mac,