QoS stands for Quality of Service. Improvement is not implied. TL;DR : SSH hangs on non-interactive commands ( git pull , scp , ssh host cmd ) while interactive shells work? Your router is probably including the DSCP byte in its flow-hashing table. OpenSSH changes DSCP mid-connection for non-interactive sessions, and buggy routers lose the flow. Fix: add IPQoS af21 to your SSH config. Symptoms…
I’ve been an OpenWrt user since 2003, and when I had a DSL line I was using a TP-Link TD-W8970 . That cheap device had a Lantiq modem which was fully supported by open-source drivers, a decent Wi-Fi radio, and nice features for the price. One of the features I liked the most about that router was its USB ports. As soon as I had it working I moved my USB printer from the computer to the…
TL;DR : GCC and Clang support __attribute__((cleanup(fn))) , which calls fn(&var) automatically when var goes out of scope — effectively RAII for C. No more goto out -ladder error cleanup, no more forgotten free / close . Used heavily in systemd and (since 2023) the Linux kernel. When I started contributing to systemd, I discovered a new C feature I wouldn’t want to live without anymore:…
I was tracing some syscalls to check when and how the sleep command was being executed. I was expecting to see a call to clock_nanosleep , but instead I found a call to ppoll(NULL, 0, NULL, NULL, 0) , so I got curious. I filtered the running processes and found sleep inf running, so I discovered that sleep supports the “inf” argument to sleep indefinitely. This was not documented in…
Linux kernel I made about 140 commits to the Linux kernel . I worked on different parts of the kernel, from the network stack to eBPF, with minor contributions to other subsystems like block devices. Fun fact: my first commit is not in the kernel repository because it predates git, which was adopted by the Linux kernel community in 2005 with kernel v2.6.12-rc2. To keep the history, a…
Some UI details and referenced bugs (e.g., UEFI snapshots) have since evolved. Windows can run fine under QEMU and KVM, but since installing it with QEMU or libvirt directly is not very straightforward, most people prefer using other hypervisors which have a fancy GUI. KVM is known to have the best performance on a Linux host, requires no external drivers, and with virt-manager it’s not more…
Raspberry Pi OS now ships 64-bit by default, which is itself a reasonable summary of this post. One of the cool things about working for a software company is that you often get new hardware prototypes to test. But that’s not the case here: I bought the Rpi4 because it’s extremely cheap! The Rpi4 comes with a quad-core ARM Cortex A72, up to 4 GB of RAM, and a gigabit Ethernet port, at…
Benchmarked against Linux 4.19 and FreeBSD 11.2; numbers will differ on newer kernels. Introduction I work on the networking subsystem of the Linux kernel and I find networks rather fascinating. Often I read statements about the FreeBSD networking stack being faster and more mature than the Linux counterpart, but I didn’t find any comparative tests between the two OSes, and I was so curious…
Some routers allow you to save and restore the configuration from a file locally. This is nice because by saving the configuration, altering the file and uploading it again, you can change settings not exposed in the interface. For example, on my D-Link DSL-2640B I could disable a broken QoS which was slowing down the download speed just by setting X_BROADCOM_COM_ATMEnbQos to FALSE. When I got a…
The target A friend gave me an OSBRiDGE 24XLGi ; its case had broken and it was no longer suitable for outdoor use. The router is pretty locked down: a network scan doesn’t reveal any open ports other than the web interface, and connecting to the serial port reveals a crippled bootloader. Firmware upgrades are done via the web interface, and the firmware is checked for integrity. Finding a…