kni: add link status update
authorVijayakumar Muthuvel Manickam <mmvijay@gmail.com>
Tue, 16 Jun 2015 06:39:54 +0000 (02:39 -0400)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Tue, 16 Jun 2015 14:26:37 +0000 (16:26 +0200)
Implement .ndo_change_carrier to enable
DPDK applications to propagate link state changes to
kni virtual interfaces through sysfs

Signed-off-by: Vijayakumar Muthuvel Manickam <mmvijay@gmail.com>
Acked-by: Helin Zhang <helin.zhang@intel.com>
lib/librte_eal/linuxapp/kni/kni_net.c

index dd95db5..9f9022b 100644 (file)
@@ -632,6 +632,17 @@ static int kni_net_set_mac(struct net_device *netdev, void *p)
        return 0;
 }
 
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0))
+static int kni_net_change_carrier(struct net_device *dev, bool new_carrier)
+{
+       if (new_carrier)
+               netif_carrier_on(dev);
+       else
+               netif_carrier_off(dev);
+       return 0;
+}
+#endif
+
 static const struct header_ops kni_net_header_ops = {
        .create  = kni_net_header,
        .rebuild = kni_net_rebuild_header,
@@ -648,6 +659,9 @@ static const struct net_device_ops kni_net_netdev_ops = {
        .ndo_get_stats = kni_net_stats,
        .ndo_tx_timeout = kni_net_tx_timeout,
        .ndo_set_mac_address = kni_net_set_mac,
+#if (LINUX_VERSION_CODE >= KERNEL_VERSION(3, 9, 0))
+       .ndo_change_carrier = kni_net_change_carrier,
+#endif
 };
 
 void