summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAlexander Aring <alex.aring@gmail.com>2014-10-29 21:34:32 +0100
committerMarcel Holtmann <marcel@holtmann.org>2014-10-29 23:07:45 +0100
commit94b792220ca9c080f4d1da8060f4c892c1b3b025 (patch)
tree2cb60c0d4cb578c203577ae5538521188913505e
parentc8fc84ed60f0ec85ab71f6026add1523523e4bd5 (diff)
downloadlinux-stable-94b792220ca9c080f4d1da8060f4c892c1b3b025.tar.gz
linux-stable-94b792220ca9c080f4d1da8060f4c892c1b3b025.tar.bz2
linux-stable-94b792220ca9c080f4d1da8060f4c892c1b3b025.zip
mac802154: add support for promiscuous mode
This patch adds a new driver operation to bring the transceiver into promiscuous mode. Signed-off-by: Alexander Aring <alex.aring@gmail.com> Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r--include/net/mac802154.h7
-rw-r--r--net/mac802154/driver-ops.h13
2 files changed, 20 insertions, 0 deletions
diff --git a/include/net/mac802154.h b/include/net/mac802154.h
index 2f523fc1bf80..166ef6c52180 100644
--- a/include/net/mac802154.h
+++ b/include/net/mac802154.h
@@ -92,6 +92,8 @@ struct ieee802154_hw {
#define IEEE802154_HW_FRAME_RETRIES 0x00000080
/* Indicates that transceiver will support hardware address filter setting. */
#define IEEE802154_HW_AFILT 0x00000100
+/* Indicates that transceiver will support promiscuous mode setting. */
+#define IEEE802154_HW_PROMISCUOUS 0x00000200
/* This groups the most common CSMA support fields into one. */
#define IEEE802154_HW_CSMA (IEEE802154_HW_CCA_MODE | \
@@ -173,6 +175,9 @@ struct ieee802154_hw {
* set_frame_retries
* Sets the retransmission attempt limit. Called with pib_lock held.
* Returns either zero, or negative errno.
+ *
+ * set_promiscuous_mode
+ * Enables or disable promiscuous mode.
*/
struct ieee802154_ops {
struct module *owner;
@@ -197,6 +202,8 @@ struct ieee802154_ops {
u8 min_be, u8 max_be, u8 retries);
int (*set_frame_retries)(struct ieee802154_hw *hw,
s8 retries);
+ int (*set_promiscuous_mode)(struct ieee802154_hw *hw,
+ const bool on);
};
/* Basic interface to register ieee802154 hwice */
diff --git a/net/mac802154/driver-ops.h b/net/mac802154/driver-ops.h
index 4b820cfeb538..dfd29ffb8fee 100644
--- a/net/mac802154/driver-ops.h
+++ b/net/mac802154/driver-ops.h
@@ -210,4 +210,17 @@ static inline int drv_set_max_frame_retries(struct ieee802154_local *local,
return local->ops->set_frame_retries(&local->hw, max_frame_retries);
}
+static inline int drv_set_promiscuous_mode(struct ieee802154_local *local,
+ const bool on)
+{
+ might_sleep();
+
+ if (!local->ops->set_promiscuous_mode) {
+ WARN_ON(1);
+ return -EOPNOTSUPP;
+ }
+
+ return local->ops->set_promiscuous_mode(&local->hw, on);
+}
+
#endif /* __MAC802154_DRVIER_OPS */