From: Miquel Raynal <miquel.raynal@bootlin.com>
To: Alexander Aring <alex.aring@gmail.com>,
Stefan Schmidt <stefan@datenfreihafen.org>,
linux-wpan@vger.kernel.org
Cc: David Girault <david.girault@qorvo.com>,
Romuald Despres <romuald.despres@qorvo.com>,
Frederic Blain <frederic.blain@qorvo.com>,
Nicolas Schodet <nico@ni.fr.eu.org>,
Thomas Petazzoni <thomas.petazzoni@bootlin.com>,
"David S. Miller" <davem@davemloft.net>,
Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
netdev@vger.kernel.org, Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH wpan-next v3 04/11] net: mac802154: Follow the count of ongoing transmissions
Date: Tue, 17 May 2022 18:34:43 +0200 [thread overview]
Message-ID: <20220517163450.240299-5-miquel.raynal@bootlin.com> (raw)
In-Reply-To: <20220517163450.240299-1-miquel.raynal@bootlin.com>
In order to create a synchronous API for MLME command purposes, we need
to be able to track the end of the ongoing transmissions. Let's
introduce an atomic variable which is incremented when a transmission
starts and decremented when relevant so that we know at any moment
whether there is an ongoing transmission.
The counter gets decremented in the following situations:
- The operation is asynchronous and there was a failure during the
offloading process.
- The operation is synchronous and the synchronous operation failed.
- The operation finished, either successfully or not.
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
include/net/cfg802154.h | 3 +++
net/mac802154/tx.c | 3 +++
net/mac802154/util.c | 2 ++
3 files changed, 8 insertions(+)
diff --git a/include/net/cfg802154.h b/include/net/cfg802154.h
index 85f9e8417688..473ebcb9b155 100644
--- a/include/net/cfg802154.h
+++ b/include/net/cfg802154.h
@@ -214,6 +214,9 @@ struct wpan_phy {
/* the network namespace this phy lives in currently */
possible_net_t _net;
+ /* Transmission monitoring */
+ atomic_t ongoing_txs;
+
char priv[] __aligned(NETDEV_ALIGN);
};
diff --git a/net/mac802154/tx.c b/net/mac802154/tx.c
index 4a46ce8d2ac8..33f64ecd96c7 100644
--- a/net/mac802154/tx.c
+++ b/net/mac802154/tx.c
@@ -44,6 +44,7 @@ void ieee802154_xmit_sync_worker(struct work_struct *work)
err_tx:
/* Restart the netif queue on each sub_if_data object. */
ieee802154_wake_queue(&local->hw);
+ atomic_dec(&local->phy->ongoing_txs);
kfree_skb(skb);
netdev_dbg(dev, "transmission failed\n");
}
@@ -75,6 +76,7 @@ ieee802154_tx(struct ieee802154_local *local, struct sk_buff *skb)
/* Stop the netif queue on each sub_if_data object. */
ieee802154_stop_queue(&local->hw);
+ atomic_inc(&local->phy->ongoing_txs);
/* Drivers should preferably implement the async callback. In some rare
* cases they only provide a sync callback which we will use as a
@@ -98,6 +100,7 @@ ieee802154_tx(struct ieee802154_local *local, struct sk_buff *skb)
err_wake_netif_queue:
ieee802154_wake_queue(&local->hw);
+ atomic_dec(&local->phy->ongoing_txs);
err_free_skb:
kfree_skb(skb);
return NETDEV_TX_OK;
diff --git a/net/mac802154/util.c b/net/mac802154/util.c
index 9f024d85563b..76dc663e2af4 100644
--- a/net/mac802154/util.c
+++ b/net/mac802154/util.c
@@ -88,6 +88,7 @@ void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb,
}
dev_consume_skb_any(skb);
+ atomic_dec(&hw->phy->ongoing_txs);
}
EXPORT_SYMBOL(ieee802154_xmit_complete);
@@ -99,6 +100,7 @@ void ieee802154_xmit_error(struct ieee802154_hw *hw, struct sk_buff *skb,
local->tx_result = reason;
ieee802154_wake_queue(hw);
dev_kfree_skb_any(skb);
+ atomic_dec(&hw->phy->ongoing_txs);
}
EXPORT_SYMBOL(ieee802154_xmit_error);
--
2.34.1
next prev parent reply other threads:[~2022-05-17 16:35 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-05-17 16:34 [PATCH wpan-next v3 00/11] ieee802154: Synchronous Tx support Miquel Raynal
2022-05-17 16:34 ` [PATCH wpan-next v3 01/11] net: mac802154: Rename the synchronous xmit worker Miquel Raynal
2022-05-17 16:34 ` [PATCH wpan-next v3 02/11] net: mac802154: Rename the main tx_work struct Miquel Raynal
2022-05-17 16:34 ` [PATCH wpan-next v3 03/11] net: mac802154: Enhance the error path in the main tx helper Miquel Raynal
2022-05-17 16:34 ` Miquel Raynal [this message]
2022-05-17 16:34 ` [PATCH wpan-next v3 05/11] net: mac802154: Bring the ability to hold the transmit queue Miquel Raynal
2022-05-18 0:37 ` Alexander Aring
2022-05-18 8:26 ` Miquel Raynal
2022-05-17 16:34 ` [PATCH wpan-next v3 06/11] net: mac802154: Create a hot tx path Miquel Raynal
2022-05-17 16:34 ` [PATCH wpan-next v3 07/11] net: mac802154: Introduce a helper to disable the queue Miquel Raynal
2022-05-17 16:34 ` [PATCH wpan-next v3 08/11] net: mac802154: Introduce a tx queue flushing mechanism Miquel Raynal
2022-05-17 16:34 ` [PATCH wpan-next v3 09/11] net: mac802154: Introduce a synchronous API for MLME commands Miquel Raynal
2022-05-18 0:41 ` Alexander Aring
2022-05-18 8:44 ` Miquel Raynal
2022-05-18 11:59 ` Alexander Aring
2022-05-18 12:12 ` Alexander Aring
2022-05-18 12:44 ` Miquel Raynal
2022-05-18 13:02 ` Alexander Aring
2022-05-17 16:34 ` [PATCH wpan-next v3 10/11] net: mac802154: Add a warning in the hot path Miquel Raynal
2022-05-18 0:58 ` Alexander Aring
2022-05-18 8:55 ` Miquel Raynal
2022-05-18 14:31 ` Alexander Aring
2022-05-18 16:29 ` Miquel Raynal
2022-05-19 1:52 ` Alexander Aring
2022-05-17 16:34 ` [PATCH wpan-next v3 11/11] net: mac802154: Add a warning in the slow path Miquel Raynal
2022-05-18 0:52 ` Alexander Aring
2022-05-18 9:37 ` Miquel Raynal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220517163450.240299-5-miquel.raynal@bootlin.com \
--to=miquel.raynal@bootlin.com \
--cc=alex.aring@gmail.com \
--cc=davem@davemloft.net \
--cc=david.girault@qorvo.com \
--cc=frederic.blain@qorvo.com \
--cc=kuba@kernel.org \
--cc=linux-wpan@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=nico@ni.fr.eu.org \
--cc=pabeni@redhat.com \
--cc=romuald.despres@qorvo.com \
--cc=stefan@datenfreihafen.org \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.