kni: fix multicast ioctl handling
authorSimon Kagstrom <simon.kagstrom@netinsight.net>
Tue, 2 Jun 2015 07:21:55 +0000 (09:21 +0200)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 16 Jun 2015 15:28:16 +0000 (17:28 +0200)
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 because of an unimplemented ioctl
SIOCADDMULTI. The patch simply adds an empty callback for set_rx_mode
(typically used for setting up hardware) so that the ioctl succeeds.
This is the same thing as the Linux tap interface does.

Signed-off-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
Signed-off-by: Johan Faltstrom <johan.faltstrom@netinsight.net>
Reviewed-by: Stephen Hemminger <stephen@networkplumber.org>
Acked-by: Helin Zhang <helin.zhang@intel.com>
lib/librte_eal/linuxapp/kni/kni_net.c

index 75986c6..5c9ca19 100644 (file)
@@ -491,6 +491,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)
 {
@@ -652,6 +657,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,