-----Original Message-----
From: Jan Tluka [mailto:jtluka@redhat.com]
Sent: Thursday, October 20, 2016 5:24 PM
To: Yotam Gigi <yotamg(a)mellanox.com>
Cc: lnst-developers(a)lists.fedorahosted.org; Elad Raz <eladr(a)mellanox.com>; Ido
Schimmel <idosch(a)mellanox.com>; Nogah Frankel <nogahf(a)mellanox.com>;
jpirko(a)mellanox.com
Subject: Re: [PATCH 4/5] Slave: Add basic support for tc.
Mon, Aug 15, 2016 at 10:05:53AM CEST, yotamg(a)mellanox.com wrote:
>Add the tc filter clear and tc qdisc clear commands to the Interface
>clear_configuration of the InterfaceManager.
>
>Signed-off-by: Yotam Gigi <yotamg(a)mellanox.com>
>---
> lnst/Slave/InterfaceManager.py | 28 ++++++++++++++++++++++++++++
> 1 file changed, 28 insertions(+)
>
>diff --git a/lnst/Slave/InterfaceManager.py b/lnst/Slave/InterfaceManager.py
>index dbb0771..a4d6117 100644
>--- a/lnst/Slave/InterfaceManager.py
>+++ b/lnst/Slave/InterfaceManager.py
>@@ -519,6 +519,32 @@ class Device(object):
> self._conf = None
> self._conf_dict = None
>
>+ def _clear_tc_qdisc(self):
>+ exec_cmd("tc qdisc replace dev %s root pfifo" % self._name)
Hi, just noticed that this can change the original qdisc setting on the
device.
The pfifo qdisc does not have to be default, e.g. on RHEL7 I see it's mq
that enables multiqueue. This should be fixed so that original setting
is restored.
OK. I assumed that the default is always pfifo but seems like I was
wrong. I think that the best way to fix it is to store, at the beginning
of each test the interface qdisc type, and then restore it.
I hope I will get to fixing it soon.
>>+ out, _ = exec_cmd("tc filter show dev %s" % self._name)
>>+ ingress_handles = re.findall("ingress (\\d+):", out)
>>+ for ingress_handle in ingress_handles:
>>+ exec_cmd("tc qdisc del dev %s handle %s: ingress" %
>>+ (self._name, ingress_handle))
>>+ out, _ = exec_cmd("tc qdisc show dev %s" % self._name)
>>+ ingress_qdiscs = re.findall("qdisc ingress (\\w+):", out)
>>+ if len(ingress_qdiscs) != 0:
>>+ exec_cmd("tc qdisc del dev %s ingress" % self._name)
>>+
>>+ def _clear_tc_filters(self):
>>+ out, _ = exec_cmd("tc filter show dev %s" % self._name)
>>+ egress_prefs = re.findall("pref (\\d+) .* handle", out)
>>+ out, _ = exec_cmd("tc filter show dev %s ingress" %
self._name)
>>+ ingress_prefs = re.findall("pref (\\d+) .* handle", out)
>>+
>>+ for egress_pref in egress_prefs:
>>+ exec_cmd("tc filter del dev %s pref %s" % (self._name,
>>+ egress_pref))
>>+
>>+ for ingress_pref in ingress_prefs:
>>+ exec_cmd("tc filter del dev %s pref %s ingress" %
(self._name,
>>+ ingress_pref))
>>+
>> def clear_configuration(self):
>> if self._master["primary"]:
>> primary_id = self._master["primary"]
>>@@ -532,6 +558,8 @@ class Device(object):
>> m_dev.clear_configuration()
>>
>> if self._conf != None:
>>+ self._clear_tc_qdisc()
>>+ self._clear_tc_filters()
>> self.down()
>> self.deconfigure()
>> self.destroy()
>>--
>>2.4.11
>>_______________________________________________
>>LNST-developers mailing list
>>lnst-developers(a)lists.fedorahosted.org
>>https://lists.fedorahosted.org/admin/lists/lnst-
>developers(a)lists.fedorahosted.org