fakelb: allow to run as monitor
authorAlexander Aring <aar@pengutronix.de>
Wed, 6 Jul 2016 21:32:31 +0000 (23:32 +0200)
committerMarcel Holtmann <marcel@holtmann.org>
Fri, 8 Jul 2016 11:23:12 +0000 (13:23 +0200)
For my RIOT-OS in userspace experiments I need to create a fakelb
monitor interface. The fakelb doesn't filter anything on L2 and is a
purely raw interface. Because nl802154 checks on promiscuous mode which
need to supported by creating monitors this patch adds some no-op
promiscuous mode setting and the promiscuous flag.

Signed-off-by: Alexander Aring <aar@pengutronix.de>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
drivers/net/ieee802154/fakelb.c

index 860d4ae..0becf0a 100644 (file)
@@ -112,6 +112,12 @@ static void fakelb_hw_stop(struct ieee802154_hw *hw)
        write_unlock_bh(&fakelb_ifup_phys_lock);
 }
 
+static int
+fakelb_set_promiscuous_mode(struct ieee802154_hw *hw, const bool on)
+{
+       return 0;
+}
+
 static const struct ieee802154_ops fakelb_ops = {
        .owner = THIS_MODULE,
        .xmit_async = fakelb_hw_xmit,
@@ -119,6 +125,7 @@ static const struct ieee802154_ops fakelb_ops = {
        .set_channel = fakelb_hw_channel,
        .start = fakelb_hw_start,
        .stop = fakelb_hw_stop,
+       .set_promiscuous_mode = fakelb_set_promiscuous_mode,
 };
 
 /* Number of dummy devices to be set up by this module. */
@@ -174,6 +181,7 @@ static int fakelb_add_one(struct device *dev)
        hw->phy->current_channel = 13;
        phy->channel = hw->phy->current_channel;
 
+       hw->flags = IEEE802154_HW_PROMISCUOUS;
        hw->parent = dev;
 
        err = ieee802154_register_hw(hw);