summaryrefslogtreecommitdiffstats
path: root/include/net/mac802154.h
diff options
context:
space:
mode:
authorAlexander Aring2014-10-26 09:37:08 +0100
committerMarcel Holtmann2014-10-26 17:24:04 +0100
commited0a5dce0c29f30ee53a87793206156cf38ae70d (patch)
treebb2f9e7a5c1017679f7918cd665b2c825550f6c7 /include/net/mac802154.h
parentmac802154: tx: fix error handling while xmit (diff)
downloadkernel-qcow2-linux-ed0a5dce0c29f30ee53a87793206156cf38ae70d.tar.gz
kernel-qcow2-linux-ed0a5dce0c29f30ee53a87793206156cf38ae70d.tar.xz
kernel-qcow2-linux-ed0a5dce0c29f30ee53a87793206156cf38ae70d.zip
mac802154: tx: add support for xmit_async callback
This patch renames the existsing xmit callback to xmit_sync and introduces an asynchronous xmit_async function. If ieee802154_ops doesn't provide the xmit_async callback, then we have a fallback to the xmit_sync callback. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Cc: Alan Ott <alan@signal11.us> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Diffstat (limited to 'include/net/mac802154.h')
-rw-r--r--include/net/mac802154.h17
1 files changed, 14 insertions, 3 deletions
diff --git a/include/net/mac802154.h b/include/net/mac802154.h
index 29af5c346ebf..57b120281afc 100644
--- a/include/net/mac802154.h
+++ b/include/net/mac802154.h
@@ -109,7 +109,16 @@ struct ieee802154_hw {
* stop: Handler that 802.15.4 module calls for device cleanup.
* This function is called after the last interface is removed.
*
- * xmit: Handler that 802.15.4 module calls for each transmitted frame.
+ * xmit_sync:
+ * Handler that 802.15.4 module calls for each transmitted frame.
+ * skb cntains the buffer starting from the IEEE 802.15.4 header.
+ * The low-level driver should send the frame based on available
+ * configuration. This is called by a workqueue and useful for
+ * synchronous 802.15.4 drivers.
+ * This function should return zero or negative errno.
+ *
+ * xmit_async:
+ * Handler that 802.15.4 module calls for each transmitted frame.
* skb cntains the buffer starting from the IEEE 802.15.4 header.
* The low-level driver should send the frame based on available
* configuration.
@@ -160,8 +169,10 @@ struct ieee802154_ops {
struct module *owner;
int (*start)(struct ieee802154_hw *hw);
void (*stop)(struct ieee802154_hw *hw);
- int (*xmit)(struct ieee802154_hw *hw,
- struct sk_buff *skb);
+ int (*xmit_sync)(struct ieee802154_hw *hw,
+ struct sk_buff *skb);
+ int (*xmit_async)(struct ieee802154_hw *hw,
+ struct sk_buff *skb);
int (*ed)(struct ieee802154_hw *hw, u8 *level);
int (*set_channel)(struct ieee802154_hw *hw,
int page,