Keepalive padding cell bypasses the cell scheduler
When sending a keepalive cell, we look if the connection outbuf is empty but with the KIST scheduler, that buffer is optimized to be emptied very quickly.
That cell should be able to ask the scheduler if it can queue cells in the outbuf. In an ideal world, that cell would be handled by the scheduler but since it is not a circuit level "cell", we can not quickly fix that.
The fix for padding cell is to ask the scheduler, for a specific channel, if it can queue in the outbuf. The KIST scheduler would do two things: check for pending cells and if the kernel would allow it (tcp buffer size).
This made the #28089 (moved) issue more pathological.