test suite reviews and discussions
 help / color / mirror / Atom feed
* [dts] [PATCH 1/2] framework/dut: fixing misconception about nic pci driver name and driver module filename
@ 2017-12-12 14:35 Radoslaw Biernacki
  2017-12-12 14:35 ` [dts] [PATCH 2/2] framework/dut: Style and clean up Radoslaw Biernacki
  0 siblings, 1 reply; 2+ messages in thread
From: Radoslaw Biernacki @ 2017-12-12 14:35 UTC (permalink / raw)
  To: dts, yong.liu; +Cc: herbert.guan, Radoslaw Biernacki

.name field from pci_driver structure in kernel is used for sysfs while driver
file name is defined by module Makefile. There is no rule that those two are the
same. As an example we have /sys/bus/pci/drivers/thunder-nicvf/ and nicvf.ko.
This difference make confusion in DTS scripts as it asumed that pci driver name
is equal to kernel driver module name.

Signed-off-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
---
 framework/dut.py          |   4 +-
 framework/project_dpdk.py |   2 +-
 framework/settings.py     | 107 ++++++++++++++++++++++++----------------------
 framework/test_case.py    |   2 +-
 4 files changed, 60 insertions(+), 55 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 22ff0bb..6b89439 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -259,7 +259,7 @@ class Dut(Crb):
             pci_bus = port['pci']
             pci_id = port['type']
             # get device driver
-            driver = settings.get_nic_driver(pci_id)
+            driver, driver_module = settings.get_nic_driver_module(pci_id)
             if driver is not None:
                 # unbind device driver
                 addr_array = pci_bus.split(':')
@@ -272,7 +272,7 @@ class Dut(Crb):
                 self.send_expect('echo %s > /sys/bus/pci/devices/%s\:%s\:%s/driver/unbind'
                                  % (pci_bus, domain_id, bus_id, devfun_id), '# ')
                 # bind to linux kernel driver
-                self.send_expect('modprobe %s' % driver, '# ')
+                self.send_expect('modprobe %s' % driver_module, '# ')
                 self.send_expect('echo %s > /sys/bus/pci/drivers/%s/bind'
                                  % (pci_bus, driver), '# ')
                 itf = port.get_interface_name()
diff --git a/framework/project_dpdk.py b/framework/project_dpdk.py
index 6bc47f2..8de5218 100644
--- a/framework/project_dpdk.py
+++ b/framework/project_dpdk.py
@@ -73,7 +73,7 @@ class DPDKdut(Dut):
 
         # Enable MLNX driver before installing dpdk
         drivername = load_global_setting(HOST_DRIVER_SETTING)
-        if drivername == DRIVERS['ConnectX4']:
+        if drivername == DRIVERS['ConnectX4'][0]:
             self.send_expect("sed -i -e 's/CONFIG_RTE_LIBRTE_MLX5_PMD=n/"
                              + "CONFIG_RTE_LIBRTE_MLX5_PMD=y/' config/common_base", "# ", 30)
 
diff --git a/framework/settings.py b/framework/settings.py
index e5b7746..1ab7908 100644
--- a/framework/settings.py
+++ b/framework/settings.py
@@ -95,51 +95,53 @@ NICS = {
     'cavium_0011': '177d:0011',
 }
 
+NICS_REV = dict(zip(NICS.values(), NICS.keys()))
+
 DRIVERS = {
-    'kawela': 'igb',
-    'kawela_2': 'igb',
-    'kawela_4': 'igb',
-    'bartonhills': 'igb',
-    'powerville': 'igb',
-    'powerville_vf': 'igbvf',
-    'ophir': 'igb',
-    'niantic': 'ixgbe',
-    'niantic_vf': 'ixgbevf',
-    'ironpond': 'ixgbe',
-    'twinpond': 'ixgbe',
-    'twinville': 'ixgbe',
-    'sageville': 'ixgbe',
-    'sageville_vf': 'ixgbevf',
-    'sagepond': 'ixgbe',
-    'sagepond_vf': 'ixgbevf',
-    'magnolia_park' : 'ixgbe',
-    'hartwell': 'igb',
-    '82545EM': 'igb',
-    '82540EM': 'igb',
-    'springville': 'igb',
-    'springfountain': 'ixgbe',
-    'virtio': 'virtio-pci',
-    'avoton': 'igb',
-    'avoton2c5': 'igb',
-    'I217V': 'igb',
-    'I217LM': 'igb',
-    'I218V': 'igb',
-    'I218LM': 'igb',
-    'fortville_eagle': 'i40e',
-    'fortville_spirit': 'i40e',
-    'fortville_spirit_single': 'i40e',
-    'redrockcanyou': 'fm10k',
-    'fortpark': 'i40e',
-    'fortpark_TLV': 'i40e',
-    'fortpark_TLV_vf': 'i40evf',
-    'fvl10g_vf': 'i40evf',
-    'atwood': 'fm10k',
-    'ConnectX3': 'mlx4_core',
-    'ConnectX4': 'mlx5_core',
-    'boulderrapid': 'fm10k',
-    'fortville_25g': 'i40e',
-    'cavium_a034': 'thunder-nicvf',
-    'cavium_0011': 'thunder-nicvf',
+    'kawela': ['igb', 'igb'],
+    'kawela_2': ['igb', 'igb'],
+    'kawela_4': ['igb', 'igb'],
+    'bartonhills': ['igb', 'igb'],
+    'powerville': ['igb', 'igb'],
+    'powerville_vf': ['igbvf', 'igbvf'],
+    'ophir': ['igb', 'igb'],
+    'niantic': ['ixgbe', 'ixgbe'],
+    'niantic_vf': ['ixgbevf', 'ixgbevf'],
+    'ironpond': ['ixgbe', 'ixgbe'],
+    'twinpond': ['ixgbe', 'ixgbe'],
+    'twinville': ['ixgbe', 'ixgbe'],
+    'sageville': ['ixgbe', 'ixgbe'],
+    'sageville_vf': ['ixgbevf', 'ixgbevf'],
+    'sagepond': ['ixgbe', 'ixgbe'],
+    'sagepond_vf': ['ixgbevf', 'ixgbevf'],
+    'magnolia_park' : ['ixgbe', 'ixgbe'],
+    'hartwell': ['igb', 'igb'],
+    '82545EM': ['igb', 'igb'],
+    '82540EM': ['igb', 'igb'],
+    'springville': ['igb', 'igb'],
+    'springfountain': ['ixgbe', 'ixgbe'],
+    'virtio': ['virtio-pci', 'virtio-pci'],
+    'avoton': ['igb', 'igb'],
+    'avoton2c5': ['igb', 'igb'],
+    'I217V': ['igb', 'igb'],
+    'I217LM': ['igb', 'igb'],
+    'I218V': ['igb', 'igb'],
+    'I218LM': ['igb', 'igb'],
+    'fortville_eagle': ['i40e', 'i40e'],
+    'fortville_spirit': ['i40e', 'i40e'],
+    'fortville_spirit_single': ['i40e', 'i40e'],
+    'redrockcanyou': ['fm10k', 'fm10k'],
+    'fortpark': ['i40e', 'i40e'],
+    'fortpark_TLV': ['i40e', 'i40e'],
+    'fortpark_TLV_vf': ['i40evf', 'i40evf'],
+    'fvl10g_vf': ['i40evf', 'i40evf'],
+    'atwood': ['fm10k', 'fm10k'],
+    'ConnectX3': ['mlx4_core', 'mlx4_core'],
+    'ConnectX4': ['mlx5_core', 'mlx5_core'],
+    'boulderrapid': ['fm10k', 'fm10k'],
+    'fortville_25g': ['i40e', 'i40e'],
+    'cavium_a034': ['thunder-nicvf', 'nicvf'],
+    'cavium_0011': ['thunder-nicvf', 'nicvf'],
 }
 
 """
@@ -234,17 +236,20 @@ def get_nic_name(type):
             return name
     return 'Unknown'
 
-
-def get_nic_driver(pci_id):
+def get_nic_driver_module(pci_id):
     """
-    Return linux driver for specified pci device
+    Return linux driver name and driver module for specified pci device
     """
-    driverlist = dict(zip(NICS.values(), DRIVERS.keys()))
     try:
-        driver = DRIVERS[driverlist[pci_id]]
+        driver_name, driver_module = DRIVERS[NICS_REV[pci_id]]
     except Exception as e:
-        driver = None
-    return driver
+        driver_name = None
+        driver_module = None
+    return driver_name, driver_module
+
+
+def get_nic_driver(pci_id):
+   return get_nic_driver_module(pci_id)[0]
 
 
 def get_netdev(crb, pci):
diff --git a/framework/test_case.py b/framework/test_case.py
index a84e2bb..a8643da 100644
--- a/framework/test_case.py
+++ b/framework/test_case.py
@@ -156,7 +156,7 @@ class TestCase(object):
 
     def _get_nic_driver(self, nic_name):
         if nic_name in DRIVERS.keys():
-            return DRIVERS[nic_name]
+            return DRIVERS[nic_name][0]
 
         return "Unknown"
 
-- 
2.7.4

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [dts] [PATCH 2/2] framework/dut: Style and clean up
  2017-12-12 14:35 [dts] [PATCH 1/2] framework/dut: fixing misconception about nic pci driver name and driver module filename Radoslaw Biernacki
@ 2017-12-12 14:35 ` Radoslaw Biernacki
  0 siblings, 0 replies; 2+ messages in thread
From: Radoslaw Biernacki @ 2017-12-12 14:35 UTC (permalink / raw)
  To: dts, yong.liu; +Cc: herbert.guan, Radoslaw Biernacki

Fixing indentation
Removing unused imports

Signed-off-by: Radoslaw Biernacki <radoslaw.biernacki@linaro.org>
---
 framework/dut.py                  | 34 +++++++++++++++++-----------------
 framework/pmd_output.py           |  2 +-
 tests/TestSuite_generic_filter.py |  1 -
 3 files changed, 18 insertions(+), 19 deletions(-)

diff --git a/framework/dut.py b/framework/dut.py
index 6b89439..37590a1 100644
--- a/framework/dut.py
+++ b/framework/dut.py
@@ -260,25 +260,25 @@ class Dut(Crb):
             pci_id = port['type']
             # get device driver
             driver, driver_module = settings.get_nic_driver_module(pci_id)
-            if driver is not None:
-                # unbind device driver
-                addr_array = pci_bus.split(':')
-                domain_id = addr_array[0]
-                bus_id = addr_array[1]
-                devfun_id = addr_array[2]
+            if driver is None:
+                self.logger.info("NOT FOUND DRIVER FOR PORT (%s|%s)!!!" % (pci_bus, pci_id))
+                continue
+            # unbind device driver
+            addr_array = pci_bus.split(':')
+            domain_id = addr_array[0]
+            bus_id = addr_array[1]
+            devfun_id = addr_array[2]
 
