On Wed, Jan 11, 2006 at 03:48:11PM +0100, Rogier Wolff wrote:
> On Wed, Jan 11, 2006 at 03:11:47PM +0100, Eric Dumazet wrote:
> > Rogier Wolff a écrit :
> > >On Wed, Jan 11, 2006 at 02:43:49PM +0100, Erik Mouw wrote:
> > >>The system only recovers after the Netdev watchdog found out that the
> > >>transmit timed out. However, the e1000 register dump starts about 4 to
> > >>5 seconds earlier: a possible workaround would be to trigger the
> > >>timeout code path as soon as the register dump starts.
> > >
> > >Found a typo.
> > >
> > > Roger.
> > >
> > >
> > >--- e1000_main.c.orig 2006-01-11 14:53:23.000000000 +0100
> > >+++ e1000_main.c 2006-01-11 14:53:38.000000000 +0100
> > >@@ -3449,7 +3449,7 @@
> > > }
> > >
> > > for (i = 0; i < E1000_MAX_INTR; i++)
> > >- if (unlikely(!adapter->clean_rx(adapter, adapter->rx_ring) &
> > >+ if (unlikely(!adapter->clean_rx(adapter, adapter->rx_ring) &&
> > > !e1000_clean_tx_irq(adapter, adapter->tx_ring)))
> > > break;
> > >
> > >
> > >
> >
> > I believe it's not a typo.
> >
> > The intention is to call both clean_rx() and e1000_clean_tx_irq(), and
> > break of the loop if both said : There was no job pending.
>
> Although (one of) the prototypes state(s) that it returns a boolean,
> it is valid C to return the number of items pending.
>
> And if one reports "2 more pending" and the other reports "1 more
> pending", the "&" between the two becomes 2 & 1 => 0 / FALSE, while 2
> && 1 => TRUE.
>
> I consider this a low prio typo, not likely to be a bug "right now",
> but it is inviting someone to make it into a bug later on.
Oops. The line itself has "logical NOT" operators. So indeed it is NOW
not a bug, and slighlty less likely to become a bug later on, but
still bad programming practise.
Roger.
--
+-- Rogier Wolff -- www.harddisk-recovery.nl -- 0800 220 20 20 --
| Files foetsie, bestanden kwijt, alle data weg?!
| Blijf kalm en neem contact op met Harddisk-recovery.nl!
-
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