kni: Add set_rx_mode callback to handle multicast groups
RFC PATCH 1/1 kni: Add set_rx_mode callback to handle multicast groups
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.
---
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(+)
(quoted diff) +0 -0
b/lib/librte_eal/linuxapp/kni/kni_net.c index dd95db5..cf93c4b 100644
lib/librte_eal/linuxapp/kni/kni_net.c +0 -0
@@ -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,
Signature · 1 line
1.9.1
Ping?
// Simon
Quoted 38 lines · Simon Kagstrom
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 <[email protected]>---
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(+)(quoted diff) +0
-0
b/lib/librte_eal/linuxapp/kni/kni_net.cindex dd95db5..cf93c4b 100644lib/librte_eal/linuxapp/kni/kni_net.c +6
-0@@ -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
Quoted 38 lines · Simon Kagstrom
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 <[email protected]>---
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(+)(quoted diff) +0
-0
b/lib/librte_eal/linuxapp/kni/kni_net.cindex dd95db5..cf93c4b 100644lib/librte_eal/linuxapp/kni/kni_net.c +6
-0@@ -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,
Quoted 6 lines · On Thu, 7 May 2015 15:17:54 +0200 Simon Kagstrom…
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 <[email protected]>
Yes, the dummy callback is needed, otherwise SIOCADDMULTI ioctl will fail.
Quoted 8 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Simon Kagstrom
Sent: Thursday, May 7, 2015 9:18 PM
To: [email protected]
Subject: [dpdk-dev] [PATCH / RFC] kni: Addset_rx_modecallback to handle multicast groupsThis 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
Quoted 33 lines
The callback does nothing - the same as the kernel
tun.c.Signed-off-by Simon Kagstrom <[email protected]>---
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(+)(quoted diff) +0
-0
b/lib/librte_eal/linuxapp/kni/kni_net.cindex dd95db5..cf93c4b 100644lib/librte_eal/linuxapp/kni/kni_net.c +5
-1@@ -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
Quoted 9 lines · Helin
Quoted 8 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Simon Kagstrom
Sent: Thursday, May 7, 2015 9:18 PM
To: [email protected]
Subject: [dpdk-dev] [PATCH / RFC] kni: Addset_rx_modecallback to handle multicast groupsThis 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
Quoted 25 lines
-----Original Message-----
From: Simon Kågström [mailto:[email protected]]
Sent: Tuesday, June 2, 2015 1:44 PM
To: Zhang, Helin; [email protected]
Subject: Re: [dpdk-dev] [PATCH / RFC] kni: Addset_rx_modecallback to handle multicast groupsQuoted 9 lines · Helin
Quoted 8 lines
-----Original Message-----
From: dev [mailto:[email protected]] On Behalf Of Simon Kagstrom
Sent: Thursday, May 7, 2015 9:18 PM
To: [email protected]
Subject: [dpdk-dev] [PATCH / RFC] kni: Addset_rx_modecallback to handle multicast groupsThis 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.,
Quoted 7 lines
http://superuser.com/questions/324824/linux-built-in-or-open-source-program-
to-join-multicast-groupand 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
Quoted 8 lines
If you want, I can update the patch with a bit more description (something like the above).
// Simon