Subject: Re: [PATCH 11/22] e1000: Fire a link even interrupt instead of a watchdog at init.

From: Shaw Vrana <[email-masked]>
Date: Mon, 11 Dec 2006 14:48:17 -0800

On Fri, Dec 08, 2006 at 03:03:09PM -0800, Kok, Auke wrote:
> 
> Instead of calling a watchdog event we let our interrupt handler
> cascade a link event. This allows us to spot link up immediately
> after _up() without racing against a new watchdog.
> 
> Signed-off-by: Jesse Brandeburg <[email-masked]>
> Signed-off-by: Auke Kok <[email-masked]>
> ---
> 
>  drivers/net/e1000/e1000_main.c |    3 ++-
>  1 files changed, 2 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/net/e1000/e1000_main.c b/drivers/net/e1000/e1000_main.c
> index 0ebd8e2..c5c764f 100644
> --- a/drivers/net/e1000/e1000_main.c
> +++ b/drivers/net/e1000/e1000_main.c
> @@ -558,7 +558,8 @@ e1000_up(struct e1000_adapter *adapter)
>  
>  	clear_bit(__E1000_DOWN, &adapter->flags);
>  
> -	mod_timer(&adapter->watchdog_timer, jiffies + 2 * HZ);
> +	/* fire a link change interrupt to start the watchdog */
> +	E1000_WRITE_REG(&adapter->hw, ICS, E1000_ICS_LSC);
>  	return 0;
>  }

Hi Auke,

Could you explain the race, how it would be triggered, and what it might
look like if it were to occur?

Thanks,
Shaw