diff options
author | Felix Fietkau <nbd@nbd.name> | 2024-04-24 19:16:05 +0200 |
---|---|---|
committer | Felix Fietkau <nbd@nbd.name> | 2024-04-26 06:31:27 +0200 |
commit | c4d394c6cc0facba94fda5f1cc886edaf342be3a (patch) | |
tree | 0f61a8ddd1d72d71edff33afb7cfeaf265877cfa | |
parent | b5c53848c3792355a2dd4ff0e06bf4d230e1f5fb (diff) |
netifd: add a packet steering mode matching the old script
This spreads packet processing across all cores
Signed-off-by: Felix Fietkau <nbd@nbd.name>
-rwxr-xr-x | package/network/config/netifd/files/usr/libexec/network/packet-steering.uc | 23 |
1 files changed, 21 insertions, 2 deletions
diff --git a/package/network/config/netifd/files/usr/libexec/network/packet-steering.uc b/package/network/config/netifd/files/usr/libexec/network/packet-steering.uc index 72f96024d8..025532c1c1 100755 --- a/package/network/config/netifd/files/usr/libexec/network/packet-steering.uc +++ b/package/network/config/netifd/files/usr/libexec/network/packet-steering.uc @@ -9,6 +9,7 @@ let eth_bias = 2.0; let debug = 0, do_nothing = 0; let disable; let cpus; +let all_cpus; for (let arg in ARGV) { switch (arg) { @@ -21,6 +22,9 @@ for (let arg in ARGV) { case '0': disable = true; break; + case '2': + all_cpus = true; + break; } } @@ -46,9 +50,19 @@ function set_task_cpu(pid, cpu) { system(`taskset -p -c ${cpu} ${pid}`); } +function cpu_mask(cpu) +{ + let mask; + if (cpu < 0) + mask = (1 << length(cpus)) - 1; + else + mask = (1 << int(cpu)); + return sprintf("%x", mask); +} + function set_netdev_cpu(dev, cpu) { let queues = glob(`/sys/class/net/${dev}/queues/rx-*/rps_cpus`); - let val = sprintf("%x", (1 << int(cpu))); + let val = cpu_mask(cpu); if (disable) val = 0; for (let queue in queues) { @@ -173,7 +187,12 @@ function assign_dev_cpu(dev) { } if (length(dev.netdev) > 0) { - let cpu = dev.rx_cpu = get_next_cpu(rx_weight, dev.napi_cpu); + let cpu; + if (all_cpus) + cpu = -1; + else + cpu = get_next_cpu(rx_weight, dev.napi_cpu); + dev.rx_cpu = cpu; for (let netdev in dev.netdev) set_netdev_cpu(netdev, cpu); } |