ethdev: add switch identifier parameter to port
authorDeclan Doherty <declan.doherty@intel.com>
Thu, 26 Apr 2018 10:40:58 +0000 (11:40 +0100)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 27 Apr 2018 17:00:56 +0000 (18:00 +0100)
Introduces a new port attribute to ethdev port's which denotes the
switch domain a port belongs to. By default all port's switch
identifiers are set to RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID. Ports
which supported the concept of switch domains can be configured with
the same switch domain id.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: Thomas Monjalon <thomas@monjalon.net>
app/test-pmd/config.c
doc/guides/rel_notes/deprecation.rst
lib/librte_ether/rte_ethdev.h

index 0f24252..3eb84c8 100644 (file)
@@ -517,6 +517,18 @@ port_infos_display(portid_t port_id)
        printf("Min possible number of TXDs per queue: %hu\n",
                dev_info.tx_desc_lim.nb_min);
        printf("TXDs number alignment: %hu\n", dev_info.tx_desc_lim.nb_align);
+
+       /* Show switch info only if valid switch domain and port id is set */
+       if (dev_info.switch_info.domain_id !=
+               RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID) {
+               if (dev_info.switch_info.name)
+                       printf("Switch name: %s\n", dev_info.switch_info.name);
+
+               printf("Switch domain Id: %u\n",
+                       dev_info.switch_info.domain_id);
+               printf("Switch Port Id: %u\n",
+                       dev_info.switch_info.port_id);
+       }
 }
 
 void
index fd85a14..c3b79a2 100644 (file)
@@ -59,12 +59,6 @@ Deprecation Notices
   Target release for removal of the legacy API will be defined once most
   PMDs have switched to rte_flow.
 
-* ethdev: A work is being planned for 18.05 to expose VF port representors
-  as a mean to perform control and data path operation on the different VFs.
-  As VF representor is an ethdev port, new fields are needed in order to map
-  between the VF representor and the VF or the parent PF. Those new fields
-  are to be included in ``rte_eth_dev_info`` struct.
-
 * i40e: The default flexible payload configuration which extracts the first 16
   bytes of the payload for RSS will be deprecated starting from 18.02. If
   required the previous behavior can be configured using existing flow
index 0474451..01e96dc 100644 (file)
@@ -1026,6 +1026,28 @@ struct rte_eth_dev_portconf {
        uint16_t nb_queues; /**< Device-preferred number of queues */
 };
 
+/**
+ * Default values for switch domain id when ethdev does not support switch
+ * domain definitions.
+ */
+#define RTE_ETH_DEV_SWITCH_DOMAIN_ID_INVALID   (0)
+
+/**
+ * Ethernet device associated switch information
+ */
+struct rte_eth_switch_info {
+       const char *name;       /**< switch name */
+       uint16_t domain_id;     /**< switch domain id */
+       uint16_t port_id;
+       /**<
+        * mapping to the devices physical switch port as enumerated from the
+        * perspective of the embedded interconnect/switch. For SR-IOV enabled
+        * device this may correspond to the VF_ID of each virtual function,
+        * but each driver should explicitly define the mapping of switch
+        * port identifier to that physical interconnect/switch
+        */
+};
+
 /**
  * Ethernet device information
  */
@@ -1073,6 +1095,11 @@ struct rte_eth_dev_info {
        struct rte_eth_dev_portconf default_txportconf;
        /** Generic device capabilities (RTE_ETH_DEV_CAPA_). */
        uint64_t dev_capa;
+       /**
+        * Switching information for ports on a device with a
+        * embedded managed interconnect/switch.
+        */
+       struct rte_eth_switch_info switch_info;
 };
 
 /**