Subject: kern/27468: Kernel panic due to ath driver
To: None <gnats-bugs@gnats.NetBSD.org>
From: None <zul@epiknet.org>
List: netbsd-bugs
Date: 10/25/2004 14:12:49
>Number:         27468
>Category:       kern
>Synopsis:       Kernel panic due to ath driver
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    kern-bug-people
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Mon Oct 25 14:13:00 UTC 2004
>Closed-Date:
>Last-Modified:
>Originator:     zul
>Release:        current x86
>Organization:
>Environment:
NetBSD Hermes.at.home 2.99.10 NetBSD 2.99.10 (HERMES) #0: Sun Oct 24 14:21:18 CEST 2004  zul@Hermes.at.home:/usr/build_tmp/objdir/sys/arch/i386/compile/HERMES i386

>Description:
When I play with ath into mode monitor, the kernel hangs. The problem seems to be under the function ath_rate_ctl_reset 

   /*
     * Reset local xmit state; this is really only meaningful
     * when operating in station or adhoc mode.
     */
    ni = ic->ic_bss;
    an = (struct ath_node *) ni;
    an->an_tx_ok = an->an_tx_err = an->an_tx_retr = an->an_tx_upper = 0;
    if (state == IEEE80211_S_RUN) {
        /* start with highest negotiated rate */
        KASSERT(ni->ni_rates.rs_nrates > 0,
            ("transition to RUN state w/ no rates!"));
        ni->ni_txrate = ni->ni_rates.rs_nrates - 1;
    } else {
        /* use lowest rate */
        ni->ni_txrate = 0;
    }

>How-To-Repeat:
ifconfig ath0 mediaopt monitor
ifconfig ath0 chan 10
ifconfig ath0 up
>Fix:
We probably can execute this code only in the case we are in BSS or IBSS mode
if  (ic->curmode & ( IEEE80211_C_IBSS|IEEE80211_C_HOSTAP))
{
..
}

I don't have test for moment
>Release-Note:
>Audit-Trail:
>Unformatted: