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>
This commit is contained in:
parent
c8fc84ed60
commit
94b792220c
@ -92,6 +92,8 @@ struct ieee802154_hw {
|
|||||||
#define IEEE802154_HW_FRAME_RETRIES 0x00000080
|
#define IEEE802154_HW_FRAME_RETRIES 0x00000080
|
||||||
/* Indicates that transceiver will support hardware address filter setting. */
|
/* Indicates that transceiver will support hardware address filter setting. */
|
||||||
#define IEEE802154_HW_AFILT 0x00000100
|
#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. */
|
/* This groups the most common CSMA support fields into one. */
|
||||||
#define IEEE802154_HW_CSMA (IEEE802154_HW_CCA_MODE | \
|
#define IEEE802154_HW_CSMA (IEEE802154_HW_CCA_MODE | \
|
||||||
@ -173,6 +175,9 @@ struct ieee802154_hw {
|
|||||||
* set_frame_retries
|
* set_frame_retries
|
||||||
* Sets the retransmission attempt limit. Called with pib_lock held.
|
* Sets the retransmission attempt limit. Called with pib_lock held.
|
||||||
* Returns either zero, or negative errno.
|
* Returns either zero, or negative errno.
|
||||||
|
*
|
||||||
|
* set_promiscuous_mode
|
||||||
|
* Enables or disable promiscuous mode.
|
||||||
*/
|
*/
|
||||||
struct ieee802154_ops {
|
struct ieee802154_ops {
|
||||||
struct module *owner;
|
struct module *owner;
|
||||||
@ -197,6 +202,8 @@ struct ieee802154_ops {
|
|||||||
u8 min_be, u8 max_be, u8 retries);
|
u8 min_be, u8 max_be, u8 retries);
|
||||||
int (*set_frame_retries)(struct ieee802154_hw *hw,
|
int (*set_frame_retries)(struct ieee802154_hw *hw,
|
||||||
s8 retries);
|
s8 retries);
|
||||||
|
int (*set_promiscuous_mode)(struct ieee802154_hw *hw,
|
||||||
|
const bool on);
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Basic interface to register ieee802154 hwice */
|
/* Basic interface to register ieee802154 hwice */
|
||||||
|
@ -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);
|
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 */
|
#endif /* __MAC802154_DRVIER_OPS */
|
||||||
|
Loading…
Reference in New Issue
Block a user