summary refs log tree commit diff
diff options
context:
space:
mode:
-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 */