[ovs-dev,1/2] netdev-dpdk: extend netdev_dpdk_get_status to include if_type and if_descr

Message ID 1501062231-123197-1-git-send-email-przemyslawx.szczerbik@intel.com
State Changes Requested
Headers show

Commit Message

Przemyslaw Szczerbik July 26, 2017, 9:43 a.m.
This commit extends netdev_dpdk_get_status API to include additional
driver-related information: if_type and if_descr.

Signed-off-by: Przemyslaw Szczerbik <przemyslawx.szczerbik@intel.com>
---
 lib/netdev-dpdk.c | 11 +++++++++++
 1 file changed, 11 insertions(+)

Patch

diff --git a/lib/netdev-dpdk.c b/lib/netdev-dpdk.c
index ea17b97..2126882 100644
--- a/lib/netdev-dpdk.c
+++ b/lib/netdev-dpdk.c
@@ -32,6 +32,7 @@ 
 #include <rte_mbuf.h>
 #include <rte_meter.h>
 #include <rte_virtio_net.h>
+#include <rte_version.h>
 
 #include "dirs.h"
 #include "dp-packet.h"
@@ -150,6 +151,11 @@  typedef uint8_t dpdk_port_t;
 #define VHOST_ENQ_RETRY_NUM 8
 #define IF_NAME_SZ (PATH_MAX > IFNAMSIZ ? PATH_MAX : IFNAMSIZ)
 
+/* ifType value '6' is used for all ethernet-like interfaces, regardless of
+* speed or link-layer encapsulation in use.
+* Cf. IETF RFC 3635 Section 3.2.4. */
+#define IF_TYPE_ETHERNETCSMACD 6
+
 static const struct rte_eth_conf port_conf = {
     .rxmode = {
         .mq_mode = ETH_MQ_RX_RSS,
@@ -2381,6 +2387,11 @@  netdev_dpdk_get_status(const struct netdev *netdev, struct smap *args)
                            dev_info.max_hash_mac_addrs);
     smap_add_format(args, "max_vfs", "%u", dev_info.max_vfs);
     smap_add_format(args, "max_vmdq_pools", "%u", dev_info.max_vmdq_pools);
+    /* Once DPDK library supports retrieving ifType we should get this value
+     * directly from DPDK rather than hardcoding it. */
+    smap_add_format(args, "if_type", "%"PRIu32, IF_TYPE_ETHERNETCSMACD);
+    smap_add_format(args, "if_descr", "%s %s", rte_version(),
+                                               dev_info.driver_name);
 
     if (dev_info.pci_dev) {
         smap_add_format(args, "pci-vendor_id", "0x%u",