| #!/usr/bin/env python3 | |
| # SPDX-License-Identifier: GPL-2.0 | |
| """ | |
| GRO conformance tests for PPPoE. | |
| Only SW GRO is expected to coalesce PPPoE, the HW offloads are not | |
| exercised. PPPoE runs a subset of the cases described in gro_lib.py, | |
| plus one of its own: | |
| - pppoe_sid: Packets with different PPPoE session ID don't coalesce | |
| """ | |
| from gro_lib import run_test | |
| from lib.py import NetDrvEpEnv, ksft_exit, ksft_run, ksft_variants | |
| def _pppoe_variants(): | |
| """Generator that yields all combinations of protocol and test types.""" | |
| tests = [ | |
| "data_same", "data_lrg_sml", "data_sml_lrg", "data_lrg_1byte", | |
| "data_burst", "pppoe_sid", | |
| ] | |
| for protocol in ["pppoev4", "pppoev6"]: | |
| for test_name in tests: | |
| yield protocol, test_name | |
| @ksft_variants(_pppoe_variants()) | |
| def test(cfg, protocol, test_name): | |
| """Run a single GRO test case.""" | |
| run_test(cfg, "sw", protocol, test_name) | |
| def main() -> None: | |
| """ Ksft boiler plate main """ | |
| with NetDrvEpEnv(__file__) as cfg: | |
| ksft_run(cases=[test], args=(cfg,)) | |
| ksft_exit() | |
| if __name__ == "__main__": | |
| main() |