diff options
Diffstat (limited to 'vswitches/ovs_dpdk_vhost.py')
-rw-r--r-- | vswitches/ovs_dpdk_vhost.py | 50 |
1 files changed, 37 insertions, 13 deletions
diff --git a/vswitches/ovs_dpdk_vhost.py b/vswitches/ovs_dpdk_vhost.py index a49c8dd7..3387fda7 100644 --- a/vswitches/ovs_dpdk_vhost.py +++ b/vswitches/ovs_dpdk_vhost.py @@ -20,7 +20,7 @@ import subprocess from src.ovs import OFBridge from src.dpdk import dpdk -from conf import settings +from conf import settings as S from vswitches.ovs import IVSwitchOvs class OvsDpdkVhost(IVSwitchOvs): @@ -43,7 +43,14 @@ class OvsDpdkVhost(IVSwitchOvs): # legacy DPDK configuration through --dpdk option of vswitchd if self.old_dpdk_config(): - vswitchd_args = ['--dpdk'] + settings.getValue('VSWITCHD_DPDK_ARGS') + # override socket-mem settings + tmp_dpdk_args = S.getValue('VSWITCHD_DPDK_ARGS') + for tmp_arg in tmp_dpdk_args: + if tmp_arg.startswith('--socket-mem'): + tmp_dpdk_args.remove(tmp_arg) + tmp_dpdk_args += ['--socket-mem ' + ','.join(S.getValue('DPDK_SOCKET_MEM'))] + vswitchd_args = ['--dpdk'] + tmp_dpdk_args + # add dpdk args to generic ovs-vswitchd settings if self._vswitchd_args: self._vswitchd_args = vswitchd_args + ['--'] + self._vswitchd_args else: @@ -52,8 +59,10 @@ class OvsDpdkVhost(IVSwitchOvs): def configure(self): """ Configure vswitchd DPDK options through ovsdb if needed """ - dpdk_config = settings.getValue('VSWITCHD_DPDK_CONFIG') + dpdk_config = S.getValue('VSWITCHD_DPDK_CONFIG') if dpdk_config and not self.old_dpdk_config(): + # override socket-mem settings + dpdk_config['dpdk-socket-mem'] = ','.join(S.getValue('DPDK_SOCKET_MEM')) # enforce calls to ovs-vsctl with --no-wait tmp_br = OFBridge(timeout=-1) for option in dpdk_config: @@ -68,12 +77,12 @@ 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')): + if S.getValue('OVS_OLD_STYLE_MQ') and \ + int(S.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')) + 'n-dpdk-rxqs', S.getValue('VSWITCH_DPDK_MULTI_QUEUES')) def stop(self): """See IVswitch for general description @@ -92,12 +101,12 @@ class OvsDpdkVhost(IVSwitchOvs): switch_params = switch_params + params super(OvsDpdkVhost, self).add_switch(switch_name, switch_params) - if settings.getValue('VSWITCH_AFFINITIZATION_ON') == 1: + if S.getValue('VSWITCH_AFFINITIZATION_ON') == 1: # Sets the PMD core mask to VSWITCH_PMD_CPU_MASK # for CPU core affinitization self._bridges[switch_name].set_db_attribute('Open_vSwitch', '.', 'other_config:pmd-cpu-mask', - settings.getValue('VSWITCH_PMD_CPU_MASK')) + S.getValue('VSWITCH_PMD_CPU_MASK')) def add_phy_port(self, switch_name): """See IVswitch for general description @@ -110,15 +119,15 @@ class OvsDpdkVhost(IVSwitchOvs): port_name = 'dpdk' + str(dpdk_count) # PCI info. Please note there must be no blank space, eg must be # like 'options:dpdk-devargs=0000:06:00.0' - _nics = settings.getValue('NICS') + _nics = S.getValue('NICS') nic_pci = 'options:dpdk-devargs=' + _nics[dpdk_count]['pci'] params = ['--', 'set', 'Interface', port_name, 'type=dpdk', nic_pci] # multi-queue enable - if int(settings.getValue('VSWITCH_DPDK_MULTI_QUEUES')) and \ - not settings.getValue('OVS_OLD_STYLE_MQ'): + if int(S.getValue('VSWITCH_DPDK_MULTI_QUEUES')) and \ + not S.getValue('OVS_OLD_STYLE_MQ'): params += ['options:n_rxq={}'.format( - settings.getValue('VSWITCH_DPDK_MULTI_QUEUES'))] + S.getValue('VSWITCH_DPDK_MULTI_QUEUES'))] of_port = bridge.add_port(port_name, params) return (port_name, of_port) @@ -144,9 +153,24 @@ class OvsDpdkVhost(IVSwitchOvs): :returns: True if legacy --dpdk option is supported, otherwise it returns False """ - ovs_vswitchd_bin = settings.getValue('TOOLS')['ovs-vswitchd'] + ovs_vswitchd_bin = S.getValue('TOOLS')['ovs-vswitchd'] try: subprocess.check_output(ovs_vswitchd_bin + r' --help | grep "\-\-dpdk"', shell=True) return True except subprocess.CalledProcessError: return False + + def add_connection(self, switch_name, port1, port2, bidir=False): + """See IVswitch for general description + """ + raise NotImplementedError() + + def del_connection(self, switch_name, port1, port2, bidir=False): + """See IVswitch for general description + """ + raise NotImplementedError() + + def dump_connections(self, switch_name): + """See IVswitch for general description + """ + raise NotImplementedError() |