netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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 S. Miller" <davem@davemloft.net>,
	Jakub Kicinski <kuba@kernel.org>,
	netdev@vger.kernel.org, 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>,
	Miquel Raynal <miquel.raynal@bootlin.com>
Subject: [PATCH v6 05/10] net: mac802154: Create an error helper for asynchronous offloading errors
Date: Thu,  7 Apr 2022 12:08:58 +0200	[thread overview]
Message-ID: <20220407100903.1695973-6-miquel.raynal@bootlin.com> (raw)
In-Reply-To: <20220407100903.1695973-1-miquel.raynal@bootlin.com>

A few drivers do the full transmit operation asynchronously, which means
that a bus error that happens when forwarding the packet to the
transmitter or a timeout happening when offloading the request to the
transmitter will not be reported immediately.

The solution in this case is to call this new helper to free the
necessary resources, restart the queue and always return the same
generic TRAC error code: IEEE802154_SYSTEM_ERROR.

Suggested-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Miquel Raynal <miquel.raynal@bootlin.com>
---
 include/net/mac802154.h | 9 +++++++++
 net/mac802154/util.c    | 6 ++++++
 2 files changed, 15 insertions(+)

diff --git a/include/net/mac802154.h b/include/net/mac802154.h
index 29f289d58720..bdac0ddbdcdb 100644
--- a/include/net/mac802154.h
+++ b/include/net/mac802154.h
@@ -508,4 +508,13 @@ void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb,
 void ieee802154_xmit_error(struct ieee802154_hw *hw, struct sk_buff *skb,
 			   int reason);
 
+/**
+ * ieee802154_xmit_hw_error - frame could not be offloaded to the transmitter
+ *                            because of a hardware error (bus error, timeout, etc)
+ *
+ * @hw: pointer as obtained from ieee802154_alloc_hw().
+ * @skb: buffer for transmission
+ */
+void ieee802154_xmit_hw_error(struct ieee802154_hw *hw, struct sk_buff *skb);
+
 #endif /* NET_MAC802154_H */
diff --git a/net/mac802154/util.c b/net/mac802154/util.c
index ec523335336c..9f024d85563b 100644
--- a/net/mac802154/util.c
+++ b/net/mac802154/util.c
@@ -102,6 +102,12 @@ void ieee802154_xmit_error(struct ieee802154_hw *hw, struct sk_buff *skb,
 }
 EXPORT_SYMBOL(ieee802154_xmit_error);
 
+void ieee802154_xmit_hw_error(struct ieee802154_hw *hw, struct sk_buff *skb)
+{
+	ieee802154_xmit_error(hw, skb, IEEE802154_SYSTEM_ERROR);
+}
+EXPORT_SYMBOL(ieee802154_xmit_hw_error);
+
 void ieee802154_stop_device(struct ieee802154_local *local)
 {
 	flush_workqueue(local->workqueue);
-- 
2.27.0


  parent reply	other threads:[~2022-04-07 10:09 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-07 10:08 [PATCH v6 00/10] ieee802154: Better Tx error handling Miquel Raynal
2022-04-07 10:08 ` [PATCH v6 01/10] net: ieee802154: Enhance/fix the names of the MLME return codes Miquel Raynal
2022-04-07 10:08 ` [PATCH v6 02/10] net: ieee802154: Fill the list of " Miquel Raynal
2022-04-07 10:08 ` [PATCH v6 03/10] net: mac802154: Save a global error code on transmissions Miquel Raynal
2022-04-07 10:08 ` [PATCH v6 04/10] net: mac802154: Create an offloaded transmission error helper Miquel Raynal
2022-04-07 10:08 ` Miquel Raynal [this message]
2022-04-07 10:08 ` [PATCH v6 06/10] net: ieee802154: at86rf230: Call _xmit_hw_error() when failing to offload frames Miquel Raynal
2022-04-07 10:09 ` [PATCH v6 07/10] net: ieee802154: at86rf230: Forward Tx trac errors Miquel Raynal
2022-04-07 10:09 ` [PATCH v6 08/10] net: ieee802154: atusb: Call _xmit_hw_error() upon transmission error Miquel Raynal
2022-04-07 10:09 ` [PATCH v6 09/10] net: ieee802154: ca8210: Use core return codes instead of hardcoding them Miquel Raynal
2022-04-07 10:09 ` [PATCH v6 10/10] net: ieee802154: ca8210: Call _xmit_error() when a transmission fails Miquel Raynal
2022-04-25 12:37 ` [PATCH v6 00/10] ieee802154: Better Tx error handling Alexander Aring
2022-04-25 19:25   ` Stefan Schmidt

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=20220407100903.1695973-6-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=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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).