On 10/22/19 6:42 PM, Stephen Hemminger wrote: > On Tue, 22 Oct 2019 16:53:44 +0200 > Marc Kleine-Budde wrote: > >> On 10/22/19 3:23 PM, Vincent Prince wrote: >>> Signed-off-by: Vincent Prince >> >> please include a patch description. I.e. this one: >> >> -------->8-------->8-------->8-------->8-------->8-------->8-------->8-------- >> There is networking hardware that isn't based on Ethernet for layers 1 and 2. >> >> For example CAN. >> >> CAN is a multi-master serial bus standard for connecting Electronic Control >> Units [ECUs] also known as nodes. A frame on the CAN bus carries up to 8 bytes >> of payload. Frame corruption is detected by a CRC. However frame loss due to >> corruption is possible, but a quite unusual phenomenon. >> >> While fq_codel works great for TCP/IP, it doesn't for CAN. There are a lot of >> legacy protocols on top of CAN, which are not build with flow control or high >> CAN frame drop rates in mind. >> >> When using fq_codel, as soon as the queue reaches a certain delay based length, >> skbs from the head of the queue are silently dropped. Silently meaning that the ^^^^^^^^^^^^^^^^^ >> user space using a send() or similar syscall doesn't get an error. However >> TCP's flow control algorithm will detect dropped packages and adjust the >> bandwidth accordingly. > Why not fix fq_codel to return the same errors as other qdisc? The head drop is the problem. After a send() system call returned to user space, one would not expect that a later send() will knock an earlier from the queue. It's too late to throttle the package generation, as one frame is lost already. Marc -- Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |