From patchwork Wed Apr 9 12:41:52 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Luca Coelho X-Patchwork-Id: 3955071 Return-Path: X-Original-To: patchwork-linux-wireless@patchwork.kernel.org Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org Received: from mail.kernel.org (mail.kernel.org [198.145.19.201]) by patchwork2.web.kernel.org (Postfix) with ESMTP id 26B6EBFF02 for ; Wed, 9 Apr 2014 12:42:22 +0000 (UTC) Received: from mail.kernel.org (localhost [127.0.0.1]) by mail.kernel.org (Postfix) with ESMTP id 45A9A2056E for ; Wed, 9 Apr 2014 12:42:21 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 664122056D for ; Wed, 9 Apr 2014 12:42:20 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S933099AbaDIMmM (ORCPT ); Wed, 9 Apr 2014 08:42:12 -0400 Received: from dedo.coelho.fi ([88.198.205.34]:50970 "EHLO dedo.coelho.fi" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S932560AbaDIMmG (ORCPT ); Wed, 9 Apr 2014 08:42:06 -0400 Received: from a88-113-225-236.elisa-laajakaista.fi ([88.113.225.236] helo=[192.168.100.16]) by dedo with esmtpsa (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.80) (envelope-from ) id 1WXrpM-0008VQ-1z; Wed, 09 Apr 2014 15:42:04 +0300 Message-ID: <1397047312.4418.68.camel@dubbel> From: Luca Coelho To: Arik Nemtsov Cc: Yegor Yefremov , "linux-wireless@vger.kernel.org" , kaloz@openwrt.org Date: Wed, 09 Apr 2014 15:41:52 +0300 In-Reply-To: References: <1396988949.4418.46.camel@dubbel> <1397035298.4418.60.camel@dubbel> <1397044175.4418.66.camel@dubbel> X-Mailer: Evolution 3.8.5-2+b3 Mime-Version: 1.0 X-SA-Exim-Connect-IP: 88.113.225.236 X-SA-Exim-Mail-From: luca@coelho.fi X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org X-Spam-Level: X-Spam-Status: No, score=-7.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_HI, RP_MATCHES_RCVD, UNPARSEABLE_RELAY autolearn=ham version=3.3.1 Subject: Re: wl1271: tx stuck in firmware X-SA-Exim-Version: 4.2.1 (built Mon, 26 Dec 2011 16:24:06 +0000) X-SA-Exim-Scanned: Yes (on dedo) Sender: linux-wireless-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP On Wed, 2014-04-09 at 15:20 +0300, Arik Nemtsov wrote: > >> > >> # calibrator wlan0 plt power_mode on > >> [ 93.107215] wlcore: power up > >> [ 93.688714] wlcore: firmware booted in PLT mode PLT_ON (PLT 6.3.10.0.133) > >> # [ 139.232802] YY: wl1271_tx_allocate > >> [ 144.241849] wlcore: ERROR Tx stuck (in FW) for 5000 ms. Starting recovery > > > > Okay, you have a starting point. :) > > > > Now try to look from where this is being called and so on. I don't > > think we should be calling wl1271_tx_allocate() in PLT mode either. Try > > tracing back until you find where this is coming from. > > Actually we've seen this bug before. At the time it was caused by FW > requests for dummy packets during PLT mode, which forced us to issue > Tx.. Ah, interesting, I hadn't heard about it. Would it send it even if the event was masked out? Masking it out (if it's not already) for PLT would probably be the right thing to do. > It was fixed in the FW, but I'm not sure this was ever upstreamed > (customer specific fix, etc). Anyway it's pretty safe to disable the > Tx watchdog during PLT - try something like this: > > void wl12xx_rearm_tx_watchdog_locked(struct wl1271 *wl) > { > if (wl->plt) > return; Maybe this could be blocked even earlier, like here: --- Luca. -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/drivers/net/wireless/ti/wlcore/event.c b/drivers/net/wireless/ti/wlcore/event.c index 1f9a360..c44d3c0 100644 --- a/drivers/net/wireless/ti/wlcore/event.c +++ b/drivers/net/wireless/ti/wlcore/event.c @@ -158,6 +158,9 @@ EXPORT_SYMBOL_GPL(wlcore_event_channel_switch); void wlcore_event_dummy_packet(struct wl1271 *wl) { + if (wl->plt) + return; + wl1271_debug(DEBUG_EVENT, "DUMMY_PACKET_ID_EVENT_ID"); wl1271_tx_dummy_packet(wl); }