From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga09.intel.com (mga09.intel.com [134.134.136.24]) by dpdk.org (Postfix) with ESMTP id 5DDE295C8 for ; Wed, 3 Feb 2016 07:50:27 +0100 (CET) Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga102.jf.intel.com with ESMTP; 02 Feb 2016 22:50:26 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.22,388,1449561600"; d="scan'208";a="875815861" Received: from shvmail01.sh.intel.com ([10.239.29.42]) by orsmga001.jf.intel.com with ESMTP; 02 Feb 2016 22:50:25 -0800 Received: from shecgisg003.sh.intel.com (shecgisg003.sh.intel.com [10.239.29.90]) by shvmail01.sh.intel.com with ESMTP id u136oNdT010738; Wed, 3 Feb 2016 14:50:23 +0800 Received: from shecgisg003.sh.intel.com (localhost [127.0.0.1]) by shecgisg003.sh.intel.com (8.13.6/8.13.6/SuSE Linux 0.8) with ESMTP id u136oK73025190; Wed, 3 Feb 2016 14:50:22 +0800 Received: (from yliu84x@localhost) by shecgisg003.sh.intel.com (8.13.6/8.13.6/Submit) id u136oK5x025186; Wed, 3 Feb 2016 14:50:20 +0800 From: Yong Liu To: dts@dpdk.org Date: Wed, 3 Feb 2016 14:50:12 +0800 Message-Id: <1454482217-25147-2-git-send-email-yong.liu@intel.com> X-Mailer: git-send-email 1.7.4.1 In-Reply-To: <1454482217-25147-1-git-send-email-yong.liu@intel.com> References: <1454482217-25147-1-git-send-email-yong.liu@intel.com> Subject: [dts] [PATCH 1/6] nics fm10k: rename fm10k module to rrc X-BeenThere: dts@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: test suite reviews and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 03 Feb 2016 06:50:28 -0000 FM10k is the family name, this family contained of several different nics. Separated to different nic modules for each of them has specified settings. Signed-off-by: Marvin Liu diff --git a/nics/fm10k.py b/nics/fm10k.py deleted file mode 100644 index 7d42814..0000000 --- a/nics/fm10k.py +++ /dev/null @@ -1,240 +0,0 @@ -# BSD LICENSE -# -# Copyright(c) 2010-2014 Intel Corporation. All rights reserved. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions -# are met: -# -# * Redistributions of source code must retain the above copyright -# notice, this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright -# notice, this list of conditions and the following disclaimer in -# the documentation and/or other materials provided with the -# distribution. -# * Neither the name of Intel Corporation nor the names of its -# contributors may be used to endorse or promote products derived -# from this software without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -from crb import Crb -from config import PortConf, PORTCONF -from exception import PortConfigParseException -from utils import GREEN -from net_device import NetDevice - -DEF_PASSWD = 's' -TP_BINARY = 'TestPoint' - -FUNC_RULES = [ - # disable cut through for jumbo frame case - 'set port config 20,22 tx_cut_through off', - # disable mac learning - 'set port config 0..22 learning off', - #redirect PEP0 to EPL0 - 'create acl 0', - 'create acl-rule 0 0', - 'add acl-rule condition 0 0 src-port 20', - 'add acl-rule action 0 0 redirect 1', - 'add acl-rule action 0 0 count', - #redirect PEP1 to EPL1 - 'create acl 1', - 'create acl-rule 1 0', - 'add acl-rule condition 1 0 src-port 22', - 'add acl-rule action 1 0 redirect 5', - 'add acl-rule action 1 0 count', - 'apply acl', - ] - -PERF_RULES = [ - 'set port config 0..11 parser_cfg L4', # frame parser up to L4 - # good for performance - 'set api attribute boolean api.paritySweeper.enable false', - 'reg dbg set 0 CM_SOFTDROP_WM 0x5f005f00 0 0', - 'reg dbg set 0 CM_SHARED_WM 0x5f00 0 0', - # rule for direct rx traffic - # mac filter will be useless, so only enable for perf - 'create acl-rule 0 1', - 'add acl-rule condition 0 1 src-port 1', - 'add acl-rule action 0 1 redirect 20', - 'add acl-rule action 0 1 count', - 'create acl-rule 1 1', - 'add acl-rule condition 1 1 src-port 5', - 'add acl-rule action 1 1 redirect 22', - 'add acl-rule action 1 1 count', - 'apply acl', - ] - -class CtrlCrb(Crb): - """ - Simplified Crb class for RedRockCanyou control session - """ - - def __init__(self, crb): - self.crb = crb - self.NAME = 'dut_RRC_CONTROL' - super(CtrlCrb, self).__init__(crb, None, self.NAME) - - def get_ip_address(self): - return self.crb['IP'] - - def get_password(self): - return self.crb['pass'] - - -class RedRockCanyou(NetDevice): - """ - Class for RedRockCanyou, inherit from NetDevice class - """ - - def __init__(self, host, bus_id, devfun_id): - super(RedRockCanyou, self).__init__(host, bus_id, devfun_id) - self.tp_path = "~" - self.sec_port = False - self.host = host - - # load port config - portconf = PortConf(PORTCONF) - portconf.load_ports_config(host.crb['IP']) - pci_addr = ':'.join((bus_id, devfun_id)) - if not portconf.check_port_available(pci_addr): - raise PortConfigParseException("RRC must configured") - - port_cfg = portconf.get_ports_config()[pci_addr] - - # secondary port do not need reinitialize - if 'sec_port' in port_cfg.keys(): - print GREEN("Skip init second port test point session") - if 'first_port' not in port_cfg.keys(): - raise PortConfigParseException("RRC second port must configure first port") - # find net_device by pci_addr - first_addr = port_cfg['first_port'] - port_info = self.host.get_port_info(first_addr) - if port_info is None: - raise PortConfigParseException("RRC first port not found") - # get addtional session - netdev = port_info['port'] - self.ctrl_crb = netdev.get_control() - self.sec_port = True - return - - if 'tp_ip' not in port_cfg.keys(): - raise PortConfigParseException("RRC must configure test point ip") - - crb = {} - crb['IP'] = port_cfg['tp_ip'] - if 'passwd' not in port_cfg.keys(): - crb['pass'] = DEF_PASSWD - else: - crb['pass'] = port_cfg['passwd'] - - if 'tp_path' in port_cfg.keys(): - self.tp_path = port_cfg['tp_path'] - - # create addtional session - self.ctrl_crb = CtrlCrb(crb) - - def setup(self): - # setup function should be called after bind to igb_uio - self.start_testpoint() - - def optimize_perf(self, peer0="", peer1=""): - # rule which can optimize performance - if self.sec_port is False: - # applied rules - for rule in PERF_RULES: - self.ctrl_crb.send_expect("%s" %rule, "<0>%") - # add default mac rule - self.ctrl_crb.send_expect("add mac %s 1 locked port 1" % peer0, "<0>%") - self.ctrl_crb.send_expect("add mac %s 1 locked port 5" % peer1, "<0>%") - - def stop(self): - # second port do not need any operation - if self.sec_port: - return - - # stop testpoint - self.stop_testpoint() - - def close(self): - # second port do not need any operation - if self.sec_port: - return - - # close session - if self.ctrl_crb.session: - self.ctrl_crb.session.close() - self.ctrl_crb.session = None - if self.ctrl_crb.alt_session: - self.ctrl_crb.alt_session.close() - self.ctrl_crb.alt_session = None - - def start_testpoint(self): - """ - Before any execution, must enable test point first - """ - if self.sec_port: - print GREEN("Skip start second port testpoint") - return - self.ctrl_crb.send_expect("cd %s" % self.tp_path, "# ") - if self.tp_path != "~": - command = './' + TP_BINARY - else: - command = TP_BINARY - - self.ctrl_crb.send_expect("%s" % command, "<0>%", 120) - for rule in FUNC_RULES: - self.ctrl_crb.send_expect("%s" %rule, "<0>%") - - def stop_testpoint(self): - """ - Exit test point - """ - self.ctrl_crb.send_expect("quit", "# ") - - def get_control(self): - return self.ctrl_crb - - def add_vlan(self, vlan_id=0): - self.ctrl_crb.send_expect("create vlan %d" % vlan_id, "<0>%") - if self.sec_port: - self.ctrl_crb.send_expect("add vlan port %d 5,22" % vlan_id, "<0>%") - else: - self.ctrl_crb.send_expect("add vlan port %d 1,20" % vlan_id, "<0>%") - - def delete_vlan(self, vlan_id=0): - if self.sec_port: - self.ctrl_crb.send_expect("del vlan port %d 5,22" % vlan_id, "<0>%") - else: - self.ctrl_crb.send_expect("del vlan port %d 1,20" % vlan_id, "<0>%") - self.ctrl_crb.send_expect("del vlan %d" % vlan_id, "<0>%") - - def add_txvlan(self, vlan_id=0): - if self.sec_port: - self.ctrl_crb.send_expect("set vlan tagging %d 5 tag" % vlan_id, "<0>%") - else: - self.ctrl_crb.send_expect("set vlan tagging %d 1 tag" % vlan_id, "<0>%") - - def delete_txvlan(self, vlan_id=0): - if self.sec_port: - self.ctrl_crb.send_expect("set vlan tagging %d 5 untag" % vlan_id, "<0>%") - else: - self.ctrl_crb.send_expect("set vlan tagging %d 1 untag" % vlan_id, "<0>%") - - def enable_jumbo(self, framesize=0): - if self.sec_port: - self.ctrl_crb.send_expect("set port config 5 max_frame_size %d" % framesize, "<0>%") - else: - self.ctrl_crb.send_expect("set port config 1 max_frame_size %d" % framesize, "<0>%") diff --git a/nics/net_device.py b/nics/net_device.py index 0286aa4..2299e6f 100644 --- a/nics/net_device.py +++ b/nics/net_device.py @@ -829,7 +829,7 @@ def GetNicObj(crb, bus_id, devfun_id): if nic == 'redrockcanyou': # redrockcanyou nic need special initialization - from fm10k import RedRockCanyou + from rrc import RedRockCanyou obj = RedRockCanyou(crb, bus_id, devfun_id) elif nic == 'atwood': # atwood nic need special initialization diff --git a/nics/rrc.py b/nics/rrc.py new file mode 100644 index 0000000..7d42814 --- /dev/null +++ b/nics/rrc.py @@ -0,0 +1,240 @@ +# BSD LICENSE +# +# Copyright(c) 2010-2014 Intel Corporation. All rights reserved. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions +# are met: +# +# * Redistributions of source code must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright +# notice, this list of conditions and the following disclaimer in +# the documentation and/or other materials provided with the +# distribution. +# * Neither the name of Intel Corporation nor the names of its +# contributors may be used to endorse or promote products derived +# from this software without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from crb import Crb +from config import PortConf, PORTCONF +from exception import PortConfigParseException +from utils import GREEN +from net_device import NetDevice + +DEF_PASSWD = 's' +TP_BINARY = 'TestPoint' + +FUNC_RULES = [ + # disable cut through for jumbo frame case + 'set port config 20,22 tx_cut_through off', + # disable mac learning + 'set port config 0..22 learning off', + #redirect PEP0 to EPL0 + 'create acl 0', + 'create acl-rule 0 0', + 'add acl-rule condition 0 0 src-port 20', + 'add acl-rule action 0 0 redirect 1', + 'add acl-rule action 0 0 count', + #redirect PEP1 to EPL1 + 'create acl 1', + 'create acl-rule 1 0', + 'add acl-rule condition 1 0 src-port 22', + 'add acl-rule action 1 0 redirect 5', + 'add acl-rule action 1 0 count', + 'apply acl', + ] + +PERF_RULES = [ + 'set port config 0..11 parser_cfg L4', # frame parser up to L4 + # good for performance + 'set api attribute boolean api.paritySweeper.enable false', + 'reg dbg set 0 CM_SOFTDROP_WM 0x5f005f00 0 0', + 'reg dbg set 0 CM_SHARED_WM 0x5f00 0 0', + # rule for direct rx traffic + # mac filter will be useless, so only enable for perf + 'create acl-rule 0 1', + 'add acl-rule condition 0 1 src-port 1', + 'add acl-rule action 0 1 redirect 20', + 'add acl-rule action 0 1 count', + 'create acl-rule 1 1', + 'add acl-rule condition 1 1 src-port 5', + 'add acl-rule action 1 1 redirect 22', + 'add acl-rule action 1 1 count', + 'apply acl', + ] + +class CtrlCrb(Crb): + """ + Simplified Crb class for RedRockCanyou control session + """ + + def __init__(self, crb): + self.crb = crb + self.NAME = 'dut_RRC_CONTROL' + super(CtrlCrb, self).__init__(crb, None, self.NAME) + + def get_ip_address(self): + return self.crb['IP'] + + def get_password(self): + return self.crb['pass'] + + +class RedRockCanyou(NetDevice): + """ + Class for RedRockCanyou, inherit from NetDevice class + """ + + def __init__(self, host, bus_id, devfun_id): + super(RedRockCanyou, self).__init__(host, bus_id, devfun_id) + self.tp_path = "~" + self.sec_port = False + self.host = host + + # load port config + portconf = PortConf(PORTCONF) + portconf.load_ports_config(host.crb['IP']) + pci_addr = ':'.join((bus_id, devfun_id)) + if not portconf.check_port_available(pci_addr): + raise PortConfigParseException("RRC must configured") + + port_cfg = portconf.get_ports_config()[pci_addr] + + # secondary port do not need reinitialize + if 'sec_port' in port_cfg.keys(): + print GREEN("Skip init second port test point session") + if 'first_port' not in port_cfg.keys(): + raise PortConfigParseException("RRC second port must configure first port") + # find net_device by pci_addr + first_addr = port_cfg['first_port'] + port_info = self.host.get_port_info(first_addr) + if port_info is None: + raise PortConfigParseException("RRC first port not found") + # get addtional session + netdev = port_info['port'] + self.ctrl_crb = netdev.get_control() + self.sec_port = True + return + + if 'tp_ip' not in port_cfg.keys(): + raise PortConfigParseException("RRC must configure test point ip") + + crb = {} + crb['IP'] = port_cfg['tp_ip'] + if 'passwd' not in port_cfg.keys(): + crb['pass'] = DEF_PASSWD + else: + crb['pass'] = port_cfg['passwd'] + + if 'tp_path' in port_cfg.keys(): + self.tp_path = port_cfg['tp_path'] + + # create addtional session + self.ctrl_crb = CtrlCrb(crb) + + def setup(self): + # setup function should be called after bind to igb_uio + self.start_testpoint() + + def optimize_perf(self, peer0="", peer1=""): + # rule which can optimize performance + if self.sec_port is False: + # applied rules + for rule in PERF_RULES: + self.ctrl_crb.send_expect("%s" %rule, "<0>%") + # add default mac rule + self.ctrl_crb.send_expect("add mac %s 1 locked port 1" % peer0, "<0>%") + self.ctrl_crb.send_expect("add mac %s 1 locked port 5" % peer1, "<0>%") + + def stop(self): + # second port do not need any operation + if self.sec_port: + return + + # stop testpoint + self.stop_testpoint() + + def close(self): + # second port do not need any operation + if self.sec_port: + return + + # close session + if self.ctrl_crb.session: + self.ctrl_crb.session.close() + self.ctrl_crb.session = None + if self.ctrl_crb.alt_session: + self.ctrl_crb.alt_session.close() + self.ctrl_crb.alt_session = None + + def start_testpoint(self): + """ + Before any execution, must enable test point first + """ + if self.sec_port: + print GREEN("Skip start second port testpoint") + return + self.ctrl_crb.send_expect("cd %s" % self.tp_path, "# ") + if self.tp_path != "~": + command = './' + TP_BINARY + else: + command = TP_BINARY + + self.ctrl_crb.send_expect("%s" % command, "<0>%", 120) + for rule in FUNC_RULES: + self.ctrl_crb.send_expect("%s" %rule, "<0>%") + + def stop_testpoint(self): + """ + Exit test point + """ + self.ctrl_crb.send_expect("quit", "# ") + + def get_control(self): + return self.ctrl_crb + + def add_vlan(self, vlan_id=0): + self.ctrl_crb.send_expect("create vlan %d" % vlan_id, "<0>%") + if self.sec_port: + self.ctrl_crb.send_expect("add vlan port %d 5,22" % vlan_id, "<0>%") + else: + self.ctrl_crb.send_expect("add vlan port %d 1,20" % vlan_id, "<0>%") + + def delete_vlan(self, vlan_id=0): + if self.sec_port: + self.ctrl_crb.send_expect("del vlan port %d 5,22" % vlan_id, "<0>%") + else: + self.ctrl_crb.send_expect("del vlan port %d 1,20" % vlan_id, "<0>%") + self.ctrl_crb.send_expect("del vlan %d" % vlan_id, "<0>%") + + def add_txvlan(self, vlan_id=0): + if self.sec_port: + self.ctrl_crb.send_expect("set vlan tagging %d 5 tag" % vlan_id, "<0>%") + else: + self.ctrl_crb.send_expect("set vlan tagging %d 1 tag" % vlan_id, "<0>%") + + def delete_txvlan(self, vlan_id=0): + if self.sec_port: + self.ctrl_crb.send_expect("set vlan tagging %d 5 untag" % vlan_id, "<0>%") + else: + self.ctrl_crb.send_expect("set vlan tagging %d 1 untag" % vlan_id, "<0>%") + + def enable_jumbo(self, framesize=0): + if self.sec_port: + self.ctrl_crb.send_expect("set port config 5 max_frame_size %d" % framesize, "<0>%") + else: + self.ctrl_crb.send_expect("set port config 1 max_frame_size %d" % framesize, "<0>%") -- 1.9.3