From patchwork Tue Jan 9 10:14:06 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitkumar Karwar X-Patchwork-Id: 857359 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="SVBlwS80"; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3zG7Xw5hsKz9s82; Tue, 9 Jan 2018 21:24:16 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1eYr4m-0000mX-J9; Tue, 09 Jan 2018 10:24:12 +0000 Received: from mail-pf0-f194.google.com ([209.85.192.194]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1eYr4j-0000kf-V3 for kernel-team@lists.ubuntu.com; Tue, 09 Jan 2018 10:24:10 +0000 Received: by mail-pf0-f194.google.com with SMTP id d23so8229569pfe.9 for ; Tue, 09 Jan 2018 02:24:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=oU5fCxueTVkTx+VBS05agfHS7aOQW8CiLvec0gwHAJo=; b=SVBlwS80RSO7Mvrzn7Gn7lvY9iPQg3YgkeUmngb/c2IezNkjJu9QlgO5UKS4A4B13p X+layZm4PZ+lJnnjaarnlyS1lU/kuvaE7DnmqtC4DfxsxWbxWrqd10PvotLZ8kpM1Z1/ YTXN6hLlLQxpncNO6Jky4Zi2ZmKM97HW3DgkUoZukXC5HmrQoh7qm1zHPh6Eg+z9d8cw 4AoAxKtxHP/ssm03TFsiy8LPNqh9Dhyyjg+Ho3SJOW09jdaQAJGreVYJsfFu0+z6tH7G KTpWMEKQUb8Uc/xnfwuOTLRZu1bbs/UAoBuJBW5xwls+qXPvN5Z4hSBjzrW44MlRXEDG 4tiw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=oU5fCxueTVkTx+VBS05agfHS7aOQW8CiLvec0gwHAJo=; b=DZ85iO7qnowq/t9/nc/Kds+mHCGAatO0zD0/pBnzGU1VDN09KcJU97oYOtjPc7QFoB FHPnk+zGemUfC5DhunIxuZ+uQetumICMrBtyvD2AzQ8VQJrmvb+X1PcKHfGq+wn/J7Te VSLr58HlVZ1zcmo0WcrQU7aE6dDOVlLwVUayz2ifkCJ1ZjGP435/qei8snHrjpsJwmp7 fQK4/r8j9vFT+5a2uJJQ9OuUL/NBdiIdT9ct/x/fxkgiW3KjGDbvyYq3cVgbEq4ttiPC 2F1yVzW1J1QV/dCersz3qbdqem+OpBtsJPmKv7IY4EbfR4Cu5HRjbtdNqZjz/57WvLxE +g3w== X-Gm-Message-State: AKGB3mKzZ1wy6W0BTa+EykH23t7ZwWv8/tbgtCBLHcsxztX52I7bEaT0 ASyG6OyptutdrjOWo4B5IT4Bc/wM X-Google-Smtp-Source: ACJfBotqA6Gfgon5vjIY5soFmMjeW8CuuFmK0FEp91/to2ix//YmQoYYyf54XL+d8QNk1Dd1PQrvug== X-Received: by 10.84.134.34 with SMTP id 31mr15128246plg.448.1515493448273; Tue, 09 Jan 2018 02:24:08 -0800 (PST) Received: from cpu185.redpinesignals.com ([203.196.161.90]) by smtp.gmail.com with ESMTPSA id c2sm25432849pgq.48.2018.01.09.02.24.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 02:24:07 -0800 (PST) From: Amitkumar Karwar To: kernel-team@lists.ubuntu.com Subject: [Xenial SRU][PATCH 1/4] UBUNTU: SAUCE: Redpine: fix wowlan issue Date: Tue, 9 Jan 2018 15:44:06 +0530 Message-Id: <1515492849-4456-2-git-send-email-amitkarwar@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> References: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitkumar Karwar , Prameela Rani Garnepudi , Prameela Rani Garnepudi MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Prameela Rani Garnepudi BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742090 BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742094 Two issues were observed, kernel warning at S4 restore and other is failing to wakeup at times. Kernel warning is because, at hibernate resume while mac80211 is resuming, driver is issuing mac80211 detach. The warning is as below: [ 374.972073] WARNING: CPU: 1 PID: 3725 at linux-4.4.0/net/mac80211/iface.c:1000 ieee80211_do_stop+0x6ea/0x810 [mac80211]() .... [ 374.972211] CPU: 1 PID: 3725 Comm: kworker/u4:44 Tainted: G W 4.4.0-98-generic #121-Ubuntu [ 374.972213] Hardware name: Dell Inc. Edge Gateway 3002/ , BIOS 01.00.05 11/22/2017 [ 374.972223] Workqueue: events_unbound async_run_entry_fn [ 374.972230] 0000000000000286 bf3948ba9db4c154 ffff88005a733ad8 ffffffff813fb2c3 [ 374.972235] 0000000000000000 ffffffffc04b8ac8 ffff88005a733b10 ffffffff810812e2 [ 374.972239] ffff8800787c0840 ffff88006f18e700 0000000000000000 ffff88006f18ee90 [ 374.972240] Call Trace: [ 374.972249] [] dump_stack+0x63/0x90 [ 374.972256] [] warn_slowpath_common+0x82/0xc0 [ 374.972260] [] warn_slowpath_null+0x1a/0x20 [ 374.972305] [] ieee80211_do_stop+0x6ea/0x810 [mac80211] [ 374.972312] [] ? _raw_spin_unlock_bh+0x1e/0x20 [ 374.972317] [] ? dev_deactivate_many+0x20a/0x240 [ 374.972359] [] ieee80211_stop+0x1a/0x20 [mac80211] [ 374.972365] [] __dev_close_many+0x99/0x100 [ 374.972369] [] dev_close_many+0x91/0x140 [ 374.972374] [] ? synchronize_sched_expedited+0x4e1/0x880 [ 374.972379] [] dev_close.part.79+0x4a/0x70 [ 374.972383] [] dev_close+0x1a/0x20 [ 374.972425] [] cfg80211_shutdown_all_interfaces+0x41/0xa0 [cfg80211] [ 374.972467] [] ieee80211_remove_interfaces+0x56/0x1f0 [mac80211] [ 374.972506] [] ieee80211_unregister_hw+0x4a/0x120 [mac80211] This is avoided by calling ieee80211_restart_hw and reinitializing device as usual in sdio restore and waiting in mac80211_resume until device is ready. Other issue may be due to firmware assertion observed at times for the length of bgscan probe request at restore. To avoid this, unnecessary IEs are cut from the frame at end. Signed-off-by: Prameela Rani Garnepudi Signed-off-by: Amitkumar Karwar --- ubuntu/rsi/rsi_91x_hal.c | 3 ++- ubuntu/rsi/rsi_91x_mac80211.c | 15 ++++++++++++--- ubuntu/rsi/rsi_91x_main.c | 1 + ubuntu/rsi/rsi_91x_mgmt.c | 24 +++++++++++++++++++++++- ubuntu/rsi/rsi_91x_sdio.c | 10 +++++++--- ubuntu/rsi/rsi_common.h | 2 ++ ubuntu/rsi/rsi_main.h | 2 ++ 7 files changed, 49 insertions(+), 8 deletions(-) diff --git a/ubuntu/rsi/rsi_91x_hal.c b/ubuntu/rsi/rsi_91x_hal.c index cccedaf..971d5ee 100644 --- a/ubuntu/rsi/rsi_91x_hal.c +++ b/ubuntu/rsi/rsi_91x_hal.c @@ -188,7 +188,8 @@ int rsi_prepare_data_desc(struct rsi_common *common, struct sk_buff *skb) frame_desc[0] = cpu_to_le16((skb->len - FRAME_DESC_SZ) | (RSI_WIFI_MGMT_Q << 12)); } - if ((skb->len - header_size) == 133) { + if (((skb->len - header_size) == 133) || + ((skb->len - header_size) == 131)) { ven_rsi_dbg(INFO_ZONE, "*** Tx EAPOL 4*****\n"); frame_desc[1] |= cpu_to_le16(RSI_DESC_REQUIRE_CFM_TO_HOST); diff --git a/ubuntu/rsi/rsi_91x_mac80211.c b/ubuntu/rsi/rsi_91x_mac80211.c index 8a4100a..c32a9bb 100644 --- a/ubuntu/rsi/rsi_91x_mac80211.c +++ b/ubuntu/rsi/rsi_91x_mac80211.c @@ -363,6 +363,11 @@ static int rsi_mac80211_hw_scan_start(struct ieee80211_hw *hw, if (common->fsm_state != FSM_MAC_INIT_DONE) return -ENODEV; +#ifdef CONFIG_RSI_WOW + if (common->wow_flags & RSI_WOW_ENABLED) + return -ENETDOWN; +#endif + if (scan_req->n_channels == 0) return -EINVAL; @@ -404,8 +409,8 @@ static int rsi_mac80211_hw_scan_start(struct ieee80211_hw *hw, return 0; } -static void rsi_mac80211_hw_scan_cancel(struct ieee80211_hw *hw, - struct ieee80211_vif *vif) +void rsi_mac80211_hw_scan_cancel(struct ieee80211_hw *hw, + struct ieee80211_vif *vif) { struct rsi_hw *adapter = hw->priv; struct rsi_common *common = adapter->priv; @@ -444,6 +449,7 @@ static void rsi_mac80211_hw_scan_cancel(struct ieee80211_hw *hw, common->hw_scan_cancel = false; mutex_unlock(&common->mutex); } +EXPORT_SYMBOL_GPL(rsi_mac80211_hw_scan_cancel); #endif /** @@ -2452,8 +2458,11 @@ static int rsi_mac80211_resume(struct ieee80211_hw *hw) ven_rsi_dbg(INFO_ZONE, "%s: mac80211 resume\n", __func__); - if (common->hibernate_resume) + if (common->hibernate_resume) { + if (common->reinit_hw) + wait_for_completion(&common->wlan_init_completion); return 0; + } #ifdef CONFIG_VEN_RSI_WOW mutex_lock(&common->mutex); diff --git a/ubuntu/rsi/rsi_91x_main.c b/ubuntu/rsi/rsi_91x_main.c index f7a2e3a..2350dbb61 100644 --- a/ubuntu/rsi/rsi_91x_main.c +++ b/ubuntu/rsi/rsi_91x_main.c @@ -415,6 +415,7 @@ struct rsi_hw *ven_rsi_91x_init(void) common->roc_timer.data = (unsigned long)common; common->roc_timer.function = (void *)&rsi_roc_timeout; init_timer(&common->roc_timer); + init_completion(&common->wlan_init_completion); common->init_done = true; return adapter; diff --git a/ubuntu/rsi/rsi_91x_mgmt.c b/ubuntu/rsi/rsi_91x_mgmt.c index 9976054..94fadc7 100644 --- a/ubuntu/rsi/rsi_91x_mgmt.c +++ b/ubuntu/rsi/rsi_91x_mgmt.c @@ -2343,6 +2343,21 @@ int rsi_send_probe_request(struct rsi_common *common, } if (scan_type == 1) { + if (len > 120) { + u16 t_len = MIN_802_11_HDR_LEN; + + /* Cut some IEs */ + pos = &skb->data[MIN_802_11_HDR_LEN]; + while (true) { + if ((t_len + pos[1] + 2) > 120) { + skb_trim(skb, t_len); + len = t_len; + break; + } + t_len += pos[1] + 2; + pos += (pos[1] + 2); + } + } common->bgscan_probe_req_len = len; return 0; } @@ -2635,7 +2650,14 @@ static int rsi_handle_ta_confirm(struct rsi_common *common, u8 *msg) common->bb_rf_prog_count--; if (!common->bb_rf_prog_count) { common->fsm_state = FSM_MAC_INIT_DONE; - return rsi_mac80211_attach(common); + if (common->reinit_hw) { + common->hw_data_qs_blocked = false; + ieee80211_wake_queues(adapter->hw); + complete(&common->wlan_init_completion); + common->reinit_hw = false; + } else { + return rsi_mac80211_attach(common); + } } } else { ven_rsi_dbg(INFO_ZONE, diff --git a/ubuntu/rsi/rsi_91x_sdio.c b/ubuntu/rsi/rsi_91x_sdio.c index 07e08f0..336f059 100644 --- a/ubuntu/rsi/rsi_91x_sdio.c +++ b/ubuntu/rsi/rsi_91x_sdio.c @@ -1467,9 +1467,6 @@ static int rsi_sdio_reinit_device(struct rsi_hw *adapter) for (ii = 0; ii < NUM_SOFT_QUEUES; ii++) skb_queue_purge(&adapter->priv->tx_queue[ii]); - /* Detach MAC */ - ven_rsi_mac80211_detach(adapter); - /* Initialize device again */ sdio_claim_host(pfunction); @@ -1500,7 +1497,14 @@ int rsi_restore(struct device *dev) adapter->priv->bt_fsm_state = BT_DEVICE_NOT_READY; adapter->priv->iface_down = true; + adapter->sc_nvifs = 0; + rsi_mac80211_hw_scan_cancel(adapter->hw, adapter->priv->scan_vif); + flush_workqueue(adapter->priv->scan_workqueue); + ieee80211_stop_queues(adapter->hw); + ieee80211_restart_hw(adapter->hw); + /* Initialize device again */ + adapter->priv->reinit_hw = true; rsi_sdio_reinit_device(adapter); #ifdef CONFIG_VEN_RSI_WOW diff --git a/ubuntu/rsi/rsi_common.h b/ubuntu/rsi/rsi_common.h index d4385de..e7f1240 100644 --- a/ubuntu/rsi/rsi_common.h +++ b/ubuntu/rsi/rsi_common.h @@ -115,4 +115,6 @@ struct ieee80211_vif *rsi_get_vif(struct rsi_hw *adapter, u8 *mac); #ifdef CONFIG_VEN_RSI_WOW int rsi_config_wowlan(struct rsi_hw *adapter, struct cfg80211_wowlan *wowlan); #endif +void rsi_mac80211_hw_scan_cancel(struct ieee80211_hw *hw, + struct ieee80211_vif *vif); #endif diff --git a/ubuntu/rsi/rsi_main.h b/ubuntu/rsi/rsi_main.h index 3f55e36..53b9245 100644 --- a/ubuntu/rsi/rsi_main.h +++ b/ubuntu/rsi/rsi_main.h @@ -331,6 +331,8 @@ struct rsi_common { u8 ant_in_use; bool suspend_in_prog; bool hibernate_resume; + bool reinit_hw; + struct completion wlan_init_completion; #ifdef CONFIG_VEN_RSI_WOW u8 wow_flags; #endif From patchwork Tue Jan 9 10:14:07 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitkumar Karwar X-Patchwork-Id: 857360 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="PqI+Tdi6"; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3zG7Y05PrZz9s82; Tue, 9 Jan 2018 21:24:20 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1eYr4q-0000pr-Qm; Tue, 09 Jan 2018 10:24:16 +0000 Received: from mail-pf0-f195.google.com ([209.85.192.195]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1eYr4o-0000nw-Nw for kernel-team@lists.ubuntu.com; Tue, 09 Jan 2018 10:24:14 +0000 Received: by mail-pf0-f195.google.com with SMTP id j3so4391621pfh.8 for ; Tue, 09 Jan 2018 02:24:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=FCho4XIAnSozTYBDuKR/w87KaHrdOCdFwhWPx3WLRT8=; b=PqI+Tdi6lzOW510uSsLy3kJioNEYpkl8osBsQ+XKJ9jM4m80PxNZDzgUWztkKYIr+l xwCnIBBiDSdmL1QZiXsW8gg3V+r89DbJFqiDZgzs29NKTJy9aRwAnHPMRxuXewPPk6v+ kA6x7rD0kQUy/s2DSAAWdN7h/r00ydysm6s6RT96HRVgtV3Orritrefs/Xe1lZgLkRiB IhM5TefEyd/CAa6rN5FqpAGMdlNISAAxO2sxBPhbDG1FTR4Q3dB0cdbOGpR0qa0Ve7NV 8BTVAVCzh+w9SiQblcgUriUpdb89l/kffkUOFpEIgh1OguDj9Qp6tpm44Nhpt6ICHBvC XFLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=FCho4XIAnSozTYBDuKR/w87KaHrdOCdFwhWPx3WLRT8=; b=AUH6NxpwrgxdrLrdskuRzYSQkH/EtmC6uTY663Ji0gJJ2faygOuwNNMF7MdzfQP2dg uxiZ8u7GkOKNQkwWn82IoxELoN5II5HTJwL2fLZWwZHncPyVi4HexM2JG4VIQeqSL/xx iKedJ6OD/vCoHqDFotur4CRks9DcVJZvNuFd6u8mqrzV6aN78/+JW2SX/z6ZF80Q4UXD Lc5c15YVx+y/euC/fw4xVlbMaVMRoChxGPUM4Um9fs7c7PkqfOgS62eI26eO/TDyqJRK vLFZYRX3hOJrB6hev4XrB6t+fXnaOvuCebbK6UDg0rhSFbSDXD28787wPEUjRuP91Cq6 XgDA== X-Gm-Message-State: AKGB3mLeJi29y1aM3Fy9vyx2uK0UF9pVJdzw1leDdE8m8Qna/OpdZfW0 U7dxPOzu2Kj9E0UC36mqMNK1F/14 X-Google-Smtp-Source: ACJfBotKgiYV7HrX03LFAKGUNBB7nDAef+0YQRFZizZ9ohkYmhF8GEiJ4XGWU9VKn5CebQwp0w1vnw== X-Received: by 10.99.170.13 with SMTP id e13mr11887552pgf.59.1515493453084; Tue, 09 Jan 2018 02:24:13 -0800 (PST) Received: from cpu185.redpinesignals.com ([203.196.161.90]) by smtp.gmail.com with ESMTPSA id c2sm25432849pgq.48.2018.01.09.02.24.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 02:24:12 -0800 (PST) From: Amitkumar Karwar To: kernel-team@lists.ubuntu.com Subject: [Xenial SRU][PATCH 2/4] UBUNTU: SAUCE: Redpine: fix reset card issue Date: Tue, 9 Jan 2018 15:44:07 +0530 Message-Id: <1515492849-4456-3-git-send-email-amitkarwar@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> References: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitkumar Karwar , Prameela Rani Garnepudi , Prameela Rani Garnepudi MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Prameela Rani Garnepudi BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742090 BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742094 Sometimes we don't get response for SDIO commands during reset. Additional parameter 'expected response' is added to cmd52readbyte() and cmd52writebyte(). This parameter is false during reset (To avoid waiting for response) and true while disabling or enabling SDIO interrupts. Signed-off-by: Prameela Rani Garnepudi Signed-off-by: Amitkumar Karwar --- ubuntu/rsi/rsi_91x_sdio.c | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/ubuntu/rsi/rsi_91x_sdio.c b/ubuntu/rsi/rsi_91x_sdio.c index 336f059..a2e25d0 100644 --- a/ubuntu/rsi/rsi_91x_sdio.c +++ b/ubuntu/rsi/rsi_91x_sdio.c @@ -88,7 +88,8 @@ static u32 rsi_sdio_set_cmd52_arg(bool rw, */ static int rsi_cmd52writebyte(struct mmc_card *card, u32 address, - u8 byte) + u8 byte, + bool expect_resp) { struct mmc_command io_cmd; u32 arg; @@ -97,7 +98,9 @@ static int rsi_cmd52writebyte(struct mmc_card *card, arg = rsi_sdio_set_cmd52_arg(1, 0, 0, address, byte); io_cmd.opcode = SD_IO_RW_DIRECT; io_cmd.arg = arg; - io_cmd.flags = /*MMC_RSP_R5 | */MMC_CMD_AC; + io_cmd.flags = MMC_CMD_AC; + if (expect_resp) + io_cmd.flags |= MMC_RSP_R5; return mmc_wait_for_cmd(card->host, &io_cmd, 0); } @@ -112,7 +115,8 @@ static int rsi_cmd52writebyte(struct mmc_card *card, */ static int rsi_cmd52readbyte(struct mmc_card *card, u32 address, - u8 *byte) + u8 *byte, + bool expect_resp) { struct mmc_command io_cmd; u32 arg; @@ -122,7 +126,9 @@ static int rsi_cmd52readbyte(struct mmc_card *card, arg = rsi_sdio_set_cmd52_arg(0, 0, 0, address, 0); io_cmd.opcode = SD_IO_RW_DIRECT; io_cmd.arg = arg; - io_cmd.flags = /*MMC_RSP_R5 | */MMC_CMD_AC; + io_cmd.flags = MMC_CMD_AC; + if (expect_resp) + io_cmd.flags |= MMC_RSP_R5; err = mmc_wait_for_cmd(card->host, &io_cmd, 0); if ((!err) && (byte)) @@ -311,7 +317,7 @@ static void rsi_reset_card(struct sdio_func *pfunction) /* Reset 9110 chip */ err = rsi_cmd52writebyte(pfunction->card, SDIO_CCCR_ABORT, - (1 << 3)); + (1 << 3), true); /* Card will not send any response as it is getting reset immediately * Hence expect a timeout status from host controller @@ -446,14 +452,16 @@ static void rsi_reset_card(struct sdio_func *pfunction) /* Enable high speed */ if (card->host->caps & MMC_CAP_SD_HIGHSPEED) { ven_rsi_dbg(ERR_ZONE, "%s: Set high speed mode\n", __func__); - err = rsi_cmd52readbyte(card, SDIO_CCCR_SPEED, &cmd52_resp); + err = rsi_cmd52readbyte(card, SDIO_CCCR_SPEED, &cmd52_resp, + true); if (err) { ven_rsi_dbg(ERR_ZONE, "%s: CCCR speed reg read failed: %d\n", __func__, err); } else { err = rsi_cmd52writebyte(card, SDIO_CCCR_SPEED, - (cmd52_resp | SDIO_SPEED_EHS)); + (cmd52_resp | SDIO_SPEED_EHS), + true); if (err) { ven_rsi_dbg(ERR_ZONE, "%s: CCR speed regwrite failed %d\n", @@ -482,7 +490,7 @@ static void rsi_reset_card(struct sdio_func *pfunction) err = rsi_cmd52writebyte(card, SDIO_CCCR_IF, (SDIO_BUS_CD_DISABLE | - SDIO_BUS_WIDTH_4BIT)); + SDIO_BUS_WIDTH_4BIT), true); if (err) { ven_rsi_dbg(ERR_ZONE, "%s: Set bus mode failed : %d\n", __func__, err); @@ -1220,7 +1228,7 @@ static int rsi_sdio_disable_interrupts(struct sdio_func *pfunction) ven_rsi_dbg(ERR_ZONE, "\nInterrupts cleared"); sdio_claim_host(pfunction); - ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data); + ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data, false); if (ret < 0) { ven_rsi_dbg(ERR_ZONE, "%s: Failed to read INTR_EN register\n", @@ -1233,7 +1241,7 @@ static int rsi_sdio_disable_interrupts(struct sdio_func *pfunction) /* And bit0 and b1 */ data &= 0xfc; - ret = rsi_cmd52writebyte(pfunction->card, 0x04, data); + ret = rsi_cmd52writebyte(pfunction->card, 0x04, data, false); if (ret < 0) { ven_rsi_dbg(ERR_ZONE, "%s: Failed to Write to INTR_EN register\n", @@ -1241,7 +1249,7 @@ static int rsi_sdio_disable_interrupts(struct sdio_func *pfunction) sdio_release_host(pfunction); return ret; } - ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data); + ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data, false); if (ret < 0) { ven_rsi_dbg(ERR_ZONE, "%s: Failed to read INTR_EN register\n", @@ -1262,7 +1270,7 @@ static int rsi_sdio_enable_interrupts(struct sdio_func *pfunction) int ret; sdio_claim_host(pfunction); - ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data); + ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data, false); if (ret < 0) { ven_rsi_dbg(ERR_ZONE, "%s: Failed to read INTR_EN register\n", __func__); @@ -1274,7 +1282,7 @@ static int rsi_sdio_enable_interrupts(struct sdio_func *pfunction) /* Enable b1 and b0 */ data |= 0x03; - ret = rsi_cmd52writebyte(pfunction->card, 0x04, data); + ret = rsi_cmd52writebyte(pfunction->card, 0x04, data, false); if (ret < 0) { ven_rsi_dbg(ERR_ZONE, "%s: Failed to Write to INTR_EN register\n", @@ -1282,8 +1290,8 @@ static int rsi_sdio_enable_interrupts(struct sdio_func *pfunction) sdio_release_host(pfunction); return ret; } - - ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data); + + ret = rsi_cmd52readbyte(pfunction->card, 0x04, &data, false); if (ret < 0) { ven_rsi_dbg(ERR_ZONE, "%s: Failed to read INTR_EN register\n", __func__); From patchwork Tue Jan 9 10:14:08 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitkumar Karwar X-Patchwork-Id: 857361 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="By9W/nuL"; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3zG7Y46534z9s82; Tue, 9 Jan 2018 21:24:24 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1eYr4v-0000tJ-0B; Tue, 09 Jan 2018 10:24:21 +0000 Received: from mail-pf0-f194.google.com ([209.85.192.194]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1eYr4s-0000r1-Tl for kernel-team@lists.ubuntu.com; Tue, 09 Jan 2018 10:24:19 +0000 Received: by mail-pf0-f194.google.com with SMTP id j3so4391732pfh.8 for ; Tue, 09 Jan 2018 02:24:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=J9KwRYKVXCYWgXEZa/u9zDJEVx403Q254vaVeTgV4/A=; b=By9W/nuLgr/KJp69X/vZ/gkZQO3dSMGKvjPOQf3UUSjTU+QrYnU4O8JBR+9EjVMK9e v6ixBJh0TYZWeo+6S//Jk8DxC+oa1v7yS1jp+ke4Y+ucl8gUs31EbOTCkjn7JX1KCBW6 yDm8wU42JVyt05Sq3yzNb1anCCgwU8VizQRm/qPCkxNGQ54wYaPIjE2Q3mEviCg5JXZm /tCkspORs2yAK5fSX7jzj8M/3Jea5/eMzzLH8byaCBqNmkuazSGxhtEtaz/Z8h7Rw0dS A+j71f4vqZdw3j5ZtLkAKSmnSwDDOmzmQfXz6Q9irVryW5aDQ3zs/0RoBv0xWZYl4r2J MdlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=J9KwRYKVXCYWgXEZa/u9zDJEVx403Q254vaVeTgV4/A=; b=gzbRO57sZUTgbdkCix7xFq4nVdDR1TtT/D3EbSYcJEUJFSvMQSbxt7/Fk0TCke+TO+ 8Vts/2Xj9jV0HgTqo+fXvm+R7cMsp9Cp7HKc5KQK8e7sY7iPTBl4tEU0y7eIrAQf1em4 9zsveSirvtwa2B7FWwXIZILdC/4yrKJBhmMnyRQplQLQ2TC21C7E47DruYqNuYe+G91K OJCuYmSmk+mfhW0foMavfJmHB9INb875Y5oCTO4lajOdgJogzZrDFR/E4XFcp6j6Uh/Z XwB11n8sY68M/leqKJFGDrd4icBe2ywNXXhh3QAmoV7wAkj8CWo6FiM8KRgM5vFxMTiF D+gQ== X-Gm-Message-State: AKGB3mJxmCWzdEwOcjoRBwa+mkYOxo7sr3jLM/QpSIC4oZi7XSMW9Y4k hrv7ShGTiutBhoQslWbkR1xmGJUH X-Google-Smtp-Source: ACJfBouJvCJYgNa8dVAGOJ3QAjTfx+iO13uQRjW/zjNZHeFsIxEAcwqyLfeuQq7GRq366Oq9O6hb9g== X-Received: by 10.84.242.69 with SMTP id c5mr7171292pll.358.1515493457287; Tue, 09 Jan 2018 02:24:17 -0800 (PST) Received: from cpu185.redpinesignals.com ([203.196.161.90]) by smtp.gmail.com with ESMTPSA id c2sm25432849pgq.48.2018.01.09.02.24.14 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 02:24:16 -0800 (PST) From: Amitkumar Karwar To: kernel-team@lists.ubuntu.com Subject: [Xenial SRU][PATCH 3/4] UBUNTU: SAUCE: Redpine: fix data issue with non-uapsd APs Date: Tue, 9 Jan 2018 15:44:08 +0530 Message-Id: <1515492849-4456-4-git-send-email-amitkarwar@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> References: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitkumar Karwar , Prameela Rani Garnepudi , Prameela Rani Garnepudi MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Prameela Rani Garnepudi BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742090 BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742094 UAPSD parameter configuration in power save request should be under UAPSD bitmap check. Otherwise data block issue occurs with non-UAPSD APs . Signed-off-by: Prameela Rani Garnepudi Signed-off-by: Amitkumar Karwar --- ubuntu/rsi/rsi_91x_mgmt.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ubuntu/rsi/rsi_91x_mgmt.c b/ubuntu/rsi/rsi_91x_mgmt.c index 94fadc7..8a18c67 100644 --- a/ubuntu/rsi/rsi_91x_mgmt.c +++ b/ubuntu/rsi/rsi_91x_mgmt.c @@ -2100,6 +2100,11 @@ int rsi_send_ps_request(struct rsi_hw *adapter, bool enable) if (common->uapsd_bitmap) { // ps->ps_mimic_support = 1; ps->ps_uapsd_acs = common->uapsd_bitmap; + ps->ps_uapsd_acs = (adapter->hw->uapsd_max_sp_len << + IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT) | + IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK; + ps->ps_uapsd_wakeup_period = RSI_UAPSD_WAKEUP_PERIOD; + } ps->ps_sleep.sleep_type = ps_info->sleep_type; @@ -2119,11 +2124,6 @@ int rsi_send_ps_request(struct rsi_hw *adapter, bool enable) if (ps->ps_listen_interval > ps->ps_dtim_interval_duration) ps->ps_listen_interval = 0; - ps->ps_uapsd_acs = (adapter->hw->uapsd_max_sp_len << - IEEE80211_WMM_IE_STA_QOSINFO_SP_SHIFT) | - IEEE80211_WMM_IE_STA_QOSINFO_AC_MASK; - ps->ps_uapsd_wakeup_period = RSI_UAPSD_WAKEUP_PERIOD; - skb_put(skb, frame_len); return rsi_send_internal_mgmt_frame(common, skb); From patchwork Tue Jan 9 10:14:09 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Amitkumar Karwar X-Patchwork-Id: 857362 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=lists.ubuntu.com (client-ip=91.189.94.19; helo=huckleberry.canonical.com; envelope-from=kernel-team-bounces@lists.ubuntu.com; receiver=) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="ABfwfGtg"; dkim-atps=neutral Received: from huckleberry.canonical.com (huckleberry.canonical.com [91.189.94.19]) by ozlabs.org (Postfix) with ESMTP id 3zG7Y860Nkz9s82; Tue, 9 Jan 2018 21:24:28 +1100 (AEDT) Received: from localhost ([127.0.0.1] helo=huckleberry.canonical.com) by huckleberry.canonical.com with esmtp (Exim 4.86_2) (envelope-from ) id 1eYr4z-0000wm-5p; Tue, 09 Jan 2018 10:24:25 +0000 Received: from mail-pf0-f196.google.com ([209.85.192.196]) by huckleberry.canonical.com with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.86_2) (envelope-from ) id 1eYr4x-0000up-B2 for kernel-team@lists.ubuntu.com; Tue, 09 Jan 2018 10:24:23 +0000 Received: by mail-pf0-f196.google.com with SMTP id e3so8230404pfi.10 for ; Tue, 09 Jan 2018 02:24:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=jOodcmky5T14crrdihBvtCApBLiqfyTRgTqzodKiEFE=; b=ABfwfGtgOxbuihbH/uR29DHb8ewOlSJ+Yk2rrr1MLV1OJ+D6ltoo0MFHqpwgqfBdCo isOdhYIgOPCRdq1aqnUPQ44h+EPBtGFmuitFG4PuONSdd2CNTHeh2WWGC9kS8IDqftYf X7DlHGCUtMGWpr650V1DfrvCfquqsO68Ty+kYOejxanJ5XKEwQPcA0oiGF0uFiMtC+G3 BvXtLa3KO2IT3KpWEVugSU1HT/bgDbJbit1WwNhqrrZNIkoIrjE6UXa/a+ApXTakjz+p srhO7+LEb2pW9vXT4IkTVFZ94DKTIkPpIUQWnXe24sdEaABYOgliH8GfAZwz2mcfOa6k AHSQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=jOodcmky5T14crrdihBvtCApBLiqfyTRgTqzodKiEFE=; b=DMECq+Phk7hRBl3wVWfEnpIkiCjaw+BokeAbGERqXeMz4PRY8EtUxsYNUywa1SRe2O K3OBgBBKG6jgij4gCX5Zf7ASvkTOdfknMGpeN8mBioK+XgzWoeLq4OGqvVOWEuLXpaBo rLE1F/+HPlTKyUS9+RpeplOIDiJEMknQzqRWOsE8cZXM6gHyVcJyH0mn0BapkKsoi4UX B5VwSb2CAt5ItBfqP7/RGaNjvC+2+3kmsdYjTqh53BLRgkdAZQzfu4BU8q8y/r9BhMPA 5+wnueiLauRQjdXuIBxbIMsK065NPigoqK9yBQ1STi89RvgNYKHdprTK12w0E2WL8mU5 DaRw== X-Gm-Message-State: AKGB3mI1DdWF1iwHQXPjU1K4VIkhiIRRXFMGBPxpINGyX67HzNqibCm2 I67DTDCRizrUcYgKaTBxuwcc1+yn X-Google-Smtp-Source: ACJfBots/A0BrNfBgmCBsfmkxbtZ06OYZnIep2Kho0gFhgdrJZ+31S5UA08wBdfJkZ6fz8qLk3tLwQ== X-Received: by 10.98.19.137 with SMTP id 9mr4488722pft.5.1515493461787; Tue, 09 Jan 2018 02:24:21 -0800 (PST) Received: from cpu185.redpinesignals.com ([203.196.161.90]) by smtp.gmail.com with ESMTPSA id c2sm25432849pgq.48.2018.01.09.02.24.18 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 09 Jan 2018 02:24:20 -0800 (PST) From: Amitkumar Karwar To: kernel-team@lists.ubuntu.com Subject: [Xenial SRU][PATCH 4/4] UBUNTU: SAUCE: Redpine: fix for wowlan wakeup failure Date: Tue, 9 Jan 2018 15:44:09 +0530 Message-Id: <1515492849-4456-5-git-send-email-amitkarwar@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> References: <1515492849-4456-1-git-send-email-amitkarwar@gmail.com> X-BeenThere: kernel-team@lists.ubuntu.com X-Mailman-Version: 2.1.20 Precedence: list List-Id: Kernel team discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Amitkumar Karwar , Pavani Muthyala , Prameela Rani Garnepudi MIME-Version: 1.0 Errors-To: kernel-team-bounces@lists.ubuntu.com Sender: "kernel-team" From: Pavani Muthyala BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742090 BugLink: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1742094 It is observed that magic packet is sometimes missed by firmware which results in wakeup failure. This happens only in coex mode when power save is enabled. Issue is resolved by disabling power save to avoid radio loss for wlan Signed-off-by: Pavani Muthyala Signed-off-by: Amitkumar Karwar --- ubuntu/rsi/rsi_91x_mac80211.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ubuntu/rsi/rsi_91x_mac80211.c b/ubuntu/rsi/rsi_91x_mac80211.c index c32a9bb..2b18259 100644 --- a/ubuntu/rsi/rsi_91x_mac80211.c +++ b/ubuntu/rsi/rsi_91x_mac80211.c @@ -2410,6 +2410,8 @@ int rsi_config_wowlan(struct rsi_hw *adapter, struct cfg80211_wowlan *wowlan) return 0; } ven_rsi_dbg(INFO_ZONE, "TRIGGERS %x\n", triggers); + if (common->coex_mode > 1) + rsi_disable_ps(adapter); rsi_send_wowlan_request(common, triggers, 1); /* Send updated vap caps */