Message ID | 20240903221549.1215842-3-mohan.prasad@microchip.com (mailing list archive) |
---|---|
State | Changes Requested |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | lan743x: This series of patches are for lan743x driver testing | expand |
On 9/3/2024 3:15 PM, Mohan Prasad J wrote: > Caution: This message originated from an External Source. Use proper caution when opening attachments, clicking links, or responding. > > > Add testcase for checking speed and duplex states for > lan743x network driver. > Testcase comprises of varying the network speed and duplex > state to 10/100/1000Mbps and half/full via ethtool. > > Signed-off-by: Mohan Prasad J <mohan.prasad@microchip.com> > --- > .../net/hw/microchip/lan743x/lan743x.py | 33 +++++++++++++++++++ > 1 file changed, 33 insertions(+) > > diff --git a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py > index f1ad97dc2..59f0be2a7 100755 > --- a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py > +++ b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py > @@ -36,12 +36,45 @@ def verify_autonegotiation(ifname: str, expected_state: str) -> None: > actual_state = autoneg_match.group(1) > ksft_eq(actual_state, expected_state) > > +def set_speed_and_duplex(ifname: str, speed: str, duplex: str) -> None: > + """Set the speed and duplex state for the interface""" > + process = ethtool(f"--change {ifname} speed {speed} duplex {duplex} autoneg on") > + > + if process.ret != 0: > + raise KsftFailEx(f"Not able to set speeed and duplex parameters for {ifname}") > + ksft_pr(f"Speed: {speed} Mbps, Duplex: {duplex} set for Interface: {ifname}") > + > +def verify_speed_and_duplex(ifname: str, expected_speed: str, expected_duplex: str) -> None: > + verify_link_up(ifname) > + """Verifying the speed and duplex state for the interface""" > + output = ethtool(f"{ifname}") How does "output" get used here? > + with open(f"/sys/class/net/{ifname}/speed", "r") as fp: > + actual_speed = fp.read().strip() > + with open(f"/sys/class/net/{ifname}/duplex", "r") as fp: > + actual_duplex = fp.read().strip() Should you check speed/duplex from both sysfs and ethtool? Maybe that's overkill. Thanks, Brett > + > + ksft_eq(actual_speed, expected_speed) > + ksft_eq(actual_duplex, expected_duplex) > + > def test_autonegotiation(cfg) -> None: > for state in ["off", "on"]: > set_autonegotiation_state(cfg.ifname, state) > time.sleep(5) > verify_autonegotiation(cfg.ifname, state) > > +def test_network_speed(cfg) -> None: > + speeds = ["10", "100", "1000"] > + duplex_modes = ["half", "full"] > + > + for speed in speeds: > + for duplex in duplex_modes: > + # Skip for speed = 1000Mbps, duplex = Half > + if speed == "1000" and duplex == "half": > + continue > + set_speed_and_duplex(cfg.ifname, speed, duplex) > + time.sleep(5) > + verify_speed_and_duplex(cfg.ifname, speed, duplex) > + > def main() -> None: > with NetDrvEpEnv(__file__) as cfg: > ksft_run(globs=globals(), case_pfx={"test_"}, args=(cfg,)) > -- > 2.43.0 >
Hi Brett, Thank you for the review comments. > EXTERNAL EMAIL: Do not click links or open attachments unless you know the > content is safe > > On 9/3/2024 3:15 PM, Mohan Prasad J wrote: > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > > > > Add testcase for checking speed and duplex states for lan743x network > > driver. > > Testcase comprises of varying the network speed and duplex state to > > 10/100/1000Mbps and half/full via ethtool. > > > > Signed-off-by: Mohan Prasad J <mohan.prasad@microchip.com> > > --- > > .../net/hw/microchip/lan743x/lan743x.py | 33 +++++++++++++++++++ > > 1 file changed, 33 insertions(+) > > > > diff --git > > a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py > > b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py > > index f1ad97dc2..59f0be2a7 100755 > > --- > > a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py > > +++ b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x > > +++ .py > > @@ -36,12 +36,45 @@ def verify_autonegotiation(ifname: str, > expected_state: str) -> None: > > actual_state = autoneg_match.group(1) > > ksft_eq(actual_state, expected_state) > > > > +def set_speed_and_duplex(ifname: str, speed: str, duplex: str) -> None: > > + """Set the speed and duplex state for the interface""" > > + process = ethtool(f"--change {ifname} speed {speed} duplex > > +{duplex} autoneg on") > > + > > + if process.ret != 0: > > + raise KsftFailEx(f"Not able to set speeed and duplex parameters for > {ifname}") > > + ksft_pr(f"Speed: {speed} Mbps, Duplex: {duplex} set for > > + Interface: {ifname}") > > + > > +def verify_speed_and_duplex(ifname: str, expected_speed: str, > expected_duplex: str) -> None: > > + verify_link_up(ifname) > > + """Verifying the speed and duplex state for the interface""" > > + output = ethtool(f"{ifname}") > > How does "output" get used here? "output" is not used anywhere, I will remove this in the next version. > > > + with open(f"/sys/class/net/{ifname}/speed", "r") as fp: > > + actual_speed = fp.read().strip() > > + with open(f"/sys/class/net/{ifname}/duplex", "r") as fp: > > + actual_duplex = fp.read().strip() > > Should you check speed/duplex from both sysfs and ethtool? Maybe that's > overkill. I will remove the ethtool dependency here in the next version. > > Thanks, > > Brett > > > + > > + ksft_eq(actual_speed, expected_speed) > > + ksft_eq(actual_duplex, expected_duplex) > > + > > def test_autonegotiation(cfg) -> None: > > for state in ["off", "on"]: > > set_autonegotiation_state(cfg.ifname, state) > > time.sleep(5) > > verify_autonegotiation(cfg.ifname, state) > > > > +def test_network_speed(cfg) -> None: > > + speeds = ["10", "100", "1000"] > > + duplex_modes = ["half", "full"] > > + > > + for speed in speeds: > > + for duplex in duplex_modes: > > + # Skip for speed = 1000Mbps, duplex = Half > > + if speed == "1000" and duplex == "half": > > + continue > > + set_speed_and_duplex(cfg.ifname, speed, duplex) > > + time.sleep(5) > > + verify_speed_and_duplex(cfg.ifname, speed, duplex) > > + > def main() -> None: > > with NetDrvEpEnv(__file__) as cfg: > > ksft_run(globs=globals(), case_pfx={"test_"}, args=(cfg,)) > > -- > > 2.43.0 > >
diff --git a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py index f1ad97dc2..59f0be2a7 100755 --- a/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py +++ b/tools/testing/selftests/drivers/net/hw/microchip/lan743x/lan743x.py @@ -36,12 +36,45 @@ def verify_autonegotiation(ifname: str, expected_state: str) -> None: actual_state = autoneg_match.group(1) ksft_eq(actual_state, expected_state) +def set_speed_and_duplex(ifname: str, speed: str, duplex: str) -> None: + """Set the speed and duplex state for the interface""" + process = ethtool(f"--change {ifname} speed {speed} duplex {duplex} autoneg on") + + if process.ret != 0: + raise KsftFailEx(f"Not able to set speeed and duplex parameters for {ifname}") + ksft_pr(f"Speed: {speed} Mbps, Duplex: {duplex} set for Interface: {ifname}") + +def verify_speed_and_duplex(ifname: str, expected_speed: str, expected_duplex: str) -> None: + verify_link_up(ifname) + """Verifying the speed and duplex state for the interface""" + output = ethtool(f"{ifname}") + with open(f"/sys/class/net/{ifname}/speed", "r") as fp: + actual_speed = fp.read().strip() + with open(f"/sys/class/net/{ifname}/duplex", "r") as fp: + actual_duplex = fp.read().strip() + + ksft_eq(actual_speed, expected_speed) + ksft_eq(actual_duplex, expected_duplex) + def test_autonegotiation(cfg) -> None: for state in ["off", "on"]: set_autonegotiation_state(cfg.ifname, state) time.sleep(5) verify_autonegotiation(cfg.ifname, state) +def test_network_speed(cfg) -> None: + speeds = ["10", "100", "1000"] + duplex_modes = ["half", "full"] + + for speed in speeds: + for duplex in duplex_modes: + # Skip for speed = 1000Mbps, duplex = Half + if speed == "1000" and duplex == "half": + continue + set_speed_and_duplex(cfg.ifname, speed, duplex) + time.sleep(5) + verify_speed_and_duplex(cfg.ifname, speed, duplex) + def main() -> None: with NetDrvEpEnv(__file__) as cfg: ksft_run(globs=globals(), case_pfx={"test_"}, args=(cfg,))
Add testcase for checking speed and duplex states for lan743x network driver. Testcase comprises of varying the network speed and duplex state to 10/100/1000Mbps and half/full via ethtool. Signed-off-by: Mohan Prasad J <mohan.prasad@microchip.com> --- .../net/hw/microchip/lan743x/lan743x.py | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+)