Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 13 Feb 2010 17:00:14 +1100 (EST)
From:      Graham Menhennitt <graham@menhennitt.com.au>
To:        FreeBSD-gnats-submit@FreeBSD.org
Subject:   kern/143868: allow Atheros watchdog timeout to be tunable
Message-ID:  <20100213060014.C7E085D3A@maxwell.mencon.com.au>
Resent-Message-ID: <201002130800.o1D80EuU052699@freefall.freebsd.org>

next in thread | raw e-mail | index | archive | help

>Number:         143868
>Category:       kern
>Synopsis:       allow Atheros watchdog timeout to be tunable
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Feb 13 08:00:14 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Graham Menhennitt
>Release:        FreeBSD 8.0-STABLE i386
>Organization:
>Environment:
System: FreeBSD maxwell.mencon.com.au 8.0-STABLE FreeBSD 8.0-STABLE #24: Sun Feb 14 00:56:04 EST 2010 root@chief-freebsd.mencon.com.au:/usr/obj/usr/src/sys/maxwell i386

ath0: <Atheros 5413> mem 0xa0010000-0xa001ffff irq 15 at device 17.0 on pci0
ath0: [ITHREAD]
ath0: AR5413 mac 10.5 RF5413 phy 6.1

>Description:
The Atheros wireless driver uses a hard-coded value for the watchdog timer. This value is too low on slow hardware (e.g. Soekris net5501). The attached patch allows the timer threshold to be tuned via sysctl.
>How-To-Repeat:
>Fix:

*** if_ath.c	Sat Feb 13 13:47:37 2010
--- if_ath.c_save	Tue Sep  8 02:41:18 2009
***************
*** 286,295 ****
  SYSCTL_INT(_hw_ath, OID_AUTO, bstuck, CTLFLAG_RW, &ath_bstuck_threshold,
  	    0, "max missed beacon xmits before chip reset");
  
- static	int ath_wd_timer_threshold = 5;		/* watchdog timer threshold */
- SYSCTL_INT(_hw_ath, OID_AUTO, wd_timer_threshold, CTLFLAG_RW, &ath_wd_timer_threshold,
- 	    0, "watchdog timer threshold");
- 
  #ifdef ATH_DEBUG
  enum {
  	ATH_DEBUG_XMIT		= 0x00000001,	/* basic xmit operation */
--- 286,291 ----
***************
*** 1894,1900 ****
  			goto nextfrag;
  		}
  
! 		sc->sc_wd_timer = ath_wd_timer_threshold;
  	}
  }
  
--- 1890,1896 ----
  			goto nextfrag;
  		}
  
! 		sc->sc_wd_timer = 5;
  	}
  }
  
***************
*** 6906,6912 ****
  			goto bad2;
  		}
  	}
! 	sc->sc_wd_timer = ath_wd_timer_threshold;
  	ifp->if_opackets++;
  	sc->sc_stats.ast_tx_raw++;
  
--- 6902,6908 ----
  			goto bad2;
  		}
  	}
! 	sc->sc_wd_timer = 5;
  	ifp->if_opackets++;
  	sc->sc_stats.ast_tx_raw++;
  
>Release-Note:
>Audit-Trail:
>Unformatted:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100213060014.C7E085D3A>