mac802154: add wpan_phy priv id
authorAlexander Aring <alex.aring@gmail.com>
Wed, 12 Nov 2014 02:36:51 +0000 (03:36 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 12 Nov 2014 04:10:36 +0000 (05:10 +0100)
This patch adds an unique id for an wpan_phy. This behaviour is mostly
grabbed from wireless stack. This is needed for upcomming patches which
identify the wpan netdev while NETDEV_CHANGENAME in netdev notify function.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/net/cfg802154.h
net/mac802154/ieee802154_i.h
net/mac802154/main.c
net/mac802154/util.c

index e5570e011116110c8abe0c3fa45b3d7d77549a87..369515231302e9f585f9390c37a52410ee3ffbce 100644 (file)
@@ -42,6 +42,14 @@ struct cfg802154_ops {
 struct wpan_phy {
        struct mutex pib_lock;
 
+       /* If multiple wpan_phys are registered and you're handed e.g.
+        * a regular netdev with assigned ieee802154_ptr, you won't
+        * know whether it points to a wpan_phy your driver has registered
+        * or not. Assign this to something global to your driver to
+        * help determine whether you own this wpan_phy or not.
+        */
+       const void *privid;
+
        /*
         * This is a PIB according to 802.15.4-2011.
         * We do not provide timing-related variables, as they
index abb19701d494637901134f8d281b970551e88d49..4be5e23c7e8b4a4407d8f35f6a2cdbacf0761aa1 100644 (file)
@@ -96,6 +96,9 @@ struct ieee802154_sub_if_data {
 
 #define MAC802154_CHAN_NONE            0xff /* No channel is assigned */
 
+/* utility functions/constants */
+extern const void *const mac802154_wpan_phy_privid; /*  for wpan_phy privid */
+
 static inline struct ieee802154_local *
 hw_to_local(struct ieee802154_hw *hw)
 {
index 709dcc5f7f178250799c16af007b0bc691fa6623..24e8ca6a669d19abf5c80f1709712cb5ee4c9eb2 100644 (file)
@@ -92,6 +92,8 @@ ieee802154_alloc_hw(size_t priv_data_len, const struct ieee802154_ops *ops)
                return NULL;
        }
 
+       phy->privid = mac802154_wpan_phy_privid;
+
        local = wpan_phy_priv(phy);
        local->phy = phy;
        local->hw.phy = local->phy;
index 117e4eff4ca86646f31206b64753c1ad0a3ba1a9..9a04e4a8e50f5591fe46fdffc717808d495dd145 100644 (file)
@@ -15,6 +15,9 @@
 
 #include "ieee802154_i.h"
 
+/* privid for wpan_phys to determine whether they belong to us or not */
+const void *const mac802154_wpan_phy_privid = &mac802154_wpan_phy_privid;
+
 void ieee802154_wake_queue(struct ieee802154_hw *hw)
 {
        struct ieee802154_local *local = hw_to_local(hw);