def configure_ovs_dpdk(self): """Configure DPDK specific bits in Open vSwitch. :returns: Whether something changed :rtype: bool """ something_changed = False dpdk_context = os_context.OVSDPDKDeviceContext( bridges_key=self.bridges_key) opvs = ch_ovsdb.SimpleOVSDB('ovs-vsctl').open_vswitch other_config_fmt = 'other_config:{}' for row in opvs: for k, v in ( ('dpdk-lcore-mask', dpdk_context.cpu_mask()), ('dpdk-socket-mem', dpdk_context.socket_memory()), ('dpdk-init', 'true'), ('dpdk-extra', dpdk_context.pci_whitelist()), ): if row.get(other_config_fmt.format(k)) != v: something_changed = True if v: opvs.set('.', other_config_fmt.format(k), v) else: opvs.remove('.', 'other_config', k) return something_changed
def ovs_dpdk_cpu_overlap_check(self): """Check for overlap between dpdk-lcore-mask and pmd-cpu-mask. :returns: True if an overlap is detected :rtype: bool """ overlap_detected = False dpdk_context = os_context.OVSDPDKDeviceContext( bridges_key=self.bridges_key) if (int(dpdk_context.pmd_cpu_mask(), 16) & int(dpdk_context.cpu_mask(), 16)): overlap_detected = True return overlap_detected