From: "Michael Chan" <[EMAIL PROTECTED]>
Date: Fri, 12 Oct 2007 01:54:13 -0700
> On Thu, 2007-10-11 at 19:40 -0700, David Miller wrote:
> > Hmmm, the old code didn't do that and seemingly has the same
> > problem. Also, if you look at the before-patch code and think
> > about what it does if we ->poll() multiple times for a single
> > interrupt the side-effects are essentially the same.
> >
>
> No, the old code before tonight's patch did this:
>
> if (tp->tg3_flags & TG3_FLAG_TAGGED_STATUS) {
> tp->last_tag = sblk->status_tag;
> rmb();
> }
>
> before checking for more work. The rmb() is there to make sure that the
> status tag is read and stored before we check for more work.
No I understand, thanks!
> [TG3]: Refine napi poll loop.
>
> Need to read and store sblk->status_tag before checking for more work.
> The status tag is later written back to the hardware when enabling
> interrupts to acknowledge how much work has been processed. If the
> order is reversed, we can end up acknowledging work we haven't
> processed.
>
> When we detect tx error, it is more correct to return the rx
> work_done so far instead of 0.
>
> Signed-off-by: Michael Chan <[EMAIL PROTECTED]>
I'll apply this, thanks a lot!
-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at http://vger.kernel.org/majordomo-info.html