fakelb: use own channel and page attributes
[deliverable/linux.git] / drivers / net / ieee802154 / fakelb.c
index 83957de47243a20f5f07289a044a8e4e8c9de208..c60837e0df25146614c436027a4388171e7b8026 100644 (file)
@@ -38,6 +38,9 @@ static DEFINE_RWLOCK(fakelb_ifup_phys_lock);
 struct fakelb_phy {
        struct ieee802154_hw *hw;
 
+       u8 page;
+       u8 channel;
+
        struct list_head list;
        struct list_head list_ifup;
 };
@@ -54,8 +57,12 @@ fakelb_hw_ed(struct ieee802154_hw *hw, u8 *level)
 static int
 fakelb_hw_channel(struct ieee802154_hw *hw, u8 page, u8 channel)
 {
-       pr_debug("set channel to %d\n", channel);
+       struct fakelb_phy *phy = hw->priv;
 
+       write_lock_bh(&fakelb_ifup_phys_lock);
+       phy->page = page;
+       phy->channel = channel;
+       write_unlock_bh(&fakelb_ifup_phys_lock);
        return 0;
 }
 
@@ -80,8 +87,8 @@ fakelb_hw_xmit(struct ieee802154_hw *hw, struct sk_buff *skb)
                if (current_phy == phy)
                        continue;
 
-               if (phy->hw->phy->current_channel ==
-                   current_phy->hw->phy->current_channel)
+               if (current_phy->page == phy->page &&
+                   current_phy->channel == phy->channel)
                        fakelb_hw_deliver(phy, skb);
        }
        read_unlock_bh(&fakelb_ifup_phys_lock);
This page took 0.026038 seconds and 5 git commands to generate.