From 9822729742168c877a301ff50a3a1067b90a89ad Mon Sep 17 00:00:00 2001 From: Vladimir Ratnikov Date: Wed, 11 Nov 2020 08:00:48 -0500 Subject: dpdk: allow configure individual VMBUS devices now startup.conf supports confuguration for VMBUS devices as for PCI devices for whitelisting/blacklisting dpdk { dev fa5a6e7a-cf3a-4b98-9569-addb479b84bc } with sub-configuration as for PCI devices dpdk { blacklist fa5a6e7a-cf3a-4b98-9569-addb479b84bc } where fa5a6e7a-cf3a-4b98-9569-addb479b84bc - example of UUID struct vlib_vmbus_addr_t changed to union with UUID described fields Added device_config_index_by_vmbus_addr blacklist_by_vmbus_addr to enumerate available device configs hash_key is as_u32[0] field(last 4 bytes of UUID) Lost of precision against full UUID, but 2^32 is enough to handle all the devices available Added is_blacklisted check while creating vnet devices in order to supress creation of dev if it's blacklisted Type: feature Signed-off-by: Vladimir Ratnikov Change-Id: Id82611e54fed082190e488c7e5fbe14ecbe5b2ab --- src/vlib/vmbus/vmbus.c | 15 ++++++++++++++- src/vlib/vmbus/vmbus.h | 6 +++++- 2 files changed, 19 insertions(+), 2 deletions(-) (limited to 'src/vlib/vmbus') diff --git a/src/vlib/vmbus/vmbus.c b/src/vlib/vmbus/vmbus.c index eadf5f176d6..045e2dd9503 100644 --- a/src/vlib/vmbus/vmbus.c +++ b/src/vlib/vmbus/vmbus.c @@ -25,11 +25,24 @@ #include /* this is a stub replaced by the Linux specfic version */ -vlib_vmbus_addr_t * __attribute__ ((weak)) vlib_vmbus_get_all_dev_addrs () +vlib_vmbus_addr_t *__clib_weak +vlib_vmbus_get_all_dev_addrs () { return NULL; } +u8 *__clib_weak +format_vlib_vmbus_addr (u8 *s, va_list *va) +{ + return 0; +} + +uword __clib_weak +unformat_vlib_vmbus_addr (unformat_input_t *input, va_list *args) +{ + return 0; +} + clib_error_t * vmbus_bus_init (vlib_main_t * vm) { diff --git a/src/vlib/vmbus/vmbus.h b/src/vlib/vmbus/vmbus.h index 0927b8990d6..7df62ab4d16 100644 --- a/src/vlib/vmbus/vmbus.h +++ b/src/vlib/vmbus/vmbus.h @@ -21,10 +21,12 @@ #include -typedef struct +typedef union { u8 guid[16]; + u32 as_u32[4]; } vlib_vmbus_addr_t; + typedef u32 vlib_vmbus_dev_handle_t; vlib_vmbus_addr_t *vlib_vmbus_get_all_dev_addrs (); @@ -33,6 +35,8 @@ uword vlib_vmbus_get_private_data (vlib_vmbus_dev_handle_t h); void vlib_vmbus_set_private_data (vlib_vmbus_dev_handle_t h, uword private_data); +format_function_t format_vlib_vmbus_addr; +unformat_function_t unformat_vlib_vmbus_addr; clib_error_t *vlib_vmbus_bind_to_uio (vlib_vmbus_addr_t * addr); #endif /* included_vlib_vmbus_h */ -- cgit 1.2.3-korg