diff --git a/fpga/include/villas/fpga/card.hpp b/fpga/include/villas/fpga/card.hpp index 58c7152d0..8c98cd93c 100644 --- a/fpga/include/villas/fpga/card.hpp +++ b/fpga/include/villas/fpga/card.hpp @@ -11,6 +11,7 @@ #pragma once #include +#include #include #include @@ -36,6 +37,7 @@ public: MemoryManager::AddressSpaceId addrSpaceIdHostToDevice; std::list> ips; + std::list ignored_ip_names; virtual ~Card(); diff --git a/fpga/lib/pcie_card.cpp b/fpga/lib/pcie_card.cpp index a43632f97..ba3c7a763 100644 --- a/fpga/lib/pcie_card.cpp +++ b/fpga/lib/pcie_card.cpp @@ -44,6 +44,7 @@ PCIeCardFactory::make(json_t *json_card, std::string card_name, int do_reset = 0; int affinity = 0; int polling = 0; + json_t *ignored_ips_array = nullptr; json_error_t err; int ret = json_unpack_ex( @@ -63,6 +64,13 @@ PCIeCardFactory::make(json_t *json_card, std::string card_name, card->doReset = do_reset != 0; card->polling = (polling != 0); + // Parse ignored ip names to list + size_t index; + json_t *value; + json_array_foreach(ignored_ips_array, index, value) { + card->ignored_ip_names.push_back(json_string_value(value)); + } + kernel::devices::PciDevice filter = defaultFilter; if (pci_id)