ieee802154: remove mlme get_phy callback
authorAlexander Aring <alex.aring@gmail.com>
Wed, 5 Nov 2014 19:51:18 +0000 (20:51 +0100)
committerMarcel Holtmann <marcel@holtmann.org>
Wed, 5 Nov 2014 20:53:04 +0000 (21:53 +0100)
This patch removes the get_phy callback from mlme ops structure. Instead
we doing a dereference via ieee802154_ptr dev pointer. For backwards
compatibility we need to run get_device after dereference wpan_phy via
ieee802154_ptr.

Signed-off-by: Alexander Aring <alex.aring@gmail.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
include/net/ieee802154_netdev.h
net/ieee802154/6lowpan_rtnl.c
net/ieee802154/nl-mac.c
net/ieee802154/nl-phy.c
net/mac802154/iface.c
net/mac802154/mac_cmd.c

index 5e62d758eea538a2f47abadad3259133a6d21e88..83bb8a73d23c0f056b10a8c9061997a7b98e02a9 100644 (file)
@@ -423,8 +423,6 @@ struct ieee802154_mlme_ops {
 
        /* The fields below are required. */
 
-       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
@@ -434,16 +432,6 @@ struct ieee802154_mlme_ops {
        u8 (*get_dsn)(const struct net_device *dev);
 };
 
-/* The IEEE 802.15.4 standard defines 2 type of the devices:
- * - FFD - full functionality device
- * - RFD - reduce functionality device
- *
- * So 2 sets of mlme operations are needed
- */
-struct ieee802154_reduced_mlme_ops {
-       struct wpan_phy *(*get_phy)(const struct net_device *dev);
-};
-
 static inline struct ieee802154_mlme_ops *
 ieee802154_mlme_ops(const struct net_device *dev)
 {
index 659f7b25ea1ab613f777360e4ca40c21f876958a..a96b64c9a73df041a9c6e67122e565bc075f9c41 100644 (file)
@@ -407,13 +407,6 @@ static netdev_tx_t lowpan_xmit(struct sk_buff *skb, struct net_device *dev)
        }
 }
 
-static struct wpan_phy *lowpan_get_phy(const struct net_device *dev)
-{
-       struct net_device *real_dev = lowpan_dev_info(dev)->real_dev;
-
-       return ieee802154_mlme_ops(real_dev)->get_phy(real_dev);
-}
-
 static __le16 lowpan_get_pan_id(const struct net_device *dev)
 {
        struct net_device *real_dev = lowpan_dev_info(dev)->real_dev;
@@ -465,7 +458,6 @@ static const struct net_device_ops lowpan_netdev_ops = {
 
 static struct ieee802154_mlme_ops lowpan_mlme = {
        .get_pan_id = lowpan_get_pan_id,
-       .get_phy = lowpan_get_phy,
        .get_short_addr = lowpan_get_short_addr,
        .get_dsn = lowpan_get_dsn,
 };
index 91a1855e521c33f2bbe8abe08fd448938a338aaa..7127b9d1a68409457a1d570117ca1a962b6f2293 100644 (file)
@@ -94,8 +94,9 @@ static int ieee802154_nl_fill_iface(struct sk_buff *msg, u32 portid,
                goto out;
 
        ops = ieee802154_mlme_ops(dev);
-       phy = ops->get_phy(dev);
+       phy = dev->ieee802154_ptr->wpan_phy;
        BUG_ON(!phy);
+       get_device(&phy->dev);
 
        short_addr = ops->get_short_addr(dev);
        pan_id = ops->get_pan_id(dev);
@@ -493,7 +494,8 @@ int ieee802154_set_macparams(struct sk_buff *skb, struct genl_info *info)
            !info->attrs[IEEE802154_ATTR_FRAME_RETRIES])
                goto out;
 
-       phy = ops->get_phy(dev);
+       phy = dev->ieee802154_ptr->wpan_phy;
+       get_device(&phy->dev);
 
        ops->get_mac_params(dev, &params);
 
index 397ca126d9a236bd7b16a386f462bf1bbe8fd834..80a946dddd9095a86884bb12148e64d95aa79f4c 100644 (file)
@@ -287,8 +287,9 @@ int ieee802154_del_iface(struct sk_buff *skb, struct genl_info *info)
        if (!dev)
                return -ENODEV;
 
-       phy = ieee802154_mlme_ops(dev)->get_phy(dev);
+       phy = dev->ieee802154_ptr->wpan_phy;
        BUG_ON(!phy);
+       get_device(&phy->dev);
 
        rc = -EINVAL;
        /* phy name is optional, but should be checked if it's given */
index f9ed608aa26034e965c9f26607e13ee8abf1eddd..2e2638e72ae8619b275ee80b742d38d48a506b40 100644 (file)
@@ -428,7 +428,6 @@ ieee802154_setup_sdata(struct ieee802154_sub_if_data *sdata, int type)
        case IEEE802154_DEV_MONITOR:
                sdata->dev->destructor = free_netdev;
                sdata->dev->netdev_ops = &mac802154_monitor_ops;
-               sdata->dev->ml_priv = &mac802154_mlme_reduced;
                sdata->promisuous_mode = true;
                break;
        default:
index e1ad83e3589936be6b9878cc3d2dda83562add8d..00b2b214770eb3b7e37ba0b6179ec7054e88df33 100644 (file)
@@ -67,15 +67,6 @@ static int mac802154_mlme_start_req(struct net_device *dev,
        return rc;
 }
 
-static struct wpan_phy *mac802154_get_phy(const struct net_device *dev)
-{
-       struct ieee802154_sub_if_data *sdata = IEEE802154_DEV_TO_SUB_IF(dev);
-
-       BUG_ON(dev->type != ARPHRD_IEEE802154);
-
-       return to_phy(get_device(&sdata->local->phy->dev));
-}
-
 static int mac802154_set_mac_params(struct net_device *dev,
                                    const struct ieee802154_mac_params *params)
 {
@@ -134,12 +125,7 @@ static struct ieee802154_llsec_ops mac802154_llsec_ops = {
        .unlock_table = mac802154_unlock_table,
 };
 
-struct ieee802154_reduced_mlme_ops mac802154_mlme_reduced = {
-       .get_phy = mac802154_get_phy,
-};
-
 struct ieee802154_mlme_ops mac802154_mlme_wpan = {
-       .get_phy = mac802154_get_phy,
        .start_req = mac802154_mlme_start_req,
        .get_pan_id = mac802154_dev_get_pan_id,
        .get_short_addr = mac802154_dev_get_short_addr,