The easiest fix for all of this in the in-kernel driver is to just get rid of the
"min" at the end and instead just "return work_done;". The extra
complication is only needed if you were to be polling multiple queues and
that isn't the case here so we should simplify it and get rid of the buggy
"budget - 1" return value.
Thank you very much for your reply Alexander!
It seems to work well!
Are you planning to send it upstream?
No, I was just suggesting it as a possible solution. Feel free to put
together your own patch and submit it if it is working for you.