mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 14:53:58 -04:00
selftests: drv-net: add helper to wait for HW stats to sync
Some devices DMA stats to the host periodically. Add a helper which can wait for that to happen, based on frequency reported by the driver in ethtool. Reviewed-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Willem de Bruijn <willemb@google.com> Link: https://patch.msgid.link/20240626012456.2326192-3-kuba@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
@@ -1,9 +1,10 @@
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
import os
|
||||
import time
|
||||
from pathlib import Path
|
||||
from lib.py import KsftSkipEx, KsftXfailEx
|
||||
from lib.py import cmd, ip
|
||||
from lib.py import cmd, ethtool, ip
|
||||
from lib.py import NetNS, NetdevSimDev
|
||||
from .remote import Remote
|
||||
|
||||
@@ -82,6 +83,8 @@ class NetDrvEpEnv:
|
||||
|
||||
self.env = _load_env_file(src_path)
|
||||
|
||||
self._stats_settle_time = None
|
||||
|
||||
# Things we try to destroy
|
||||
self.remote = None
|
||||
# These are for local testing state
|
||||
@@ -222,3 +225,17 @@ class NetDrvEpEnv:
|
||||
if remote:
|
||||
if not self._require_cmd(comm, "remote"):
|
||||
raise KsftSkipEx("Test requires (remote) command: " + comm)
|
||||
|
||||
def wait_hw_stats_settle(self):
|
||||
"""
|
||||
Wait for HW stats to become consistent, some devices DMA HW stats
|
||||
periodically so events won't be reflected until next sync.
|
||||
Good drivers will tell us via ethtool what their sync period is.
|
||||
"""
|
||||
if self._stats_settle_time is None:
|
||||
data = ethtool("-c " + self.ifname, json=True)[0]
|
||||
|
||||
self._stats_settle_time = 0.025 + \
|
||||
data.get('stats-block-usecs', 0) / 1000 / 1000
|
||||
|
||||
time.sleep(self._stats_settle_time)
|
||||
|
||||
Reference in New Issue
Block a user