Softirqs may occur at high rates.
A softirq may also mark itself to be executed.
Long delays in processing softirq's again that have marked themselves is a problem (e.g. networking bottom halves mark themselves).
One solution is to check and reprocess immediately any softirq that has marked itself.
This can deprive user level processes of responsiveness as the operating system repeatedly handles softirqs.
Second solution was to not reprocess such softirqs immediately, but to simply return so that these self marked softirqs must wait until the next time softirqs are handled - e.g. at the next return from interrupt.
On an idle system, this second solution, it would be much better to run the self marked softirqs right away, rather than waiting a longer time due to the idle system.