hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/tools/testing/selftests/tc-testing/tdc_batch.py
....@@ -13,6 +13,12 @@
1313 parser.add_argument("file", help="batch file name")
1414 parser.add_argument("-n", "--number", type=int,
1515 help="how many lines in batch file")
16
+parser.add_argument(
17
+ "-a",
18
+ "--handle_start",
19
+ type=int,
20
+ default=1,
21
+ help="start handle range from (default: 1)")
1622 parser.add_argument("-o", "--skip_sw",
1723 help="skip_sw (offload), by default skip_hw",
1824 action="store_true")
....@@ -22,6 +28,21 @@
2228 parser.add_argument("-p", "--prio",
2329 help="all filters have different prio",
2430 action="store_true")
31
+parser.add_argument(
32
+ "-e",
33
+ "--operation",
34
+ choices=['add', 'del', 'replace'],
35
+ default='add',
36
+ help="operation to perform on filters"
37
+ "(default: add filter)")
38
+parser.add_argument(
39
+ "-m",
40
+ "--mac_prefix",
41
+ type=int,
42
+ default=0,
43
+ choices=range(0, 256),
44
+ help="third byte of source MAC address of flower filter"
45
+ "(default: 0)")
2546 args = parser.parse_args()
2647
2748 device = args.device
....@@ -30,6 +51,8 @@
3051 number = 1
3152 if args.number:
3253 number = args.number
54
+
55
+handle_start = args.handle_start
3356
3457 skip = "skip_hw"
3558 if args.skip_sw:
....@@ -45,16 +68,43 @@
4568 if number > 0x4000:
4669 number = 0x4000
4770
71
+mac_prefix = args.mac_prefix
72
+
73
+def format_add_filter(device, prio, handle, skip, src_mac, dst_mac,
74
+ share_action):
75
+ return ("filter add dev {} {} protocol ip ingress handle {} "
76
+ " flower {} src_mac {} dst_mac {} action drop {}".format(
77
+ device, prio, handle, skip, src_mac, dst_mac, share_action))
78
+
79
+
80
+def format_rep_filter(device, prio, handle, skip, src_mac, dst_mac,
81
+ share_action):
82
+ return ("filter replace dev {} {} protocol ip ingress handle {} "
83
+ " flower {} src_mac {} dst_mac {} action drop {}".format(
84
+ device, prio, handle, skip, src_mac, dst_mac, share_action))
85
+
86
+
87
+def format_del_filter(device, prio, handle, skip, src_mac, dst_mac,
88
+ share_action):
89
+ return ("filter del dev {} {} protocol ip ingress handle {} "
90
+ "flower".format(device, prio, handle))
91
+
92
+
93
+formatter = format_add_filter
94
+if args.operation == "del":
95
+ formatter = format_del_filter
96
+elif args.operation == "replace":
97
+ formatter = format_rep_filter
98
+
4899 index = 0
49100 for i in range(0x100):
50101 for j in range(0x100):
51102 for k in range(0x100):
52103 mac = ("{:02x}:{:02x}:{:02x}".format(i, j, k))
53
- src_mac = "e4:11:00:" + mac
104
+ src_mac = "e4:11:{:02x}:{}".format(mac_prefix, mac)
54105 dst_mac = "e4:12:00:" + mac
55
- cmd = ("filter add dev {} {} protocol ip parent ffff: flower {} "
56
- "src_mac {} dst_mac {} action drop {}".format
57
- (device, prio, skip, src_mac, dst_mac, share_action))
106
+ cmd = formatter(device, prio, handle_start + index, skip, src_mac,
107
+ dst_mac, share_action)
58108 file.write("{}\n".format(cmd))
59109 index += 1
60110 if index >= number: