|
@@ -543,6 +543,10 @@ def check_extack(output, reference, args):
|
|
def check_extack_nsim(output, reference, args):
|
|
def check_extack_nsim(output, reference, args):
|
|
check_extack(output, "Error: netdevsim: " + reference, args)
|
|
check_extack(output, "Error: netdevsim: " + reference, args)
|
|
|
|
|
|
|
|
+def check_no_extack(res, needle):
|
|
|
|
+ fail((res[1] + res[2]).count(needle) or (res[1] + res[2]).count("Warning:"),
|
|
|
|
+ "Found '%s' in command output, leaky extack?" % (needle))
|
|
|
|
+
|
|
def check_verifier_log(output, reference):
|
|
def check_verifier_log(output, reference):
|
|
lines = output.split("\n")
|
|
lines = output.split("\n")
|
|
for l in reversed(lines):
|
|
for l in reversed(lines):
|
|
@@ -550,6 +554,18 @@ def check_verifier_log(output, reference):
|
|
return
|
|
return
|
|
fail(True, "Missing or incorrect message from netdevsim in verifier log")
|
|
fail(True, "Missing or incorrect message from netdevsim in verifier log")
|
|
|
|
|
|
|
|
+def test_spurios_extack(sim, obj, skip_hw, needle):
|
|
|
|
+ res = sim.cls_bpf_add_filter(obj, prio=1, handle=1, skip_hw=skip_hw,
|
|
|
|
+ include_stderr=True)
|
|
|
|
+ check_no_extack(res, needle)
|
|
|
|
+ res = sim.cls_bpf_add_filter(obj, op="replace", prio=1, handle=1,
|
|
|
|
+ skip_hw=skip_hw, include_stderr=True)
|
|
|
|
+ check_no_extack(res, needle)
|
|
|
|
+ res = sim.cls_filter_op(op="delete", prio=1, handle=1, cls="bpf",
|
|
|
|
+ include_stderr=True)
|
|
|
|
+ check_no_extack(res, needle)
|
|
|
|
+
|
|
|
|
+
|
|
# Parse command line
|
|
# Parse command line
|
|
parser = argparse.ArgumentParser()
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument("--log", help="output verbose log to given file")
|
|
parser.add_argument("--log", help="output verbose log to given file")
|
|
@@ -687,6 +703,17 @@ try:
|
|
(j))
|
|
(j))
|
|
sim.cls_filter_op(op="delete", prio=1, handle=1, cls="bpf")
|
|
sim.cls_filter_op(op="delete", prio=1, handle=1, cls="bpf")
|
|
|
|
|
|
|
|
+ start_test("Test spurious extack from the driver...")
|
|
|
|
+ test_spurios_extack(sim, obj, False, "netdevsim")
|
|
|
|
+ test_spurios_extack(sim, obj, True, "netdevsim")
|
|
|
|
+
|
|
|
|
+ sim.set_ethtool_tc_offloads(False)
|
|
|
|
+
|
|
|
|
+ test_spurios_extack(sim, obj, False, "TC offload is disabled")
|
|
|
|
+ test_spurios_extack(sim, obj, True, "TC offload is disabled")
|
|
|
|
+
|
|
|
|
+ sim.set_ethtool_tc_offloads(True)
|
|
|
|
+
|
|
sim.tc_flush_filters()
|
|
sim.tc_flush_filters()
|
|
|
|
|
|
start_test("Test TC offloads work...")
|
|
start_test("Test TC offloads work...")
|