-                port = GetNicObj(self, domain_id, bus_id, devfun_id)
+            port = GetNicObj(self, domain_id, bus_id, devfun_id)
 
-                self.send_expect('echo %s > /sys/bus/pci/devices/%s\:%s\:%s/driver/unbind'
-                                 % (pci_bus, domain_id, bus_id, devfun_id), '# ')
-                # bind to linux kernel driver
-                self.send_expect('modprobe %s' % driver_module, '# ')
-                self.send_expect('echo %s > /sys/bus/pci/drivers/%s/bind'
-                                 % (pci_bus, driver), '# ')
-                itf = port.get_interface_name()
-                self.send_expect("ifconfig %s up" % itf, "# ")
-            else:
-                self.logger.info("NOT FOUND DRIVER FOR PORT (%s|%s)!!!" % (pci_bus, pci_id))
+            self.send_expect('echo %s > /sys/bus/pci/devices/%s\:%s\:%s/driver/unbind'
+                             % (pci_bus, domain_id, bus_id, devfun_id), '# ')
+            # bind to linux kernel driver
+            self.send_expect('modprobe %s' % driver_module, '# ')
+            self.send_expect('echo %s > /sys/bus/pci/drivers/%s/bind'
+                             % (pci_bus, driver), '# ')
+            itf = port.get_interface_name()
+            self.send_expect("ifconfig %s up" % itf, "# ")
 
     def setup_memory(self, hugepages=-1):
         """
diff --git a/framework/pmd_output.py b/framework/pmd_output.py
index 2d1e3d7..da6b2d2 100644
--- a/framework/pmd_output.py
+++ b/framework/pmd_output.py
@@ -32,7 +32,7 @@
 import os
 import re
 from time import sleep
-from settings import TIMEOUT, PROTOCOL_PACKET_SIZE, get_nic_driver
+from settings import TIMEOUT, PROTOCOL_PACKET_SIZE
 from utils import create_mask
 
 
diff --git a/tests/TestSuite_generic_filter.py b/tests/TestSuite_generic_filter.py
index e62e351..cc7744e 100644
--- a/tests/TestSuite_generic_filter.py
+++ b/tests/TestSuite_generic_filter.py
@@ -43,7 +43,6 @@ import re
 from test_case import TestCase
 from settings import HEADER_SIZE
 from pmd_output import PmdOutput
-from settings import DRIVERS
 
 
 class TestGeneric_filter(TestCase):
-- 
2.7.4

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2017-12-12 14:35 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-12 14:35 [dts] [PATCH 1/2] framework/dut: fixing misconception about nic pci driver name and driver module filename Radoslaw Biernacki
2017-12-12 14:35 ` [dts] [PATCH 2/2] framework/dut: Style and clean up Radoslaw Biernacki

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).