From patchwork Wed Sep 10 08:24:01 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Emmanuel Grumbach X-Patchwork-Id: 387619 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 3DB931400D5 for ; Wed, 10 Sep 2014 18:24:17 +1000 (EST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751452AbaIJIYI (ORCPT ); Wed, 10 Sep 2014 04:24:08 -0400 Received: from mail-la0-f44.google.com ([209.85.215.44]:39833 "EHLO mail-la0-f44.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751268AbaIJIYE (ORCPT ); Wed, 10 Sep 2014 04:24:04 -0400 Received: by mail-la0-f44.google.com with SMTP id mc6so5609548lab.3 for ; Wed, 10 Sep 2014 01:24:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=Nx2D7VYBeyiamfan4FbhBBazMdO4FtYz63tf3rL0s1Q=; b=uPvnvooJmfH/vE7Zj3+yDzzuyc2MQFcO+jRHusArkHfpApIaaI1ucFhRffpBIDRYC3 dmAHt64wG2Kx8xzJtm97SiRR7Z27zyVJRuY2FaAwRaDIK7W4LgSXjjNbCGJ7JjHsYRnQ +eYVTqRfaljYxUXPtNhn/aqoW3yWL7u3Q4/QuAf61pCfNxgrw2RNkK6BWajrZXngw1Ec mbexmXS2Q6h1RfZ7L5VNvwcnq1RsOVLiVFXfzs29EryKLK086pWGr8SBDe8lJcBa356w 3+LbVVoQrATTBevxkSnAv4wNmw84S3b5HFq6cQDW9VB6ahMFww1Co+KzOPVd5yiZWMM8 NTPw== MIME-Version: 1.0 X-Received: by 10.112.160.38 with SMTP id xh6mr38786980lbb.21.1410337441615; Wed, 10 Sep 2014 01:24:01 -0700 (PDT) Received: by 10.114.12.38 with HTTP; Wed, 10 Sep 2014 01:24:01 -0700 (PDT) In-Reply-To: <540FDB3C.6060301@hartkopp.net> References: <20140908191630.GB29412@tuxdriver.com> <540F5927.7000306@hartkopp.net> <540F61D0.9000704@hartkopp.net> <540FDB3C.6060301@hartkopp.net> Date: Wed, 10 Sep 2014 11:24:01 +0300 Message-ID: Subject: Re: iwlwifi no authentication with AP - Re: pull request: wireless-next 2014-09-08 From: Emmanuel Grumbach To: Oliver Hartkopp Cc: Vadim Kochan , "John W. Linville" , linux-wireless , "netdev@vger.kernel.org" Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org On Wed, Sep 10, 2014 at 8:01 AM, Oliver Hartkopp wrote: > On 10.09.2014 00:07, Vadim Kochan wrote: >> I have the same issue with iwlwifi. > > I tried an old zd1211 wireless USB stick to check if this problem is 80211 > related. But the USB stick works fine (I'm using it right now). > So its definitely looks like an iwlwifi issue. > >> iwlwifi 0000:02:00.0: fail to flush all tx fifo queues Q 0 > > Wasn't there any change in the iwlwifi tx path recently?? Can you please try the patch attached? It works for me. > > Regards, > Oliver > >> Reported-by: Oliver Hartkopp Tested-by: Oliver Hartkopp From 42bfcf93e18cb850d0b5f5e0a4b99a239e0e57ab Mon Sep 17 00:00:00 2001 From: Emmanuel Grumbach Date: Wed, 10 Sep 2014 11:16:41 +0300 Subject: [PATCH] iwlwifi: trans: don't configure the set_active in SCD for dvm This configuration is not needed for dvm, and it actually broke it. Signed-off-by: Emmanuel Grumbach --- drivers/net/wireless/iwlwifi/iwl-trans.h | 2 ++ drivers/net/wireless/iwlwifi/mvm/ops.c | 1 + drivers/net/wireless/iwlwifi/pcie/internal.h | 2 ++ drivers/net/wireless/iwlwifi/pcie/trans.c | 1 + drivers/net/wireless/iwlwifi/pcie/tx.c | 6 ++++-- 5 files changed, 10 insertions(+), 2 deletions(-) diff --git a/drivers/net/wireless/iwlwifi/iwl-trans.h b/drivers/net/wireless/iwlwifi/iwl-trans.h index 36275b4..c87b452 100644 --- a/drivers/net/wireless/iwlwifi/iwl-trans.h +++ b/drivers/net/wireless/iwlwifi/iwl-trans.h @@ -382,6 +382,7 @@ enum iwl_trans_status { * if unset 4k will be the RX buffer size * @bc_table_dword: set to true if the BC table expects the byte count to be * in DWORD (as opposed to bytes) + * @scd_set_active: should the transport configure the SCD for HCMD queue * @queue_watchdog_timeout: time (in ms) after which queues * are considered stuck and will trigger device restart * @command_names: array of command names, must be 256 entries @@ -397,6 +398,7 @@ struct iwl_trans_config { bool rx_buf_size_8k; bool bc_table_dword; + bool scd_set_active; unsigned int queue_watchdog_timeout; const char *const *command_names; }; diff --git a/drivers/net/wireless/iwlwifi/mvm/ops.c b/drivers/net/wireless/iwlwifi/mvm/ops.c index 77b0b48..ed82547 100644 --- a/drivers/net/wireless/iwlwifi/mvm/ops.c +++ b/drivers/net/wireless/iwlwifi/mvm/ops.c @@ -504,6 +504,7 @@ iwl_op_mode_mvm_start(struct iwl_trans *trans, const struct iwl_cfg *cfg, trans_cfg.cmd_queue = IWL_MVM_CMD_QUEUE; trans_cfg.cmd_fifo = IWL_MVM_TX_FIFO_CMD; + trans_cfg.scd_set_active = true; snprintf(mvm->hw->wiphy->fw_version, sizeof(mvm->hw->wiphy->fw_version), diff --git a/drivers/net/wireless/iwlwifi/pcie/internal.h b/drivers/net/wireless/iwlwifi/pcie/internal.h index 5bca9a6..e6129af 100644 --- a/drivers/net/wireless/iwlwifi/pcie/internal.h +++ b/drivers/net/wireless/iwlwifi/pcie/internal.h @@ -257,6 +257,7 @@ iwl_pcie_get_scratchbuf_dma(struct iwl_txq *txq, int idx) * @cmd_queue - command queue number * @rx_buf_size_8k: 8 kB RX buffer size * @bc_table_dword: true if the BC table expects DWORD (as opposed to bytes) + * @scd_set_active: should the transport configure the SCD for HCMD queue * @rx_page_order: page order for receive buffer size * @wd_timeout: queue watchdog timeout (jiffies) * @reg_lock: protect hw register access @@ -306,6 +307,7 @@ struct iwl_trans_pcie { bool rx_buf_size_8k; bool bc_table_dword; + bool scd_set_active; u32 rx_page_order; const char *const *command_names; diff --git a/drivers/net/wireless/iwlwifi/pcie/trans.c b/drivers/net/wireless/iwlwifi/pcie/trans.c index 0f4a4c1..a215624 100644 --- a/drivers/net/wireless/iwlwifi/pcie/trans.c +++ b/drivers/net/wireless/iwlwifi/pcie/trans.c @@ -1177,6 +1177,7 @@ static void iwl_trans_pcie_configure(struct iwl_trans *trans, trans_pcie->command_names = trans_cfg->command_names; trans_pcie->bc_table_dword = trans_cfg->bc_table_dword; + trans_pcie->scd_set_active = trans_cfg->scd_set_active; /* Initialize NAPI here - it should be before registering to mac80211 * in the opmode but after the HW struct is allocated. diff --git a/drivers/net/wireless/iwlwifi/pcie/tx.c b/drivers/net/wireless/iwlwifi/pcie/tx.c index f4df951..d69f2e9 100644 --- a/drivers/net/wireless/iwlwifi/pcie/tx.c +++ b/drivers/net/wireless/iwlwifi/pcie/tx.c @@ -1085,7 +1085,8 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, u16 ssn, fifo = cfg->fifo; /* Disable the scheduler prior configuring the cmd queue */ - if (txq_id == trans_pcie->cmd_queue) + if (txq_id == trans_pcie->cmd_queue && + trans_pcie->scd_set_active) iwl_scd_enable_set_active(trans, 0); /* Stop this Tx queue before configuring it */ @@ -1147,7 +1148,8 @@ void iwl_trans_pcie_txq_enable(struct iwl_trans *trans, int txq_id, u16 ssn, SCD_QUEUE_STTS_REG_MSK); /* enable the scheduler for this queue (only) */ - if (txq_id == trans_pcie->cmd_queue) + if (txq_id == trans_pcie->cmd_queue && + trans_pcie->scd_set_active) iwl_scd_enable_set_active(trans, BIT(txq_id)); } -- 1.9.1