Received: by 2002:a05:6a10:af89:0:0:0:0 with SMTP id iu9csp3378252pxb; Mon, 17 Jan 2022 19:03:45 -0800 (PST) X-Google-Smtp-Source: ABdhPJzHVYqvrIjn0ikhiFgkqxRj5xFFCKc6rIOQvbKHQv25j5dbN61P+EfIvqMQFGUryS0U36An X-Received: by 2002:a17:903:11d0:b0:149:a969:400c with SMTP id q16-20020a17090311d000b00149a969400cmr25744153plh.120.1642475025344; Mon, 17 Jan 2022 19:03:45 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1642475025; cv=none; d=google.com; s=arc-20160816; b=gw+/IXwiqWFmt6OVIDtvGkS5IDjZWEattUfqELfkPXiBDd3O1A34dXZtZakojNRhwp bh04f8V8uVtqFM4O6flVctqaR9Zakg2pITlRR+RaY/b72vziUqgxEfjQfkooeKnhJl13 GC6zIMOTJrO2JHUiinwEXpguf8l16nShfUVVgGN/YGDzxB6ocsQUlYWjMp0mm2jI9UnA QTtxI5GWsYaluPYXtcJjgNHHGJcfKXtzwLRVbPzCUhTI19LnKoxHbj0oL01AUzKQaIby FjALEkXBVrBa6FNftB/wu64RwbV0R3H17Ls48iptKhj9mOF2lQBN4K6+Rpl3fCT2qmqi pvRA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=Wao4zNgGs9ZKNZbt2qayI01/XFGowYUKQrNSetaj2LY=; b=yq0lzZTV6LzjxdYh2IBzoEDRRABLOw178Cl5aI5Y0JbmQxuNMYfptKneLxOAMhmN4F 54NSv+FSS9z/tjp7xGr1PNfEcrhbHzRP3YwVmNomQ556XKt4i2v6TGHLQWwU1Prnf5m5 gF0kp66kvumnfEpoCyb7UUOI9FWsF4szys8ZjcEBlKMhWbMMI6xsxZvJf27lGgP9srXt Qlr9lyPtA0z0kOqFaBKgEeN/5nHV0ffAw2pwVLOVMENX7+x4jzYgu3ePhM1a/aXolfuS +eD3H26Op/ceVPAopC9b0+Aef3urasBI5ao3iF/HUATAfs4LVUE0LWMUfj9pSSbVMyp2 tDug== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="A/aSkySX"; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id j186si15933252pge.638.2022.01.17.19.03.36; Mon, 17 Jan 2022 19:03:45 -0800 (PST) Received-SPF: pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20210112 header.b="A/aSkySX"; spf=pass (google.com: domain of linux-wireless-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-wireless-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S243659AbiAQWoD (ORCPT + 70 others); Mon, 17 Jan 2022 17:44:03 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37390 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S237619AbiAQWoC (ORCPT ); Mon, 17 Jan 2022 17:44:02 -0500 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5994FC061574; Mon, 17 Jan 2022 14:44:02 -0800 (PST) Received: by mail-wm1-x32c.google.com with SMTP id g81-20020a1c9d54000000b0034cd1acd9b5so1376696wme.1; Mon, 17 Jan 2022 14:44:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Wao4zNgGs9ZKNZbt2qayI01/XFGowYUKQrNSetaj2LY=; b=A/aSkySXAtUPt4vln9q5nyQym03kwx5QcKNTPHqtQOHVJN7raMjYotqF2qbi4m/OwT 1L6PkFG6xqWGPrXGYBL1upiG2I6hY1sL4NJrQOuyrhBrHaW2UJ8+2Y5i9DW3y/nL/oWe ukWqlshoX1xETKh7m+dEFZrYLjqBoBxjvvfvQoNqsJIV1Q6YcyAs0EoDDXaLrJiKgIWM 1U2da+2M+aud/sCSJ3uAvl1JlcbryUZBkw/bvevD1V8K3fRBCD9yzybF+nCyMV3PalyV 6eYz6/2lhAlZfFk1N2kvZ4//i3QmcfuH82U3+nDvrtOT3ZVFyuis/dML8e8ALejhBa48 I02Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Wao4zNgGs9ZKNZbt2qayI01/XFGowYUKQrNSetaj2LY=; b=CzPbnvsyI8/xrLhHlHJWFbBv176JDzdOx+aQwY7/6ZU1RteOq9KWiCysNE7v+SU3BZ JBNfpoEnaj144EsKkuL5UfN+0p0oEwPhQ7QPIYKOBcp6tDyqM2QftkCJxS9FGunqLTov hMtVqc66cwcxinH6eW3cOjW1JvY4g0rxpO4qHkkGn0AFDuU8JSXBAcoj16Rm78bZaVHG VAzKqXmsliELE8bLrvR4K4LjjVbLSuqv4Moqu1ITVWbn+KmSu0gWCMkT1N9c2yRnIva9 3WprJk0RgOR2KDCKVXI3J19k0CTjvtlAH6b87GXM3aKO/oI342WmoWn6AAefBe/bRRu5 MbXg== X-Gm-Message-State: AOAM533Zd87IrXT99C1KA4/z0AHUZSBN8mrqsqU3ymJ+ZVFbpjS52aHO +FqEobSRrR2QY/mTy9Wh12h0hTyv8IX37rfqY5k= X-Received: by 2002:a1c:ed01:: with SMTP id l1mr29835529wmh.185.1642459441022; Mon, 17 Jan 2022 14:44:01 -0800 (PST) MIME-Version: 1.0 References: <20220117115440.60296-1-miquel.raynal@bootlin.com> <20220117115440.60296-28-miquel.raynal@bootlin.com> In-Reply-To: <20220117115440.60296-28-miquel.raynal@bootlin.com> From: Alexander Aring Date: Mon, 17 Jan 2022 17:43:49 -0500 Message-ID: Subject: Re: [PATCH v3 27/41] net: mac802154: Introduce a tx queue flushing mechanism To: Miquel Raynal Cc: Stefan Schmidt , linux-wpan - ML , "open list:NETWORKING [GENERAL]" , "linux-wireless@vger.kernel.org Wireless" , David Girault , Romuald Despres , Frederic Blain , Nicolas Schodet , Michael Hennerich , Jakub Kicinski , Varka Bhadram , Xue Liu , Alan Ott , Thomas Petazzoni Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-wireless@vger.kernel.org Hi, On Mon, 17 Jan 2022 at 06:55, Miquel Raynal wrote: ... > > /* stop hardware - this must stop RX */ > diff --git a/net/mac802154/ieee802154_i.h b/net/mac802154/ieee802154_i.h > index 0291e49058f2..37d5438fdb3f 100644 > --- a/net/mac802154/ieee802154_i.h > +++ b/net/mac802154/ieee802154_i.h > @@ -122,6 +122,7 @@ extern struct ieee802154_mlme_ops mac802154_mlme_wpan; > > void ieee802154_rx(struct ieee802154_local *local, struct sk_buff *skb); > void ieee802154_xmit_sync_worker(struct work_struct *work); > +void ieee802154_sync_tx(struct ieee802154_local *local); > netdev_tx_t > ieee802154_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev); > netdev_tx_t > diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c > index de5ecda80472..d1fd2cc67cbe 100644 > --- a/net/mac802154/tx.c > +++ b/net/mac802154/tx.c > @@ -48,6 +48,7 @@ void ieee802154_xmit_sync_worker(struct work_struct *work) > > kfree_skb(skb); > atomic_dec(&local->phy->ongoing_txs); > + wake_up(&local->phy->sync_txq); if (atomic_dec_and_test(&hw->phy->ongoing_txs)) wake_up(&hw->phy->sync_txq); > netdev_dbg(dev, "transmission failed\n"); > } > > @@ -117,6 +118,11 @@ ieee802154_hot_tx(struct ieee802154_local *local, struct sk_buff *skb) > return ieee802154_tx(local, skb); > } > > +void ieee802154_sync_tx(struct ieee802154_local *local) > +{ > + wait_event(local->phy->sync_txq, !atomic_read(&local->phy->ongoing_txs)); > +} > + > netdev_tx_t > ieee802154_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev) > { > diff --git a/net/mac802154/util.c b/net/mac802154/util.c > index db2ac53b937e..230fe3390df7 100644 > --- a/net/mac802154/util.c > +++ b/net/mac802154/util.c > @@ -90,6 +90,7 @@ void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb, > after_wakeup: > dev_consume_skb_any(skb); > atomic_dec(&hw->phy->ongoing_txs); > + wake_up(&hw->phy->sync_txq); if (atomic_dec_and_test(&hw->phy->ongoing_txs)) wake_up(&hw->phy->sync_txq); - Alex