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