ieee802154: add an mlme_ops call to retrieve PHY object
authorDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Wed, 4 Nov 2009 14:53:23 +0000 (17:53 +0300)
committerDmitry Eremin-Solenikov <dbaryshkov@gmail.com>
Fri, 6 Nov 2009 11:32:18 +0000 (14:32 +0300)
ops->get_phy should increment reference to wpan-phy. As we return
the external structure, we should do refcounting correctly.

Signed-off-by: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
include/net/ieee802154_netdev.h
include/net/wpan-phy.h

index d23fb5a..5743055 100644 (file)
@@ -74,8 +74,12 @@ static inline int mac_cb_type(struct sk_buff *skb)
 #define IEEE802154_MAC_SCAN_PASSIVE    2
 #define IEEE802154_MAC_SCAN_ORPHAN     3
 
+struct wpan_phy;
 /*
  * This should be located at net_device->ml_priv
+ *
+ * get_phy should increment the reference counting on returned phy.
+ * Use wpan_wpy_put to put that reference.
  */
 struct ieee802154_mlme_ops {
        int (*assoc_req)(struct net_device *dev,
@@ -94,6 +98,8 @@ struct ieee802154_mlme_ops {
        int (*scan_req)(struct net_device *dev,
                        u8 type, u32 channels, u8 page, u8 duration);
 
+       struct wpan_phy *(*get_phy)(const struct net_device *dev);
+
        /*
         * FIXME: these should become the part of PIB/MIB interface.
         * However we still don't have IB interface of any kind
index f63537c..a65e985 100644 (file)
@@ -44,6 +44,8 @@ struct wpan_phy {
        char priv[0] __attribute__((__aligned__(NETDEV_ALIGN)));
 };
 
+#define to_phy(_dev)   container_of(_dev, struct wpan_phy, dev)
+
 struct wpan_phy *wpan_phy_alloc(size_t priv_size);
 static inline void wpan_phy_set_dev(struct wpan_phy *phy, struct device *dev)
 {