From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wi0-x235.google.com (mail-wi0-x235.google.com [IPv6:2a00:1450:400c:c05::235]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by huchra.bufferbloat.net (Postfix) with ESMTPS id A2D2A201112 for ; Tue, 15 Apr 2014 01:56:43 -0700 (PDT) Received: by mail-wi0-f181.google.com with SMTP id hm4so5285091wib.2 for ; Tue, 15 Apr 2014 01:56:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject:references :in-reply-to:content-type:content-transfer-encoding; bh=mg2VuZS3d2OEP6gqumNIEKmwVNaHntjOaId4SAX2St4=; b=sa8m2oRBlYxqSe+1YB+TOVrhnU8kA3xDA9bg+/ct2CIiKq91PFQD79qlcLSb/JJIyW Sx3fC1BsElINT1tiI7WV5cf6VAZLUnhkJqMlJm6S9sjz5vllXHaiekxCHv3X2ogQXu0S MxDpN8jB7ggsyaC/5kht8LOde1J2lLhdJpiRTr2tPXKNAYdvEIf7kWzdj7s27SGJwITT +Ipzqs5mYu9NFB8dPyZ5WfpYJEcAoZ5W6cMgV9sy80XXc42zMhRoMO2s9shy8eKWNjCx wPEgDtBCRnAA8JemQmVp0c2Uaz7o4kFaacZ+edyMiazVIOxSzMfuJUjKlBRvy7N1XjoJ spGA== X-Received: by 10.180.149.143 with SMTP id ua15mr1468438wib.36.1397552201162; Tue, 15 Apr 2014 01:56:41 -0700 (PDT) Received: from [10.7.0.148] (vpn-public.physics.ox.ac.uk. [163.1.246.69]) by mx.google.com with ESMTPSA id cv4sm28782740wjc.34.2014.04.15.01.56.39 for (version=TLSv1.2 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Tue, 15 Apr 2014 01:56:40 -0700 (PDT) Message-ID: <534CF446.2030809@gmail.com> Date: Tue, 15 Apr 2014 09:56:38 +0100 From: Robert Bradley User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.4.0 MIME-Version: 1.0 To: cerowrt-devel@lists.bufferbloat.net References: In-Reply-To: X-Enigmail-Version: 1.5.2 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Subject: Re: [Cerowrt-devel] [bug #442] tearing apart ath_tx_start in search of the hang X-BeenThere: cerowrt-devel@lists.bufferbloat.net X-Mailman-Version: 2.1.13 Precedence: list List-Id: Development issues regarding the cerowrt test router project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 15 Apr 2014 08:56:44 -0000 On 15/04/14 00:08, Dave Taht wrote: > So what we are seeing here is some sort of problem with accounting > for pending_frames on a given queue. And since we've had a reminder > of how useful code review can be - and I'd rather like to understand > this logic anyway - > > // my comments in // > > /* Upon failure caller should free skb */ > int ath_tx_start(struct ieee80211_hw *hw, struct sk_buff *skb, > struct ath_tx_control *txctl) > { > // I haven't looked at what skb_get_queue_mapping can return yet > > q = skb_get_queue_mapping(skb); > > ath_txq_lock(sc, txq); > if (txq == sc->tx.txq_map[q] && > ++txq->pending_frames > sc->tx.txq_max_pending[q] && > !txq->stopped) { > ieee80211_stop_queue(sc->hw, q); > txq->stopped = true; > > // is there a difference between stopped and sleeping? > > } > Not as far as I can tell from the documentation. I did notice though that the wakeup code in ath_tx_complete() lacks the ath_txq_lock()/ath_txq_unlock() calls around it. I don't know if that helps or not... -- Robert Bradley