X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=vswitches%2Fovs_dpdk_vhost.py;h=327a697da71230fb9ba01dc91f03c96b2540fcb6;hb=9b1af783ec53050129239102355e1a5c3ceb1d97;hp=2d424bc51014007b20d8d36dfef630519e17f170;hpb=cead9a3d0571b8afc5ed680475e9bc3ea92c7d79;p=vswitchperf.git diff --git a/vswitches/ovs_dpdk_vhost.py b/vswitches/ovs_dpdk_vhost.py index 2d424bc5..327a697d 100644 --- a/vswitches/ovs_dpdk_vhost.py +++ b/vswitches/ovs_dpdk_vhost.py @@ -39,7 +39,6 @@ class OvsDpdkVhost(IVSwitchOvs): def __init__(self): super(OvsDpdkVhost, self).__init__() self._logger = logging.getLogger(__name__) - self._expect = r'EAL: Master l*core \d+ is ready' vswitchd_args = [] @@ -51,10 +50,6 @@ class OvsDpdkVhost(IVSwitchOvs): else: self._vswitchd_args = vswitchd_args - if settings.getValue('VNF').endswith('Cuse'): - self._logger.info("Inserting VHOST Cuse modules into kernel...") - dpdk.insert_vhost_modules() - def configure(self): """ Configure vswitchd DPDK options through ovsdb if needed """ @@ -73,15 +68,22 @@ class OvsDpdkVhost(IVSwitchOvs): """ dpdk.init() super(OvsDpdkVhost, self).start() + # old style OVS <= 2.5.0 multi-queue enable + if settings.getValue('OVS_OLD_STYLE_MQ') and \ + int(settings.getValue('VSWITCH_DPDK_MULTI_QUEUES')): + tmp_br = OFBridge(timeout=-1) + tmp_br.set_db_attribute( + 'Open_vSwitch', '.', 'other_config:' + + 'n-dpdk-rxqs', settings.getValue('VSWITCH_DPDK_MULTI_QUEUES')) def stop(self): """See IVswitch for general description Kills ovsdb and vswitchd and removes DPDK kernel modules. """ + super(OvsDpdkVhost, self).stop() dpdk.cleanup() - dpdk.remove_vhost_modules() def add_switch(self, switch_name, params=None): """See IVswitch for general description @@ -91,7 +93,6 @@ class OvsDpdkVhost(IVSwitchOvs): switch_params = switch_params + params super(OvsDpdkVhost, self).add_switch(switch_name, switch_params) - if settings.getValue('VSWITCH_AFFINITIZATION_ON') == 1: # Sets the PMD core mask to VSWITCH_PMD_CPU_MASK # for CPU core affinitization @@ -110,9 +111,11 @@ class OvsDpdkVhost(IVSwitchOvs): port_name = 'dpdk' + str(dpdk_count) params = ['--', 'set', 'Interface', port_name, 'type=dpdk'] # multi-queue enable - if int(settings.getValue('VSWITCH_MULTI_QUEUES')): + + if int(settings.getValue('VSWITCH_DPDK_MULTI_QUEUES')) and \ + not settings.getValue('OVS_OLD_STYLE_MQ'): params += ['options:n_rxq={}'.format( - settings.getValue('VSWITCH_MULTI_QUEUES'))] + settings.getValue('VSWITCH_DPDK_MULTI_QUEUES'))] of_port = bridge.add_port(port_name, params) return (port_name, of_port) @@ -124,19 +127,14 @@ class OvsDpdkVhost(IVSwitchOvs): from 0 """ bridge = self._bridges[switch_name] - # Changed dpdkvhost to dpdkvhostuser to be able to run in Qemu 2.2 - if settings.getValue('VNF').endswith('Cuse'): - vhost_count = self._get_port_count('type=dpdkvhostcuse') - port_name = 'dpdkvhostcuse' + str(vhost_count) - params = ['--', 'set', 'Interface', port_name, 'type=dpdkvhostcuse'] - else: - vhost_count = self._get_port_count('type=dpdkvhostuser') - port_name = 'dpdkvhostuser' + str(vhost_count) - params = ['--', 'set', 'Interface', port_name, 'type=dpdkvhostuser'] - # multi queue enable - if int(settings.getValue('VSWITCH_MULTI_QUEUES')): - params += ['options:n_rxq={}'.format( - settings.getValue('VSWITCH_MULTI_QUEUES'))] + vhost_count = self._get_port_count('type=dpdkvhostuser') + port_name = 'dpdkvhostuser' + str(vhost_count) + params = ['--', 'set', 'Interface', port_name, 'type=dpdkvhostuser'] + # multi queue enable + if int(settings.getValue('VSWITCH_DPDK_MULTI_QUEUES')) and \ + not settings.getValue('OVS_OLD_STYLE_MQ'): + params += ['options:n_rxq={}'.format( + settings.getValue('VSWITCH_DPDK_MULTI_QUEUES'))] of_port = bridge.add_port(port_name, params) return (port_name, of_port) @@ -148,7 +146,7 @@ class OvsDpdkVhost(IVSwitchOvs): :returns: True if legacy --dpdk option is supported, otherwise it returns False """ - ovs_vswitchd_bin = os.path.join(settings.getValue('OVS_DIR'), 'vswitchd', 'ovs-vswitchd') + ovs_vswitchd_bin = settings.getValue('TOOLS')['ovs-vswitchd'] try: subprocess.check_output(ovs_vswitchd_bin + r' --help | grep "\-\-dpdk"', shell=True) return True