From patchwork Wed Jul 1 15:07:07 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= X-Patchwork-Id: 1320610 X-Patchwork-Delegate: davem@davemloft.net Return-Path: X-Original-To: patchwork-incoming-netdev@ozlabs.org Delivered-To: patchwork-incoming-netdev@ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=vger.kernel.org (client-ip=23.128.96.18; helo=vger.kernel.org; envelope-from=netdev-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=silabs.com Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=silabs.onmicrosoft.com header.i=@silabs.onmicrosoft.com header.a=rsa-sha256 header.s=selector2-silabs-onmicrosoft-com header.b=mEkzev59; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by ozlabs.org (Postfix) with ESMTP id 49xl445HwLz9sTj for ; Thu, 2 Jul 2020 01:08:52 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731910AbgGAPIm (ORCPT ); Wed, 1 Jul 2020 11:08:42 -0400 Received: from mail-bn8nam12on2056.outbound.protection.outlook.com ([40.107.237.56]:52640 "EHLO NAM12-BN8-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1731894AbgGAPIk (ORCPT ); Wed, 1 Jul 2020 11:08:40 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=hDaBIpifOQRyC+dV7neHvPHVDo5V3fdnuMB/MAjg0Bxs4OBbbRWu7tzf1Nh0dc/2SJvvPOiZ/FxzdsQKn8ZoCoLVn0NQwBmjQrf/qe3saqJgFW5om+BYfIAiemnJfJBMph02ec38aD+WDq4KjfCrznsXi6VByULisxTuALFJTDrej+yL+o3fz//a9U8ydGetU1/lMYaWDkLFIBoqOocZpydGnSnrx3YHJfkeorgdEXJg3HYi5faetyLkS0CbLxCNvnADkCSMm89NyE7SqEZ71DmB/DDz6v80M05fVpUYVEawf4HVWyWZY30QCxwypf0w1EK9Xp7kD2euaYiM+3dfYQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/tFsZywwSyc+AP6p6DjdgN/d574t4Q2WgeJIgrywvdw=; b=UD+dWBp5EpL097MwGwCj42qMQqX1xkrFRC7qE7Fq1axlymldnjmE4OboH8UHKG8LZi4a4+dwM7WIWt8isgU9AFMEuC/ni0wYre+Bu+xGB9mH3o+UI0WlApMMTW4+r3ZV2VlTNAq4qUV84GOOWZdbeIsu9/iUhApmUUv4PEK7tgUEeuHAXzzXx3rFBvfwgoxN1wHF00PgN5guzz9K9sUGueUOGhjnAHOnOGbRJqkjCqJJrbVasRcZNf7EueEJBLIfJ4zsxop8HyQdSg3wv3kW/bZ3XnRbXaLKJWHq1KMSTTP9x6Xmui+271OMLUDVBjNsEvREygYrBfrxOCV+f25+yg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=silabs.com; dmarc=pass action=none header.from=silabs.com; dkim=pass header.d=silabs.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=silabs.onmicrosoft.com; s=selector2-silabs-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=/tFsZywwSyc+AP6p6DjdgN/d574t4Q2WgeJIgrywvdw=; b=mEkzev59kiz/jQIlQQ6Xg0mhpk0JWkZ0Zn89V/fo1NtoLedLYUsRwyyvc6FoUu84hPf2G4e7PJ9djHOrFzgtUV4Z6bUCKAXxCKatcM7+Pxq2lznshZ7HrDksGCbCshMgEYw+ivf7mgxESjoIIuv89f84eUXeqSN/QdWfNWa1WBU= Authentication-Results: driverdev.osuosl.org; dkim=none (message not signed) header.d=none;driverdev.osuosl.org; dmarc=none action=none header.from=silabs.com; Received: from SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) by SA0PR11MB4736.namprd11.prod.outlook.com (2603:10b6:806:9f::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.22; Wed, 1 Jul 2020 15:08:26 +0000 Received: from SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336]) by SN6PR11MB2718.namprd11.prod.outlook.com ([fe80::c504:2d66:a8f7:2336%7]) with mapi id 15.20.3131.033; Wed, 1 Jul 2020 15:08:26 +0000 From: Jerome Pouiller To: devel@driverdev.osuosl.org, linux-wireless@vger.kernel.org Cc: netdev@vger.kernel.org, linux-kernel@vger.kernel.org, Greg Kroah-Hartman , Kalle Valo , "David S . Miller" , =?utf-8?b?SsOpcsO0bWUgUG91aWxsZXI=?= Subject: [PATCH 13/13] staging: wfx: always enable FastPs in combo with new firmwares Date: Wed, 1 Jul 2020 17:07:07 +0200 Message-Id: <20200701150707.222985-14-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.27.0 In-Reply-To: <20200701150707.222985-1-Jerome.Pouiller@silabs.com> References: <20200701150707.222985-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: DM5PR07CA0143.namprd07.prod.outlook.com (2603:10b6:3:13e::33) To SN6PR11MB2718.namprd11.prod.outlook.com (2603:10b6:805:63::18) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (2a01:e35:2435:66a0:544b:f17b:7ae8:fb7) by DM5PR07CA0143.namprd07.prod.outlook.com (2603:10b6:3:13e::33) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3153.21 via Frontend Transport; Wed, 1 Jul 2020 15:08:24 +0000 X-Mailer: git-send-email 2.27.0 X-Originating-IP: [2a01:e35:2435:66a0:544b:f17b:7ae8:fb7] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 0b5f5ab2-27ca-4028-0a00-08d81dd09aa7 X-MS-TrafficTypeDiagnostic: SA0PR11MB4736: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:1388; X-Forefront-PRVS: 04519BA941 X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V9vHIZFE/Cke8VZOAgjzr9tiatQXjNUZA267rfJ/hfRGXrQ9cCQLZXhRvCxav0oz67X0MeEFeikhbd708aChDd+4b9Uq7IxFmEDX5ikXaVpst3uDbv5vgmGtrBeHK8AbXLGH5PmfTClo7JIyLj3SJH7RrtYlcN0l9+U6A9XMTPiNgU+qTHL5eHW8P/BItrwVl3NbiW+DLzD6qAu8ByD3tgoxVJNA30zn3b0pFlOx/E8Vj+9FZCj1wBxYU1AZiRXJOx/sTtf/ZwL4utoGTha7gWRLxua2RAVOqae0JaLHJr5qwO+RbxBByzLIgOrzItfnS/NUnmbZIEgMcIbrWLZ8sA== X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:SN6PR11MB2718.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFTY:;SFS:(39850400004)(366004)(346002)(376002)(396003)(136003)(5660300002)(6486002)(86362001)(6666004)(66574015)(36756003)(2906002)(186003)(83380400001)(16526019)(8936002)(66556008)(66476007)(107886003)(4326008)(8676002)(2616005)(1076003)(478600001)(316002)(54906003)(66946007)(52116002)(7696005);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData: z5vKuWNgOGebDIFzr/TuK5f3VWsnYDDxjMve2HlhYocRHZmS1OV3+jdYb42pNja1Ft1iTLQ0zgYIBY/MYUQx6mjcieFDc05aevQAT9nzoIzRREzDCukNMsx15rB5eTw6ysTO+ID679Ccl/Cf1a/pSN2GkNk49rzyOedVGYHvhe7plrL5zhnEOHYsvtKN6ARHMeBnyxn9QCpOxfopgRxsHIrZ6zI0pUT1DjSwVwPRil9NhaCzhEg6ZRpl8rVeruBRWPDj4nNDcehmZL7Vy/vBsa7BQ2UhyDQYgDma0f5Zp7UURlKErg3XaiphuoymiUbospodgcnt3csn5afRjaOmdIUrU17WBXYU6bt6BJ92s6ZhrcYXoBsDj/HD+H2dGMys1S9+hNtzERy0tMK71qxJs8B9/1dzCNB5ibciXvsxy00WD3ymmO5WdUUpMDEwLEmM5bIZ7xays78fZF0TTxhMjvX+6up0im3SqkssEW0Dg6Fl7sp7v0FPT+tmg0X0lbQn+/cupOWqh2RfWRbPzjCZ5oQoNYt9yjw5ywYOmFn7bsI= X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0b5f5ab2-27ca-4028-0a00-08d81dd09aa7 X-MS-Exchange-CrossTenant-AuthSource: SN6PR11MB2718.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Jul 2020 15:08:26.0395 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 54dbd822-5231-4b20-944d-6f4abcd541fb X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: qe65E8kDruc3BLLvdwDKZ7wJT8FJLkN6Bj71LuyQVWv8HfYfcN/F3vv0FYvfJQN0aRZchkhjHcc7lXTu8sgBgA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SA0PR11MB4736 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jérôme Pouiller When multiple interface on different channels are in use. It is necessary to advertise the AP that the device is no more awake before to switch to the other channel. Until now, PS-Poll was the preferred mechanism for that. However. The new firmwares (>= 3.7) now nicely support FastPS. FastPS improves bandwidth and compatibility with AP. This patch drop the complex and rarely used mechanism introduced in the commit dd5eba1bb5b4f ("staging: wfx: fix support for AP that do not support PS-Poll") and use FastPS as soon as it is possible. Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/hif_rx.c | 8 +------- drivers/staging/wfx/sta.c | 16 +++------------- drivers/staging/wfx/wfx.h | 2 -- 3 files changed, 4 insertions(+), 22 deletions(-) diff --git a/drivers/staging/wfx/hif_rx.c b/drivers/staging/wfx/hif_rx.c index e3ebd910fabfd..cc7c0cf226ba1 100644 --- a/drivers/staging/wfx/hif_rx.c +++ b/drivers/staging/wfx/hif_rx.c @@ -149,7 +149,6 @@ static int hif_event_indication(struct wfx_dev *wdev, struct wfx_vif *wvif = wdev_to_wvif(wdev, hif->interface); const struct hif_ind_event *body = buf; int type = le32_to_cpu(body->event_id); - int cause; if (!wvif) { dev_warn(wdev->dev, "received event for non-existent vif\n"); @@ -168,13 +167,8 @@ static int hif_event_indication(struct wfx_dev *wdev, dev_dbg(wdev->dev, "ignore BSSREGAINED indication\n"); break; case HIF_EVENT_IND_PS_MODE_ERROR: - cause = le32_to_cpu(body->event_data.ps_mode_error); dev_warn(wdev->dev, "error while processing power save request: %d\n", - cause); - if (cause == HIF_PS_ERROR_AP_NOT_RESP_TO_POLL) { - wvif->bss_not_support_ps_poll = true; - schedule_work(&wvif->update_pm_work); - } + le32_to_cpu(body->event_data.ps_mode_error)); break; default: dev_warn(wdev->dev, "unhandled event indication: %.2x\n", diff --git a/drivers/staging/wfx/sta.c b/drivers/staging/wfx/sta.c index fdf4f48ddc2ce..4e30ab17a93d4 100644 --- a/drivers/staging/wfx/sta.c +++ b/drivers/staging/wfx/sta.c @@ -219,10 +219,10 @@ static int wfx_get_ps_timeout(struct wfx_vif *wvif, bool *enable_ps) *enable_ps = true; if (wvif->wdev->force_ps_timeout > -1) return wvif->wdev->force_ps_timeout; - else if (wvif->bss_not_support_ps_poll) - return 30; - else + else if (wfx_api_older_than(wvif->wdev, 3, 2)) return 0; + else + return 30; } if (enable_ps) *enable_ps = wvif->vif->bss_conf.ps; @@ -255,14 +255,6 @@ int wfx_update_pm(struct wfx_vif *wvif) return hif_set_pm(wvif, ps, ps_timeout); } -static void wfx_update_pm_work(struct work_struct *work) -{ - struct wfx_vif *wvif = container_of(work, struct wfx_vif, - update_pm_work); - - wfx_update_pm(wvif); -} - int wfx_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u16 queue, const struct ieee80211_tx_queue_params *params) { @@ -372,7 +364,6 @@ void wfx_reset(struct wfx_vif *wvif) hif_set_block_ack_policy(wvif, 0xFF, 0xFF); wfx_tx_unlock(wdev); wvif->join_in_progress = false; - wvif->bss_not_support_ps_poll = false; cancel_delayed_work_sync(&wvif->beacon_loss_work); wvif = NULL; while ((wvif = wvif_iterate(wdev, wvif)) != NULL) @@ -790,7 +781,6 @@ int wfx_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) init_completion(&wvif->set_pm_mode_complete); complete(&wvif->set_pm_mode_complete); - INIT_WORK(&wvif->update_pm_work, wfx_update_pm_work); INIT_WORK(&wvif->tx_policy_upload_work, wfx_tx_policy_upload_work); mutex_init(&wvif->scan_lock); diff --git a/drivers/staging/wfx/wfx.h b/drivers/staging/wfx/wfx.h index 477c08fc713fa..38e24d7f72f24 100644 --- a/drivers/staging/wfx/wfx.h +++ b/drivers/staging/wfx/wfx.h @@ -93,8 +93,6 @@ struct wfx_vif { bool scan_abort; struct ieee80211_scan_request *scan_req; - bool bss_not_support_ps_poll; - struct work_struct update_pm_work; struct completion set_pm_mode_complete; };