Hello Willem, On Sat, Jun 28, 2025 at 10:57:20AM -0400, Willem de Bruijn wrote: > Breno Leitao wrote: > > +NETCONSOLE_CONFIGFS_PATH: str = "/sys/kernel/config/netconsole" > > +NETCONS_REMOTE_PORT: int = 6666 > > +NETCONS_LOCAL_PORT: int = 1514 > > +# Max number of netcons messages to send. Each iteration will setup > > +# netconsole and send 10 messages > > +ITERATIONS: int = 20 > > +# MAPS contains the information coming from bpftrace > > +# it will have only one key: @hits, which tells the number of times > > +# netpoll_poll_dev() was called > > nit: no longer has ampersand prefix Good catch. I will update. > > +def ethtool_read_rx_tx_queue(interface_name: str) -> tuple[int, int]: > > + """ > > + Read the number of RX and TX queues using ethtool. This will be used > > + to restore it after the test > > + """ > > + rx_queue = 0 > > + tx_queue = 0 > > + > > + try: > > + ethtool_result = ethtool(f"-g {interface_name}").stdout > > + for line in ethtool_result.splitlines(): > > + if line.startswith("RX:"): > > + rx_queue = int(line.split()[1]) > > + if line.startswith("TX:"): > > + tx_queue = int(line.split()[1]) > > Does this work on devices that use combined? Not sure. This is suppossed to work mostly on netdevsim (for now). Since I am not familiar with combined TX/RX, I've looked at ethtool code, and it seems RX and TX wil always be printed? This is what I found when `-g` is passed to ethtool. static int dump_ring(const struct ethtool_ringparam *ering) { fprintf(stdout, "Pre-set maximums:\n" "RX: %u\n" "RX Mini: %u\n" "RX Jumbo: %u\n" "TX: %u\n", ering->rx_max_pending, ering->rx_mini_max_pending, ering->rx_jumbo_max_pending, ering->tx_max_pending); fprintf(stdout, "Current hardware settings:\n" "RX: %u\n" "RX Mini: %u\n" "RX Jumbo: %u\n" "TX: %u\n", ering->rx_pending, ering->rx_mini_pending, ering->rx_jumbo_pending, ering->tx_pending); fprintf(stdout, "\n"); return 0; } Thanks for the review, --breno