Message ID | 1291507748-4958-1-git-send-email-xiaosuo@gmail.com |
---|---|
State | Accepted, archived |
Delegated to: | David Miller |
Headers | show |
On Sun, 2010-12-05 at 08:09 +0800, Changli Gao wrote: > If we break the loop when there are still skbs in tq and no skb in > rq, the skbs will be left in txq until new skbs are enqueued into rq. > In rare cases, no new skb is queued, then these skbs will stay in rq > forever. > > After this patch, if tq isn't empty when we break the loop, we goto > resched directly. > > Signed-off-by: Changli Gao <xiaosuo@gmail.com> Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca> Dave, this goes to stable as well. cheers, jamal -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
From: jamal <hadi@cyberus.ca> Date: Sun, 05 Dec 2010 09:25:44 -0500 > On Sun, 2010-12-05 at 08:09 +0800, Changli Gao wrote: >> If we break the loop when there are still skbs in tq and no skb in >> rq, the skbs will be left in txq until new skbs are enqueued into rq. >> In rare cases, no new skb is queued, then these skbs will stay in rq >> forever. >> >> After this patch, if tq isn't empty when we break the loop, we goto >> resched directly. >> >> Signed-off-by: Changli Gao <xiaosuo@gmail.com> > > Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca> > > Dave, this goes to stable as well. Applied and queued up for -stable, thanks. -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/net/ifb.c b/drivers/net/ifb.c index ab9f675..fe337bd 100644 --- a/drivers/net/ifb.c +++ b/drivers/net/ifb.c @@ -104,6 +104,8 @@ static void ri_tasklet(unsigned long dev) rcu_read_unlock(); dev_kfree_skb(skb); stats->tx_dropped++; + if (skb_queue_len(&dp->tq) != 0) + goto resched; break; } rcu_read_unlock();
If we break the loop when there are still skbs in tq and no skb in rq, the skbs will be left in txq until new skbs are enqueued into rq. In rare cases, no new skb is queued, then these skbs will stay in rq forever. After this patch, if tq isn't empty when we break the loop, we goto resched directly. Signed-off-by: Changli Gao <xiaosuo@gmail.com> --- drivers/net/ifb.c | 2 ++ 1 file changed, 2 insertions(+) -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html