From patchwork Wed Apr 1 11:03:54 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: 1265137 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=none (no SPF record) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; 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=lZbxPuzj; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 48sk0K0DGcz9sT2 for ; Wed, 1 Apr 2020 22:06:24 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1732482AbgDALFP (ORCPT ); Wed, 1 Apr 2020 07:05:15 -0400 Received: from mail-eopbgr750070.outbound.protection.outlook.com ([40.107.75.70]:46082 "EHLO NAM02-BL2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1732411AbgDALFI (ORCPT ); Wed, 1 Apr 2020 07:05:08 -0400 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VFYpCKtgphHq0uwn92Ukw+1yshAUqXTLbD3Mbbganza4dVtbo6momBu+1/hxAwRJPtZAXx04sTi5JBpqOicz9T933knheOxgYifF9bM5TWyiLXqbPPH1Qs/edk1sOU8zxGpK0sRCGXLVJSXivAQEwYLt68I2zQZ6XU4U8QG736p6745K/9dwzwO/pORNo4cHfX6vU45cXEmLyzjS2M7m57sWhupAMw3hzfhX6Udz0JnigVXjN3Ih23mgVDiWM36ylLzlkF4Rczmq+HmQLeJcNPNELmBTvFwbAxqkuFbjgEEeo/YjKL0dE3WljEqP8MfyWvCS2hXPxUN0ljCwn0WAnQ== 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=KByH8CMeALcWNBVr4ZyAF71eawkmjEy+Ct0mBPM1yJQ=; b=V6GhFGvuzlIkLHYDA3VnNUcXzr9+TY06ZQU1IzyHJu5iYSZvk/pUFN83BkfAdk/1UsnpcBXrl8EYU1bsu8Jz++FaJTN2Ge1hmY/EpQxqrV6ZHzBiKJX//oG8IeB4ANRIz5ehrjnJ+SQeWa63pu4uZAtvwOGbhMEcVUugOh6zQsHP7SlxG/ycyH7FsIyzWBeRkCrMMrLxvBr43qY35tUqjjf2rUZZ43rL8b0EJNhpaLFq7O+b76vNpYbpR4wl7QAgq+4Z6QcJTkmoh9+QiioTGDMBllYIhE/CNcro0dTRr8HOf62t4Ysu50ma+G2dihopTOl2vtl/6xUw6sYZUx2PIA== 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=KByH8CMeALcWNBVr4ZyAF71eawkmjEy+Ct0mBPM1yJQ=; b=lZbxPuzjFlfvomYS6bmLo+2nCZ4HyMEUNB8ye1gOIeboJz5ysH6667MXsFlvTe656Z5SXWjzDYbgnT70w8yy5QGoEFcits8Ff6TgjiObOTVEh4/DokYUviMCGyC5fr/RmPh00zRCKRqLGbPuan3AJ+xa1Qsjb3CEMiHiR+nDUyw= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Jerome.Pouiller@silabs.com; Received: from MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) by MN2PR11MB4285.namprd11.prod.outlook.com (2603:10b6:208:191::32) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2856.20; Wed, 1 Apr 2020 11:05:03 +0000 Received: from MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::ade4:5702:1c8b:a2b3]) by MN2PR11MB4063.namprd11.prod.outlook.com ([fe80::ade4:5702:1c8b:a2b3%7]) with mapi id 15.20.2856.019; Wed, 1 Apr 2020 11:05:03 +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 21/32] staging: wfx: introduce a counter of pending frames Date: Wed, 1 Apr 2020 13:03:54 +0200 Message-Id: <20200401110405.80282-22-Jerome.Pouiller@silabs.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200401110405.80282-1-Jerome.Pouiller@silabs.com> References: <20200401110405.80282-1-Jerome.Pouiller@silabs.com> X-ClientProxiedBy: SN4PR0501CA0156.namprd05.prod.outlook.com (2603:10b6:803:2c::34) To MN2PR11MB4063.namprd11.prod.outlook.com (2603:10b6:208:13f::22) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from pc-42.silabs.com (2a01:e35:2435:66a0:1265:30ff:fefd:6e7f) by SN4PR0501CA0156.namprd05.prod.outlook.com (2603:10b6:803:2c::34) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.2878.9 via Frontend Transport; Wed, 1 Apr 2020 11:05:01 +0000 X-Mailer: git-send-email 2.25.1 X-Originating-IP: [2a01:e35:2435:66a0:1265:30ff:fefd:6e7f] X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 47540c5e-2a2e-4c04-3ebb-08d7d62c86dc X-MS-TrafficTypeDiagnostic: MN2PR11MB4285: X-MS-Exchange-Transport-Forked: True X-Microsoft-Antispam-PRVS: X-MS-Oob-TLC-OOBClassifiers: OLM:4125; X-Forefront-PRVS: 03607C04F0 X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:MN2PR11MB4063.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFTY:; SFS:(10009020)(136003)(366004)(346002)(376002)(39850400004)(396003)(7696005)(8676002)(1076003)(16526019)(186003)(6666004)(5660300002)(86362001)(4326008)(66574012)(52116002)(478600001)(66946007)(66476007)(54906003)(36756003)(8936002)(316002)(81156014)(6486002)(2906002)(66556008)(107886003)(81166006)(2616005); DIR:OUT; SFP:1101; Received-SPF: None (protection.outlook.com: silabs.com does not designate permitted sender hosts) X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: xFlBb6duW27fpd3n7YV3JtJ/W3bgOhFcc0LmcTa7hbXcyREFG7WURlK8ojzdIm/LSWWRZuLMALj+TeEGT+A+aciuT6IuG3oCGz/x/AiFd5cIKq8xizR6kDdrmwG1S4IqTBPGMAslOQ98SqDJeqQh1odw9twDvoLywO41mP37Dac0hKHW2FkhB/J+wRpl3oko3wGvMolbsdNftZBhQ/vayA9ulcPxJuGEvUpx0LavdouvHCtdeTF/Jx7S+TReLc1f2yh3lOWoNZb5N/oJE+YPxdTyL5oilVsoAxzX4CaMqy65PSw3TCj/qPeCyu60qHaw3OGQuXxln/ZFTEaHA4y3sb9Rs4QwhFfOHa9O2I1CRClIAnkMc35yj6U+KYXFe2j7VbnOo/+PzppSV+rG2Ym5xzKAmii2hPhN43YueFMYXUepUM3pi8VTx40jNh2Z4nxX X-MS-Exchange-AntiSpam-MessageData: ahcmKjOT8kZv+4WIlGS34xr3TyXYS0CwNUMS7ysg4e4+3dbwy3S8cqea4H2TuaN9I1Ch2Cy52rqtMsi4oqMpDghEjSbU/Zjq9DtCFqHRnGc0Y0INll301YOtUGGhsFAK9JPg0mIeUIFa4nRETJhqvXCgON+Pdi8xajanTwT3k7fzx2Y+85EU2KP6+LLnrlDyrsTK1OPQCMzwuNxxmSm9QA== X-OriginatorOrg: silabs.com X-MS-Exchange-CrossTenant-Network-Message-Id: 47540c5e-2a2e-4c04-3ebb-08d7d62c86dc X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Apr 2020 11:05:02.8259 (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: OQatUSOhByYXZ9QHFhqAigf88hWAiQJh6plaQW7F99ZGrFkL0Rhv2ENUTvAIjXGpgqnQgE8i3q+52EYPCSxIAw== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR11MB4285 Sender: netdev-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netdev@vger.kernel.org From: Jérôme Pouiller This counter will be useful to know which queue is least full in a further patch. Signed-off-by: Jérôme Pouiller --- drivers/staging/wfx/queue.c | 15 +++++++++++++++ drivers/staging/wfx/queue.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/drivers/staging/wfx/queue.c b/drivers/staging/wfx/queue.c index 4ddb2c7370cd..21a2c8aabbb9 100644 --- a/drivers/staging/wfx/queue.c +++ b/drivers/staging/wfx/queue.c @@ -30,6 +30,7 @@ void wfx_tx_unlock(struct wfx_dev *wdev) void wfx_tx_flush(struct wfx_dev *wdev) { int ret; + int i; // Do not wait for any reply if chip is frozen if (wdev->chip_frozen) @@ -39,6 +40,12 @@ void wfx_tx_flush(struct wfx_dev *wdev) ret = wait_event_timeout(wdev->hif.tx_buffers_empty, !wdev->hif.tx_buffers_used, msecs_to_jiffies(3000)); + if (ret) { + for (i = 0; i < IEEE80211_NUM_ACS; i++) + WARN(atomic_read(&wdev->tx_queue[i].pending_frames), + "there are still %d pending frames on queue %d", + atomic_read(&wdev->tx_queue[i].pending_frames), i); + } if (!ret) { dev_warn(wdev->dev, "cannot flush tx buffers (%d still busy)\n", wdev->hif.tx_buffers_used); @@ -176,6 +183,7 @@ static struct sk_buff *wfx_tx_queue_get(struct wfx_dev *wdev, spin_unlock_bh(&queue->queue.lock); if (skb) { skb_unlink(skb, &queue->queue); + atomic_inc(&queue->pending_frames); tx_priv = wfx_skb_tx_priv(skb); tx_priv->xmit_timestamp = ktime_get(); skb_queue_tail(&stats->pending, skb); @@ -192,7 +200,9 @@ int wfx_pending_requeue(struct wfx_dev *wdev, struct sk_buff *skb) struct wfx_queue *queue = &wdev->tx_queue[skb_get_queue_mapping(skb)]; WARN_ON(skb_get_queue_mapping(skb) > 3); + WARN_ON(!atomic_read(&queue->pending_frames)); + atomic_dec(&queue->pending_frames); skb_unlink(skb, &stats->pending); skb_queue_tail(&queue->queue, skb); return 0; @@ -201,7 +211,12 @@ int wfx_pending_requeue(struct wfx_dev *wdev, struct sk_buff *skb) int wfx_pending_remove(struct wfx_dev *wdev, struct sk_buff *skb) { struct wfx_queue_stats *stats = &wdev->tx_queue_stats; + struct wfx_queue *queue = &wdev->tx_queue[skb_get_queue_mapping(skb)]; + WARN_ON(skb_get_queue_mapping(skb) > 3); + WARN_ON(!atomic_read(&queue->pending_frames)); + + atomic_dec(&queue->pending_frames); skb_unlink(skb, &stats->pending); wfx_skb_dtor(wdev, skb); diff --git a/drivers/staging/wfx/queue.h b/drivers/staging/wfx/queue.h index 2c4724699ed0..c24b8cd41a78 100644 --- a/drivers/staging/wfx/queue.h +++ b/drivers/staging/wfx/queue.h @@ -9,6 +9,7 @@ #define WFX_QUEUE_H #include +#include #include "hif_api_cmd.h" @@ -20,6 +21,7 @@ struct wfx_vif; struct wfx_queue { struct sk_buff_head queue; + atomic_t pending_frames; }; struct wfx_queue_stats {