summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBeniamino Galvani <bgalvani@redhat.com>2017-04-14 23:16:11 +0200
committerBeniamino Galvani <bgalvani@redhat.com>2017-04-18 22:48:34 +0200
commitf13fd4524c8c5ed250530471a27be83f6f0914ae (patch)
treeefeb5496767f2fc042475d389167cdcce3503a4f
parent0a7694cf81d27cd3e73295372065f46a4765f3a1 (diff)
downloadNetworkManager-f13fd4524c8c5ed250530471a27be83f6f0914ae.tar.gz
all: detect SR-IOV device support
-rw-r--r--clients/cli/devices.c2
-rw-r--r--libnm-core/nm-dbus-interface.h3
-rw-r--r--src/devices/nm-device.c3
3 files changed, 7 insertions, 1 deletions
diff --git a/clients/cli/devices.c b/clients/cli/devices.c
index da5650f45e..2b9411e55b 100644
--- a/clients/cli/devices.c
+++ b/clients/cli/devices.c
@@ -95,6 +95,7 @@ const NmcMetaGenericInfo *const nmc_fields_dev_show_cap[] = {
NMC_META_GENERIC ("CARRIER-DETECT"), /* 1 */
NMC_META_GENERIC ("SPEED"), /* 2 */
NMC_META_GENERIC ("IS-SOFTWARE"), /* 3 */
+ NMC_META_GENERIC ("SRIOV"), /* 4 */
NULL,
};
#define NMC_FIELDS_DEV_SHOW_CAP_COMMON "NAME,CARRIER-DETECT,SPEED,IS-SOFTWARE"
@@ -1156,6 +1157,7 @@ show_device_info (NMDevice *device, NmCli *nmc)
set_val_strc (arr, 1, (caps & NM_DEVICE_CAP_CARRIER_DETECT) ? _("yes") : _("no"));
set_val_str (arr, 2, speed_str);
set_val_strc (arr, 3, (caps & NM_DEVICE_CAP_IS_SOFTWARE) ? _("yes") : _("no"));
+ set_val_strc (arr, 4, (caps & NM_DEVICE_CAP_SRIOV) ? _("yes") : _("no"));
g_ptr_array_add (out.output_data, arr);
print_data_prepare_width (out.output_data);
diff --git a/libnm-core/nm-dbus-interface.h b/libnm-core/nm-dbus-interface.h
index 16318b78bc..8abc91bbf8 100644
--- a/libnm-core/nm-dbus-interface.h
+++ b/libnm-core/nm-dbus-interface.h
@@ -239,6 +239,7 @@ typedef enum {
* @NM_DEVICE_CAP_NM_SUPPORTED: NetworkManager supports this device
* @NM_DEVICE_CAP_CARRIER_DETECT: this device can indicate carrier status
* @NM_DEVICE_CAP_IS_SOFTWARE: this device is a software device
+ * @NM_DEVICE_CAP_SRIOV: this device supports single-root I/O virtualization
*
* General device capability flags.
**/
@@ -247,9 +248,9 @@ typedef enum { /*< flags >*/
NM_DEVICE_CAP_NM_SUPPORTED = 0x00000001,
NM_DEVICE_CAP_CARRIER_DETECT = 0x00000002,
NM_DEVICE_CAP_IS_SOFTWARE = 0x00000004,
+ NM_DEVICE_CAP_SRIOV = 0x00000008,
} NMDeviceCapabilities;
-
/**
* NMDeviceWifiCapabilities:
* @NM_WIFI_DEVICE_CAP_NONE: device has no encryption/authentication capabilities
diff --git a/src/devices/nm-device.c b/src/devices/nm-device.c
index 9aeef9a87a..24c61b607d 100644
--- a/src/devices/nm-device.c
+++ b/src/devices/nm-device.c
@@ -2934,6 +2934,9 @@ realize_start_setup (NMDevice *self,
if (nm_platform_check_support_user_ipv6ll (nm_device_get_platform (self)))
priv->nm_ipv6ll = nm_platform_link_get_user_ipv6ll_enabled (nm_device_get_platform (self), priv->ifindex);
+
+ if (nm_platform_link_supports_sriov (nm_device_get_platform (self), priv->ifindex))
+ capabilities |= NM_DEVICE_CAP_SRIOV;
}
if (klass->get_generic_capabilities)