From 0804dfc209b1f1396b049ade9256afe4188d50fc Mon Sep 17 00:00:00 2001 From: Declan Doherty Date: Thu, 26 Apr 2018 11:40:58 +0100 Subject: [PATCH] ethdev: add switch identifier parameter to port 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 Reviewed-by: Ferruh Yigit Acked-by: Thomas Monjalon --- app/test-pmd/config.c | 12 ++++++++++++ doc/guides/rel_notes/deprecation.rst | 6 ------ lib/librte_ether/rte_ethdev.h | 27 +++++++++++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c index 0f2425229a..3eb84c89c0 100644 --- a/app/test-pmd/config.c +++ b/app/test-pmd/config.c @@ -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 diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst index fd85a141ba..c3b79a22f1 100644 --- a/doc/guides/rel_notes/deprecation.rst +++ b/doc/guides/rel_notes/deprecation.rst @@ -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 diff --git a/lib/librte_ether/rte_ethdev.h b/lib/librte_ether/rte_ethdev.h index 0474451c8a..01e96dc800 100644 --- a/lib/librte_ether/rte_ethdev.h +++ b/lib/librte_ether/rte_ethdev.h @@ -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; }; /** -- 2.20.1